YOLO1 笔记

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

YOLO的思想是,摒弃R-CNN系列网络的多层复杂结构,改为直接采用端到端的网络同时预测目标类别和边界框。

得益于这种网络结构,YOLO能够在很快(几乎可以实时处理视频)的时间内进行前向传播。此外,YOLO直接以整张图象作为输入,这意味着特征提取网络能够隐式地提取图像全局的上下文信息,从而大幅降低了将背景误认为是目标的频率——与R-CNN系列的、基于区域建议的网络相对比,因为这些网络只在乎区域建议里的图像内容/特征图像内容。据作者表示,YOLO还有一定的迁移能力:用自然图像训练的YOLO网络能够较正确地识别绘画,不过没说为什么(看到了再补上)。

YOLO的缺点是,在精确度方面仍不及当时最先进的目标检测网络。尽管YOLO能够快速地区分图像中的目标,却很难精准地定位它(尤其是较小的目标,这与YOLO1的设计有关,在后续的版本中有所改善)。总之这也是网络在速度和精度上的一种取舍吧。


数据结构设计


“网格”

YOLO将图像分为S\times S的网格(在实现时S7),如果一个目标的中心落在某个网格内,那么这个网格将负责预测这个目标。

每一个网格预测B组边界框参数(x,y,w,h)以及这些边界框的置信分数(在实现时B2)。(x,y)表示边界框的中心位置,位置相对于所在网格,对网格大小normalize;(w,h)表示边界框宽和高,对整张图像大小normalize。置信分数表示有这个边界框中是否有目标,以及这个边界框和实际目标的边界框有多吻合,其定义为Pr(Object)*IOU_{pred}^{truth},即如果没有目标则为0,如果有目标则为预测框和实际框的IOU。

同时,每一个网格还预测总共C个类别每一个类别的置信度,Pr(Class_{i}|Object)(在实现时C20),只在边界框置信分数不为0时有意义。

所以,YOLO网络在上述参数下的实现,其输出为一个7\times 7\times ((4+1)* 2+20)的三维张量。

上述两个评价指标相乘,定义一个同时涵盖边界框预测置信分数和分类置信度的评价标准:

Pr(Class_{i}|Object)*Pr(Object)*IOU_{pred}^truth=Pr(Class_{i})*IOU_{pred}^truth\\


网络结构设计

由于YOLO的端到端设计理念,它的网络结构十分简单。就是24个卷积层和2个全连接层(在YOLO的轻量级版本Fast YOLO中,为了提高前向传播速度,只采用了9个卷积层),接收448×448的输入图像。

YOLO的网络结构

(这个网络结构图里,方块图和下面的卷积层参数并没有对齐...所以不要看方块图了,只看下面的参数就好)


训练

在预训练中,使用了网络的前20个卷积层,加上额外的一个平均池化层和一个全连接层。预训练进行了一个星期。

在fintune阶段,加上后面的4个卷积层和两个全连接层,前置的研究表明这样有助于让模型有更好的表现。前面20层没说还训练不训练,应该是固定了吧。

除了最后一层,其它层都用了Leaky ReLu作为激活函数:

\phi (x)=\begin{cases}x, &\text{if }x>0\\0.1x, &\text{otherwise}\end{cases}\\

Leaky ReLu可以让神经元在输出负值时仍能对网络权重更新有贡献。(但是为什么主要采用的激活函数是ReLu而不Leaky ReLu?)

损失函数

YOLO采用的损失函数,以及解读:

\begin{aligned} \lambda_{\text {coord }} \sum_{i=0}^{S} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(x_{i}-\hat{x}_{i}\right)^{2}+\left(y_{i}-\hat{y}_{i}\right)^{2}\right] \\+\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[(\sqrt{w_{i}}-\sqrt{\hat{w}_{i}})^{2}+(\sqrt{h_{i}}-\sqrt{\hat{h}_{i}})^{2}\right] \\+\sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left(C_{i}-\hat{C}_{i}\right)^{2} \\+\lambda_{\text {noobj }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{I}_{i j}^{\text {nootj }}\left(C_{i}-\hat{C}_{i}\right)^{2} \\+\sum_{i=0}^{S^{2}} \mathbb{1}_{i}^{\text {obj }} \sum_{c \in \text { classes }}\left(p_{i}(c)-\hat{p}_{i}(c)\right)^{2} \end{aligned}\\

第一项:对所有包含目标的网格而言,其两个Bounding Box中心坐标的预测误差;第二项:对所有包含目标的网格而言,其两个Bounding Box尺寸的预测误差。这两项一并理解为Bounding Box位姿参数的预测误差,因为只有在网格包含目标的情况下Bounding Box位姿才是有意义的,所以只在这种情况下累积误差。这两项误差还要乘上一个值\lambda _{coord} > 0,这个主要是因为作者希望模型能够更好地预测边框。

第三项、第四项:预测网格是否包含目标时的误差。但如果网格实际上不包含目标,则累积的误差还要乘上一个值\lambda _{noobj} < 0,因为一般在一幅图中,更多的网格不包含目标,但实际上我们更看重网络预测出True Positive而不是Ture Negative的能力,所以需要抑制一下不包含目标的网络贡献的误差。

第五项:对所有包含目标的网络而言,其分类误差。

所以其实YOLO的整个设计都是比较简单的。

超参数

训练了135个epoch,batchsize为64,momentum为0.9,decay为0.0005。

学习率在最开始的几个epoch从10^{-3}升到10^{-2},然后再随着epoch增加而降低至10^{-4}。之所以要先升高一段,是因为,其实前面的epochs需要大学习率来加速梯度下降,但是一开始就应用太大的学习率会导致模型发散。

在第一个全连接层后面加了概率为0.5的dropout。

数据增强:随机平移、尺度缩放、调节图像饱和度。


YOLO1的局限性

首先,由于YOLO的数据结构设计,每个网格最多预测一个物体,所以较小且密集的目标是预测不出来的。

其次,YOLO通过网络直接预测Bounding Box,所以很难预测出一些具有不寻常的的长宽比的Bounding Box。

还有,YOLO在累积误差的时候并没有考虑Bounding Box的大小,但是实际上,对于Bouding Box中心点的预测而言,一个小的误差在小Bounding Box上往往比在大的Bouding Box上更严重。所以YOLO1在Bounding Box定位上经常有不理想的误差。

另外,YOLO末尾的全连接层完全是多此一举。对每个网格输出一个向量,不如直接通过卷积完成。

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

推荐阅读更多精彩内容