Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务

一、卷积神经网络/

1、卷积神经网络(CNN)与普通神经网路的不同,其输入一定是图片。如果把图像拉伸成列向量,每一个像素值作为输入,将需要大量的参数,大量的参数导致网络过拟合且效率低下。卷积神经网络针对图像对神经网路做出改进。
卷积神经网络的组成是:卷积层、汇聚层、全连接层。通过这些层进行叠加,构成卷积神经网络。
(1)卷积层
- 假设一个3*3*3的滤波器(称为卷积核),分别代表长度为3,宽度为3,通道为3,就是一个长方体。下图中的w0表示这样的一个卷积核(图中将其展开了)。之所以有深度为3,是为了和输入图像的三个通道保持一致。实际中,卷积核应该使用3*3表示,最后一个通道默认为和输入一致。
- 卷积层的操作就是将这样一个卷积核在输入图像中走一遍,使对应元素相乘,然后将相乘的结果(3*3*3=27个)相加,这就是图像卷积。
-下图中的卷积层的大小是3*3*2,这个2个有两个卷积核(w0与w1)。3*3也叫感受野尺寸。
-三个超参数控制着卷积层的输出:深度,步长,零填充。下图中深度为2。步长表示卷积核在原图中滑动的时候每次移动的距离。零填充:如果没进行填充,且步长为1,则输出比输入图像的尺寸小2个像素,零填充就是在原图像周围加上一些0像素值。
-假设输入是一个大小为W×W的图像,卷积层中感受野为F,步长为S,零填充数量为P,则输出是(W+2P-F)/S+1。想一想为什么?当前面相除结果不是整数的时候,表明卷积核不能整齐的滑过数据体,这个设置是无效的。
Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
(2)汇聚层(降采样)
包括很多种方式,最常见的是最大汇聚。如下图,汇聚层不需要训练。
Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
(3)全连接层
全连接层就是对前一层中的所有**函数数据全部连接。
(4)除了上述三个层以外,RElu**函数也应该算作一层。它对每一个像素(或许经过卷积汇聚不应该叫像素了)进行**。
2、常见的几种卷积神经网络
LeNet、AlexNet、ZFNet、GoogleNet、VGGNet、ResNet。
3、注意
(1)卷积层应该使用小尺寸滤波器,使用步长为1,对数据进行零填充,这样不会改变输入数据的空间尺寸。
(2)汇聚层负责对输入数据进行降采样,最常使用的是2*2的感受野,步长为2。卷积层保持输入空间尺寸,汇聚层只负责降采样。汇聚层的感受野一般不会超过3*3。

二、单个物体的分类与定位(图片的分类与定位)

  1. 任务要求:一幅图像上只有一个物体,识别这个物体的类别并且在图片中进行框选。
  2. 思路一:
    step1:训练或者是下载一个目标识别的网络(eg.AlexNet、VGG、GooLeNet)
    step2:在下载好的网络的特征提取层之后加入一个新的头部,用于框选回归(位置表示(x,y,w,h))
    step3:使用SGD和L2损失训练新的上面的全连接层
    step4:在实际使用过程中,两头头部都要加上
    注意:不同的类别产生的边界是不同的,有的检测与识别考虑了这种影响。
    还有一个问题是在何处加上回归,不同的网路有不同的处理方法
    Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
    3.思路二:滑动窗口overfit网络
    选择不同尺度的滑动窗口中,选择得分值最高的,overfit网络架构如下:
    Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
    不同网络的错误率
    Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务

三、目标检测与识别

任务要求:一副输入图像上有多个物体,需要对每一个物体进行识别(什么物体)和定位(给出两个坐标位置用于框选),这叫做目标检测,或者叫做目标检测与识别。
边界提案(候选框)的生成方式:在图像上生成可能存在的目标区域。
一种最著名的方式是选择性搜索。其从像素出发,通过颜色和纹理产生相似性区域,在相似性区域周边,产生边界提案。
Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
1、R-CNN(基于区域的CNN方法):
(1)其通过选择性搜索,从一副图像中选择出2K个大小不同,位置不同的候选框(相对于随机产生候选框,已经节省了很多),之后通过将不同大小的图像转换成大小相同的图像通过CNN进行分类和回归,回归是对候选框进行微调。
训练过程:
step1:训练或者下载一个分类模型(eg.AlexNet)
step2:微调用于检测(改变全连接层,产生不同的类别(需要检测的类别数量),数据重新训练一次)
Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
step3:提取特征,使用选择性搜索算法选择出候选区域,切分后通过CNN进行推理,提取第五个汇聚层(pool 5)的输出特征保存在硬盘中。
sep4:训练一个二分类的SVM,判断图像中是否包含物体,不包含物体的称之为背景。
step5:边界框回归(bbox regression):通过一个线性回归模型对边界框进行修正。回归的内容是位置(两个坐标,四个数值)
Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
具体可观看R-CNN论文
(2)目标检测评价指标
mAP(平均正确率)
正负样例的判定:如果一个测试结果与ground truth的交幷比(IoU)大于一个阈值,就认为是正确的样例。通过这个结果计算mAP。
(3)R-CNN存在问题
a.测试时间慢:对于每一个边界提案都需要运行一次全连接层
b.SVMs和回归是离线训练的,
c.复杂的训练流程
2、fast R-CNN
结构:
Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
3、faster R-CNN
不多做介绍了,参考相关论文
还有Yolo V3网络、SSD等。

四、时序动作检测与识别

任务要求:输入是一段视频序列,输出是分割的一段段视频序列(起始时间)以及这段视频序列中的动作类别。
时序动作检测与识别与目标检测与识别在任务需求上具有很高的相似性
Stanford curriculum cs231n学习记录(3)卷积神经网络与计算机视觉任务
因此,时序动作检测与识别的很多网络是参考目标检测与识别网络进行的。