该笔记介绍的是《卷积神经网络》系列第三周:目标检测(1)基本的对象检测算法
主要内容有:
1.目标定位
2.特征点检测
3.目标检测
目标定位
使用算法判断图片中是不是目标物体,如果是还要再图片中标出其位置并使用边框标记出来
我们研究过的问题中,图片分类的思想可以帮助学习分类定位,而分类定位的思想又可以帮助学习对象检测
a.分类定位问题,通常有一个较大的对象位于图片中间位置。
b.对象检测问题,图片可以含有多个对象,或一张图片中会有多个不同分类的对象。
图片分类对分类定位的帮助:
对于普通的图片分类网络:
分类定位是在图片分类网络上加入了全连接层的输出bx,by,bh,bw和一个分类标签(c1,c2,c3)
定义目标标签y
标签y为:
元素含义:
a. 元素Pc:表示被检测对象某一分类的概率(是否含有关心的检测的对象)。对于视频提到的列子而言,要检验车、摩托车、行人、景物。但是前三个检测对象是我们关心的,那么如果出现Pc为1,图片为景物或者其他不是我们关系的则Pc为0。
b. 元素bx,by:为标记边框的中心位置坐标,一般要(bx,by)表示。图片左上角标记为(0,0),右下角标记为(1,1)。
c. 元素bh,bw:为标记边框的长高。bw为长,bh为高。
d. 元素c1,c2,c3.....cn:为分类标签,n对应自己实际的分类标签个数。但是在c1,c2,c3.....cn中只有一个为1。视频中关心的分类标签只有车,摩托车和行人,所以n只到3.
损失函数:
Pc为1时,损失值等于每个元素相应差值的平方
Pc为0时,只需关注神经网络输出Pc的准确性,y1即为Pc
特征点检测
神经网络可以通过输出图片上的特征点(x,y)坐标,来实现对目标特征的识别。
为了构建这样的网络,你需要选定特征点的个数,并生成包含这些特征点的标签训练集图片X和标签Y(这些特征都是人为辛苦标记出来的),然后利用神经网络训练,输出图片中特征点的位置
目标检测
基于滑动窗口构目标检测算法
第一步:创建一个标签训练集,训练集为适当剪切过的图片样本,使检测对象位于中心位置,并且基本占据整张图片
第二步:开始训练神经网络,接下来使用这个网络实现滑动窗口检测
第三步:滑动窗口检测
先选择特定大小的窗口,以固定不服滑动窗口,遍历截取图像的每一个区域,把截取的小图片输入到上面训练过的卷积网络中,对每个位置按0或1进行分类(判断截取图片中是否存在待检测对象)。选取更大的窗口重复以上操作。
卷积的滑动窗口(对上面算法的改进)
把全连接层转化为卷积层:
原理:视频上说是,从数学角度来看转换的卷积层与全连接层一样,400个节点中每一个节点都有一个5x5x16维度的过滤器,这些值都是上一层这些5X5X16激活值经过某个任意线性函数的输出结果。
全连接模型:
改为卷积层:把FC全连接层转化为使用16个5x5过滤器实现,之后的FC层使用400个1x1过滤器实现(最后一个1x1过滤器处理如同FC的softmax函数)。
通过卷积实现滑动窗口对象检测算法:
对于单个卷积实现过程:
卷积滑动窗口实现过程:卷积滑动其实可以把窗口看成卷积神经网络的过滤器,滑动的步长即为过滤器的步长。这样我们就不需要把输入图片进行分割了而是把其当成一整张图片输入卷积网络进行计算,其中公共区域可以共享很多计算。
原文地址:https://www.cnblogs.com/-1024/p/8907148.html