本文yolov1有具体的论文精读,后面v2-v4只是关键技术记录。v5参考我的其他文章(文章比较长,建议直接去目录翻感兴趣的看,我的其他文章还有代码详解)
yolo.py:yolo.py代码精读_epic_Lin的博客-优快云博客
train.py:https://blog.youkuaiyun.com/epic_Lin/article/details/121270638
yolov4-v5知识点:yolov4,yolov5(学习记录)_epic_Lin的博客-优快云博客
总讲:yolo系列学习(入门经过)_epic_Lin的博客-优快云博客
一、yolov1
ps:下面把Yolov1论文主要部分都翻译了一下,重点词语用英文标出来,确保原文词汇准确传达
1、引言
目前的检测系统通过重新使用(reprupose)分类器来执行形式检测。为了检测一个目标,这些系统为该目标取一个分类器,并在test image的不同locations 和scales上来评估它。像可变形部件模型(DPM)这样的系统使用滑动窗口的方法,分类器在整个图像上均匀间隔的位置运行。
DPM:DPM目标检测算法_知识搬运工的博客-优快云博客_dpm目标检测
更近一些的方法像R-CNN用区域建议方法(region proposal methods),首先在图像中生成潜在的边界框,然后在这些建议的boxes上运行分类器。分类后,利用后处理对边界框进行细化(refine),消除重复检测,并基于场景中其他对象对边界框重新打分(rescore)。这些复杂的操作(pipelines)是缓慢和难以优化的,因为每个单独的组件(individual component)必须单独训练
我们将目标检测重构为一个单一的回归问题,直接从图像像素到边界框坐标和类别概率。
YOLO非常简单:一个卷及网络可以同时预测多个边界框和这些边界框的分类概率。YOLO对完整的图像进行训练,并直接优化检测性能。与传统的目标检测方法相比,这种统一模型有几个优点。
首先YOLO的速度非常快。由于帧检测是个回归问题,所以不需要复杂的pipeline。我们只需在测试时间对新图像运行神经网络来预测检测结果。
第二,YOLO在预测的时候推理整张图像。与基于滑动窗口(sliding window)和区域建议的技术(region proposal-based techniques)不同,YOLO在训练和测试期间看到整个图像,因此它隐式地编码关于类及其外观的上下文信息。(看整张图片不是很慢??是因为YOLO第一次用回归??回归指什么??其他技术不是用这种训练-推理回归的技术吗,YOLO的优势在哪??YOLO应该也用了类似的推荐框技术,这种技术和上面滑动窗口和区域建议技术有什么区别??)顶级的检测算法Fast R-CNN因为没法看到更大的背景,所以将图像中的背景补丁(background patches)误认为物体。于Fast R-CNN相比,YOLO的背景错误数量不到一半
第三,YOLO学习对象的可泛化表示。当在自然图像上进行训练并在artwork上进行测试时,YOLO 的表现远远超过顶级的检测方法,如DPM和R-CNN。
YOLO在精度上仍落后于最先进的检测系统。虽然它可以在图像中款速识别物体,但它很难精确定位一些小的物体。我们在实验中进一步研究了这些权衡(tradeoffs)。
2、统一检测(Unified Detection):
我们将目标检测的各个部分统一为一个单一的神经网络。了我们的网络使用整个图像的特征来预测每个边界框。它还能同时预测一个图像中所有的边界框。这意味着我们的网络对完整的图像和图像中的所有物体进行全局推理。YOLO设计实现了端到端训练和实时速度,同时保持了较高的平均精度。
本系统将输入图像划分为s*s个网格。如果一个物体的中心落在一个网络单元格中,该网络单元格负责检测该物体。
每个网格单元预测B个边界框和这些边界框的置信度。这些置信度得分反映了模型对框中包含物体的置信程度,以及推测出的框的精度。通常,我们将置信度定义为
。如果在单元格中没有对象,则置信度得分应为零。否则,我们希望置信度等于推测的框和标签之间的intersection over union(IOU)
IOU:目标检测之 IoU_黑暗星球-优快云博客
每个边界框包含5个预测:x,y,w,h,conf.
每个单元格预测C个条件类(conditional class probabilities)概率,
这些概率不取决于包含对象的网格单元格。每个单元格只负责一个类的检测(we only predict one set of class probabilities per grid cell),而不管boxes的数量B。
在测试时,我们将条件类概率(conditional class probabilities)和单个框的置信度预测相乘
就得到了每个box的特定类别的置信度得分。这些分数编码了该类别出现在方框中的概率,以及预测的方框与对象的匹配程度
2.1 网络设计
我们网络架构的灵感来自于GoogLeNet模型,我们的网络有24个卷积层,然后是两层全连接层我们不使用GoogLeNet采用的初始模型(inception modules),而是简单地使用1×1还原层(reduction layers),然后是3×3卷积层。
我们还训练了一个快速版本的YOLO,旨在推动快速目标检测的边界。FastYOLO使用的神经网络的卷积层更少(9而不是24),并且在这些层中有更少的滤波器。除了网络的大小之外,YOLO和FastYOLO之间的所有训练和测试参数都是相同的。我们的网络的最终输出是预测的7×7×30张量。
2.2 训练
我们在ImageNet1000类竞赛数据集上预训练卷积层。对于预训练,我们使用图3中的前20个卷积层,然后是一个平均池化层和一个完全连接的层。我们使用Darknet框架进行训练和推理。
然后我们改变模型来进行检测(detection)。Ren etal. 展示了在预训练网络中同时增加卷积层和全连接层可以优化性能。根据他们的例子,我们添加了四个卷积层和两个具有随机初始化权值的完全连接层。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224×224提高到448×448。
我们的最后一层预测了类概率和边界框坐标。我们通过图像的宽度和高度将边界框的宽度和高度归一化,使它们落在0到1之间。我们将边界框x和y坐标参数化为特定网格单元格位置的偏移量,因此它

本文深入解析YOLO系列目标检测算法,从YOLOv1的回归问题和统一模型优势,到YOLOv2的锚点机制和多尺度训练,再到YOLOv4的Mish激活函数、CSP结构和数据增强技术。通过逐步演进,阐述YOLO如何提升检测速度和精度,并探讨其在实时检测和泛化能力上的挑战。
最低0.47元/天 解锁文章
836

被折叠的 条评论
为什么被折叠?



