YOLOv1学习笔记

YOLO 全称You Only Look Once,属于目标检测算法的One-Stage算法,One-Stage和Two-Stage算法的区别在于算法的过程中有没有进行Region Proposal的操作。R-CNN家族都有Region Proposal的过程,YOLO是直接对建议区进行预测,并且YOLO还将分类与边框回归融为一体。

\color{red}{ 1、模型结构与输入输出解析}

YOLO Architecture

先来看看YOLO论文中的网络结构,由24个卷积层后面接着两个全连接层组成,除了最后一个全连接层用的是线性激活函数其他都是用的ReLU Leaky,最后输出的是一个7x7x30的张量,那么这个张量是个什么意思嘞?

图片来源YOLO论文
输入输出映射关系图

YOLOv1是没有Region Proposal的因此只能够通过预测Bounding Box然后根据Ground Truth进行回归使得模型能够学会去预测框的大小和位置。YOLO的设计思想是首先将输入图片划分成7X7的grid cell那么图片中的物体中心点一定落在某个grid cell之内,中心点落在哪个grid cell之内就由其预测该物体。输出层张量为7x7x30的张量,这个7X7X30对应的就是原始图片分割之后的每个网格,值不过是由一个小块通过卷积和池化变成了一个30维度的向量。因为每个grid cell负责预测两个bounding box,每个bounding box有4个参数(x,y,w,h)前面两个是中心点相对于图片左上角的坐标,后两个是bbox的宽和高因此这8个参数就占据了8个维度,每个bbox还有一个置信度(confidence),置信度是用来衡量bbox中有物体且框相对于GT准确程度的量。剩下的20个维度是物体分类的概率。总的来说如果将输入图片划分成SxS个网格则其输出张量的公式为SxSx((4+1)*B+C)其中4+1为边框参数数量加上置信度B为预测的bbox数量,C为分类物体物体总数。

image.png

\color{red}{2、模型标签}

看到论文中网络模型输出为7x7x30的张量之后可能你我本能的都会想到模型的标签如何设定,7x7网格每一个负责预测一类对象,但30维张量中却饱含了两个bbox(注意YOLO中两个bbox只负责预测一类对象)两个置信度而对每一个grid cell而言我们的Ground Truth却只有一个。不像R-CNN家族有Region Proposal操作、Faster-RCNN有anchor机制,在YOLOv1中两个bbox都是通过网络前向传播预测出来的。因此对于训练阶段而言到底主要选择哪一个 bbox更新权重还需要商榷,YOLO原始论文中对有对象grid cell而言是根据两个bbox的置信度哪个大则将对应标签对应上去的。

Confidence =\operatorname{Pr}(\text { Object }) * I O U_{\text {pred }}^{\text {truth }}
置信度由模型存在对象的概率乘上交并比,对有对象grid cell中的两个bbox而言选着IOU大的那个令\operatorname{Pr}(\text { Object }) =1另一个则为零。
假设网络输出某grid cell(落在其中的对象为自行车)的向量形式如下:

grid cell input

则其对应的label如下:
counterpart label

上面的label形式是对应原图中的物体中心落在某grid cell中的情形,显然当图中物体不是很多的时候grid cell是稀疏的很多grid cell都是背景(负样本),这时候的label直接设置为全部都是零即可。

\color{red}{3、损失函数解析}

Loss

在损失函数中第一行为有对象存在的grid cell中负责预测对象的bounding box的中心坐标与GT的均方误差即中心点回归:

第二行为有对象的grid cell负责预测对象的 bbox的边框回归,注意其中的开根号是为了提高损失函数对小边框的敏感性:

第三行为有对象的置信度误差:

第四行为没有对象的置信度误差:

第五行为对象预测概率误差:

其中是权重用来设置各损失项的更新权重的重要性。

\color{red}{4、模型训练}

因为我们使用的检测数据集数据量有限且成本很大对分类任务来说很艰难因此需要预训练之后进行模型的迁移。论文中模型预训练使用的是DarkNet网络框架(DarkNet网络框架比VGG16计算量更小但是准确度更大)上前20层卷积层是通过添加平均池化层和全连接层在ImageNet1000类的数据集上进行的训练,之后去掉平均池化层和全连接层保留前20层卷积层然后通过添加4个卷积层和2个全连接层将模型变成检测模型。
又因为我们的检测模型往往需要检测细粒度(fine-grained)的物体信息,而我们预训练卷积层是输出图像的分辨率(resolution)是224x224因此我们修改网络输入层的分辨率为448x448(VOC数据集)。
在网络训练之前将图片的大小和没个bbox的宽高、偏移都进行了归一化处理。

\color{red}{5、模型推理(Inference)阶段}

模型输出每个grid cell有2个bbox总共有98个bbox我们不可能将每个bbox都输出因此在计算得分之后采用非极大值抑制(Non-Maximun Suppresion)进行边框减除。
假设某grid cell输出如下

image.png

计算最后得分指标为boundingbox的置信度乘上每一类的预测概率:
这个等式实际上是一个条件概率,表示预测某类和定位的正确程度
然后将每一个 bbox都计算得分将得分排列如下图:
image.png

每一个grid cell中有2个boundingbox每个box预测20类对象则每个grid cell有40个得分,49个cell一共1960个得分,之后我们对其进行非极大值抑制:
(1) 通过设置一个阈值直接将低于该阈值的得分设置为零.
(2) 遍历每一个对象.
(2.1) 选出对象98个得分中最大得分的boundingbox.
(2.1.1) 设置IOU值计算最大得分的box与其他 box的IOU值
当大于设定的IOU值时将得分设置为零.
(2.1.2) 如果98个得分中除了最大的得分中还有未归零的得
分则除去除最大得分选择次大得分进行(2.1)操作.
(2.1.2.1) 直到对象得分不能在设置为零(continue)
(3)输出所有bbox

论文泛化结果

\color{red}{6、总结}

YOLOv1算法比Tow-stage算法在速度上提升了很多,但是在mAP和召回率上都有待改善,尤其在对小物体进行目标检测时候,每一个gridcell中有多个对像而由于每一个gridcell都只预测一类对象因此准确率比较低。

\color{blue}{references}

YOLO论文:https://arxiv.org/pdf/1506.02640.pdf
https://zhuanlan.zhihu.com/p/46691043
https://blog.csdn.net/qq_43602882/article/details/105910176

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