前言
由于毕业需要翻译一篇英文文献。理所当然,我选择了这篇简短的YOLOv3。不得不说翻译这篇文章是一件很愉快的事,因为作者的确是很可爱。前后花了一天多的时间吧,毕竟水平有限,借助了谷歌翻译,也参考了别人的翻译,为了保证其中专有名词翻译的精准,也查了很多资料。其中加入了不少自己的理解,但是理解水平非常有限,现挂在这里,大家一起来找问题吧,如果发现问题,欢迎在下方留言讨论,看到必回复。看YOLO3前建议先看看YOLO2和YOLO1,推荐一个翻译的很好的资源。
YOLOv3:一个渐进式的升级
约瑟夫·雷德蒙,阿里·法哈迪
华盛顿大学
摘要
我们在YOLO上又做出了一些更新!实现了许多可以提升系统性能的小设计,也训练了一个非常棒的新网络。虽然新网络较上一版稍显庞大,但精度也提高了不少。不过,你也不用担心,因为它依旧很快。YOLOv3能在22毫秒内处理完一张320×320的输入图片,并取得28.2mAP的成绩。精度逼近SSD321,但速度却较其快了3倍。对比旧的两个版本,YOLOv3在0.5IOU的检测标准下的表现要优秀很多。另外,与RetinaNet精度57.5 AP50,Titan X上用时198ms的表现相比,YOLOv3精度57.9 AP50,用时却只有51ms。换言之,相近的性能而YOLOv3却要快3.8倍。和往常一样,所有的代码都开源在:https://pjreddie.com/yolo/.
1.引言
有时候,一年的时间会因为一些“琐事”而消耗殆尽,你有这种感受吧?所以,去年我没做什么研究,而是花了不少时间Twitter上,也玩了一把GANs。然后利用去年仅存的一点精力[1][12],我对YOLO做了点改进。但是,老实说,这并不是什么大手笔,这只是一些可以让YOLO变得更好小更新,另外,我还帮别人做了一点研究。
事实上,那是我们来这里的原因。我们的文章快交稿了[4],文中引用了我在YOLO中做出的某些更新的内容,但这样的引用来源还不存在,所以就先写个技术报告吧!
技术报告有个好处,就是它不需要长长 “引言”,我想此时,你们都知道我们为什么要写这个。读到引言的结尾,我相信你们会对文章的结构有所了解。首先我们会向你介绍YOLOv3的更新情况,然后我们会向你们展示我们做的怎么样,然后我们会告诉你们一些失败的尝试,最后我们要说说这次更新到底意味着什么。
图1 我们改编了Focal Loss论文[9]中的数据,绘制了此图。从图中可见,在性能相近时,Yolov3的运行速度明显快于其他检测模型。所有模型都是运行在M40或Titanx上,它们是非常相近的GPU。
2.更新
所以这里就是YOLOv3的更新情况:我们几乎是从其他人那里获得更新的点子。当然我们也训练了一个比其他网络更好的新分类网络。我们将从头向你介绍,期望你能够得到完整的理解。
2.1边界框预测
同YOLO9000一样,YOLOv3也使用数据集上边框聚类的结果来作为先验边框[15]。网络会为每个边界框预测4个坐标:tx、ty、tw和th。如果目标中心的所在网格与图像左上角的偏移是(cx, cy),并且它对应的先验边界框的宽和高为pw、ph,那么预测值将会由以下式子给出: