计算机视觉概要和卷积神经网络基础概念

本文主要介绍了CV概要和CNN基础概念。

1 计算机视觉(computer vision)简介

计算机视觉旨在识别和理解图像/视频中的内容。其诞生于1966年MIT AI Group的"the summer vision project"。当时,人工智能其他分支的研究已经有一些初步成果。由于人类可以很轻易地进行视觉认知,MIT的教授们希望通过一个暑期项目解决计算机视觉问题。当然,计算机视觉没有被一个暑期内解决,但计算机视觉经过50余年发展已成为一个十分活跃的研究领域。如今,互联网上超过70%的数据是图像/视频,全世界的监控摄像头数目已超过人口数,每天有超过八亿小时的监控视频数据生成。如此大的数据量亟待自动化的视觉理解与分析技术。

计算机视觉的难点在于语义鸿沟。这个现象不仅出现在计算机视觉领域,Moravec悖论发现,高级的推理只需要非常少的计算资源,而低级的对外界的感知却需要极大的计算资源。要让计算机如成人般地下棋是相对容易的,但是要让电脑有如一岁小孩般的感知和行动能力却是相当困难甚至是不可能的。

语义鸿沟(semantic gap): 人类可以轻松地从图像中识别出目标,而计算机看到的图像只是一组0到255之间的整数。

计算机视觉任务的其他困难: 拍摄视角变化、目标占据图像的比例变化、光照变化、背景融合、目标形变、遮挡等。

计算机视觉的顶级会议和期刊: 顶级会议有CVPR、ICCV、和ECCV,此外ICLR也有不少计算机视觉论文。顶级期刊有IJCV和TPAMI。由于计算机视觉领域发展十分迅速,不论身处学术界或产业界,通过阅读顶级会议和期刊论文了解计算机视觉的最近研究成果都十分必要。

CV四大基本任务: 分类、定位、检测、分割

其他任务:

  • 场景文字识别
  • 图像生成(比如GAN、VAE等)
  • 人体/人脸关键点检测
  • 目标跟踪
  • 图像标注(Image Captioning)
  • 超分辨率、风格迁移、着色
  • 人体姿态估计
  • 行为识别
  • 3D视觉
  • and so on

2 卷积神经网络基础概念

经典的多层感知机由一系列全连接层(FC)组成,卷积神经网络中除全连接层外,还有卷积层(Conv)和池化(Pooling)层。

为什么要采用CNN CNN是从DNN发展而来。在图像上使用DNN效果不好,原因:一是图像维度通常很高,全连接需要的参数量巨大,难以计算和存储;二是巨大的参数量非常容易带来过拟合;三是全连接并不适用于应对图像的特性(比如平移不变性、尺度不变性等等)。而CNN中的卷积是局部连接、共享参数版的全连接层,这两个特性使参数量大大降低,而且适合图像的特性。卷积层中的权值通常被成为滤波器(filter)或卷积核(convolution kernel)。

CNN好处:局部连接、权值共享、池化。

  • 共同优点:局部连接、权值共享、池化均能降低参数量,减轻过拟合,提高泛化能力;
  • 局部连接模式保证了学习到的卷积核对输入的空间局部模式具有最强的响应;
  • 权值共享使得网络善于捕捉平移不变性;
  • 池化层的降采样赋予了模型对轻度形变的容忍性,提高了模型的泛化能力。

卷积层的作用:通过卷积,我们可以捕获图像的局部信息。通过多层卷积层堆叠,各层提取到特征逐渐由边缘、纹理、方向等低层级特征过渡到文字、车轮、人脸等高层级特征。

描述卷积的四个基本量:卷积核尺寸f,padding,stride,卷积核个数。

卷积输入输出的大小 假设输入高和宽为\(H\)和\(W\),输出高和宽为\(H‘\)和\(W‘\),则\(H‘=\frac{H-f+2p}{s}+1\),\(W‘=\frac{W-f+2p}{s}+1\)

卷积核:卷积神经网络的核心,通常被看做是在局部感受野上,将空间上(spatial)的信息和特征维度上(channel-wise)的信息进行聚合的信息聚合体。

池化:包括Max Pooling和Average Pooling。前者更容易捕捉图像上梯度的变化,带来更大的局部信息差异性,更好地描述边缘、纹理等构成语义的细节信息;后者常用于卷积模块和FC连接处,以降低参数量(比如GooGLeNet、ResNet等);此外还有自适应平均池化,主要用于将不同的输入转化成固定的输出(比如Fast R-CNN中ROI池化层)。

感受野:卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小,即关心的是原图中多大区域会影响到当前特征图上某个像素。大小计算公式为 \(r_n = r_{n-1} + k_{n-1}\prod_{i=1}^{n-1}s_i\)

看待卷积结果(特征图,Feature Map)的两种视角:卷积结果是一个D×H×W的三维张量。其可以被认为是有D个通道,每个通道是一个二维的特征图,可以显示出对输入的某种特征的响应,即从输入中捕获了某种特定的特征。也可以被认为是有H×W个空间位置,每个空间位置是一个D维的描述向量,描述了对应感受野的图像局部区域的语义特征。

卷积结果的分布式表示:卷积结果的各通道之间不是独立的。卷积结果的各通道的神经元和语义概念之间是一个“多对多”的映射。即,每个语义概念由多个通道神经元一起表示,而每个神经元又同时参与到多个语义概念中去。并且,神经元响应是稀疏的,即大部分的神经元输出为0。

1x1卷积核作用:一是变换通道个数;二是整合通道方向上信息。

卷积操作的实现:1. 快速傅里叶变换(FFT)。通过变换到频域,卷积运算将变为普通矩阵乘法。实际中,当滤波器尺寸大时效果好,而对于通常使用的1×1和3×3卷积,加速不明显。2. im2col (image to column)。im2col将与每个输出神经元相连的局部输入区域展成一个列向量,并将所有得到的向量拼接成一个矩阵。这样卷积运算可以用矩阵乘法实现。im2col的优点是可以利用矩阵乘法的高效实现,而弊端是会占用很大存储,因为输入元素会在生成的矩阵中多次出现。此外,Strassen矩阵乘法和Winograd也常被使用。现有的计算库如MKL和cuDNN,会根据滤波器大小选择合适的算法。

3 高级一点点的基础

上采样的几种方式:

  • 直接扩展,多出来的填充0
  • 插值法,即图像缩放旋转时采用的方法,有最近邻插值、双线性插值等
  • 反池化法,即记录池化的位置,反池化时将值置于记录的位置上,其余填充0(针对最大池化)
  • 反卷积

im2col过程:

  • 每个核拉平成一个行向量,则一系列核可以表示成一个矩阵;
  • 图像中对应核大小的一块patch拉成一个列向量,则图像可表示成(Cin×K×K)×(Hout×Wout)大小的矩阵;
  • 之后卷积的过程就可以表示成矩阵乘法,用于加速;

反卷积:反卷积英文为Deconvolution或Transposed Convolution或Fractional-strided Convolutions。在机器学习中,反卷积是从低分辨率映射到大分辨率的过程,用于扩大图像尺寸。反卷积是一种特殊的正向卷积,而不是卷积的反过程。正向卷积的实现中,通过im2col的方式将一个kernel拉成一个\(k×k\)的行向量,则\(C_{out}\)个kernel就拉成\(C_{out}×(k×k)\)的矩阵,记为\(C\);于是正向传播的过程就是\(C\)左乘图像矩阵\(X\)(经过im2col拉伸的)得到\(Y=CX\),反向传播就是\(C^T\)左乘梯度得到\(\frac{\partial L}{\partial X} = C^T \frac{\partial L}{\partial Y}\)。而反卷积就是,正向传播时候用\(C^T\)左乘,而反向传播时候用\(C\)左乘。所以反卷积可以恢复图像尺寸,但是不能恢复原值,因此有人建议应该采用转置卷积这个术语,而不是叫它反卷积。

Reference

原文地址:https://www.cnblogs.com/inchbyinch/p/12694996.html

时间: 2024-07-29 20:16:28

计算机视觉概要和卷积神经网络基础概念的相关文章

卷积神经网络基本概念(卷积篇 01)

Computer Vision Theory CNN Part 1 简介 1.1 我先后在以下场景下见到过卷积 微分方程 傅立叶变换及其应用 概率论 卷积神经网 1.2 相关阅读 推荐一下 Christopher Olah 的理解卷积的blog http://colah.github.io/posts/2014-07-Understanding-Convolutions/ 数学论证 https://www.dsprelated.com/freebooks/mdft/Convolution.htm

【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇

提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实例:卷积神经网络MNIST分类 期待目标: 1. 清楚神经网络优化原理,掌握反向传播计算. 2. 掌握卷积神经网络卷积层的结构特点,关键参数,层间的连接方式. 3. 了解不同卷积神经网络功能层的作用,会进行简单的卷积神经网络结构设计. 4. 能够运行TensorFlow卷积神经网络 MNIST.  f(x, y, z) = (x + y) * z (3.00 + 1.00) * -2.00 =

DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍

一.计算机视觉 如图示,之前课程中介绍的都是64* 64 3的图像,而一旦图像质量增加,例如变成1000 1000 * 3的时候那么此时的神经网络的计算量会巨大,显然这不现实.所以需要引入其他的方法来解决这个问题. 二.边缘检测示例 边缘检测可以是垂直边缘检测,也可以是水平边缘检测,如上图所示. 至于算法如何实现,下面举一个比较直观的例子: 可以很明显的看出原来6 * 6的矩阵有明显的垂直边缘,通过3 * 3的过滤器(也叫做 "核")卷积之后,仍然保留了原来的垂直边缘特征,虽然这个边缘

人工神经网络基础概念、原理知识(补)

一提到人工神经网络应当想到三个基础的知识点:一是神经元模型:二是神经网络结构:三是学习算法.神经网络的种类多种多样,但其分类依据逃不出上面上个基础知识点.所以在学习中如果能够仅仅把握住以上三个线索,就能触类旁通,拥有一个非常好的视角看待神经网络.今天就对这三个基础知识点进行总结,达到指导神经网络学习以及深化对神经网络的理解的目的. 一.神经元模型 人工神经网络是在现代神经生物学研究基础上提出的模拟生物过程 ,反映人脑某些特性的一种计算结构.它不是人脑神经系统的真实描写,而只是它的某种抽象.简化和

卷积神经网络之原理详解

本文来源1:http://blog.csdn.net/zouxy09/article/details/9993371 本文来源2:http://blog.csdn.net/qiaofangjie/article/details/16826849 卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点.它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量.该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识

神经网络以及卷积神经网络(CNN)初始

1 人工神经网络 1.1 神经元 神经网络由大量的神经元相互连接而成.每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出.每两个神经元之间的连接代表加权值,称之为权重(weight).不同的权重和激活函数,则会导致神经网络不同的输出. 举个手写识别的例子,给定一个未知数字,让神经网络识别是什么数字.此时的神经网络的输入由一组被输入图像的像素所激活的输入神经元所定义.在通过非线性激活函数进行非线性变换后,神经元被激活然后被传递

Convolutional Neural Networks卷积神经网络

转自:http://blog.csdn.net/zouxy09/article/details/8781543 9.5.Convolutional Neural Networks卷积神经网络 卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点.它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量.该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程.卷积网络是为识别

Convolutional Neural Networks卷积神经网络(二)

转自http://blog.csdn.net/zouxy09/article/details/8781543 CNNs是第一个真正成功训练多层网络结构的学习算法.它利用空间关系减少需要学习的参数数目以提高一般前向BP算法的训练性能.在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著的特征.这个方法能够获取对平移,缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 2基础及源码解析 2.1 Convolution Neural Network卷积神经网络基础知识 1)基础知识: 自行google,百度,基础方面的非常多,随便看看就可以,只是很多没有把细节说得清楚和明白: 能把细节说清