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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Netty:从ByteBuf中读出数据

介绍 Netty的ByteBuf数据位置索引是0开始的。 可以用ByteBuf的getByte(int index)方法从指定位置读出一字节,这个操作不会改变ByteBuf的readerIndex 或者 writerIndex 的位置。如果index小于0,或者index 1大于ByteBuf的容量,就会抛出IndexO…

下载列表视频的具体操作

主要是介绍怎样获取上篇博客需要的HAR文件和请求域名

Vulnhub靶机DC-2 writeup

靶机介绍 靶机介绍:https : //download.vulnhub.com/dc/DC-2.zip ​ 信息搜集 获取IP地址 扫描靶机的IP的方法 1. nmap -sP 192.168.142.0/24 #nmap进行ping扫描发现存活主机 2. arp-scan -l #基于ARP发现内网存活主机 3. netdiscover -r 192.168.142.0/24 -…

Java导出数据到Excel

Java导出数据到Excel分3步处理 1、构建Workbook 数据 2、设置Workbook 格式 3、导出到Excel 1、构建Workbook 数据 public static void buildData(Workbook wb, List<Person> list) {Sheet sheetName wb.createSheet("sheetName");Row row sheetName.creat…

Java 中的 7 种重试机制

随着互联网的发展项目中的业务功能越来越复杂&#xff0c;有一些基础服务我们不可避免的会去调用一些第三方的接口或者公司内其他项目中提供的服务&#xff0c;但是远程服务的健壮性和网络稳定性都是不可控因素。 在测试阶段可能没有什么异常情况&#xff0c;但上线后可能会出…

C++---list常用接口和模拟实现

list---模拟实现 list的简介list函数的使用构造函数迭代器的使用list的capacitylist element accesslist modifiers list的模拟实现构造函数&#xff0c;拷贝构造函数和迭代器begin和endinsert和eraseclear和析构函数 源码 list的简介 list是用双向带头联表实现的一个容器&…

【Python】从同步到异步多核:测试桩性能优化,加速应用的开发和验证

目录 测试工作中常用到的测试桩mock能力 应用场景 简单测试桩 http.server扩展&#xff1a;一行命令实现一个静态文件服务器 性能优化&#xff1a;使用异步响应 异步响应 能优化&#xff1a;利用多核 gunicorn 安装 gunicorn 使用 gunicorn 启动服务 性能优化&#…

PHP 前后端分离,运行配置

H5 WEB目录:安装 yarn install、npm install &#xff08;依赖包&#xff09; 在电脑&#xff1a;安装nodejs Composer下载 &#xff1a;https://getcomposer.org/

Amazon Aurora Serverless v2 正式发布:针对要求苛刻的工作负载的即时扩展

我们非常兴奋地宣布&#xff0c;Amazon Aurora Serverless v2 现已面向 Aurora PostgreSQL 和 MySQL 正式发布。Aurora Serverless 是一种面向 Amazon Aurora 的按需自动扩展配置&#xff0c;可让您的数据库根据应用程序的需求扩展或缩减容量。 亚马逊云科技开发者社区为开发者…

SAP 集成以及PO异步接口调优

前言&#xff1a;目前国内的SAP相关的技术文档实在是少得可怜&#xff0c;PO相关的就更少了&#xff0c;基本上都是需要摸索&#xff0c;官方的技术专家很多时候的回复都是说了又似乎没说。。。 背景&#xff1a;由于目标系统接收数据缓慢或者是异步线程出现异常导致错误积压。…

动手学深度学习(一)预备知识

目录 一、数据操作 1. N维数组样例 2. 访问元素 3. 基础函数 &#xff08;1&#xff09; 创建一个行向量 &#xff08;2&#xff09;通过张量的shape属性来访问张量的形状和元素总数 &#xff08;3&#xff09;reshape()函数 &#xff08;4&#xff09;创建全0、全1、…

c语言基础知识帮助理解(函数递归详解)

"从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚和一个小和尚。有一天老和尚对小和尚说:“从前有座山.山里有座庙&#xff0c;庙里有个老和尚和一个小和尚&#xff0c;有一天老和尚对小和尚说&#xff1a;“从前有座山.山里有座庙&#xff0c;庙里有个老和尚…

微信小程序tab加列表demo

一、效果 代码复制即可使用&#xff0c;记得把图标替换成个人工程项目图片。 微信小程序开发经常会遇到各种各样的页面组合&#xff0c;本demo为list列表与tab组合&#xff0c;代码如下&#xff1a; 二、json代码 {"usingComponents": {},"navigationStyle&q…

Github Pages自定义域名

Github Pages自定义域名 当你想在网上发布内容时&#xff0c;配置Github Pages是一个很好的选择。如果你想要在自己的域名上发布&#xff0c;你可以使用Github Pages来创建自己的网站。本文将介绍如何使用Github Pages自定义域名。 这里呢先列出前置条件&#xff1a; 您的Gi…

【无公网IP】在公网环境下Windows远程桌面Ubuntu 18.04

【无公网IP】在公网环境下Windows远程桌面Ubuntu 18.04 文章目录 【无公网IP】在公网环境下Windows远程桌面Ubuntu 18.04一、 同个局域网内远程桌面Ubuntu1. 更新软件仓库2. 安装支持包3. 安装XFCE4桌面环境4. 安装XRDP5. 环境设置5.1 XFCE桌面配置5.2 在配置文件中&#xff0c…

防雷工程行业应用和施工工艺

防雷工程是指通过各种手段和措施&#xff0c;保护建筑物、设备和人员免受雷电侵害的技术。在我国&#xff0c;由于雷电活动频繁&#xff0c;防雷工程的重要性不言而喻。地凯科技将介绍防雷工程的基本知识、相关案例以及防雷器产品。 一、防雷工程的基本知识 雷电的危害 雷电…

浅谈下API初步认知

当我们谈论API&#xff0c;我们指的是应用程序接口&#xff08;Application Programming Interface&#xff09;。API允许不同的软件应用程序之间互相通信和交互。它定义了一组规定和协议&#xff0c;用于确定数据传输和请求的格式、方法和功能。 API的作用是在软件开发中提供一…

LeetCode--HOT100题(19)

目录 题目描述&#xff1a;54. 螺旋矩阵&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;54. 螺旋矩阵&#xff08;中等&#xff09; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 Le…

企业服务器中了Locked勒索病毒后怎么办,如何解决问题并提高防范意识

科学技术的发展给我们的生活带来了极大便利&#xff0c;但也为企业带来了安全威胁。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器中了locked后缀勒索病毒&#xff0c;计算机上的所有文件都被加密&#xff0c;无法被正常调取&#xff0c;严重影响了企业的正…

Linux第六章之vim与gcc使用

一、Linux编辑器-vim使用 vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以在终端运行&#xff0c;也…