YOLOv3 论文演练:更好,但没那么好

从头开始在 YOLOv3 架构上的 PyTorch 实现 YOLOv3 论文演练:更好,但没那么好,首先出现在 Towards Data Science 上。

来源:走向数据科学

是最先进的目标检测算法,由于 SSD(单镜头多框检测器)、DSSD(反卷积单镜头检测器)和 RetinaNet 等其他方法的出现,它看起来已经过时了。最后,在 YOLOv2 推出两年后,作者决定改进该算法,最终提出了题为“YOLOv3:增量改进”[1] 的论文中报告的下一个 YOLO 版本。正如标题所暗示的那样,在底层算法方面,作者对 YOLOv2 的改进确实不多。但是,嘿,当谈到性能时,它实际上看起来相当令人印象深刻。

在本文中,我将讨论作者对 YOLOv2 进行的修改以创建 YOLOv3,以及如何使用 PyTorch 从头开始实现模型架构。我强烈建议您在阅读本文之前阅读我之前关于 YOLOv1 [2, 3] 和 YOLOv2 [4] 的文章,除非您已经对 YOLO 的这两个早期版本的工作原理有了坚实的基础。

是什么让 YOLOv3 比 YOLOv2 更好

香草 Darknet-53

作者所做的修改主要与架构有关,其中他们提出了一个称为 Darknet-53 的骨干模型。该网络的详细结构如图 1 所示。顾名思义,该模型是对 YOLOv2 中使用的 Darknet-19 的改进。如果数一下Darknet-53的层数,你会发现这个网络由52个卷积层和最后一个全连接层组成。请记住,稍后当我们在 YOLOv3 上实现它时,我们将向其提供尺寸为 416×416 的图像,而不是图中所示的 256×256。

带检测头的 Darknet-53

多标签分类

修改后的损失函数

一些实验结果

YOLOv3架构实现

# 代码块 1

进口火炬

将 torch.nn 导入为 nn

NUM_PRIORS = 3NUM_CLASS = 80卷积块实现残差块实现Darknet-53 实施参考文献