▌2 、对象检测
识别图像中的对象这一任务,通常会涉及到为各个对象输出边界框和标签。这不同于分类/定位任务——对很多对象进行分类和定位,而不仅仅是对个主体对象进行分类和定位。在对象检测中,你只有 2 个对象分类类别,即对象边界框和非对象边界框。例如,在汽车检测中,你必须使用边界框检测所给定图像中的所有汽车。
如果使用图像分类和定位图像这样的滑动窗口技术,我们则需要将卷积神经网络应用于图像上的很多不同物体上。由于卷积神经网络会将图像中的每个物体识别为对象或背景,因此我们需要在大量的位置和规模上使用卷积神经网络,但是这需要很大的计算量!
为了解决这一问题,神经网络研究人员建议使用区域(region)这一概念,这样我们就会找到可能包含对象的“斑点”图像区域,这样运行速度就会大大提高。第一种模型是基于区域的卷积神经网络( r-cnn ),其算法原理如下:
在 r-cnn 中,首先使用选择性搜索算法扫描输入图像,寻找其中的可能对象,从而生成大约 2,000 个区域建议;然后,在这些区域建议上运行一个 卷积神网络;最后,将每个卷积神经网络的输出传给支持向量机( svm ),使用一个线性回归收紧对象的边界框。
实质上,我们将对象检测转换为一个图像分类问题。但是也存在这些问题:训练速度慢,需要大量的磁盘空间,推理速度也很慢。
r-cnn 的第一个升级版本是 fast r-cnn,通过使用了 2 次增强,大大提了检测速度:
在建议区域之前进行特征提取,因此在整幅图像上只能运行一次卷积神经网络;用一个 softmax 层代替支持向量机,对用于预测的神经网络进行扩展,而不是创建一个新的模型。
fast r-cnn 的运行速度要比 r-cnn 快的多,因为在一幅图像上它只能训练一个 cnn 。 但是,择性搜索算法生成区域提议仍然要花费大量时间。
faster r-cnn 是基于深度学习对象检测的一个典型案例。
该算法用一个快速神经网络代替了运算速度很慢的选择性搜索算法:通过插入区域提议网络( rpn ),来预测来自特征的建议。 rpn 决定查看“哪里”,这样可以减少整个推理过程的计算量。
rpn 快速且高效地扫描每一个位置,来评估在给定的区域内是否需要作进一步处理,其实现方式如下:通过输出 k 个边界框建议,每个边界框建议都有 2 个值——代表每个位置包含目标对象和不包含目标对象的概率。
一旦我们有了区域建议,就直接将它们送入 fast r-cnn 。 并且,我们还添加了一个池化层、一些全连接层、一个 softmax 分类层以及一个边界框回归器。
总之,faster r-cnn 的速度和准确度更高。值得注意的是,虽然以后的模型在提高检测速度方面做了很多工作,但很少有模型能够大幅度的超越 faster r-cnn 。换句话说, faster r-cnn 可能不是最简单或最快速的目标检测方法,但仍然是性能最好的方法之一。
近年来,主要的目标检测算法已经转向更快、更高效的检测系统。这种趋势在 you only look once(yolo),single shot multibox detector(ssd)和基于区域的全卷积网络( r-fcn )算法中尤为明显,这三种算法转向在整个图像上共享计算。因此,这三种算法和上述的3种造价较高的r-cnn 技术有所不同。