0x00 引言
本文主要知识结构与素材摘自《基于深度学习的计算机视觉》[1]。
计算机视觉当前主要研究领域如下图所示:
在经过图像数据处理以及获得图像的特征以后,就需要利用这些前期得到的信息基础来完成不同的计算机视觉任务,本文将涉及图像识别的内容。
0x01 图像识别之图像分类
图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。
1 | 1 神经网络基础 |
1、神经网络基础
神经网络是机器学习领域中常使用的一种学习方法,具体内容可参考吴恩达教授的机器学习课程[2]。
2、卷积神经网络(CNN)
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。
2.1、CNN基本层
普通的神经网络由输入层、隐含层与输出层组成,CNN也类似,其基本的构成层包括以下几种:卷积层、池化层、全连接层与批归一化层。
1)CNN卷积层:
卷积层的作用是提取局部特征。3D滤波器/卷积核(所谓3D这里以RGB为例,就是指一张彩图是由红绿蓝三层图组合成的)以扫描窗的方式,对图像做卷积;每层图含有多个卷积核[3],且每个核对应了一个输出通道,卷积层的长度由核的数量决定。所以要明确的是卷积层最重要的有三个参数,其一为图片像素(k$\times $k),其二为3张RGB图,其三为卷积核数量。其示意图如下所示:
举个例子,若输入图片为32$\times $32$\times $3,卷积核为5$\times $5$\times $3,且卷积核数量为6,且不补零,则输出特征为28$\times $28$\times $6。可见输出特征厚度只与卷积核数量有关。
CNN卷积层的非线性激活函数:sigmoid或是ReLU,可参考pytorch-BP神经网络拟合非线性函数[4]。
2)CNN池化层:
池化层的作用是进行特征融合,降维。计算方式有最大化池化与平均值池化,以前者为例,操作过程如下图所示:
3)CNN全连接层:
全连接层作用是分类,可以理解为就是普通的神经网络,其具体操作过程参考对于全连接层的理解[5]。
4)CNN-Softmax层:
softmax层作用是将全连接层的实数向量压缩到(0,1),即为概率。实质为指数归一化函数,其公式如下:
0x02 图像识别之物体检测
物体检测是计算机视觉中的经典问题之一,其任务是用框去标出图像中物体的位置,并给出物体的类别。
1 | 1 区域卷积神经网络R-CNN |
1、区域卷积神经网络R-CNN
这种网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。
RNN物体检测具体过程为输入图片$\rightarrow $区域截取$\rightarrow $手工提取特征$\rightarrow $分类器分类,相应的过程图如下:
0x03 引用文献
[1]http://www.chinahadoop.cn/course/916
[2]http://study.163.com/course/courseMain.htm?courseId=1004570029
[3]https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF%E6%A0%B8/3377590?fr=aladdin)
[4]https://jailbreakfox.github.io/2018/12/12/pytorch-BP%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E6%8B%9F%E5%90%88%E9%9D%9E%E7%BA%BF%E6%80%A7%E5%87%BD%E6%95%B0/
[5]https://blog.csdn.net/gyh_420/article/details/78569225