YOLO文章详细解读

文章《You Only Look Once: Unified, Real-Time Object Detection》提出方法下面简称YOLO。

目前,基于深度学习算法的一系列目标检测算法大致可以分为两大流派:
1.两步走(two-stage)算法:先产生候选区域然后再进行CNN分类(RCNN系列),
2.一步走(one-stage)算法:直接对输入图像应用算法并输出类别和相应的定位(YOLO系列)

之前的R-CNN系列虽然准确率比较高,但是即使是发展到Faster R-CNN,检测一张图片如下图所示也要7fps(原文为5fps),为了使得检测的工作能够用到实时的场景中,提出了YOLO。


1.png

YOLO的检测思想不同于R-CNN系列的思想,它将目标检测作为回归任务来解决。
下面来看看YOLO的整体结构:


2.png

3.png

由上两图所示,网络是根据GoogLeNet改进的,输入图片为448*448大小,输出为7\times7\times(2\times5+20),现在看来这样写输出维度很奇怪,下面来看一下输出是怎么定义的。

将图片分为S\times S个单元格(原文中S=7),之后的输出是以单元格为单位进行的:
1.如果一个object的中心落在某个单元格上,那么这个单元格负责预测这个物体。
2.每个单元格需要预测B个bbox值(bbox值包括坐标和宽高,原文中B=2),同时为每个bbox值预测一个置信度(confidence scores)。也就是每个单元格需要预测B×(4+1)个值。
3.每个单元格需要预测C(物体种类个数,原文C=20,这个与使用的数据库有关)个条件概率值.
所以,最后网络的输出维度为S \times S \times (B\times 5 + C),这里虽然每个单元格负责预测一种物体(这也是这篇文章的问题,当有小物体时可能会有问题),但是每个单元格可以预测多个bbox值(这里可以认为有多个不同形状的bbox,为了更准确的定位出物体,如下图所示)。

4.png

因为这里是当作回归问题来解决的,所以所有的输出包括坐标和宽高最好都定义在0到1之间。网上看见一张比较详细的图如下。

5.png

来看一下每个单元格预测的B个(x,y,w,h,confidence)的向量和C的条件概率中,每个参数的含义(假设图片宽为{w_i}高为{hi},将图片分为S\times S):
1.(x,y)是bbox的中心相对于单元格的offset
对于下图中蓝色框的那个单元格(坐标为(x_{col}=1,y_{row}=4)),假设它预测的输出是红色框的bbox,设bbox的中心坐标为(x_c,y_c),那么最终预测出来的(x,y)是经过归一化处理的,表示的是中心相对于单元格的offset,计算公式如下:
x=\frac{x_c}{w_i}{S}−x_{col} , y=\frac{y_c}{h_i}{S}−y_{row}

2.(w,h)是bbox相对于整个图片的比例
预测的bbox的宽高为w_b,h_b,(w,h)表示的是bbox的是相对于整张图片的占比,计算公式如下:
w=\frac{w_b}{w_i} , h=\frac{h_b}{h_i}

3.confidence
这个置信度是由两部分组成,一是格子内是否有目标,二是bbox的准确度。定义置信度为P_r(Object)∗IOU^{truth}_{pred}
这里,如果格子内有物体,则P_r(Object)=1,此时置信度等于IoU。如果格子内没有物体,则P_r(Object)=0,此时置信度为0

4.C类的条件概率
条件概率定义为P_r(Class_i |Object),表示该单元格存在物体且属于第i类的概率。

在测试的时候每个单元格预测最终输出的概率定义为,如下两图所示(两幅图不一样,代表一个框会输出B列概率值)
P_r(Class_i|Object) ∗ P_r(Object) ∗ IOU^{truth}_{pred} = P_r(Class_i) ∗ IOU^{truth}_{pred}

6.png

7.png

最后将(S\times S)\times B\times20 列的结果送入NMS,最后即可得到最终的输出框结果

最后来看一下训练YOLO使用的损失函数定义(本想自己用latex打的,后来有个符号一直打不出来,使用网友的图如下)


8.png

这里强调两点:
1.每个图片的每个单元格不一定都包含object,如果没有object,那么confidence就会变成0,这样在优化模型的时候可能会让梯度跨越太大,模型不稳定跑飞了。为了平衡这一点,在损失函数中,设置两个参数λ_{corrd}λ_{noobj},其中λ_{corrd}控制bbox预测位置的损失,λ_{noobj}控制单个格内没有目标的损失。
2.对于大的物体,小的偏差对于小的物体影响较大,为了减少这个影响,所以对bbox的宽高都开根号。

参考
1.https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.g137784ab86_4_1822
2.https://blog.csdn.net/u011974639/article/details/78208773

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

推荐阅读更多精彩内容