yolo2 要点解析

yolo2 要点解析

虽然网络上各路大神对yolo2的主要特性和结构做了详细说明,但就程序的实现来说,很多未曾点明的细节仍然不是很清楚。本章不会对yolo2的结构和特性进行说明,只涉及一些yolo2的关键细节和概念,同时也是对自己不了解的部分做一个梳理。

边界框

边界框以(x, y, w, h)的方式表示它在图像中的位置,(x, y)表示边界框的中心点位于图像坐上角的相对位置,(w, h)是相对于图像大小的相对位置。即它们的范围都是[0, 1]。

先验框(锚框)

Yolo2引入了边界框先验(bounding box prior)的概念。我们不再期望模型为每张新图像直接生成唯一的边界框描述量,而是定义一个边界框集合,其中的边界框有不同的宽高比,这些宽高比嵌入了某些关于我们预计会检测到的目标的形状的先验信息。Redmond 提供了一种用于发现最佳宽高比的方法,即在你的训练数据集中的所有边界框上执行 k-均值聚类(使用一个自定义的距离度量)。

作用

我们不再直接预测边界框的尺寸,而是重新形式化了我们的任务,从而只需简单预测与我们的边界框先验尺寸的偏移量,这样我们就可以优化我们的预测边界框尺寸了。这种处理方式能让这一预测任务更容易学习。

更容易学习的意思是,模型最终的输出均为[0, 1]之间,按照归一化的思想,使得梯度下降更容易。

先验框与真值框的转换

模型最后输出的位置特征实际上是先验框和真值框之间的偏移量的预测值,它们之间的转换公式如下:

b_{x} = \sigma(t_x) + c_x \tag{1}

b_{y} = \sigma(t_y) + c_y \tag{2}

b_w = p_w e^{t_w} \tag{3}

b_h = p_h e^{t_h} \tag{4}

其中t_x, t_y,t_w, t_h为预测的偏移量,b_x, b_y, b_w, b_h为实际预测的边界框的位置,c_x, c_y 为边界框的中心所在的格点的位置,p_w, p_h 为先验框的宽和高。\sigmatx, ty的值限制在[0, 1]之间,实际上表达的是中心点相对于当前格点左上角的位移,再加上 c_x, c_y 后就变成了相对于特征图左上角的位移。

注意:以上的所有坐标的范围(除t_x, t_y,t_w, t_h外)均为[0, conv_width],其中conv_width 为模型最终输出的特征图的宽度(设conv_width=conv_height)

损失函数

在计算损失时,需要知道的是模型最后输出的特征图的维度为:
(batch, conv_height, conv_width, num_anchors, 5 + num_classes)
最后一维的前5项分别是 tx, ty, th, tw, pc。
后面的num_classes分别是各类别的概率。

模型损失函数的计算包括以下几部分:

  1. 置信度损失(confidence_loss)
  2. 坐标损失(coordinates_loss)
  3. 分类损失(classification_loss)

总损失的计算公式为:

total\_loss = 0.5 * ( confidence\_loss + classification\_loss + coordinates\_loss)

置信度损失

置信度表示了当前的锚框中存在物体的概率,因此置信度损失包含了物体实际存在与不存在时的条件损失,故此置信度损失的计算公式如下:

  1. 当物体实际不存在时,损失为(向量形式):
    \sum\sqrt{0 - pre\_confidence} \tag{5}
  2. 当物体实际存在时,损失为(向量形式):
    \sum\sqrt{1 - pre\_confidence} \tag{6}

总损失为条件损失之和

confidence_loss = \sum\sqrt{0 - pre\_confidence} + 5\sum\sqrt{1 - pre\_confidence} \tag{7}

这里x5是为了罚重物体存在时的置信度损失。

坐标损失

模型最后得到的是预测的先验框和真值框之间的偏移,因此我们需要预先将正确的偏移量计算出来,然后再与预测值进行比较。

注意:坐标损失只针对物体实际存在的情况,物体不存在时损失为0。

预先求得正确的偏移量

为了计算正确的偏移量,我们首先需要获得真值框和与之匹配的先验框。但是一个图像中有多个真值框,并且先验框的数量同样有多个,那么我们怎样确定与真值框匹配的先验框呢?答案是,选择与真值框IOU值最大的那个先验框。

以一张图中的所有真值框为例,步骤如下:

  1. 取所有的真值框中的下一个真值框
  2. 将真值框大小缩放为最终模型生成的特征图的大小
  3. 以该真值框的中心为原点,并将所有的先验框移至原点
  4. 计算出真值框与所有先验框的IOU值
  5. 选择IOU值最大的先验框
  6. 按照转换公式(1) - (4)计算出实际的偏移量
  7. 返回第1步,直到遍历完所有的真值框

分类损失

分类损失直接使用预测的分类概率值与实际的分类概率值进行比较,计算公式为(向量形式):

classification\_loss = \sum\sqrt{true\_classes - pre\_class\_prob} \tag{8}

注意:分类损失只针对物体实际存在的情况,物体不存在时损失为0。

参考

  1. https://www.jiqizhixin.com/articles/2018-08-06-2

  2. https://github.com/allanzelener/YAD2K

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

推荐阅读更多精彩内容