【目标检测】FasterRcnn
目标检测模型的进化路线如下:
RCNN->SPP-NET->FastRcnn->FasterRcnn
FasterRcnn在目标检测领域继RCNN和FastRcnn之后的又一力作。把目标检测的速度提升到了实时的水准。谨以此文记录自己的学习心得。欢迎志同道合之士讨论(联系方式在后面)。
正文开始:
下表是RCNN、FastRcnn(二者参考这一片篇文章https://www.cnblogs.com/skyfsm/p/6806246.html)以及FasterRcnn的整体的模型结构图。图中显示出
Rcnn:
1、采用选择性搜索算法在输入图片中进行选择性搜索,选出可能具有目标的区域,并进行保存。
2、把第一步获取到的区域图片通过深度卷积网络进行特征提取,提取出区域图片的图像特征。
3、第二步获取到的区域图像特征输入到多个SVM二分类中,判断区域图片是否是本SVM负责的类别。
4、通过边界回归对选择框的位置进行修正。
FastRcnn:
1、采用选择性搜索算法在输入图片中进行选择性搜索,选出可能具有目标的区域,并进行保存。
2、把RCNN中的特征提取与分类以及对区域框位置的修正整合到一个深度网络模型中。
FasterRcnn:
FasterRcnn:
核心就是把FastRcnn模型中的由选择性搜索实现的区域推荐使用RPN( 区域推荐网络)来代替,真正的把网络模型给实现了端到端的训练。
现在来介绍一下RCNN系列每次进化都解决了什么问题。
Rcnn模型较之前的目标检测模型解决的问题:
问题一:速度
经典的目标检测算法使用滑动窗法依次判断所有可能的区域。RCNN则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上提取特征,进行判断。
问题二:训练集
经典的目标检测算法在区域中提取人工设定的特征(Haar,HOG)。本文则需要训练深度网络进行特征提取。可供使用的有两个数据库:
一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。 一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置。一万图像,20类。 RCNN使用识别库进行预训练,而后用检测库调优参数。最后在检测库上评测。
Rcnn存在问题:
问题一:测试时速度慢
RCNN一张图像内候选框之间大量重叠,提取特征操作冗余。
FastRcnn将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。
问题二:训练时速度慢
原因同上。
在训练时,fastrcnn先将一张图像送入网络,紧接着送入从这幅图像上提取出的候选区域。这些候选区域的前几层特征不需要再重复计算。
问题三:训练所需空间大
RCNN中独立的分类器和回归器需要大量特征作为训练样本。 fastrcnn把类别判断和位置精调统一用深度网络实现,不再需要额外存储。
FastRcnn存在的问题: