YOLOv3论文解读/总结

news2024/11/15 23:38:10

本章论文:

YOLOv3论文(YOLOv3: An Incremental Improvement)(原文+解读/总结+翻译)

系列论文:

YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客

YOLOv2论文解读/总结_耿鬼喝椰汁的博客-CSDN博客


目录

前言

YOLOv3:

YOLOv3保留的东西:

YOLOv3的改进:

v3最主要的改进之处为以下三点:

一、网络的改进

二、多尺度预测

 三、单标签分类改进为多标签分类

一些失败的尝试


前言

     目标检测长期发展以来two-stage算法(RCNN系列)占据地位,直至YOLO和SSD等one-stage算法的出现。         

       从R-CNN到Faster R-CNN一直采用的思路是proposal+分类 (proposal 提供位置信息, 分类提供类别信息)精度已经很高,但由于two-stage(proposal耗费时间过多)处理速度不行达不到real-time效果。

 YOLOv1和YOLOv2给目标检测带来了曙光,但也存在很多问题:
(1)定位不准确
(2)和基于region proposal的方法相比召回率较低

        不论是YOLOv1,还是YOLOv2,都有一个共同的致命缺陷:只使用了最后一个经过32倍降采样的特征图(简称C5特征图)。尽管YOLOv2使用了passthrough技术将16倍降采样的特征图(即C4特征图)融合到了C5特征图中,但最终的检测仍是在C5尺度的特征图上进行的,最终结果便是导致了模型的小目标的检测性能较差。

       为了解决这一问题,YOLO作者做了第三次改进,不仅仅是使用了更好的主干网络:DarkNet-53,更重要的是使用了FPN技术与多级检测方法,相较于YOLO的前两代,YOLOv3的小目标的检测能力提升显著。

那么,在本文章,就让我们一起来领略一下YOLOv3的强大风采吧。


YOLOv3:

       YOLOv3正如作者所说,这仅仅是他们近一年的一个工作报告(TECH REPORT),不算是一个完整的paper,因为他们实际上是把其它论文的一些工作在YOLO上尝试了一下。

      YOLOv3除了网络结构,其余变动不多,大部分思想延续前两代YOLO的思想:YOLOv3在YOLOv2的基础上改良了网络的主干,利用多尺度特征图进行检测,改进了多个独立的Logistic regression分类器来取代softmax来预测类别分类。

YOLOv3保留的东西:

YOLOv3保留v1和v2中的特性如下:

  • 从YOLOv1开始,yolo算法就是通过划分单元格grid cell来做检测,只是划分的数量不一样。
  • 采用"leaky ReLU"作为激活函数。
  • 端到端进行训练,统一为回归问题。一个loss function搞定训练,只需关注输入端和输出端。
  • 从yolo_v2开始,yolo就用batch normalization作为正则化、加速收敛和避免过拟合的方法,把BN层和leaky relu层接到每一层卷积层之后
  • 多尺度训练。想速度快点,可以牺牲准确率;想准确率高点,可以牺牲一点速度。
  • 沿用了v2中边框预测的方法

YOLOv3的改进:

       yolo每一代的提升很大一部分决定于backbone网络的提升,从v2的darknet-19到v3的darknet-53。yolo_v3还提供为了速度而生的轻量级主干网络backbone——tiny darknet。速度改进如下:

v3最主要的改进之处为以下三点:

  • 1. 更好的backbone(骨干网络)(从v2的darknet-19到v3的darknet-53,类似于ResNet引入残差结构)
  • 2. 多尺度预测(引入FPN)
  • 3. 考虑到检测物体的重叠情况,用多标签的方式替代了之前softmax单标签方式,分类器不再使用softmax(darknet-19中使用),损失函数中采用binary cross-entropy loss(二分类交叉损失熵)

一、网络的改进

      YOLOv3的第一处改进便是换上了更好的backbone网络(骨干网络提取出图像中好的特征来实现我们所需的目标):DarkNet53。相较于YOLOv2中所使用的DarkNet19,新的网络使用了更多的卷积——53层卷积,同时,添加了残差网络中的残差连结结构,以提升网络的性能。

       这个网络主要是由一系列的1x1和3x3的卷积层组成(每个卷积层后都会跟一个BN层和一个LeakyReLU)层,作者说因为网络中有53个convolutional layers,所以叫做Darknet-53(2 + 1x2 + 1 + 2x2 + 1 + 8x2 + 1 + 8x2 + 1 + 4x2 + 1 = 53 按照顺序数,最后的Connected是全连接层也算卷积层,一共53个)。

注意,DarkNet53网络中的降采样操作没有使用Maxpooling层,而是由stride=2的卷积来实现。卷积层仍旧是线性卷积、BN层以及LeakyReLU激活函数的串联组合。

YOLOv2中对于向前传播中张量尺寸变换,都是通过最大池化来进行,一共有5次。而v3是通过卷积核增大步长来进行,也是5次。(darknet-53最后面有一个全局平均池化,在yolo-v3里面没有这一层,所以张量维度变化只考虑前面那5次) 

v3和v2一样,backbone都会将输出特征图缩小到输入的1/32。所以,通常都要求输入图片是32的倍数。可以对比v2和v3的backbone看看:(DarkNet-19 与 DarkNet-53)从下图可以看出,darknet-19是不存在残差结构(resblock,从resnet上借鉴过来)的,和VGG是同类型的backbone(属于上一代CNN结构)

二、多尺度预测

YOLOv3借鉴了FPN的方法,采用多尺度的特征图对不同大小的物体进行检测,以提升小物体的预测能力。

YOLOv3的第二个改进是多尺度训练,是真正的多尺度,一共有3种尺度,分别是13*13,26*26,52*52三种分辨率,分别负责预测大,中,小的物体边框,这种改进对小物体检测更加友好。 

YOLOv3通过下采样32倍、16倍和8倍得到3个不同尺度的特征图。例如输入416X416的图像,则会得到13X13 (416/32),26X26(416/16) 以及52X52(416/8)这3个尺度的特征图。

每种尺度预测3个box, anchor的设计方式仍然使用聚类,得到9个聚类中心,将其按照大小均分给3个尺度.

  • 尺度1: 在基础网络之后添加一些卷积层再输出box信息.
  • 尺度2: 从尺度1中的倒数第二层的卷积层上采样(x2)再与最后一个16x16大小的特征图相加,再次通过多个卷积后输出box信息.相比尺度1变大两倍.
  • 尺度3: 与尺度2类似,使用了32x32大小的特征图.

 作者在论文中提到利用三个特征层进行边框的预测,将这部分更加详细的分析展示在下图中。(图源:CSDN太阳花的小绿豆)
 

 三、单标签分类改进为多标签分类

      不管是在检测任务的标注数据集,还是在日常场景中,物体之间的相互覆盖都是不能避免的。因此一个锚点的感受野肯定会有包含两个甚至更多个不同物体的可能,在之前的方法中是选择和锚点IoU最大的Ground Truth作为匹配类别,用softmax作为激活函数。

YOLOv3多标签模型的提出,对于解决覆盖率高的图像的检测问题效果是十分显著的,YOLOv3的效果好很多,不仅检测的更精确,最重要的是被覆盖很多的物体也能很好的在YOLOv3中检测出来。

  1、YOLOv3 使用的是logistic 分类器,而不是之前使用的softmax。

  2、在YOLOv3 的训练中,便使用了Binary Cross Entropy ( BCE, 二元交叉熵) 来进行类别预测。

原因:

(1)softmax只适用于单目标多分类(甚至类别是互斥的假设),但目标检测任务中可能一个物体有多个标签。(属于多个类并且类别之间有相互关系),比如Person和Women。

(2)logistic激活函数来完成,这样就能预测每一个类别是or不是。

一些失败的尝试

作者在最后还提到了他们做了哪些尝试,但是发现并没有起到太大的作用:

  1. Anchor box坐标的偏移预测:尝试捕捉位移 (x,y) 和检测框边长 (w,ℎ) 的线性关系,这时方式得到的效果并不好且模型不稳定;
  2. 使用线性激活函数代替sigmoid激活函数预测位移 (x,y) ,该方法导致模型的mAP下降;
  3. 使用focal loss:作者还尝试使用focal loss,但它使mAP降低了2点。


这篇论文的学习和总结到这里就结束啦,如果有什么问题可以在评论区留言呀~

如果帮助到大家,可以一键三连支持下~


参考文章:

(3条消息) YOLO v3网络结构分析_yolov3网络结构_太阳花的小绿豆的博客-CSDN博客

(3条消息) yolo系列之yolo v3【深度解析】_yolov3_木盏的博客-CSDN博客

YOLO算法最全综述:从YOLOv1到YOLOv5 - 知乎 (zhihu.com)

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

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

相关文章

try(){}用法try-with-resources、try-catch-finally

属于Java7的新特性。 经常会用try-catch来捕获有可能抛出异常的代码。如果其中还涉及到资源的使用的话,最后在finally块中显示的释放掉有可能被占用的资源。 但是如果资源类已经实现了AutoCloseable这个接口的话,可以在try()括号中可以写操作资源的语句(…

cocos 项目实践总结

文章目录 组件文档的理解:开发过程顺序问题:1、获取锚点坐标2、事件监听3、批量生成选词按钮4、Button可以自定义边界、边界颜色、及弧度一些问题记录1、button点击过后重新恢复页面渲染,button的状态偶发还是点击态而非正常态2、偶发事件绑定…

【自动驾驶基础入门】SLAM应该怎么学习?

1、SLAM是什么? SLAM是Simultaneous Localization and Mapping的缩写,即同时定位与地图构建。也称为自主机器人导航或者无人车等领域的基本任务之一。 简单来说,SLAM是指在未知环境中,通过移动机器人并利用其搭载的各种传感器数据…

Yolov5训练日记~如何用Yolov5训练识别自己想要的模型~

目录 一.数据集准备 二.标签设置 三.模型训练 四.模型测试 最近尝试了Yolov5训练识别人体,用的是自己尝试做的训练集。见识到Yolo的强大后,决定分享给大家。 一.数据集准备 数据集是从百度图片上下载的,我当然不可能一个一个下载&#xff…

还没用过这12款建筑设计软件?你OUT了

每个建筑设计软件都针对不同的需求。选择最好的一个取决于许多因素,例如成本、与其他程序的兼容性以及您愿意花在绘图过程上的时间。它还取决于您在设计过程中所处的位置——我们可能都开始在纸上画草图,然后转向建筑软件。我们甚至需要图形设计软件来说…

Haoop集群的搭建(小白教学)

搭建hadoop集群我们必须拥有自己的虚拟机,下列我会给大家奉上超详细的集群搭建以及我在搭建的时候碰到的问题以及对应解决办法,正所谓自己走过的错路是曲折的,也是防止大家做弯路,不仅浪费时间还心态爆炸,下面带走入ha…

蜘蛛池搭建需要多少域名?全面解析!

蜘蛛池是指为搜索引擎爬虫提供优质、可靠的页面,从而提高网站的收录和排名。在蜘蛛池搭建过程中,域名数量是一个非常重要的问题。那么,蜘蛛池搭建需要多少域名呢?本文将对这个问题进行全面解析。 首先,我们需要了解什么…

SQL教程

1、基础 演示数据库,下面是选自 “Websites” 表的数据: SELECT 语句用于从数据库中选取数据。 SELECT name,country FROM Websites;SELECT DISTINCT 语句用于返回唯一不同的值。 SELECT DISTINCT country FROM Websites;WHERE 子句用于提取那些满足…

二十三种设计模式第五篇--原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建…

Linux网络——Shell编程之循环

Linux网络——Shell编程之循环 一、循环1.循环与遍历2.循环的优势 二、for 循环语句1.for 语句的结构2.for语句应用示例 三、while 循环语句1.while 语句的结构2.while语句应用示例 四、until 循环五、跳出循环1.break2.continue3.exit 六、死循环 一、循环 定义:循…

2023年适合营销公司使用的十大「社交媒体管理」工具

在遍地都是数字营销公司的时代,对品牌来说,拥有强大的社交媒体影响力以保持竞争力从未如此重要。 而对于管理一个或多个品牌的数字营销公司来说,从内容创作到执行报告,使用正确的工具可以帮助你做到这一点。从规划、管理和跟踪社…

idb使用教程(一)

概述 iOS开发桥(idb)是一个多功能的工具,用于自动化iOS模拟器和设备。它在一个一致的、对人友好的界面中暴露了很多分布在苹果工具中的功能。 安装 idb由两个部分组成,每个部分都需要单独安装。 idb伴侣 每个目标&#xff08…

《花雕学AI》ChatMind:与AI对话,轻松梳理思路并创建思维导图

引言: 思维导图是一种有效的思维工具,可以帮助用户整理和表达自己的思路,提高学习和工作的效率和质量。然而,传统的思维导图工具往往需要用户花费大量的时间和精力,学习和操作复杂的界面和功能,而且很难根据…

医院智能导诊系统,医院导航解决方案

随着现代医院规模不断扩大,功能区域越来越细化,面对复杂的楼宇结构,集中的就诊人流,患者在就诊中经常会面临找不到目的地的困境,就诊体验变差。针对这个问题,一些面积和规模都比较大的医院,已经…

html实现经典打方块小游戏

文章目录 1.设计来源1.1 主界面1.2 游戏界面1.3 游戏结束界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/130581985 html实现经典打方块小游戏源码 html实现经典打方块…

自主可控不走捷径,中国长城做难且正确的事

2020-2022年是中国信创产业的重要推广期,在国家战略的支持下,自主可控领域诸多相关企业均获得绝佳发展良机。 但信创产业“完成替代”不是终点,“实现领先”方是目标。如今势已启、路尚远,前景广阔的市场并不意味着自主可控相关企…

运营商三要素验证原理,这篇文章就够了!

引言 运营商三要素验证 API 是一种基于手机号码、身份证号码和姓名等三种信息的验证服务,主要用于验证用户身份信息的真实性和一致性,以及查询手机号码所属的运营商信息。 运营商三要素 API 的验证原理 1. 身份验证的原理 身份信息验证是运营商三要素…

入门级的家用洗地机怎么样?入门级洗地机推荐

洗地机的功能有很多,比如除菌、洗地机清洁地面的确是一把好手。但是!清洁完之后还要手动清洗洗地机,是一件麻烦事啊!现在市面上大部分洗地机都有自清洁这个功能,但是很多洗地机的自清洁并不算真正的自清洁,…

从月薪3000到月薪20000,自动化测试应该这样学...

绝大多数测试工程师都是从功能测试做起的,工作忙忙碌碌,每天在各种业务需求学习和点点中度过,过了好多年发现自己还只是一个功能测试工程师。 随着移动互联网的发展,从业人员能力的整体进步,软件测试需要具备的能力要…

倒转时空,颠覆传统:探究逆置链表的三种思路

本篇博客会讲解力扣“206. 反转链表”的解题思路,这是题目链接。 老规矩,先来审题: 示例如下: 提示和进阶: 本题的思路非常多,我讲解一下常见的思路。 思路1 最容易想到的方法,是直接使…