文章目录
标题目标检测算法:Faster-RCNN
R-CNN
Region Proposals 候选区域
原先都是用Selective Search算法产生候选区域(根据图片像素和纹理),比较慢(CPU上几秒种),效率慢,一张图要几秒钟。一张图片会产生1—2K个候选区域
RCNN结构原理
首先通过SS算法在图像上产生候选框(大约1~2K个),对每个候选框执行卷积的操作。得到每个候选框的特征(特征不是共享的)
然后进行候选框的回归,还有候选区域的分类
整个过程是分阶段进行的,不是端到端进行(从输入到输出,只有一个结构),每一小块都要单独执行。
RCNN存在的问题
(1)每个候选区域都有一个单独的卷积网络,不是所有候选区域共享同一个卷积网络。主要是卷积网络中的全连接层无法共享,因为每个候选区域的大小不一样。
(2)SVM分类损失太高,外接矩形框回归(最小二乘)
(3)速度太慢,训练花了84个小时
用SPP-Net改进(spatial pyramid pooling layer空间金字塔池化)
crop就是从一个大图扣出网络输入大小的patch,比如227×227
warp就是把一个边界框bounding box的内容resize成227×227
但warp/crop这种预处理,导致的问题要么被拉伸变形、要么物体不全,限制了识别精确度。没太明白?说句人话就是,一张16:9比例的图片你硬是要Resize成1:1的图片,你说图片失真不?
SPP能保证将卷积层得到的特征图,串联成一个新的特征,并能保证每个候选框串联后的特征是相同长度的。
由此实现了特征提取部分的共享计算。
Fast R-CNN
Fast R-CNN结构图
一,首先我们对整个图像做卷积处理。
二、根据在原图像上的候选框,找到经过卷积后特征图上的候选框。(因为特征图对应原图上,有特定大小的感受野)
优势:(1)卷积共享(2)速度更快
三、将候选区域经过ROI pooling layers,类似于spp的作用,这样就可以对所有的候选区域,使用统一的全连接层。
四、经过全连接层,然后做softmax分类,和边界框回归(此时分类和回归是一同进行的)
优势:基本实现了 端到端
Fast R-CNN的缺陷
前提条件:必须在原图像的候选框区域上进行,这里的候选区域,其实还是用SS算法得到的,一张图片可能会有1~2K个候选区域。
没有完全实现 端到端算法
从上图对比中可以看到,候选区域的寻找过程严重拖慢了Fast R-CNN的速度。
怎么把这个候选框寻找过程整合到神经网络训练中?????
Faster R-CNN
一、整个图片卷积处理,得到原图的特征图。
二、Region Proposal Network(区域建议网络),在特征图中产生候选框。
三、对产生出来的候选框,先做二分类(判断是物体or不是物体,即是前景还是背景),然后在二分类中是物体的侯选框,进行微调。
四、将得到的特征图(含有不同大小的候选框),经过ROI pooling 后,再进行多分类确定,和候选框区域确定。
从图中速度对比可以看出,Faster R-CNN速度可以达到一秒钟读取5张图片的速度。