如何评价rcnn,fast-rcnn和faster rcnn rpn-rcnn这一系列方法

如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法? - 知乎2664被浏览146615分享邀请回答arxiv.org/abs/)。CNN流行之后,Szegedy做过将detection问题作为回归问题的尝试(),但是效果差强人意,在VOC2007上mAP只有30.5%。既然回归方法效果不好,而CNN在分类问题上效果很好,那么为什么不把detection问题转化为分类问题呢?RBG的RCNN使用region proposal(具体用的是Selective Search
)来得到有可能得到是object的若干(大概10^3量级)图像局部区域,然后把这些区域分别输入到CNN中,得到区域的feature,再在feature上加上分类器,判断feature对应的区域是属于具体某类object还是背景。当然,RBG还用了区域对应的feature做了针对boundingbox的回归,用来修正预测的boundingbox的位置。RCNN在VOC2007上的mAP是58%左右。RCNN存在着重复计算的问题(proposal的region有几千个,多数都是互相重叠,重叠部分会被多次重复提取feature),于是RBG借鉴Kaiming He的SPP-net的思路单枪匹马搞出了Fast-RCNN,跟RCNN最大区别就是Fast-RCNN将proposal的region映射到CNN的最后一层conv layer的feature map上,这样一张图片只需要提取一次feature,大大提高了速度,也由于流程的整合以及其他原因,在VOC2007上的mAP也提高到了68%。探索是无止境的。Fast-RCNN的速度瓶颈在Region proposal上,于是RBG和Kaiming He一帮人将Region proposal也交给CNN来做,提出了Faster-RCNN。Fater-RCNN中的region proposal netwrok实质是一个Fast-RCNN,这个Fast-RCNN输入的region proposal的是固定的(把一张图片划分成n*n个区域,每个区域给出9个不同ratio和scale的proposal),输出的是对输入的固定proposal是属于背景还是前景的判断和对齐位置的修正(regression)。Region proposal network的输出再输入第二个Fast-RCNN做更精细的分类和Boundingbox的位置修正。Fater-RCNN速度更快了,而且用VGG net作为feature extractor时在VOC2007上mAP能到73%。个人觉得制约RCNN框架内的方法精度提升的瓶颈是将dectection问题转化成了对图片局部区域的分类问题后,不能充分利用图片局部object在整个图片中的context信息。可能RBG也意识到了这一点,所以他最新的一篇文章YOLO()又回到了regression的方法下,这个方法效果很好,在VOC2007上mAP能到63.4%,而且速度非常快,能达到对视频的实时处理(油管视频:),虽然不如Fast-RCNN,但是比传统的实时方法精度提升了太多,而且我觉得还有提升空间。感谢有RGB这样的牛人们不断推动detection的进步&期待YOLO代码的公布30020 条评论分享收藏感谢收起如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法? - 知乎2664被浏览146615分享邀请回答37220 条评论分享收藏感谢收起文章初始发表在:
Selective Search for Object Recognition
Ross B. Girshick(RCNN系列开创者)
Faster RCNN
You Only Look Once
最早的物体识别,是通过窗口扫描的方式进行,并且需要对图片进行几个级别的缩放来重复进行。
这种方式非常暴力,计算量大。
RCNN主要解决的是去掉窗口扫描,用聚类方式,对图像进行分割分组,得到多个侯选框的层次组。
分割分组方法有很多,RCNN用到的是Selective Search。
以下就是RCNN的结构。
从原始图片,通过Selective Search提取出区域候选框,有2000个左右把所有侯选框缩放成固定大小然后通过CNN网络,提取特征再添加两个全链接层,然后再用SVM分类,回归来微调选框位置与大小
RCNN有两千个左右的候选框,都要进行CNN操作。但候选框有大量重叠,造成重复计算。
Fast RCNN就是解决这个问题的。
利用CNN(卷积神经网络),得到整个原始图片的特征层在原始图片上通过Selective Search等方法,提取出域候选框把候选框投影到最后的特征层,并进行Max-Pooling采样,得到固定大小的特征矩形然后再通过两个全连接层,分别用softmax分类,regressor进行选框位置与大小微调
Faster RCNN
在上面的 RCNN 与 Fast RCNN中,相对于在GPU上计算的CNN,在CPU上运行的提取候选框效率低下,一张图片大概需要2秒。
Faster RCNN则直接利用CNN来计算候选框,方式如下:
原始图片经过CNN,得到最后的卷积特征 利用3×3的矩形进行扫描,得到256维的向量(相当于再添加了一个卷积层,卷积核为3×3,输出特征数为256)
3×3的特征层映射到最初图片,是一块比较大的固定区域,在此固定区域上进行长宽变形,比如分别3个缩放级别,则一共有9个不同的矩形区域,称做anchor
box。9就是上图中的k值。 对上图中的k个anchor box进行是否是物体判断预测,和矩形框位置与大小微调选出物体框后,再利用同Fast RCNN同样的方式,对物体类别进行判断 选框与分类使用同样的CNN网络
一张1000×600的图片,大概可以得到20k个anchor
box(60×40×9)。
anchor box的设置应比较好的覆盖从大到小的区域,如下图:
这里有一点疑惑,3×3的卷积核对应的原始图是块固定区域(感受野),并没有包含区域外的信息,如何做到预测更大区域的物体位置?
或者类似于人的感知,比如只看到部分人像,推测整个人像的大小?看到老虎的头,预测整个老虎的位置与大小?
You Only Look Once
Faster RCNN需要对20k个anchor box进行判断是否是物体,然后再进行物体识别,分成了两步。
YOLO(You Only Look Once)则把物体框的选择与识别进行了结合,一步输出,即变成”You Only Look Once”。
所以识别速度非常快,达到每秒45帧,而在快速版YOLO(Fast YOLO,卷积层更少)中,可以达到每秒155帧。
网络的整体结构如下图:
把原始图片缩放成448×448大小
运行单个卷积网络 得到物体的位置与类别
把缩放成统一大小的图片分割成S×S的单元格每一个单元格负责输出B个矩形框,每一个框带四个位置信息(x, y, w, h),与一个该框是物体的概率,用Pr(Object)或者C(Confidence)表示
每一个单元格再负责输出C个类别的概率,用Pr(Class∣Object)表示
最终输出层应有S×S×(B*5+C)个单元
如果一个物体的中心落入一个单元格,则该单元格上的B个矩形框的位置信息都为该物体的位置信息, C个概率中对应该物体类别值为1,其它为0。x, y表示中心相对于单元格左上角的位置偏移,单元格左上角为(0, 0),右下角为(1, 1) w, h表示矩形框的宽与高,都是相对于整个图片的相对值,全副图片大小为(1, 1),长宽都一半就是(0.5, 0.5)
最终输出时,是物体的概率乘以类别概率,才是整体识别到是一个物体的概率:
Pr(class)=Pr(Class∣Object)*Pr(Object)
在论文中,S = 7,B = 2,C = 20。
所以输出的单元数为7×7×30。
具体的网络结构如下:
从上图的结构可以看到,倒数第二层是一个全连接层,所以最终的单元输出整合了全局信息,更好地预测图像区域。
整个网络最后一层为线性激活,其它层都为Leaky Rectified Linear激活方式:
?(x)={x,0.1x,if
x & 0otherwise
因为一张图片中,大部分单元格中都没有落入物体中心,所以引入两个参数λcoord=5,λnoobj=0.5。
整个网络的代价函数变成:
J=λcoord∑i=0S2∑j=0B1objij(xi-x^i)2+(yi-y^i)2+λcoord∑i=0S2∑j=0B1objij(wi--√-w^i--√)2+(hi--√-h^i--√)2+∑i=0S2∑j=0B1objij(Ci-C^i)2+λnoobj∑i=0S2∑j=0B1noobjij(Ci-C^i)2+∑i=0S21objij∑c∈classes(pi(c)-p^i(c))2
因为物体有大有小,如果用差平方来做代价,则造成对大物体位置更好的优化,才发现小物体位置更差的优化,所以上面改成用开方后再做差平方。
我认为用以下方式可能更好:
(wi-w^iw^i)2+(hi-h^ih^i)2
什么时候跑了实验,有了结果再来确认。
YOLO的局限性
最终有一个全连接层,所以各单元格能够利用全局信息,但是造成初始图片只能缩放成固定大小初始图片有缩放,则可能对不同缩放比的物体覆盖不全,造成无法识别极端缩放比的物体每一个单元格只选择一个物体框来用,并只预测一个类别,所以当多个物体中心落入一个单元格时,YOLO无能为力,表现成不能识别到小物体
通过上面的RCNN, Fast RCNN, Faster RCNN 或 YOLO 方法,图片中的同一个物体,可能识别出来多个选框。
这时需要进行选优,去掉重复的框。
非极大值抑制(Non-maximum suppression,NMS)就是拿来干这个的。
如上图所示,一共有6个识别为人的框,每一个框有一个置信率。
现在需要消除多余的:
按置信率排序: 0.95, 0.9, 0.9, 0.8, 0.7, 0.7取最大0.95的框为一个物体框剩余5个框中,去掉与0.95框重叠率大于0.6(可以另行设置),则保留0.9, 0.8, 0.7三个框重复上面的步骤,直到没有框了,0.9为一个框选出来的为: 0.95, 0.9
两个矩形的重叠率计算方式如下:
如图,矩形的左上角坐标为x1, y1, 右下角坐标为x2, y2,两个矩形的面积分别为A, B。
取两个矩形左上角坐标的最大值x1_max, y1_max取两个矩形右下角坐标的最小值x2_min, y2_min重叠区域的宽w为max(0, x2_min - x1_max),高h为max(0, y2_min - y1_max)重叠率为 w×hA+B-w×h
如下的两个矩形,重叠率为0:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1057次
排名:千里之外
转载:15篇
(4)(6)(1)(3)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'}

我要回帖

更多关于 py faster rcnn 安装 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信