Yolov3:目标检测都是浮云我只愿放飞自我

YOLOv3: An Incremental Improvement 2018

当初第一次看 v3 是放假在老家床上,半夜看笑得肚子疼。后面作者退出 cv 之后 v4 换帅大家还吐槽没那味儿了 2333。很巧的是,现在我又是放假在老家写论文梳理,但是好像看着没那么欢乐了,觉得骚话也太多了,骂骂咧咧碎碎念都影响观感了。而且相比 v2,v3 给人的感觉也太敷衍了。所以我打算忽略掉所有他的骚话,看看剩下多少东西吧……

Abstract

  • 320 × 320 输入 Yolov3 28.2 mAP 22ms,和 SSD 效果一样但快 3 倍
  • 0.5 IoU 标准下和 RetinaNet 表现一致但快 3.8 倍
  • 无了。

Introduction

整篇的写作规划:

  • Yolov3 有哪些改进;
  • 怎么做的;
  • 失败的尝试;
  • 一点废话。
  • 无了。
    整体表现,直接在 RetinaNet 论文的图上左边填上了自己的紫线,我觉得最大的优势还是在精度要求不那么高的时候真的比较快
    在这里插入图片描述

The Deal

大部分改良灵感借鉴于他人。

BoundingBox Prediction

沿用 Yolov2,使用 k-means 生成 anchor。如果 cell 在图像左上角的 offset 是 ( c x , c y ) (c_x, c_y) (cx,cy) ,anchor 的宽高分别是 p w p_w pw p h p_h ph,BoundingBox 的四个坐标信息是 t x t_x tx t y t_y ty t w t_w tw t h t_h th,训练过程中的 loss 还是用的误差平方和 (sum of squared error,SSE)。坐标信息这里 loss 中也是以变换体现的,这里和 Faster R-CNN 一致,用的是变换,而不是直接位置或者尺寸。
在这里插入图片描述

而对于 objectness 是用 logistic regression 为每个 Boundingbox 预测一个 score。对于某个 gt box,和它契合最好的那个 anchor 对应的预测框 BoundingBox 的 objectness score 就是 1;即使不是最契合的但是 IoU 也较高(大于 0.5)就 ignore 这个预测,就像 Faster R-CNN 一样。

这里要说一下,Faster R-CNN 给 anchor 标记是否存在物体考虑得比较多,会把针对每个 gt 框契合最好的 anchor,以及和 gt 框契合度还不错的 anchor 都标记为 1,而与任何 gt 契合都低于 0.3 的才会被标记为 0,除了 0 1 以外,其他的 anchor 才会被忽略。

而 Yolov3 这里为了追求简单,只会给每个 gt 框分配一个与其契合最好的 anchor 标记为 1,其余的 anchor 中与任何 gt 都 IoU 小于 0.5 的才会标记为 0,除了 0 1 以外的 anchor 完全被忽略。标记为 0 的 anchor 也不贡献 coordinate 或者 class 的 loss,只贡献 objectness 的 loss。

Class Prediction

每个 BoundingBox 预测它对应的类别使用的是多标记分类,不再使用 softmax,而是使用独立的 logistic classifiers,训练过程中对于分类 loos 使用 binary cross-entropy loss。不再使用 softmax 主要是考虑到有些数据集的标记本身存在概念的重叠,比如“woman” 和 “person”。而 softmax 正确使用的前提应该是类别之间不存在重叠或冲突。

Predictions Across Scales

Yolov3 在 3 个尺度上进行预测。关于尺度,v2 里面是直接借鉴 ResNet 连了一条边长双倍的 feature map 叠加过来。在 v3 这里关于多尺度做得“平滑”了一些,使用了类似特征金字塔。

第一个尺度:输出是个 3-d 的 tensor,包含 BoundingBox,objectness 和 分类信息(到底哪里 3-d 啊)。使用 COCO 的话,在每个尺度上预测 3 个框,所以 tensor 是 N × N × [3 × (4 + 1 + 80)],对应 4 个 BoundingBox、1 个 objectness,80 个类别。

第二个尺度:把 2 层以前的 feature map 2 倍上采样,与再前面的 feature map merge 连接到一起,这样可以获得更多的语义信息和更细粒度的信息。然后加几个卷积层来处理这些特征图,然后预测输出一个两倍于前面的 tensor 出来。

第三个尺度:把第二个尺度的方法再来一遍,所以第三个尺度的预测会受益于前面所有的计算。(其实看论文还是不知道具体他弄了啥)

anchor 还是用的 k-means,随意选择 9 个 cluster 和 3 个 scale,然后在每个 scale 上平均分 9 个 cluster。

Feature Extractor

从 Darknet-19 更新上线了 Darknet-53,用作特征提取。连续地使用 3 × 3 和 1 × 1 卷积,中间增加了 shortcut 连接。比 Darknet-19 性能好,比 ResNet 101 快一点。
在这里插入图片描述

Training

没有困难样本挖掘。

How We Do

过去 Yolo 位置不够准 + 小物体检测不到,现在 v3 位置还有一些不准的情况 + 大物体中物体 AP 下降了(加了多尺度以后)

Things We Tried That Didn’t Work

Anchor box x, y offset predictions

想使用 Faster R-CNN 提出的 anchor 机制,还是不行,原因就是训练初期不稳定。在 v2 讨论过这个问题。

Linear x, y predictions instead of logistic

对于 x 和 y 使用线性激活,不行。

Focal loss

使用 RetinaNet 的 Focal loss,情况并没有变好,作者解释说 v3 本来就已经有了 Focal loss 的思想。因为 Yolov3 先算是否存在物体(前景/背景),然后再算各个物体类别的条件概率,通过这种方式已经压制了负样本。

Dual IoU Thresholds and Truth Assignment

IoU 标准的问题。如果退到旧标准 0.5 那么 v3 效果会更好。
在这里插入图片描述

What This All Means

说了一下人类都很难区分 IoU 0.3 和 0.5,然后骂骂咧咧,完。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值