目标检测: YOLOv3

《YOLOv3: An Incremental Improvement》

原文链接: https://arxiv.org/abs/1804.02767

本文可以说写的很随意了 ,下面简单梳理一下 YOLO v3 的内容

1. Bounding box 的预测

这里仍然使用直接预测 bounding box 的方法,预测 bounding box

不同点是,在 v2 中选择的 anchor box 尺寸是 5 种,然后每种都进行坐标和类别的预测,num * (5+ class_num), 这里的 num 就是bounding box 的个数, 每个 bounding box 都有预测值:tx,ty,tw,th,t0

v3 中, anchor box 的种类是9种,然后在这些 anchor box 中 YOLOv3 将会对每个 bounding box 做线性回归来得到这个 bounding box 中是否包含物体的得分,得分大就是包含物体的可能性大,这样挑选出其中最佳的那个 anchor box,不像v2 每个 bounding box 都做预测并且都计入loss 计算中,这里使用 logistic regression 从 9 个 anchor 中找到最佳的那个,然后将它的坐标信息和分类预测加入到 loss 计算中,其余的就算与真值框的 IoU 大于我们设定的阈值,但不是最佳,最后计算检测loss和分类loss 的时候我们也不考虑它。然后 v3 检测网络的最后是多分辨率输出的(学习了 FPN 的思想),总共是 3 个不同分辨率上进行输出,所有每个分辨率上都输出 3 个尺寸的 anchor box 。 所以每个 cell 的输出是 3*(5+class_num)。

2. Class Prediction

这里直接将 Softmax 替换成了 Logistic 分类器,训练时使用了 BCE Loss,这样也使 YOLOv3 模型使用于一些多标签的数据集,如果使 Softmax 则默认类别之间是没有关系的。

3. Predictions Across Scales

即上面提到的从3个不同分辨率上输出,结合了 FPN 的思想,以输入尺寸 416x416 为例:

YOLOv2 : 结合了 13x13 和 26x26 两级特征,且是由 26x26 的分辨率经过 passtrough 层变成 13x13 然后拼接进行坐标预测。
YOLOv3 : 结合了 13x13 ,26x26 和 52x52 三层的特征,这次是将 13x13 上采样为 26x26,拼接后输入到 卷积层+BN层+leakyReLU层 以后,再将这个输出上采样成 52x52 再与原网络的 52x52 分辨率特征图拼接,再输入到网络下一级

4. Feature Extractor

这里主要 YOLOv3 提出了 Darknet-53,下面是对比图,左边是 Darknet-53, 右边是 Darknet-19。这里主要是 Darknet-53 属于全卷积网络,借鉴了 ResNet 的思想,在其中加入了残差结构,然后将原先的 pooling 层都替换成了 stride=2 的卷积层。

文中试了一些不 work 的 idea

a) 对坐标的偏置预测。 尝试采用正常的 anchor box 预测机制,使用线性激活函数来预测 box 宽和高的 offset,但是这样减少了模型的稳定性。

b) 线性预测 x,y,而不是 Logitic。 这样会使 mAP 下降几个点

c) Focal Loss。 这里使用 Focal loss mAP会下降2个点,对于 focal loss 要解决的问题,YOLOv3 已经解决的很好了,因为它把物体检测和条件类预测分开了,所以对大部分样本可能没有什么类预测损失。

d) 对box与真值框的IoU设置双阈值。类似于 Fast-RCNN,设置两个阈值,0.3 和 0.7, 本文尝试了类似的策略,但是不太好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值