本文共 1991 字,大约阅读时间需要 6 分钟。
本文转自:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2015/12/07/%E7%89%A9%E4%BD%93%E6%A3%80%E6%B5%8B.html
早期,使用窗口扫描进行物体识别,计算量大。 RCNN去掉窗口扫描,用聚类方式,对图像进行分割分组,得到多个侯选框的层次组。
RCNN中有CNN重复计算,Fast RCNN则去掉重复计算,并微调选框位置。
提取候选框运行在CPU上,耗时2s,效率低下。 Faster RCNN使用CNN来预测候选框。
anchor box的设置应比较好的覆盖到不同大小区域,如下图:
一张1000×6001000×600的图片,大概可以得到20k个anchor box(60×40×960×40×9)。
RCNN系列(RCNN、Fast RCNN、Faster RCNN)中,网络由两个子CNN构成。在图片分类中,只需一个CNN,效率非常高。所以物体检测是不是也可以只用一个CNN? 图片分类需要兼容形变,而物体检测需要利用形变,如何平衡? R-FCN利用在CNN的最后进行位置相关的特征pooling来解决以上两个问题。
经普通CNN后,做有 k2(C+1)k2(C+1) 个 channel 的卷积,生成位置相关的特征(position-sensitive score maps)。 CC 表示分类数,加 11 表示背景,kk 表示后续要pooling 的大小,所以生成 k2k2 倍的channel,以应对后面的空间pooling。
普通CNN后,还有一个RPN(Region Proposal Network),生成候选框。
假设一个候选框大小为 w×hw×h,将它投影在位置相关的特征上,并采用average-pooling的方式生成一个 k×k×k2(C+1)k×k×k2(C+1) 的块(与Fast RCNN一样),再采用空间相关的pooling(k×kk×k平面上每一个点取channel上对应的部分数据),生成 k×k×(C+1)k×k×(C+1)的块,最后再做average-pooling生成 C+1C+1 的块,最后做softmax生成分类概率。 类似的,RPN也可以采用空间pooling的结构,生成一个channel为 4k24k2的特征层。 空间pooling的具体操作可以参考下面。训练与SSD相似,正负点取一个常数,如128。除去正点,剩下的所有使用概率最高的负点。
Faster RCNN需要对20k个anchor box进行判断是否是物体,然后再进行物体识别,分成了两步。 YOLO则把物体框的选择与识别进行了结合,一步输出,即变成”You Only Look Once”。
模型如下:
分类的概率
在原论文中,S = 7,B = 2,C = 20,所以输出的单元数为7×7×307×7×30。
代价函数: