YOLOv3 论文学习

论文地址: https://arxiv.org/abs/1804.02767
代码地址:https://pjreddie.com/yolo/

Abstract

作者针对YOLO又做出了一些改进。模型变大了些,但是更加的准确了,速度同样很快。在 320 × 320 320\times 320 320×320的输入图像上,YOLOv3只耗时22ms,mAP是 28.2 % 28.2\% 28.2%,这和SSD精度差不多,但是速度要快了3倍。YOLOv3在Titan X上的平均精度是57.9,耗时51ms;RetinaNet的平均精度是57.5,但是耗时198ms,YOLOv3要快3.8倍。

1. Introduction

作者Redmon也承认这篇论文其实更像一个tech report.

2. The Deal

速度快!

2.1 Bounding Box Prediction

延续YOLO9000,我们的系统通过dimension clusters预测边界框。网络对每个边界框预测4个坐标, t x , t y , t w , t h t_x, t_y, t_w, t_h tx,ty,tw,th ( c x , c y ) (c_x, c_y) (cx,cy)是网格距离图片左上角的距离,边界框的宽度和高度是 p w , p h p_w, p_h pw,ph,然后预测边框如下:
b x = σ ( t x ) + c x b_x = \sigma(t_x) + c_x bx=σ(tx)+cx
b y = σ ( t y ) + c y b_y = \sigma(t_y) + c_y by=σ(ty)+cy
b w = p w e t w b_w = p_w e^{t_w} bw=pwetw
b h = p h e t h b_h = p_h e^{t_h} bh=pheth

在训练中,使用squared error loss的和。如果 t ^ ∗ \hat t_* t^是某个坐标的ground truth,梯度就是ground truth值减去预测值: t ^ ∗ − t ∗ \hat t_* - t_* t^t。把上面等式反过来求即可得ground truth 值。

YOLOv3在每个边界框上使用logistic regression来预测objectness score。如果某边界框与ground truth object的重合度高于其它所有的边界框,那么objectness score是1。如果某边界框与ground truth object重合度高于一个阈值,但是它不是最高的那个,ignore it。文中的阈值为0.5。作者给每个ground truth object只assign一个边界框。若某边界框没有被assign给任何一个ground truth object,它不会给坐标或类别带来任何损失,只对Objectness有。

2.2 Class Prediction

每个方框使用multi-label分类来预测边框内所含物体的类别。作者仅使用了独立的logistic分类器。训练中,作者使用binary cross-entropy loss来进行类别预测。

这对complex domains如Open Image Dataset有帮助。在这个数据集里,有许多重复的标签(如女人和人)。Softmax有一个假设,就是每个box只有一个类。Multi-label方法能更好地model the data.

2.3 Predictions Across Scales

YOLOv3在3个不同的scales上预测边框。作者使用了与feature pyramid networks类似的方法来从不同的scales上提取特征。在base特征提取器上作者增加了若干个卷积层。最后一个卷积层预测一个3维的张量,encoding边框信息,objectness,和类别预测。在COCO的实验中,作者在每个scale上预测3个边框,张量的大小就是 N × N × [ 3 ∗ ( 4 + 1 + 80 ) ] N\times N\times [3 * (4+1+80)] N×N×[3(4+1+80)],有4个边框offsets,1个objectness预测,80个类别预测。

下一步,we take the feature map from 2 layers previous and unsample it by 2 × 2\times 2×。我们也从网络的前面部分获取一个特征图,把它和unsampled特征连接起来。这样,我们能从unsampled特征中获得更丰富的语义信息,也能从前面的特征图中获取细纹理的特征。然后增加一些卷积层来处理这个combined特征图,最终,我们预测一个类似的张量,尽管twice the size。

然后,我们将上面的网络设计再执行一次,预测第三个scale的边框。在第3个scale上的预测能很好地利用前面的计算以及前面网络得到的细纹理特征。

作者仍然使用k-means clustering来决定边框个数。作者任意选择了9个clusters和3个scales,然后将clusters在3个scales平分。在COCO数据集上,9个clusters是: ( 10 × 13 ) ; ( 16 × 30 ) ; ( 33 × 23 ) ; ( 30 × 61 ) ; ( 62 × 45 ) ; ( 59 × 119 ) ; ( 116 × 90 ) ; ( 156 × 198 ) ; ( 373 × 326 ) (10× 13); (16× 30); (33× 23); (30× 61); (62× 45); (59× 119); (116 × 90); (156 × 198); (373 × 326) (10×13);(16×30);(33×23);(30×61);(62×45);(59×119);(116×90);(156×198);(373×326).

2.4 Feature Extractor

作者使用了一个新的网络来提取特征。这个网络是YOLOv2,Darknet-19,以及残差网络的hybrid版本。它使用连续的 3 × 3 3\times 3 3×3 1 × 1 1\times 1 1×1的卷积层,加上了shortcut连接。它有53个卷积层,所以称作Darknet-53。

这个网络比Darknet-19要强大许多,比ResNet-101和ResNet-152要高效。

每个网络都用相同的设置来训练,在 256 × 256 256\times 256 256×256的输入图像上测试。在Titan X上,对输入大小是 256 × 256 256\times 256 256×256图像计算训练时间。Darknet-53与主流分类器对比,它的浮点计算更少,速度更快。Darknet-53比Resnet-101表现要好,速度也要快1.5倍。Darknet-53与Resnet-152表现差不多,但是要快2倍。

Darknet-53的每秒浮点运算是最高的。这说明,它的网络结构能更好地利用GPU,故而更高效和快速。也许是因为ResNet的层数太多,没那么高效。

2.5 Training

没有使用hard example mining技巧。
在full images上训练。
使用了multi-scale训练,数据增强,batch normalization,等等。
使用Darknet神经网络框架来训练和测试。

3. How We Do

在COCO上YOLOv3的平均精度与SSD差不都,但是速度要快了3倍。但是它和RetinaNet相比,仍然差了一点。

但是,在 I O U = 0.5 IOU=0.5 IOU=0.5(或者 A P 50 AP_{50} AP50)的detection metric下,YOLOv3 is very strong. 它几乎和RetinaNet齐平,比SSD要高许多。着说明,YOLOv3是个强大的检测器,excels at producing decent boxes for objects。但是当IOU阈值变大时,YOLOv3的表现就不行了。

YOLO对小物体比较吃力。但是自从用了multi-scale predictions, YOLOv3的 A P S AP_S APS表现很好,但是对大中型的物体就相对低了一些。这有待于未来的探索。

作者将 A P 50 AP_{50} AP50 metric时准确率和速度的比较plot了出来,可以发现YOLOv3 比其它的检测系统优势很明显,更快而且更好。

4. Things we tried but didn’t work

Pls read paper for more details!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值