图像 检测 - YOLOv3: An Incremental Improvement (arXiv 2018)

news2024/11/19 12:35:56

YOLOv3: An Incremental Improvement - 增量改进(arXiv 2018)

  • 摘要
  • 1. 引言
  • 2. 处理
    • 2.1 边界框预测
    • 2.2 类别预测
    • 2.3 跨规模预测
    • 2.4 特征提取器
    • 2.5 训练
  • 3. 我们的做法
  • 4. 我们尝试过但没有成功的事情
  • 5. 这一切意味着什么
  • References

声明:此翻译仅为个人学习记录

文章信息

  • 标题:YOLOv3: An Incremental Improvement (arXiv 2018)
  • 作者:Joseph Redmon, Ali Farhadi
  • 文章链接:https://arxiv.org/pdf/1804.02767.pdf
  • 文章代码:https://pjreddie.com/darknet/yolo/

摘要

  我们向YOLO提供一些更新!我们做了一些小的设计更改,使它变得更好。我们还训练了这个非常庞大的新网络。它比上次大一点,但更准确。不过还是很快,别担心。在320×320时,YOLOv3在22ms内运行得到28.2mAP,与SSD一样准确,但速度快三倍。当我们看到旧的.5 IOU mAP检测指标YOLOv3是相当好的。在Titan X上,它在51ms内达到57.9 AP50,相比之下,RetinaNet在198毫秒内达到了57.5 AP50,性能相似,但速度快3.8倍。一如既往,所有代码都在线https://pjreddie.com/yolo/.

1. 引言

  有时你只是打了一年的电话,你知道吗?今年我没有做很多研究。花了很多时间在推特上。和GANs玩了一会儿。我有一点去年剩下的动力[12][1];我设法对YOLO做了一些改进。但是,老实说,没有什么比这更有趣的了,只是一些小的改变,让它变得更好。我也帮了别人一点忙。

  事实上,这就是我们今天来到这里的原因。我们有一个准备好拍照的截止日期[4],我们需要引用我对YOLO的一些随机更新,但我们没有消息来源。所以,为技术报告做好准备吧!

  科技报告的伟大之处在于,他们不需要介绍,你们都知道我们为什么来这里。因此,这篇引言的结尾将成为论文其余部分的路标。首先,我们将告诉您YOLOv3的处理内容。然后我们会告诉你我们是怎么做的。我们还会告诉你一些我们尝试过但没有成功的事情。最后,我们将思考这一切意味着什么。

2. 处理

  因此,YOLOv3的处理方式是:我们大多从其他人那里获得好主意。我们还训练了一个新的分类器网络,它比其他分类器网络更好。我们将带您从头开始了解整个系统,以便您能够了解所有内容。

在这里插入图片描述

图1. 我们根据Focal Loss论文[9]调整了这个数字。YOLOv3的运行速度明显快于其他性能相当的检测方法。无论是M40还是Titan X,它们基本上都是相同的GPU。

2.1 边界框预测

  根据YOLO9000,我们的系统使用维度簇作为锚框来预测边界框[15]。网络为每个边界框预测4个坐标,tx,ty,tw,th。如果单元格从图像的左上角偏移(cx,cy),并且边界框先验具有宽度和高度pw,ph,则预测对应于:

在这里插入图片描述

  在训练过程中,我们使用误差平方和损失。如果某个坐标预测的真值是 t ^ ∗ \hat{t} * t^,则我们的梯度是真值(从真值框计算)减去我们的预测: t ^ ∗ − t ∗ \hat{t} *−t* t^t。这个真值可以很容易地通过颠倒上面的方程来计算。

  YOLOv3使用逻辑回归预测每个边界框的目标性得分。如果边界框先验与真值目标的重叠比任何其他边界框先验都多,则该值应为1。如果边界框先验不是最好的,但确实与真值目标重叠了超过某个阈值,我们将忽略预测,如[17]。我们使用阈值.5。与[17]不同,我们的系统只为每个真值目标分配一个边界框先验。如果边界框先验未指定给真值目标,则不会导致坐标或类预测的损失,只会导致目标性的损失。

在这里插入图片描述

图2. 具有维度先验和位置预测的边界框。我们将框的宽度和高度预测为与簇质心的偏移。我们使用sigmoid函数来预测框相对于过滤器应用程序位置的中心坐标。这个数字公然抄袭了[15]。

2.2 类别预测

  每个框使用多标签分类来预测边界框可能包含的类。我们没有使用softmax,因为我们发现它对于良好的性能是不必要的,相反,我们只是使用独立的逻辑分类器。在训练过程中,我们使用二进制交叉熵损失进行类预测。

  当我们转移到更复杂的领域,如开放图像数据集[7]时,这种公式会有所帮助。在这个数据集中有许多重叠的标签(即女性和个人)。使用softmax强加了这样一种假设,即每个框恰好有一个类,但事实往往并非如此。多标签方法可以更好地对数据进行建模。

2.3 跨规模预测

  YOLOv3在3个不同的尺度上预测框。我们的系统使用与特征金字塔网络类似的概念从这些尺度中提取特征[8]。从我们的基本特征提取器中,我们添加了几个卷积层。最后一个预测了一个三维张量,编码边界框、目标性和类预测。在我们使用COCO[10]的实验中,我们在每个尺度上预测3个框,因此对于4个边界框偏移、1个目标性预测和80个类预测,张量为 N × N × [ 3 ∗ ( 4 + 1 + 80 ) ] N×N×[3*(4+1+80)] N×N×[3(4+1+80)]

  接下来,我们从前两层中提取特征图,并将其上采样2×。我们还获取了网络早期的特征图,并使用级联将其与上采样的特征合并。这种方法使我们能够从上采样的特征中获得更有意义的语义信息,并从早期的特征图中获得更细粒度的信息。然后,我们再添加几个卷积层来处理这个组合的特征图,并最终预测一个类似的张量,尽管现在是它的两倍大。

  我们再次执行相同的设计,以预测最终规模的框。因此,我们对第三尺度的预测受益于所有先前的计算以及网络早期的细粒度特征。

  我们仍然使用k均值聚类来确定我们的边界框先验。我们只是任意选择了9个聚类和3个尺度,然后在尺度上均匀地划分聚类。在COCO数据集上,9个聚类为:(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)。

2.4 特征提取器

  我们使用一种新的网络来进行特征提取。我们的新网络是YOLOv2、Darknet-19中使用的网络和新的残差网络之间的混合方法。我们的网络使用连续的3×3和1×1卷积层,但现在也有一些快捷连接,并且明显更大。它有53个卷积层,所以我们称之为……等等……Darknet-53!

在这里插入图片描述

表1. Darknet-53。

  这个新网络比Darknet-19强大得多,但仍然比ResNet-101或ResNet-152高效。以下是ImageNet的一些结果:

在这里插入图片描述

表2. 主干的比较。精确度、数十亿次运算、每秒数十亿次浮点运算,以及各种网络的FPS。

  每个网络都使用相同的设置进行训练,并在256×256的单裁剪精度下进行测试。运行时间是在Titan X上以256×256测量的。因此,Darknet-53的性能与最先进的分类器不相上下,但浮点运算更少,速度更快。Darknet-53比ResNet-101好,速度快1.5倍。Darknet-53的性能与ResNet-152相似,速度快2倍。

  Darknet-53还实现了每秒最高的浮点运算。这意味着网络结构可以更好地利用GPU,使其评估更高效,从而更快。这主要是因为ResNets的层太多,效率不高。

2.5 训练

  我们仍然在完整的图像上训练,没有耗费体力的负面挖掘或任何类似的东西。我们使用多尺度训练、大量数据增强、批量规范化,所有这些都是标准的东西。我们使用Darknet神经网络框架进行训练和测试[14]。

3. 我们的做法

  YOLOv3相当不错!见表3。就COCO而言,奇怪的平均AP指标与SSD变体不相上下,但速度快了3倍。不过,在这个指标上,它仍然远远落后于RetinaNet等其他型号。

  然而,当我们观察IOU=.5(或图表中的AP50)时mAP的“旧”检测指标时,YOLOv3非常强大。它几乎与RetinaNet不相上下,远高于SSD变体。这表明YOLOv3是一个非常强大的检测器,擅长为目标生成像样的框。然而,随着IOU阈值的增加,性能显著下降,这表明YOLOv3很难使框与目标完全对齐。

  过去,YOLO与小物体搏斗。然而,现在我们看到了这一趋势的逆转。通过新的多尺度预测,我们看到YOLOv3具有相对较高的APS性能。然而,它在中型和大型物体上的性能相对较差。需要更多的调查才能弄清真相。

  当我们在AP50指标上绘制精度与速度的关系图(见图5)时,我们发现YOLOv3比其他检测系统具有显著的优势。也就是说,它更快更好。

4. 我们尝试过但没有成功的事情

  在开发YOLOv3时,我们尝试了很多东西。很多都没用。这是我们能记住的东西。

  锚框x,y偏移预测。我们尝试使用普通锚框预测机制,通过线性激活将x,y偏移预测为框宽度或高度的倍数。我们发现这种配方降低了模型的稳定性,效果不太好。

  线性x,y预测而非逻辑预测。我们尝试使用线性激活来直接预测x,y偏移,而不是逻辑激活。这导致mAP下降了几个点。

  焦点损失。我们尝试使用焦点损失。它使我们的mAP下降了大约2个点。YOLOv3可能已经对焦点损失试图解决的问题具有鲁棒性,因为它具有单独的目标性预测和条件类预测。因此,对于大多数例子来说,类预测没有损失?还是什么?我们不能完全确定。

在这里插入图片描述

表3. 我真的只是从[9]那里偷了所有这些表格,它们从头开始需要太长时间。好的,YOLOv3做得很好。请记住,RetinaNet处理图像的时间大约是3.8倍。YOLOv3比SSD变体要好得多,在AP50指标上与最先进的型号相当。

在这里插入图片描述

图3. 再次改编自[9],这一次在.5 IOU度量的mAP上显示速度/精度折衷。你可以看出YOLOv3很好,因为它很高,而且离左边很远。你能引用你自己的论文吗?猜猜谁来试试,这家伙→ [16] 。哦,我忘了,我们还修复了YOLOv2中的一个数据加载错误,这有2mAP的帮助。只是偷偷把这个放在这里,以免打乱布局。

  双重IOU阈值和真值分配。Faster R-CNN在训练中使用两个IOU阈值。如果一个预测与真值重叠了.7,这是一个阳性的例子,而到了[.3−.7],它就会被忽略,对于所有真值目标,它都小于.3,这就是一个阴性的例子。我们尝试了类似的策略,但没有得到好的结果。

  我们非常喜欢我们目前的公式,它似乎至少处于局部最优。这些技术中的一些可能最终会产生好的结果,也许它们只需要一些调整来稳定训练。

5. 这一切意味着什么

  YOLOv3是一个很好的检测器。它很快,很准确。在COCO的平均AP介于.5和.95 IOU指标之间,它并没有那么好。但它在旧的检测指标.5 IOU上非常好。

  我们为什么要切换指标?COCO最初的论文中有这样一句隐晦的话:“一旦评估服务器完成,将添加对评估指标的全面讨论”。Russakovsky等人报告说,人类很难区分0.3和.5的IOU!“训练人类对IOU为0.3的边界框进行视觉检查,并将其与IOU为0.5的边界框区分开来,这令人惊讶地困难。”[18]如果人类很难分辨出区别,这有多重要?

  但也许一个更好的问题是:“既然我们有了这些检测器,我们该怎么办?”做这项研究的很多人都在谷歌和脸书。我想至少我们知道这项技术掌握得很好,肯定不会被用来获取你的个人信息并将其出售给……等等,你是说这正是它的用途??哦

  其他大量资助视觉研究的人是军方,他们从来没有做过像用新技术杀死很多人这样可怕的事情哦等等…(作者由海军研究办公室和谷歌资助)

  我非常希望大多数使用计算机视觉的人只是在用它做一些快乐的好事,比如在国家公园里数斑马的数量[13],或者在猫在家里游荡时跟踪它[19]。但计算机视觉的使用已经受到质疑,作为研究人员,我们有责任至少考虑我们的工作可能造成的危害,并想办法减轻它。我们欠世界这么多。

  最后,不要@我。(因为我终于退出了推特)。

References

[1] Analogy. Wikipedia, Mar 2018. 1
[2] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zisserman. The pascal visual object classes (voc) challenge. International journal of computer vision, 88(2):303–338, 2010. 6
[3] C.-Y. Fu, W. Liu, A. Ranga, A. Tyagi, and A. C. Berg. Dssd: Deconvolutional single shot detector. arXiv preprint arXiv:1701.06659, 2017. 3
[4] D. Gordon, A. Kembhavi, M. Rastegari, J. Redmon, D. Fox, and A. Farhadi. Iqa: Visual question answering in interactive environments. arXiv preprint arXiv:1712.03316, 2017. 1
[5] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 770–778, 2016. 3
[6] J. Huang, V. Rathod, C. Sun, M. Zhu, A. Korattikara, A. Fathi, I. Fischer, Z. Wojna, Y. Song, S. Guadarrama, et al. Speed/accuracy trade-offs for modern convolutional object detectors. 3
[7] I. Krasin, T. Duerig, N. Alldrin, V. Ferrari, S. Abu-El-Haija, A. Kuznetsova, H. Rom, J. Uijlings, S. Popov, A. Veit, S. Belongie, V. Gomes, A. Gupta, C. Sun, G. Chechik, D. Cai, Z. Feng, D. Narayanan, and K. Murphy. Open-images: A public dataset for large-scale multi-label and multi-class image classification. Dataset available from https://github.com/openimages, 2017. 2
[8] T.-Y. Lin, P. Dollar, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2117–2125, 2017. 2, 3
[9] T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Doll´ar. Focal loss for dense object detection. arXiv preprint arXiv:1708.02002, 2017. 1, 3, 4
[10] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Doll´ar, and C. L. Zitnick. Microsoft coco: Common objects in context. In European conference on computer vision, pages 740–755. Springer, 2014. 2
[11] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.-Y. Fu, and A. C. Berg. Ssd: Single shot multibox detector. In European conference on computer vision, pages 21–37. Springer, 2016. 3
[12] I. Newton. Philosophiae naturalis principia mathematica. William Dawson & Sons Ltd., London, 1687. 1
[13] J. Parham, J. Crall, C. Stewart, T. Berger-Wolf, and D. Rubenstein. Animal population censusing at scale with citizen science and photographic identification. 2017. 4
[14] J. Redmon. Darknet: Open source neural networks in c. http://pjreddie.com/darknet/, 2013–2016. 3
[15] J. Redmon and A. Farhadi. Yolo9000: Better, faster, stronger. In Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on, pages 6517–6525. IEEE, 2017. 1, 2, 3
[16] J. Redmon and A. Farhadi. Yolov3: An incremental improvement. arXiv, 2018. 4
[17] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards real-time object detection with region proposal networks. arXiv preprint arXiv:1506.01497, 2015. 2
[18] O. Russakovsky, L.-J. Li, and L. Fei-Fei. Best of both worlds: human-machine collaboration for object annotation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2121–2131, 2015. 4
[19] M. Scott. Smart camera gimbal bot scanlime:027, Dec 2017. 4
[20] A. Shrivastava, R. Sukthankar, J. Malik, and A. Gupta. Beyond skip connections: Top-down modulation for object detection. arXiv preprint arXiv:1612.06851, 2016. 3
[21] C. Szegedy, S. Ioffe, V. Vanhoucke, and A. A. Alemi. Inception-v4, inception-resnet and the impact of residual connections on learning. 2017. 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/830848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库系列之(一)SQL基本用法总结

文章目录 前言一、数据库是什么?二、数据库的作用是什么?三、数据库的种类以及常用的数据库四、SQL常用方法总结1.基本sql语句2.对数据进行限定和排序3.处理单行函数4.多表查询5.分组函数6.非关联查询与关联查询7.高级查询8.更多用法 总结 前言 当今信息…

测试岗?从功能测试进阶自动化测试开发,测试之路不迷茫...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试新人在想什么…

visual studio 生成dll文件以及修改输出dll文件名称操作

目录 visual studio 生成dll文件以及修改dll文件名称一、准备测试代码二、设置导出dll属性三、生成dll文件 .lib .dll .pdb 的简单介绍dll文件使用方式lib文件使用方式1、动态链接 (原理)2、静态链接: visual studio 生成dll文件以及修改dll文…

【雕爷学编程】 MicroPython动手做(35)——体验小游戏

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

《Kali渗透基础》12. 无线渗透(二)

kali渗透 1:无线协议栈1.1:ifconfig1.2:iwconfig1.3:iw1.4:iwlist 2:无线网卡配置2.1:查看无线网卡2.2:查看信道频率2.3:扫描附近 AP2.4:侦听接口添加与删除 …

物联网|按键实验---学习I/O的输入及中断的编程|读取I/O的输入信号|中断的编程方法|轮询实现按键捕获实验-学习笔记(13)

文章目录 实验目的了解擒键的工作原理及电原理图 STM32F407中如何读取I/O的输入信号STM32F407对中断的编程方法通过轮询实现按键捕获实验如何利用已有内工程创建新工程通过轮询实现按键捕获代码实现及分析1 代码的流程分析2 代码的实现 Tips:下载错误的解决 实验目的 了解擒键…

Drools用户手册翻译——第四章 Drools规则引擎(十)复杂事件处理(CEP)

甩锅声明:本人英语一般,翻译只是为了做个笔记,所以有翻译错误的地方,错就错了,如果你想给我纠正,就给我留言,我会改过来,如果懒得理我,就直接划过即可。 目录 ​编辑 …

Java课题笔记~ Mybatis注解开发

使用注解开发,可以减少Mapper映射文件的编写。 一、mybatis常用注解 Insert:实现新增 Update:实现更新 Delete:实现删除 Select:实现查询 Result:实现结果集封装 Results:可以与Result 一…

23款奔驰GLB200升级23P智能驾驶辅助系统,提升您的行车安全性

为什么要升级23P驾驶辅助系统呢?23P驾驶辅助系统功能有什么作用呢? 首先23P驾驶辅助系统功能有9个,相互结合让行车更安全,长途开车更轻松。提升驾驶的安全性。 所以选择装这套23P驾驶辅助系统的用户也比较多,现在道路…

屏蔽箱的种类、优点及使用场景介绍

屏蔽箱的用途是非常广泛的,能够屏蔽辐射电磁也可以阻隔电磁进入某一区域,达到屏蔽干扰信号的作用。屏蔽箱的种类是多样的,有着各自的优点。 按照应用领域屏蔽箱可分为以下几种: 1.电磁屏蔽箱:主要应用于电磁波测试和电…

【Jmeter】压测mysql数据库中间件mycat

目录 背景 环境准备 1、下载Jmeter 2、下载mysql数据库的驱动包 3、要进行测试的数据库 Jmeter配置 1、启动Jmeter图形界面 2、加载mysql驱动包 3、新建一个线程组,然后如下图所示添加 JDBC Connection Configuration 4、配置JDBC Connection Configurati…

洛谷P1918 保龄球

思路:要打多少个就在哪里打 比如要打100个,就在a数组中找出一个100,在那里打 所以可以用STL-map。 map大法好!!! 用map存储每种 瓶子个数 最后出现的位置。 就是说,比如样例中:…

[C++项目] Boost文档 站内搜索引擎(2): 文档文本解析模块parser的实现、如何对文档文件去标签、如何获取文档标题...

项目开始的准备工作 在上一篇文章中, 已经从Boost官网获取了Boost库的源码. 相关文章: 🫦[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍… 接下来就要编写代码了. 不过还需要做一些准备工作. 创建项目目录 所有的项目文件肯定要在一…

DTCC2023第十四届中国数据库大会分享:MySQL性能诊断平台:利用eBPF技术实现高效的根因诊断

主题 8月16-18日 DTCC2023第十四届中国数据库大会在北京国际会议中心召开,17日下午在云原生数据库开发与实践分论坛,我将带来分享:《MySQL性能诊断平台:利用eBPF技术实现高效的根因诊断》敬请期待! 欢迎大家提前试用我…

深度学习Redis(5):集群

前言 在前面的文章中,已经介绍了Redis的几种高可用技术:持久化、主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡。 Redis集群解决了上述问题,实…

【积累】安装PLSQL工具遇到的那些问题~

报错提示没有正确安装 解决方案:是需要安装oracle client oracle下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html 报错提示确认安装了32位的Oracle Client吗? 百度找解决方案&#xff1a…

Execution failed for task ‘:app:uploadCrashlyticsMappingFileRelease

新版本的Firebase crash 库打混淆后的正式环境包会报错: Execution failed for task :app:uploadCrashlyticsMappingFileRelease Caused by: java.lang.IllegalArgumentException: Host name may not be empty 解决方案: 在build.gradle android{}中…

如何编写一个易于维护的考试系统源码

编写一个易于维护的考试系统源码对于开发人员来说非常重要。一个易于维护的系统可以使代码更易于理解、修改和扩展,从而提高开发效率和系统稳定性。 第一步:良好的项目结构 良好的项目结构是一个易于维护的源码的基础。可以按照模块、功能或层次等方式…

uniapp 中过滤获得数组中某个对象里id:1的数据

// 假设studentData是包含多个学生信息的数组 const studentData [{id: 1, name: 小明, age: 18},{id: 2, name: 小红, age: 20},{id: 3, name: 小刚, age: 19},{id: 4, name: 小李, age: 22}, ]; // 过滤获取id为1的学生信息 const result studentData.filter(item > ite…

使用aidegen导入AOSP工程到Clion并配置toolchains

作者:Season3266 一、aidegen介绍 aidegen是AOSP中自带的一个工具,可以将源码中的某个工程导入进IDE,从而可以使用IDE的智能提示,提高编码效率。而源码中的工程并不是独立存在的,还会依赖其他工程中的各种模块&#x…