相关系列:
目标检测 | yolov1 原理和介绍
目标检测 | yolov2/yolo9000 原理和介绍
目标检测 | yolov3 原理和介绍
目标检测 | yolov4 原理和介绍
目标检测 | yolov5 原理和介绍
目标检测 | yolov6 原理和介绍
目标检测 | yolov7 原理和介绍
目标检测 | yolov8 原理和介绍
目标检测 | yolov9 原理和介绍
目标检测 | yolov10 原理和介绍
论文链接:https://arxiv.org/pdf/1804.02767
时间:2018年
作者:Joseph Redmon
代码参考:https://github.com/ultralytics/yolov3
作者在YOLOv2的基础上提出了改进的YOLOv3,并宣布退出计算机视觉研究。
YOLOv3是目标检测领域的一个重要进步,它在YOLOv2的基础上引入了多项关键技术和模块,显著提升了检测性能。以下是YOLOv3的一些核心改进点:
- 多尺度特征融合:YOLOv3通过特征金字塔网络(FPN)结构,利用不同尺度的特征图进行检测,这使得它能够更好地识别不同大小的目标 。
- Darknet-53主干网络:YOLOv3采用了更深的Darknet-53网络作为其主干网络,这有助于提取更丰富的特征信息 。
- 残差连接:借鉴了ResNet的设计,YOLOv3在网络中引入了残差连接,这有助于缓解深层网络训练中的梯度消失问题,并提高网络性能 。
- 改进的损失函数:YOLOv3将损失函数从softmax的交叉熵损失切换为二分类交叉熵损失,这有助于解决类别不平衡问题,提高小目标的检测准确率 。
- 类别预测的改进:YOLOv3使用独立的Logistic回归分类器代替了softmax来预测类别,这使得模型能够更好地处理多标签分类问题 。
- 多尺度训练:YOLOv3采用不同分辨率的图像进行训练,提高了模型对不同尺寸目标的泛化能力 。
- 数据增强:YOLOv3在训练过程中应用了大量的数据增强技术,如随机缩放、裁剪和颜色扭曲,这有助于提高模型的鲁棒性 。
- 锚框尺寸的优化:YOLOv3根据数据集的特点动态调整锚框的大小和比例,以提高检测精度 。
按照yolov2,使用维度集群作为锚定框来预测边界框。该网络为每个边界框预测4个坐标,, , , 。如果单元格从图像的左上角偏移,并且边界框先验具有宽度和高度,,那么预测对应于
在训练期间,我们使用平方误差损失之和。如果某个真实框的坐标是 ,我们的梯度就是真实框坐标值(从真实框中计算)减去我们的预测坐标值: 。这个真实框坐标值可以通过倒置上述方程轻松计算出来
YOLOv3使用逻辑回归法为每个边界框预测一个目标分数。如果边界框先验比其他边界框先验更多地与目标真实框重叠,则该分数应为。如果先验边界框不是最好的,但与真实框目标的重叠程度超过了某个阈值,我们就忽略这个预测。我们使用的阈值。不同的是,我们的系统只为每个真实框对象分配一个先验边界框。如果没有为一个真实框对象分配一个先验边界框,它不会对坐标或类别的预测产生任何损失,只有目标置信度。
利用逻辑回归来预测每个边界框的客观性分数
- 正样本:如果当前预测的包围框比之前其他的任何包围框更好的与ground truth对象重合,那它的置信度就是 1。
- 忽略样本:如果当前预测的包围框不是最好的,但它和 ground truth对象重合了一定的阈值(这里是0.5)以上,神经网络会忽略这个预测。
- 负样本: 若bounding box 没有与任一ground truth对象对应,那它的置信度就是 0。
每个框都使用多标签分类法预测边界框可能包含的类别。我们不使用softmax,因为我们发现它对于良好的性能是不必要的,相反,我们只是使用独立的逻辑分类器。在训练过程中,我们使用二元交叉熵损失来进行分类预测。当我们转向更复杂的领域,如开放图像数据集[7]时,这种提法会有所帮助。在这个数据集中,有许多重叠的标签(即女人和人)。使用softmax的假设是,每个框都有一个确切的类别,但情况往往并非如此。多标签方法可以更好地模拟数据。
- 简而言之,每个框使用多标签分类预测边界框可能包含的类。
- YOLOv3 使用的是logistic 分类器,而不是之前使用的softmax。
- 在YOLOv3 的训练中,便使用了Binary Cross Entropy ( BCE, 二元交叉熵) 来进行类别预测。
softmax被替代的原因?
(1)softmax只适用于单目标多分类(甚至类别是互斥的假设),但目标检测任务中可能一个物体有多个标签。(属于多个类并且类别之间有相互关系),比如Person和Women。
(2)logistic激活函数来完成,这样就能预测每一个类别是or不是。
YOLOv3在三个不同的尺度上对框进行预测。我们的系统使用类似于特征金字塔网络的概念从这些尺度上提取特征。从我们的基础特征提取器中,我们添加了几个卷积层。最后一个卷积层预测一个维张量,编码边界框、对象性和类别预测。在我们与COCO的实验中,我们在每个尺度上预测个框,所以张量是,用于个边界盒的偏移,个对象性预测,和个类别预测。
接下来,我们从前两层中提取特征图,并对其进行倍的上采样。我们还从网络中的早期特征图中取出一个特征图,用连接法将其与我们的上采样特征合并。这种方法使我们能够从上采样的特征中获得更有意义的语义信息,并从早期的特征图中获得更精细的信息。然后,我们再增加几个卷积层来处理这个合并的特征图,最终预测出一个类似的张量,尽管现在的张量是原来的两倍。
我们再进行一次同样的设计,以预测最终规模的框。因此,我们对第三个尺度的预测得益于所有先前的计算以及网络早期的细化特征。
我们仍然使用k-means聚类法来确定我们的边界框预设。我们只是任意地选择了个聚类和个尺度,然后在各个尺度上均匀地划分聚类。在COCO数据集上,这个聚类是。。
YOLOv3通过下采样32倍、16倍和8倍得到3个不同尺度的特征图。
CBL组件:卷积+BN+Leaky ReLU CBL是YOLOv3的基本组件,由卷积层(Convolution)、批量归一化层(Batch
Normalization)和Leaky
ReLU激活函数组成。卷积层负责提取图像特征,批量归一化层则能够加速网络训练并提高模型性能,而Leaky
ReLU激活函数则解决了ReLU函数在负数区域的问题,使得网络能够更好地学习非线性特征。
res_block是Darknet-53网络中的关键组件,其基本结构由多个残差单元(res_unit)组成。残差块通过引入短路连接(shortcut
connection)来解决深度神经网络中的梯度消失问题。在残差块中,输入会被复制并添加到经过一系列卷积和激活函数处理后的输出上,从而保证了梯度的有效传递。这种设计使得网络能够更好地学习深层次的特征表示。
我们使用一个新的网络来进行特征提取。新网络是YOLOv2中使用的网络、Darknet-19和新式的Darknet网络之间的一种混合方法。我们的网络使用连续的和卷积层,但现在也有一些快捷连接,而且明显更大。它有53个卷积层,所以我们把它叫做…Darknet-53!
这个新网络比Darknet19强大得多,但仍然比ResNet-101或ResNet-152更有效率。下面是一些ImageNet的结果
将darknet-19里加入了ResNet残差连接,改进之后的模型叫Darknet-53 Darknet-53主要做了如下改进:
(1)没有采用最大池化层,转而采用步长为2的卷积层进行下采样。
(2)为了防止过拟合,在每个卷积层之后加入了一个BN层和一个LeakyReLU。
(3)引入了残差网络的思想,目的是为了让网络可以提取到更深层的特征,同时避免出现梯度消失或爆炸。
(4)将网络的中间层和后面某一层的上采样进行张量拼接,达到多尺度特征融合的目的。
Darknet-53的性能与最先进的分类器相当,但浮点运算更少,速度更快。Darknet-53还实现了每秒最高的浮点运算。这意味着网络结构更好地利用了GPU,使其评估更高效,从而更快.
我们仍然在完整的图像上进行训练,没有硬性的负面挖掘或任何这些东西。我们使用多尺度训练,大量的数据增强,批量归一化,所有标准的东西。我们使用Darknet神经网络框架进行训练和测试。
论文中没有提及,参考
博客:(最简单)深度理解YOLOV3损失函数及anchor box
其中是网络预测目标的中心坐标, 是gt中心坐标。 指的是第 个单元格存在目标,且该单元格中的第 个边界框负责预测该目标,如果该矩形框负责预测一个目标则其大小为1,否则等于0。 ,当矩形框的大小比较小时,这个系数就更大,从而增大了小矩形框对损失函数的贡献,相反当矩形框比较大时,该系数也就更小,从而消减了大矩形框对损失函数的贡献。因此,该函数计算了所有网格内的每一个矩形框的中心坐标位置与标记框交叉熵误差损失总和。
其中是网络预测目标的宽高, 是gt的宽高。,同样这里为了协调不同大小矩形框对误差函数贡献不一致设置了参数 。该函数计算了所有预测矩形框的宽高与标记框宽高求和平方误差损失总和。
其中为预测框内含有目标物体的概率得分,表示真实值,的取值由第(i,j)个矩形框是否负责预测某一个矩形框决定,如果负责,那么,否则,。等于,表示如果该矩形框不负责预测一个目标则其大小为,否则等于。为一个权重值,表示当预测框没有预测到目标时,其置信度误差在损失函数中所占权重,由于对于一副图像,一般而言其大部分内容是不含有待检测的物体,这样会导致没有物体的计算部分贡献会大于有物体的计算部分,从而导致网络倾向于预测单元格中不含有物体,因此,我们需要减少没有物体计算部分的贡献权重, 往往取值0.5。
表示第预测框属于类别c的概率,,表示真实所属类别,如果为c类则为1,否则为0.
YOLOv3 擅于预测出合适的目标,但无法预测出非常精准的边界框。YOLOv3 小目标预测能力提升,但中大目标的预测反而相对较差。若将速度考量进来,YOLOv3 整体来说表现非常出色。
YOLOv3在小目标密集目标的改进
1.grid cell个数增加,YOLOv1(7×7),YOLOv2(13×13),YOLOv3(13×13+26×26+52×52)
2.YOLOv2和YOLOv3可以输入任意大小的图片,输入图片越大,产生的grid cell越多,产生的预测框也就越多
3.专门小目标预先设置了一些固定长宽比的anchor,直接生成小目标的预测框是比较难的,但是在小预测框基础上再生成小目标的预测框是比较容易的
4.多尺度预测(借鉴了FPN),既发挥了深层网络的特化语义特征,又整合了浅层网络的细腻度的像素结构信息
5.对于小目标而言,边缘轮廓是非常重要的,即浅层网络的边缘信息。在损失函数中有着惩罚小框项
6.网络结构:网络加了跨层连接和残差连接(shortcut connection),这样可以整合各个层的特征,这样使得网络本身的特征提取能力提升了
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/20732.html