3.1 目标定位
Object localization
目标定位即判断目标在影像中是否存在,以及将目标在影像中的位置标记出来。
目标检测示意
检测图像中是否包括:行人、汽车、摩托车和背景,并将汽车的位置标记出来。网络的输出结果应为:四种对象的softmax输出以及汽车边界框的参数化显示。
上图中,假定图像左上角为坐标为(0,0),右下角坐标为(1,1),边界框的参数化表示为:(bx,by,bh,bw) = (0.5,0.7,0.3,0.4),其中,0.5、0.7表示边界框中心点的坐标,0.3、0.4表示边界框的高和宽分别为原图像高和宽的3/10以及4/10。
定义目标定位监督学习标签y
![](https://i-blog.csdnimg.cn/blog_migrate/bab1b72419f465b56786bc606fb3ba83.png)
标签y的定义如下:
其中pc表示是否含有对象,此时假设图像中仅包含一种对象,除背景外,若图像中含有对象则pc = 1 ,否则pc = 0。bx,by,bh,bw为边界框参数,c1,c2,c3表示对象数据1-3类中的哪一个。当pc = 0时,y的其他参数将变的无意义。标签y定义好之后,网络的损失函数可以用平方误差来表示:
![](https://i-blog.csdnimg.cn/blog_migrate/42ae5df06018024c6d95d2cf0c676e83.png)
细节:y1 = 1时计算8个元素的差值平方和,y1 = 0时,仅y1对应的差值平方,实际情况时pc应用逻辑回归,bx,by,bh,bw应用平方差,c1,c2,c3应用对数损失函数。
3.2 特征点检测
Landmark detection
![](https://i-blog.csdnimg.cn/blog_migrate/feae93ee920135cc8a5a22518659cdcb.png)
目标定位:网络输出边界框参数bx,by,bh,bw。
人脸检测:网络按顺序输出人脸特征点的坐标(标签中的特征点需要保持一致性)。
人体姿态检测:网络按顺序输出人物姿态关键点的坐标。
3.3 目标检测
Object detection
基于滑动窗口的目标检测
![](https://i-blog.csdnimg.cn/blog_migrate/d69406f02920bc1724650ad735687013.png)
1、训练好一个能够进行物体分类的神经网络。
2、针对测试图片,选择特定大小的窗口,该窗口在测试图片上进行滑动,每滑动一次就将窗口的图像输入到训练好的神经网络中用来判断有没有汽车。
3、重复操作2,知道将窗口滑过图像的每个角落。
3、选择另一个特定大小窗口,重复2、3操作。
这样随着选择不同大小的窗口,不同的滑动步长,总能将汽车从图像中检测出来。
滑动窗口目标检测算法也有很明显的缺点,即计算成本,因为在图片中剪切出太多小方块,卷积网络要一个个地处理。如果选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。
在神经网络兴起之前,通常采用更简单的分类器进行对象检测,比如通过采用手工处理工程特征的简单的线性分类器来执行对象检测。因为每个分类器的计算成本都很低,它只是一个线性函数,所以滑动窗口目标检测算法表现良好。然而,卷积网络运行单个分类人物的成本却高得多,像这样滑动窗口太慢。除非采用超细粒度或极小步幅,否则无法准确定位图片中的对象。现在已有更好的解决方案。
3.4 卷积的滑动窗口实现
Convolutional implementation of sliding windows
启发:利用1x1卷积,将全连接层改造为卷积层,即将卷积神经网络改造为全卷积神经网络,这样输入网络图像的尺寸将不会受到限制。
![](https://i-blog.csdnimg.cn/blog_migrate/c3de5c0abd5dc90da6d18baeca53abb5.png)
利用全卷积神经网络可以改善卷积的重复计算问题。
![](https://i-blog.csdnimg.cn/blog_migrate/d77c2c9251e037937899543c39129cd6.png)
该卷积操作的原理是不需要把输入图像分割成四个子集,分别执行前向传播,而是把它们作为一张图片输入给卷积网络进行计算,其中的公共区域可以共享很多计算,就像这里我们看到的这个4个14x14的方块一样。
对28×28×3的图片应用滑动窗口操作,如果以同样的方式运行前向传播,最后得到8×8×4的结果。跟上例一样,以14×14区域滑动窗口,首先在这个区域应用滑动窗口,其结果对应输出层的左上角部分。接着以大小为2的步幅不断地向右移动窗口,直到第8个单元格,得到输出层的第一行。然后向图片下方移动,最终输出这个8×8×4的结果。因为最大池化参数为2,相当于以大小为2的步幅在原始图片上应用神经网络。
卷积层上应用滑动窗口算法的内容,它提高了整个算法的效率。缺点:边界框的位置可能不够准确。