目前为止看过最帅气的一篇论文YOLOv3: An Incremental Improvement(2018.4)

news2024/11/24 16:38:30


文章目录

  • Abstract
  • Introduction
  • The Deal
    • Bounding Box Prediction
    • Class Prediction
    • Predictions Across Scales
    • Feature Extractor
    • Training
  • How We Do
  • Things We Tried That Didn’t Work
    • Anchor box x, y offset predictions
    • Linear x, y predictions instead of logistic
    • Focal loss
    • Dual IOU thresholds and truth assignment
  • What This All Means
  • Rebuttal

原文链接
源代码
代码

Abstract



我们对YOLO进行了一些更新,在设计上做了一些小改动,让它变得更好。我们还训练了这个非常棒的新网络,比上次大一点,但更准确。在320 × 320时,YOLOv3在28.2 mAP下运行22毫秒,与SSD一样精确,但速度快三倍。当我们看到旧的0.5 IOU mAP检测指标时,YOLOv3是相当不错的。它在Titan X上在51毫秒内达到57.9 AP50,相比之下,在RetinaNet上在198毫秒内达到57.5 AP50,性能相似,但速度快3.8倍

Introduction

我不用介绍你们也知道我来干什么[doge]

因此,这篇引言的结尾将为本文的其余部分指明方向。首先,我们将告诉你YOLOv3的Deal是什么。然后我们会告诉你怎么做。我们还会告诉你一些我们尝试过但没有成功的事情。最后,我们将思考这一切意味着什么

The Deal

我们主要是从别人那里吸取好主意,我们还训练了一个新的分类器网络,它比其他的分类器网络更好

Bounding Box Prediction


(我们预测盒子的宽度和高度作为簇质心的偏移量。我们使用sigmoid函数预测相对于过滤器应用位置的框的中心坐标)

YOLO9000之后,我们的系统使用维度集群作为anchor boxes来预测边界框。网络为每个边界框(tx, ty, tw, th)预测4个坐标。如果单元格与图像左上角的偏移量为(cx,cy),并且先前的边界框的宽度和高度为pw, ph,则预测结果对应于:
在训练过程中,我们使用误差损失平方和。如果某些坐标预测的真值为t´*,我们的梯度是真值(从地面真值框计算)减去我们的预测:t´* - t *。这个基真值可以很容易地通过对上面的方程求反来计算
YOLOv3使用逻辑回归预测每个边界框的对象得分。如果先前的边界框与一个基础真值对象的重叠比任何其他先前的边界框都多,则该值应为1。如果先验的边界盒不是最好的,但是与一个基础真值对象的重叠超过某个阈值,我们忽略预测,遵循RPN。我们使用0.5的阈值。与RPN不同,我们的系统只为每个地面真值对象分配一个边界框。如果没有将边界框先验赋值给基础真值对象,则不会对坐标或类预测造成损失,只会对对象造成损失

Class Prediction

每个框使用多标签分类预测边界框可能包含的类。我们没有使用softmax,因为我们发现它对于良好的性能来说是不必要的,而是简单地使用独立的逻辑分类器。在训练过程中,我们使用二元交叉熵损失进行类预测
当我们移动到更复杂的领域,如开放图像数据集时,这个公式会有所帮助。在这个数据集中有许多重叠的标签(即女人和人)。使用softmax强制假设每个盒子只有一个类,而事实往往并非如此。多标签方法可以更好地为数据建模

Predictions Across Scales

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

接下来,我们从之前的2层提取特征映射,并将其上采样2倍。我们还从网络中获取一个特征映射,并使用连接将其与我们的上采样特征合并。该方法允许我们从上采样特征中获得更有意义的语义信息,并从早期的特征映射中获得更细粒度的信息。然后我们添加更多的卷积层来处理这个组合的特征图,并最终预测一个相似的张量,尽管现在大小是原来的两倍

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

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

Feature Extractor

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

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

每个网络都用相同的设置进行训练,并以256 × 256的单次crop精度进行测试。运行时间是在256 × 256的Titan X上测量的。因此,Darknet-53的性能与最先进的分类器相当,但浮点运算更少,速度更快。Darknet-53比ResNet-101好,速度快1.5倍。Darknet-53的性能与ResNet-152相似,速度是ResNet-152的2倍
Darknet-53还实现了每秒最高的测量浮点运算。这意味着网络结构更好地利用GPU,使其更有效地评估,从而更快。这主要是因为resnet有太多的层,效率不高

Training

我们仍然在完整的图像上训练,没有硬负挖掘或任何类似的东西。我们使用多尺度训练,大量的数据增强,批处理归一化,所有标准的东西。我们使用Darknet神经网络框架进行训练和测试

How We Do

YOLOv3非常好!见表3。就COCOs的平均AP指标而言,它与SSD变体相当,速度快了3倍,但在这个指标上,它仍然落后于其他骨干模型(如RetinaNet)
然而,当我们观察IOU= 0.5(或图表中的AP50)时mAP的“旧”检测指标时,YOLOv3非常强大。它几乎与RetinaNet相当,远远高于SSD变体。这表明YOLOv3是一个非常强大的检测器,擅长为物体产生合适的boxes。然而,随着IOU阈值的增加,性能显著下降,这表明YOLOv3努力使盒子与对象完全对齐
过去,YOLO在处理小物体时遇到了困难。然而,现在我们看到了这一趋势的逆转。通过新的多尺度预测,我们看到YOLOv3具有相对较高的APS性能。但是,它在中型和大型对象上的性能相对较差。要弄清这件事的真相,还需要进行更多的调查
当我们在AP50指标上绘制精度与速度的关系时(见图5),我们看到YOLOv3比其他检测系统具有显著的优势。也就是说,它更快更好
(根据mAP对这两幅图像的分析,这两个假设的探测器是完美的,他们完全平等)

Things We Tried That Didn’t Work

Anchor box x, y offset predictions

我们尝试使用正常的anchor boxes预测机制,其中使用线性激活预测x, y偏移量为框宽度或高度的倍数。我们发现这个公式降低了模型的稳定性,并没有很好地工作

Linear x, y predictions instead of logistic

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

Focal loss

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

Dual IOU thresholds and truth assignment

Faster R- CNN在训练中使用两个IOU阈值。如果一个预测与基本事实的重叠度为0.7,那么它就是一个正检验。[0.3 – 0.7]被忽略,小于0.3对于所有的基础真理对象,它是一个负面的例子。我们尝试了类似的策略,但效果不佳。我们非常喜欢我们目前的配方,它似乎至少在局部最优。这些技术中的一些可能最终会产生良好的结果,也许它们只是需要一些调整来稳定训练

What This All Means

YOLOv3是一个很好的检测器。它又快又准,在0.5到0.95 IOU之间的COCO平均AP就不那么好了。但在旧的0.5 IOU的检测指标上,这是非常好的.
我们为什么要改变指标呢?最初的COCO论文只有这句隐晦的话:“一旦评估服务器完成,将添加对评估指标的完整讨论”。Russakovsky等人报告说,**人类很难区分0.3和0.5的IOU !**训练人类从视觉上检查IOU为0.3的边界框,并将其与IOU为0.5的边界框区分开来,这是非常困难的。但如果人类很难分辨出两者的区别,这又有什么关系呢?

但也许一个更好的问题是:“既然我们有了这些探测器,我们将如何利用它们?”很多做这项研究的人都在b谷歌和Facebook上。我想至少我们知道这项技术很好,绝对不会被用来收集你的个人信息并卖给…等等,你是说这就是它的用途??哦

其他大量资助视觉研究的人是军方,他们从来没有做过任何可怕的事情,比如用新技术杀死很多人哦,等等…

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

最后,不要@我。(因为我最终放弃了Twitter)

Rebuttal

我们要感谢Reddit的评论者,实验室的同事,邮件的发送者,以及走廊里路过的呼喊者,感谢他们可爱的,发自内心的话语。如果你,像我一样,正在为ICCV做评审,那么我们知道你可能还有37篇其他的论文要读,你总是把它们推迟到最后一周,然后有一些领域的传奇人物给你发邮件,告诉你应该如何完成这些评审,除非你不完全清楚它们在说什么,也许它们来自未来?不管怎么说,这篇论文不会是,如果没有你们过去所做过的所有工作这篇论文也不会是,如果没有你们过去所做过的所有工作,这篇论文也不会是,如果没有你们过去所做过的所有工作,这篇论文也不会是,如果没有你们过去所做过的所有工作,这篇论文也不会是,如果没有你们过去所做过的所有工作,这篇论文也不会是。如果你发推特,我也不会知道

评论者2号又名Dan Grossman(谁会这么做,哈哈)坚持要我在这里指出我们的图表有两个非零原点,而不是一个。丹,你说得很对,因为这比承认我们只是在这里争夺2% -3%的地图要好得多。但这里是要求的图表。我也加入了一个FPS,因为当我们在FPS上绘图时,我们看起来非常棒

评论者#4又名JudasAdventus在Reddit上写道:“有趣的阅读,但反对MSCOCO指标的论点似乎有点弱”。我一直都知道你会背叛我,犹大。你知道当你在做一个项目的时候结果是好的所以你必须找到一些方法来证明你所做的是多么的酷?我试着这么做,但我对COCO的指标有点不满。但既然我已经监视了这座山,我还不如死在上面

事情是这样的,mAP已经有点坏了,所以它的更新可能会解决一些问题,或者至少证明为什么更新版本在某些方面更好。我认为最重要的是缺乏正当理由。对于PASCAL VOC来说,IOU阈值“被故意设置得很低,以补偿地面真实数据中边界框中的不准确性”[2]。可可是否比挥发性有机化合物有更好的标签?这是绝对可能的,因为COCO有分割掩码,也许标签更值得信赖,因此我们不担心不准确。但同样,我的问题是缺乏理由

COCO指标强调更好的边界框,但这种强调必须意味着它不强调其他东西,在本例中是分类准确性。是否有充分的理由认为更精确的边界框比更好的分类更重要?一个分类错误的例子比一个稍微移动的边界框要明显得多。

mAP已经搞砸了,因为所有重要的是每个类的排名排序。例如,如果你的测试集只有这两个图像,那么根据mAP,产生这些结果的两个检测器是一样好的

这显然是对mAP问题的过度夸大了,但我想我的新观点是,在“现实世界”中人们所关心的与我们当前的衡量标准之间存在着如此明显的差异,我认为如果我们要提出新的衡量标准,我们应该关注这些差异。而且,它已经是平均精度了,我们怎么称呼COCO度量,平均平均年龄精度?

这是一个建议,人们真正关心的是给定一个图像和一个检测器,检测器在图像中找到并分类物体的能力如何。去掉每个类的AP,只求全局平均精度怎么样?还是对每个图像进行AP计算并取其平均值?

boxes是愚蠢的,我可能是masks的忠实信徒,除了我不能让YOLO学会它们。

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

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

相关文章

2010年09月06日 Go生态洞察:Go语言荣获2010年度Bossie奖

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

双11专场直播,最高抽200元现金红包!

虽然我们把这场直播的主题定为“老用户必须观看的直播”,但估计也有不少新朋友。 因此,本文除了为大家预告双11专场直播内容外,还会为大家介绍一下我们水经注是做什么的,以及公布直播间都有哪些福利好礼! 观看双11专…

VS2010配置gdal1.10.0 gdal1.10.1编译

1.gdal1100编译 正文: 重要:gdal编译完是release版本的,工程中加载使用时release模式才能用,debug模式使用报错“错误LNK2038:检测到“_ITERATOR_DEBUG_LEVEL”的不匹配:值“0”与main.obj中的值“2”不匹…

基于安卓android微信小程序的在线考试系统

项目介绍 微信在线考试系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便学生可以很容易明了的找到自己所需要的信息,还有…

一个数组实现两个栈

一个数组实现两个栈 基本思路: 1.定义两个栈顶top1-1,top2maxsize 2.栈满,当top1与top2相差1时栈满 package 例题; //一个数组实现两个栈 public class TwoStack {private int[] arr;private int maxSize;//定义栈顶private int top1;private…

Kotlin(十) 空指针检查、字符串内嵌表达式以及函数默认值

空指针检查 我们在之前的章节里,有定义一个Study的类,它有两个函数,一个doHomework(),一个readBooks()。然后我们定义个doStudy函数,来调用它们,代码如下: fun doStudy(study: Study) {study.doHomework(…

SecureCRT安装、注册教程

SecureCRT保姆级安装教程!!! 安装包与注册机自取。 链接:https://pan.baidu.com/s/1IrFkHlrtCoc67QnQ_z1TWQ?pwdt25m 提取码:t25m 一 前期准备 1.1 关闭病毒查杀(如果有其他杀毒软件也要关闭&#xff0…

小明和完美序列(HashMap、Map、Entry)

小明和完美序列 知识点: //导包:HashMap、Map、Entry import java.util.HashMap; import java.util.Map; import java.util.Map.Entry;public class Main {public static void main(String [] args) { //创建Map(HashMap)对象 M…

基于Kinect 动捕XR直播解决方案 - 硬件篇

Kinect-V2 硬件设备 一、Kinect介绍 1、Kinect for Windows 的开发配置 Kinect V2 操作系统:Windows 10(必须) Windows Surface Windows Surface 2 开发环境:Visual Studio 2017 .NET Framework 4.5 (.NET Framework 4.5) 硬…

【Ubuntu 语音控制安卓设备刷短视频 orangePi zero2 H616 (已开源) 】.md uptada:23/11/07

文章目录 H616_实现Ubuntu语音控制安卓设备刷短视频小美效果展示H616 ubuntu系统 安装adb智能公元 SU-03T 离线语音模组 固件制作配合串口实现 小美_控制安卓刷抖音 H616_实现Ubuntu语音控制安卓设备刷短视频 注意:orangePi zero2 H616 安装系统为ubuntu 小美效果…

信创加速,美创科技加入UOS主动安全防护计划(UAPP)

近日,统信UOS主动安全防护计划 (UAPP) 技术沙龙暨新老会员交流活动在北京召开。 美创科技作为信创产业的重要参与者受邀参加。在2023年度UAPP合作伙伴授牌发布仪式上,美创科技获得统信软件授牌,正式成为UAPP成员单位,将与统信软件…

日防夜防,家贼难防?企业防泄密为什么这么难?

企业经营保密就是保生命,你知道吗? 案例分析 根据国家信息部门的报告显示,高达85%的数据泄密不是因为黑客工资有多厉害,而是由公司员工造成的。 而且现在移动办公环境,大家都用手机在线办公软件的工作激励外泄更容易…

使用python快速搭建接口自动化测试脚本实战总结

导读 本文将介绍如何使用python快速进行http/https接口自动化测试脚本搭建,实现自动请求、获取结果、数据对比分析,导出结果到Excel等功能,包括python的requests、pandas、openpyxl等库的基本使用方法。 测试需求介绍 通常,在我…

把枯燥的PDF文档转换为翻页电子书,一键上传搞定

PDF是我们工作生活中比较常用的文档格式之一,由于PDF文件可以离线观看,所以通常都是静态的,有时候密密麻麻的文字看得很是头晕眼花,这使得阅读体验变得单调乏味。 为了解决这个问题 , 我们推荐使用FLBOOK &#xff0c…

C盘清理指南(四)——垃圾清理工具

往期目录集合: C盘清理指南(一) 内存小的本质原因https://blog.csdn.net/jsl123x/article/details/134273657?spm1001.2014.3001.5501C盘清理指南(二)——盘符划分操作https://blog.csdn.net/jsl123x/article/detail…

客服系统本地部署:实现高效客户服务

在当今的数字化时代,客户服务已成为企业成功的关键因素之一。为了提供优质、高效的服务,许多企业选择将客服系统本地部署。这种部署方式具有许多优势,如提高响应速度、保障数据安全、提升客户满意度等。 一、客服系统本地部署的概念 客服系统…

windows的mysql启动错误,查看windows日志

1、点击左下角开始按钮,计算机上右键,点击【管理】。 2、在计算机管理界面依次找到【系统工具】,选择【时间查看器】,打开【windows日志】,点击【应用程序】 3、在右侧找到,最新的mysql错误信息。双击查看。…

移动端性能专项测试之内存 - 进阶篇

在 Android 系统中内存作为重要的资源,一直是开发及测试关注的重点,内存不足或者内存资源滥用都会导致严重的问题。本篇文章将会从底层出发给大家介绍 OOM(Out Of Memory)和 LMK(Low Memory Killer)等内存相…

python趣味编程-使用 Tkinter 进行 RPS 游戏

使用 Tkinter 的 RPS 游戏是用Python编程语言编码的应用程序。该项目使用 tkinter 库来显示游戏应用程序的 GUI。游戏机制包括选择一个符号来击败对手。在 Python 中使用 Tkinter 的 RPS 游戏是一种基于随机机会的游戏,您通过简单的运气获胜。这个使用 Tkinter 的 RPS 游戏可以…

基于SSM的化妆品购物商城/美妆销售系统

基于基于SSMVue的化妆品购物商城/美妆销售系统~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 商品详情 购物车 个人中心 登录界面 管理员界面 摘要 基于SSM的化…