欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【Yolo精读+实践+魔改系列】Yolov3论文超详细精讲(翻译+笔记)

【Yolo精读+实践+魔改系列】Yolov3论文超详细精讲(翻译+笔记)

2025/5/9 6:39:58 来源:https://blog.csdn.net/weixin_43576022/article/details/147804920  浏览:    关键词:【Yolo精读+实践+魔改系列】Yolov3论文超详细精讲(翻译+笔记)

前言

前面咱们已经把 YOLOv1 和 YOLOv2 的老底都给掀了,今天轮到 YOLOv3 登场,这可是 Joseph Redmon 的“封神之作”。讲真,这哥们本来是搞学术的,结果研究的模型被某些军方拿去“整点活”——不是做人是做武器的那种活。于是他一怒之下,宣布退圈,跑路了,2020年告别 CV 界,江湖再无 Redmon,但江湖却一直流传着他留下的神器——YOLOv3。

YOLOv3 是 YOLO 家族里奠基性的“骨架搭建者后面那些五花八门的 YOLO(v4、v5、v6……都快出到v∞了)基本都站在它的肩膀上跳舞。那咱们就来看看,它到底在 YOLOv2 的基础上都升级了啥吧!

改进点一:多尺度预测,大小通吃

YOLOv2 一直用一个尺寸的特征图来做目标预测,这就像拿个放大镜找蚂蚁,有点搞笑。而 YOLOv3 摆烂不干了,它直接上了三个不同尺寸的特征图: 13×13、26×26、52×52,分别打击大中小目标。

这就好比带了望远镜、眼镜和放大镜,不管你是小蚊子还是大恐龙,全都别想跑。这个设计也奠定了后面 YOLO 系列的多尺度检测思路,简直是“祖传三件套”。

改进点二:主干换代,肌肉更猛

YOLOv2 用的是 Darknet-19,听起来像个没进化完的宝可梦。而 YOLOv3 直接换装了 Darknet-53,一口气加到了53层,还加了残差连接,ResNet 那一套全学了个遍。

这就像从“老年机”一口气升级到了“满配游戏本”,计算力直接起飞,特征提取能力翻倍,让 YOLO 的眼神变得更加犀利。

改进点三:不搞 softmax,搞起独立判断

YOLOv2 在分类的时候是“你只能选一个类”,就像问你喜欢苹果还是香蕉,非得选一个。但 YOLOv3 说——“为啥不能又喜欢苹果又喜欢香蕉?”

于是它放弃了 softmax,采用 logistic 回归+独立二分类的方式。每个类别都单独判断,谁爱谁就打个1,不爱就打0。这样不仅更灵活,还能处理那种“目标多重身份”的场景,堪称分类界的“社交达人”。

视频讲解:B站 智算学术 (会有一天的延迟)

项目主页:YOLO: Real-Time Object Detection

论文链接:Joseph Redmon - Survival Strategies for the Robot Rebellion

代码链接:GitHub - ultralytics/yolov3: YOLOv3 in PyTorch > ONNX > CoreML > TFLite

500篇经典深度学习论文+视频讲解+论文写作工具+模块缝合 请关注公众号:智算学术 领取

前情回顾

【Yolo精读+实践+魔改系列】Yolov1论文超详细精讲(翻译+笔记)

【Yolo精读+实践+魔改系列】Yolov2论文超详细精讲(翻译+笔记

目录

 

前言

改进点一:多尺度预测,大小通吃

改进点二:主干换代,肌肉更猛

改进点三:不搞 softmax,搞起独立判断

前情回顾

Abstract—摘要

一、Introduction—引言

二、The Deal—改进的细节

2.1 Bounding Box Prediction—边界框预测

🚀 YOLOv3 vs YOLOv2 的核心区别

🔍 具体解释一些重要差异

👀 YOLOv3 中置信度的具体计算逻辑:

1. 正样本(positive sample)

2. 负样本(negative sample)

3. 被忽略的样本

🧠 一句话总结:

2.2 Class Prediction—类预测(单标签分类改进为多标签分类)

2.3 Predictions Across Scales—跨尺度预测

2.4 Feature Extractor—特征提取

2.5 Training—训练

三、How We Do—我们怎样做

四、Things We Tried That Didn’t Work—那些我们尝试了但没有奏效的方法

五、 What This All Means—这一切意味着什么?

Abstract—摘要

翻译

我们对 YOLO 进行了一些更新!我们在设计上做了一些小改动,使它变得更好。我们还训练了一个新的网络,它非常强大。它比上次的大了一点,但更准确了。不过速度还是很快,不用担心。在 320 × 320 的分辨率下,YOLOv3 在 28.2 mAP 下的运行时间为 22 毫秒,与 SSD 一样精确,但速度快了三倍。当我们使用旧的 .5 IOU mAP 检测指标时,YOLOv3 的表现相当不错。在 Titan X 上,它在 51 毫秒内实现了 57.9 AP50,而 RetinaNet 在 198 毫秒内实现了 57.5 AP50,性能相似,但速度快了 3.8 倍。一如既往,所有代码均可在 Joseph Redmon - Survival Strategies for the Robot Rebellion 在线查阅。

精读

大佬就是大佬,摘要写的这么敷衍!

总结: YOLOv3 进行了设计优化和网络更新,提升了准确率,虽然模型略大,但速度依然很快。在多项指标上优于同类模型,尤其在速度上表现突出。

具体列举:

  1. 设计优化:对 YOLO 架构进行了小改动以提升性能。

  2. 新网络训练:新的模型更大但更准确,速度仍然很快。

  3. 性能指标(320×320 分辨率)

    • YOLOv3:28.2 mAP,运行时间为 22 毫秒。

    • 与 SSD 相比:精度相当,但速度快了 3 倍。

  4. 旧版 AP50 指标下(IOU = 0.5):

    • YOLOv3:57.9 AP50,耗时 51 毫秒(Titan X)。

    • RetinaNet:57.5 AP50,耗时 198 毫秒。

    • YOLOv3 比 RetinaNet 快 3.8 倍。

这张图主要突出的是速度,横轴是速度,纵轴是mAP,当纵轴相同时,YOLOv3的速度大大提升

一、Introduction—引言

翻译

有时候,你会在一年里碌碌无为,你知道吗?今年我没做什么研究。在 Twitter 上花了很多时间。玩了一会儿 GANs。去年12我还有点余力;我设法对《YOLO》做了一些改进。不过,说实话,也没什么特别有意思的,只是做了一些让它变得更好的小改动。我还为其他人的研究提供了一些帮助。事实上,这就是我们今天在这里的原因。我们的截稿日期是 [4],我们需要引用我对《YOLO》进行的一些随机更新,但我们没有资料来源。所以,准备好看技术报告吧!技术报告的好处是不需要前言,你们都知道我们为什么在这里。因此,本引言的结尾将为本文的其余部分指明方向。首先,我们会告诉大家 YOLOv3 是怎么回事。然后,我们将告诉大家我们是如何做的。我们还会告诉你我们尝试过的一些行不通的方法。最后,我们将思考这一切意味着什么。

精读

你以为顶会论文的引言会从“深度神经网络的飞速发展”开始?不,YOLOv3 的作者一上来就说: “今年我啥也没干,研究没搞,Twitter 刷到脱发,GAN 玩得像小游戏。”

然后一句话轻描淡写地甩出来:“去年对 YOLO 做了点小更新。” ——这就像是有人跟你说:“我也没啥特长,除了随手把目标检测领域拉高一个量级。”

接下来是名场面:

“我们要引用一下我对 YOLO 的随机更新,但没有资料来源。”

哦豁?学术圈的“你引用我了吗”直接变成“我引用我自己,但懒得写篇正式论文”,于是随手整了一份技术报告,顺便告诉全世界:“技术报告的好处是不需要前言。” 翻译一下就是:“别问,问就是老子写的,我说了算。”

最后一句更是点题收尾:

“首先,我们告诉你 YOLOv3 是怎么回事,然后告诉你我们是怎么做的,接着告诉你哪些方法不行,最后我们来思考这一切意味着啥。”

通俗版总结就是: “先秀肌肉,再讲配方,顺便踩几个坑,最后升华人生。”

二、The Deal—改进的细节

2.1 Bounding Box Prediction—边界框预测

翻译

继 YOLO9000 之后,我们的系统使用维度集群作为锚点来预测边界框[15]。网络会为每个边界框预测 4 个坐标:tx、ty、tw、th。如果单元从图像左上角偏移 (cx,cy),且边界框的先验值为宽和高 pw,ph,则预测结果对应于: bx = σ(tx) + cx

by = σ(ty) + cy

bw = pwetw

bh = pheth 在训练过程中,我们使用平方误差损失总和。如果某个坐标预测的地面实况是 tˆ,我们的梯度就是地面实况值(由地面实况框计算得出)减去我们的预测值:tˆ - t*。通过反演上述公式,可以轻松计算出地面实况值。YOLOv3 使用逻辑回归法为每个边界框预测对象度得分。如果边界框先验值与地面实况对象的重叠程度大于任何其他边界框先验值,则分数应为 1。如果边界框先验值不是最好的,但与地面实况对象的重叠程度超过了某个阈值,我们就会忽略该预测值,具体做法与文献[17]相同。我们使用的阈值是 0.5。与 [17] 不同的是,我们的系统只为每个地面实况对象分配一个边界框先验。如果没有为地面实况对象分配边界框先验,则不会造成坐标或类别预测的损失,只会造成对象性的损失。

精读

图2 的本质:把预测框的中心点框死在grid cell里面(回看yolov2里面的精读)

🚀 YOLOv3 vs YOLOv2 的核心区别
模块YOLOv2YOLOv3
Anchor Boxes 来源使用 k-means 聚类生成 anchors同样使用 k-means 维度聚类生成 anchors
坐标预测方式和 YOLOv3 一样,预测的是 tx、ty、tw、th,并通过公式解码为真实框✅ 沿用了 YOLOv2 的预测方式,但细节处理更严谨
Objectness Score(目标置信度)预测方式用逻辑回归(sigmoid)预测是否有物体✅ 相同方式,但引入了更严格的正负样本分配规则
正样本分配方式一个 ground truth 可以分配给多个 anchors✅ YOLOv3 改为每个 ground truth 只分配一个 anchor,更干净利落(防止“一个物体多个预测框抢着报到”的尴尬)
负样本处理设定 IOU 阈值,低于就视为负样本✅ 相似处理,但明确了“非最佳但 IOU>0.5 的 anchor 忽略不训练”这类中间态样本
损失函数使用 squared error(平方误差)来训练坐标✅ 没变,仍然是平方误差,但训练框选择更细致、更稳定

正样本:标注框与预测框IOU最大的即为正例

负样本:除了正例外,与全部标注框的IOU都小于0.5,则为负样本

忽略样本:除正例外,与任意一个标注框的IOU大于阈值0.5,则为忽略样本,不参与任何训练和计算!

🔍 具体解释一些重要差异
  1. 正样本分配规则变化

    • YOLOv2:一个 GT(ground truth)对象可以匹配多个 anchor(只要 IOU 高)。

    • YOLOv3:一个 GT 只会被分配给最匹配的一个 anchor,其余即便 IOU 也高,最多“忽略”,不会训练。

    ➤ 这样做的好处是减少重复预测、加快收敛。

  2. 忽略机制(ignore prediction)

    • YOLOv3 引入“灰色地带”:如果某个 anchor 虽然不是最好的(不是最大 IOU 的),但 IOU 超过 0.5,就既不是正样本也不是负样本,不训练、不更新权重

    • YOLOv2 没有明确处理这类中间样本,可能会干扰训练。

  3. 损失的处理更清晰

    • YOLOv3 更明确地指出:如果一个 anchor 没有被分配给任何 GT,则不需要计算坐标和类别损失,只计算 objectness 这一项的损失。

举例

假设某个特征图位置有 N 个 anchor(比如常见的 3 个),而一张图上有 M 个标注框(GT box):

  1. 遍历每个 anchor,计算它与图中每一个 ground truth box 的 IOU。

  2. 找到 IOU 最大的那个 GT,看它是不是当前 anchor 的最佳匹配。

  3. 判断是否满足以下几种情况:

    • 如果这个 anchor 是某个 GT 的“最佳匹配 anchor”(IOU 最大),那它被标为正样本,用于训练这个 GT 的类别、坐标、objectness。

    • 如果不是最佳,但和某个 GT 的 IOU > 阈值(通常 0.5),则忽略掉这个 anchor,不作为正负样本,不计算 loss(防止干扰)。

    • 如果 IOU 全部都很小(比如 < 0.5),说明它没有匹配到任何目标,就被标为负样本,训练它的 objectness 为 0。

每个 anchor 对应一个边界框预测,而每个边界框都会预测一个“置信度分数(objectness score)”,这个值衡量该框中是否包含某个物体。

👀 YOLOv3 中置信度的具体计算逻辑:

1. 正样本(positive sample)

如果某个 anchor 匹配到了 ground truth(是最佳匹配):

  • objectness score = 1 → 网络训练时希望该 anchor 的 objectness 接近 1,因为它确实对准了一个真实物体。


2. 负样本(negative sample)

如果某个 anchor 与所有 GT 的 IOU 都小(比如都小于 0.5):

  • objectness score = 0 → 说明这个框不包含任何物体,网络要学会预测为没有目标。


3. 被忽略的样本

如果 anchor 和某个 GT 的 IOU > 0.5,但不是“最佳匹配 anchor”:

  • 不计算 objectness loss,即不训练这个 anchor 的置信度值 → 这样可以避免让“还算合理但不是最好的匹配”对训练造成误导。


🧠 一句话总结:

YOLOv3 沿用了 YOLOv2 的 anchor 机制和回归方式,但是一个标注框只有一个anchor,并且负样本也要参与损失函数的计算

注意:这里的正负样本和忽略样本是针对特定的标注框而言的。

2.2 Class Prediction—类预测(单标签分类改进为多标签分类)

翻译

每个边框使用多标签分类法预测边框可能包含的类别。我们没有使用软最大值,因为我们发现软最大值并不能带来良好的性能,相反,我们只使用了独立的逻辑分类器。在训练过程中,我们使用二元交叉熵损失来预测类别。当我们进入更复杂的领域(如开放图像数据集 [7])时,这种方法会有所帮助。在这个数据集中,有许多重叠的标签(如 “女人 ”和 “人”)。使用 softmax 方法需要假设每个方框只有一个类别,而实际情况往往并非如此。多标签方法能更好地模拟数据。

精读

改进点:

每个边框由只能预测一个类别,改为能够预测多个类别(一个边框对应一个objectness,一个objectness对应多个类别)

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

多标签分类问题:可以独立地预测每个标签的概率。

多类分类问题(互斥类别):通常使用 Softmax,因为它可以处理类别之间的排斥关系,并且概率和为 1。

2.3 Predictions Across Scales—跨尺度预测

翻译

YOLOv3 可预测 3 种不同尺度的方框。我们的系统使用与特征金字塔网络[8]类似的概念从这些尺度上提取特征。我们从基础特征提取器中添加了几个卷积层。最后一个卷积层预测一个 3-D 张量,编码边界框、对象性和类别预测。在 COCO [10] 的实验中,我们在每个尺度上预测 3 个边框,因此张量为 N × N × [3 ∗ (4 + 1 + 80)],包含 4 个边框偏移、1 个对象性预测和 80 个类别预测。我们还从网络的较早层获取一个特征图,并使用连接法将其与上采样特征图合并。通过这种方法,我们可以从上采样特征中获得更有意义的语义信息,并从早期特征图中获得更精细的信息。然后,我们再添加几个卷积层来处理这个合并的特征图,最终预测出一个类似的张量,尽管现在的张量是原来的两倍。我们再进行一次同样的设计,以预测最终尺度的方框。因此,我们对第三个尺度的预测得益于所有先前的计算以及网络早期的精细特征。我们仍然使用 K 均值聚类来确定边界框先验。我们只是任意选择了 9 个聚类和 3 个尺度,然后在各个尺度之间平均分配聚类。COCO 数据集的 9 个聚类分别是 (10 × 13), (16 × 30), (33 × 23), (30 × 61), (62 × 45), (59 × 119), (116 × 90), (156 × 198), (373 × 326).

精读

  1. 支持三种不同尺度的边框预测借鉴 FPN(特征金字塔网络)思想,从多个尺度提取信息,当输入图像尺寸为416x416大小时,经过DarkNet-53的主干网络后,生成三个不同的特征图分别为 13x13x(80+5)x3,26x26x(80+5)x3,52x52x(80+5)x3

  2. 为啥要用三个不同的特征图来目标检测呢? 因为在yolov1和yolov2中,都存在对于图片中的小物体不能够准确的进行检测,当使用三个不同的特诊图来进行检测后,分别可以检测,大 中 小的三类物体,13x13x255 的特征图因为感受野比较大,可以检测大的物体,26x26x255可以检测中等物体,52x52x255 可以检测小物体

  3. YOLOv3每个尺度的特征图上使用3个anchor box。

每个尺度上预测 3 个 anchor box。每个 anchor 对应 4 个边框回归量 + 1 个对象性得分 + 80 个类别

输出张量维度为:N×N×[3×(4+1+80)]=N×N×255 举例:对于 52×52 尺度,张量为 52 × 52 × 255。

分配尺度Anchor 编号Anchor 尺寸 (px)特征图大小 (COCO 输入 416×416)感受野大小 (估算)
小目标Anchor 110 × 1352 × 52≈ 30–60 px
小目标Anchor 216 × 3052 × 52≈ 30–60 px
小目标Anchor 333 × 2352 × 52≈ 30–60 px
中目标Anchor 430 × 6126 × 26≈ 60–120 px
中目标Anchor 562 × 4526 × 26≈ 60–120 px
中目标Anchor 659 × 11926 × 26≈ 60–120 px
大目标Anchor 7116 × 9013 × 13≈ 120–320 px
大目标Anchor 8156 × 19813 × 13≈ 120–320 px
大目标Anchor 9373 × 32613 × 13≈ 120–320 px
  1. yoloV3网络的整体架构

YOLOv3 一共会输出三个不同尺度的特征图,分别对应于输入图像下采样了 32 倍、16 倍和 8 倍 的结果。这些特征图都来自主干网络 Darknet-53 的输出,不过后面又加上了 YOLO 专属的“YOLO block”来进一步处理。

具体流程是这样的:

  1. 第一张特征图:输入图像经过 Darknet-53 的全卷积结构后,先通过一系列 1×1 和 3×3 的卷积操作,生成第一张特征图,用于检测大目标(下采样 32 倍)。

  2. 第二张特征图:在前一张特征图的基础上,先用 1×1 卷积进行通道调整,再通过上采样(比如用最近邻插值)恢复一部分空间分辨率。然后,它会与 Darknet-53 中间层提取出的特征图进行特征拼接(concatenation),结合高层语义和底层细节,接着继续卷积处理生成第二张特征图(下采样 16 倍),适合检测中等目标。

  3. 第三张特征图:再次重复类似操作,对第二张特征图进行上采样,再拼接更浅层的特征图,最终生成下采样 8 倍的第三张特征图,用于检测小目标。

2.4 Feature Extractor—特征提取

翻译

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

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

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

精读

Darknet-53 是在 Darknet-19 的基础上通过加入 ResNet 残差连接进行改进的模型。改进内容如下:

  1. 去除最大池化层:Darknet-53 不再使用最大池化层,而是采用了步长为 2 的卷积层进行下采样,从而减少了计算量并提高了网络的效率。

  2. 防止过拟合:每个卷积层后都加上了 Batch Normalization(BN)层和 Leaky ReLU 激活函数,这样能够加速训练并减少过拟合。

  3. 引入残差连接:通过使用残差网络结构,Darknet-53 在更深的网络层中仍能有效地提取特征,同时避免了梯度消失或爆炸的问题。

  4. 多尺度特征融合:通过将网络的中间层与某些后期层的上采样结果进行张量拼接,Darknet-53 达到了多尺度特征融合,提高了模型对不同尺度的感知能力。

Darknet-53 在性能上与当前最先进的分类器相媲美,但它在浮点运算上更少,速度更快。此外,Darknet-53 的高效设计使得它在使用 GPU 计算时能够实现更高的运算效率,表现出更快的推理速度。

2.5 Training—训练

翻译

我们仍然在完整图像上进行训练,没有硬性负挖掘或其他任何东西。我们使用多尺度训练、大量数据增强、批量归一化等所有标准方法。我们使用 Darknet 神经网络框架进行训练和测试 [14]。

精读

训练方式:在完整图像上进行训练,未使用硬性负样本挖掘或其他特殊方法。

标准方法:采用了多尺度训练、大量数据增强、批量归一化等标准的训练方法。

使用的框架:使用了 Darknet 神经网络框架进行训练和测试。

三、How We Do—我们怎样做

翻译

YOLOv3 相当不错!见表 3。在 COCOs 怪异的平均 AP 指标方面,它与 SSD 变体相当,但速度快了 3 倍。不过,在这一指标上,它与 RetinaNet 等其他机型仍有相当大的差距。然而,当我们使用 IOU= .5 时的 mAP(或图表中的 AP50)这一 “老 ”检测指标时,YOLOv3 就显得非常强大。它几乎与 RetinaNet 不相上下,远远超过 SSD 变体。这表明 YOLOv3 是一个非常强大的检测器,擅长为物体生成像样的方框。然而,随着 IOU 临界值的增加,性能会明显下降,这表明 YOLOv3 难以使方框与物体完美对齐。过去,YOLO 在处理小物体时非常吃力。但是,现在我们看到这一趋势发生了逆转。通过新的多尺度预测,我们发现 YOLOv3 的 APS 性能相对较高。但是,它在中型和大型天体上的性能相对较差。我们需要进行更多的调查来找出原因。当我们在 AP50 指标上绘制精确度与速度的对比图时(见图 5),我们发现 YOLOv3 与其他检测系统相比具有显著优势。也就是说,它更快更好。

精读

YOLOv3与其他模型比较

  • COCO 数据集上,YOLOv3 在 mAP(平均精度)方面表现良好,和 SSD 变体相当,但速度是 SSD 的 3 倍

  • 然而,与 RetinaNet 等其他模型相比,YOLOv3 在 mAP 上仍有差距。

AP50(IoU=0.5)性能

  • AP50(IoU=0.5)这一老的检测指标上,YOLOv3 显示出强大的性能,几乎与 RetinaNet 不相上下,明显超过 SSD 变体。

  • 这表明 YOLOv3 擅长为物体生成准确的边界框。

随着IoU增大,性能下降

  • IoU 阈值提高时,YOLOv3 的性能显著下降,表明它在精确对齐边界框和物体方面存在困难。

小物体的检测改进

  • YOLOv3 过去在处理小物体时效果较差,但通过 多尺度预测 技术,YOLOv3 的 APS(小物体检测性能) 得到了显著提高。

中型和大型物体的检测问题

  • 尽管小物体的检测性能有了改进,但 YOLOv3 在 中型和大型物体 的检测性能相对较差,需要进一步研究原因。

速度与精度的对比

  • AP50 指标上进行精度与速度的对比时,YOLOv3 展现了 显著的优势,即在保持高精度的同时,速度也非常快。

四、Things We Tried That Didn’t Work—那些我们尝试了但没有奏效的方法

翻译

在开发 YOLOv3 的过程中,我们尝试了很多方法。很多都没有成功。以下是我们能记住的东西。 锚点框 x、y 偏移预测。我们尝试过使用普通的锚点框预测机制,即使用线性激活法将 x、y 偏移量预测为框宽或框高的倍数。我们发现这种方法会降低模型的稳定性,而且效果不佳。 线性 x、y 预测代替逻辑预测。我们尝试使用线性激活来直接预测 x、y 偏移量,而不是使用逻辑激活。这导致 mAP 下降了几个百分点。病灶损失。我们尝试使用焦点损失。它使我们的 mAP 下降了约 2 个点。YOLOv3 可能已经能够很好地解决焦点损失试图解决的问题,因为它具有独立的对象性预测和条件类别预测。因此,对于大多数示例而言,类别预测不会造成损失?还是其他什么原因?我们还不能完全确定。Faster RCNN 在训练过程中使用了两个 IOU 阈值。如果预测结果与地面实况重叠 0.7,则作为正例;重叠 [0.3 - 0.7] 则忽略不计;小于 0.3 的所有地面实况对象均为负例。我们尝试过类似的策略,但效果不佳。我们很喜欢目前的方案,它似乎至少处于局部最优状态。其中一些技术最终可能会产生好的结果,也许它们只是需要一些调整来稳定训练。

精读

作者的失败尝试

锚点框 x、y 偏移预测

  • 尝试使用普通的锚点框预测机制,通过线性激活预测 x、y 偏移量作为框宽或框高的倍数。

  • 结果发现该方法会降低模型的稳定性,且效果不佳。

线性 x、y 预测代替逻辑预测

  • 尝试用线性激活直接预测 x、y 偏移量,而非使用逻辑激活。

  • 这种方法导致 mAP 降低了几个百分点。

焦点损失(Focal Loss)

  • 尝试使用焦点损失(focal loss),但该方法使 mAP 降低了约 2 个点。

  • 认为 YOLOv3 可能已经能很好地处理焦点损失想要解决的问题,因为它具有独立的对象性预测和条件类别预测。

Faster RCNN 的 IOU 阈值策略

  • Faster RCNN 在训练过程中使用了两个 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 为 0.3 的边界框,并将其与 IOU 为 0.5 的边界框区分开来,难度之大令人吃惊。[18]如果人类很难分辨两者的区别,那么这又有多大关系呢?但也许更好的问题是:"既然我们有了这些探测器,我们该拿它们怎么办?很多从事这项研究的人都在谷歌和脸书工作。我想,至少我们知道这项技术掌握在可靠的人手里,而且绝对不会被用来收集你的个人信息,然后卖到.... 等等,你是说这正是它的用途?是的。我很希望大多数使用计算机视觉的人都是在用它做快乐的好事,比如计算国家公园里斑马的数量[13],或者追踪在家里游荡的猫[19]。但是,计算机视觉已经被用于令人质疑的用途,作为研究人员,我们有责任至少考虑一下我们的工作可能造成的危害,并想办法减轻这种危害。这是我们欠世界的。最后,请不要@我。(因为我终于退出了 Twitter)。

精读

作者就一句话:我希望世界和平

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词