[Detection] CNN 之 "物体检测" 篇


Index

RCNN

Rich feature hierarchies for accurate object detection and semantic segmentation

早期,使用窗口扫描进行物体识别,计算量大。 RCNN去掉窗口扫描,用聚类方式,对图像进行分割分组,得到多个侯选框的层次组。

  • 原始图片通过Selective Search提取候选框,约有2k个
  • 侯选框缩放成固定大小
  • 经过CNN
  • 经两个全连接后,分类

拓展阅读:基于R-CNN的物体检测-CVPR 2014

Fast RCNN

Fast R-CNN

RCNN中有CNN重复计算,Fast RCNN则去掉重复计算,并微调选框位置。

  • 整图经过CNN,得到特征图
  • 提取域候选框
  • 把候选框投影到特征图上,Pooling采样成固定大小
  • 经两个全连接后,分类与微调选框位置

Faster RCNN

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

提取候选框运行在CPU上,耗时2s,效率低下。
Faster RCNN使用CNN来预测候选框。

  • 整图经过CNN,得到特征图
  • 经过核为 3×3×256 的卷积,每个点上预测k个anchor box是否是物体,并微调anchor box的位置
  • 提取出物体框后,采用Fast RCNN同样的方式,进行分类
  • 选框与分类共用一个CNN网络

anchor box的设置应比较好的覆盖到不同大小区域,如下图:

一张1000×600的图片,大概可以得到20k个anchor box(60×40×9)。

R-FCN

R-FCN: Object Detection via Region-based Fully Convolutional Networks

论文翻译详见:[译] 基于R-FCN的物体检测 (zhwhong)

RCNN系列(RCNN、Fast RCNN、Faster RCNN)中,网络由两个子CNN构成。在图片分类中,只需一个CNN,效率非常高。所以物体检测是不是也可以只用一个CNN?

图片分类需要兼容形变,而物体检测需要利用形变,如何平衡?

R-FCN利用在CNN的最后进行位置相关的特征pooling来解决以上两个问题。

经普通CNN后,做有 k^2(C+1) 个 channel 的卷积,生成位置相关的特征(position-sensitive score maps)。

C 表示分类数,加 1 表示背景,k 表示后续要pooling 的大小,所以生成 k^2 倍的channel,以应对后面的空间pooling。

普通CNN后,还有一个RPN(Region Proposal Network),生成候选框。

假设一个候选框大小为 w×h,将它投影在位置相关的特征上,并采用average-pooling的方式生成一个 k×k×k^2(C+1) 的块(与Fast RCNN一样),再采用空间相关的pooling(k×k平面上每一个点取channel上对应的部分数据),生成 k×k×(C+1)的块,最后再做average-pooling生成 C+1 的块,最后做softmax生成分类概率。

类似的,RPN也可以采用空间pooling的结构,生成一个channel为 4k^2的特征层。

空间pooling的具体操作可以参考下面。

训练与SSD相似,训练时拿来做lost计算的点取一个常数,如128。 除去正点,剩下的所有使用概率最高的负点。

YOLO

You Only Look Once: Unified, Real-Time Object Detection

Faster RCNN需要对20k个anchor box进行判断是否是物体,然后再进行物体识别,分成了两步。 YOLO则把物体框的选择与识别进行了结合,一步输出,即变成”You Only Look Once”。

  • 把原始图片缩放成448×448大小
  • 运行单个CNN
  • 计算物体中心是否落入单元格、物体的位置、物体的类别

模型如下:

  • 把缩放成统一大小的图片分割成S×S的单元格
  • 每个单元格输出B个矩形框(冗余设计),包含框的位置信息(x, y, w, h)与物体的Confidence
  • 每个单元格再输出C个类别的条件概率P(Class∣Object)
  • 最终输出层应有S×S×(B∗5+C)个单元
  • x, y 是每个单元格的相对位置
  • w, h 是整图的相对大小

Conficence定义如下:

在原论文中,S = 7,B = 2,C = 20,所以输出的单元数为7×7×30。

代价函数:

其中 λ_coord=5λ_noobj=0.5
一般,w与 h 不是在 [0,1]上的均匀分布,偏小,所以开方。

注: 开方的解释是我自己的估计,可能不对。

SSD

SSD: Single Shot MultiBox Detector

YOLO在 7×7 的框架下识别物体,遇到大量小物体时,难以处理。
SSD则在不同层级的feature map下进行识别,能够覆盖更多范围。

假设在 m 层 feature map 上进行识别,则第 k 层的基本比例为

比如 s_min=0.2,s_max=0.95,表示整张图片识别物体所占比最小 0.2,最大 0.95。

在基本比例上,再取多个长宽比,令 a={1, 2, 3, 1/2, 1/3},长宽分别为

Match策略上,取ground truth与以上生成的格子重叠率大于0.5的。

SSD vs YOLO

位置采用Smooth L1 Regression,分类采用Softmax。
代价函数为:

![][01]
[01]:http://latex.codecogs.com/png.latex?L%20=%20L_{conf}(x,%20c)%20+%20\alpha%20\cdot%20L_{loc}(c,%20l,%20g))

x 表示类别输出,c 表示目标分类,l 表示位置输出,g 表示目标位置, α是比例常数,可取1。
训练过程中负点远多于正点,所以只取负点中,概率最大的几个,数量与正点成 3:1 。

NMS

以上方法,同一物体可能有多个预测值。
可用NMS(Non-maximum suppression,非极大值抑制)来去重。

如上图所示,一共有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

两个矩形的重叠率计算方式如下:

xywh VS xyxy

系列论文中,位置都用 (x,y,w,h)来表示,没有用左上角、右下角 (x,y,x,y) 来表示。
初衷是当 (w,h)正确时,(x,y) 一点错,会导致整个框就不准了。
在初步的实际实验中,(x,y,x,y) 效果要差一些。

背后的逻辑,物体位置用 (x,y,w,h) 来学习比较容易。
(x,y) 只需要位置相关的加权就能计算出来;
(w,h) 就更简单了,直接特征值相加即可。



(注:感谢您的阅读,希望本文对您有所帮助。如果觉得不错欢迎分享转载,但请先点击 这里 获取授权。本文由 版权印 提供保护,禁止任何形式的未授权违规转载,谢谢!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 143,736评论 1 303
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 61,631评论 1 258
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 95,145评论 0 213
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 41,213评论 0 181
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 49,025评论 1 259
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,893评论 1 178
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,497评论 2 273
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,240评论 0 167
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 29,114评论 6 235
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,596评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,363评论 2 215
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,717评论 1 232
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,279评论 0 32
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,183评论 2 214
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,629评论 3 209
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,647评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,047评论 0 167
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,625评论 2 232
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,734评论 2 236

推荐阅读更多精彩内容