目标检测,作为图像处理的进阶应用。相比于初级的分类,它还需要一个定位物体的过程。通过定位,分类的交替过程完成图片中的多目标检测。
对于定位。主要有两个路线。一,把定位问题看做一个回归问题,直接得到对象的坐标。如,YOLO系列中的五元组,(x,y,w,h,cls)。二,通过滑动窗口轮询的方式,进行定位,这就是RCNN系列region-based思路,这也方便将RCNN系列算法,扩展到语义分割领域。
RCNN
- 使用卷积神经网络来进行物体检测和语义分割。这是神经网络应用到目标检测领域的关键一步。
- 针对特定领域的有监督微调
RCNN的过程包括三个:
Selective Search算法。在图片全局按照物体类别,依次得到一些region proposal。
把每个region分别输入到卷积神经网络里,提取固定大小(4096维)的特征向量。这里的CNN相当于一个特征提取器。
将特征输入到全连接层,末尾跟一组SVM分类器,分别针对21类进行训练,使其可以在测试时完成分类。
在处理一张图片的全部region以后,对region使用nms极大值抑制(每一类单独处理)。这会拒绝掉一部分重复度较高的region。
RCNN的优点:
1. RCNN回答了卷积神经网络在分类中良好的表现在目标检测部分的可借鉴之处,把CNN当做一个特征提取器。
2. 在特征提取部分,21类共享权值,所以RCNN的特征向量相对当时来说是非常精炼的,保留下来约占1.5G空间。
3. 设计了对照试验。证明了卷积神经网络学习到的是图片的通用特征,通过全连接层的fine-tune发现全连接层学习到的是特定任务的专属特征。举个例子,任务目的是判别人脸男女,年龄,通过卷积网络提取得到的是人脸的通用特征,却没有学习到和性别,年龄相关的内容。这些是在全连接层学习的。这也体现了针对特定任务微调的重要性。
RCNN的缺点:
1. 其主要的错误模式是,定位不准。所以后期使用了nms算法,减小了计算消耗,也提高了定位精度。
2. 输入部分,RCNN不管输入图片的尺寸大小,都将其warp至input大小。虽然满足了网络架构的输入,但对图片造成了扭曲,变形,对训练造成影响。
3. 多阶段训练。相当于多个算法的拼接。难以得到全局最优解。
4. 训练耗时又耗空间。为了SVM分类器和bounding-box分类器的训练,在每个图片的每个region提取到的特征会保留在磁盘上。
5. RCNN对每个region都输入到了CNN处理,效率低下。
Fast-RCNN
- 通过SPP的feature maps思想可以大大加快RCNN的速度。提高效率。修正了RCNN的缺点5。
- SPP的金字塔思想解决了RCNN的固定输入问题,解决了RCNN的缺点2。但SPP仍然还有RCNN的其他缺点。
- Fast-RCNN借鉴了前述SPP的两个思想,并加入了其他的改进方法。把特征提取和边界框回归统一在一个网络中,则其反向传播的过程使用多任务loss函数,更新网络中的所有层。
- 不需要在硬盘中保留特征,不占用额外的空间。
Fast-RCNN架构: