yolov5有三个损失函数分别是回归损失、置信度损失、分类损失
回归损失用的是CIOU loss
置信度和分类损失用的是BCE loss
(1)对比L2损失,Iou和GIou具有尺度不变性,不会说输入的框子大loss就越大。
(2)对比IOU损失,L2和Giou具有偏离趋势度量的能力,当IOU=0时,交和不交的损失是一样的,L2和GIOU就不会这样。
GIOU,当两个框子是左右重合时就和IOU一样了。
DIOU,当两个框子互相包含时,会有偏离趋势的loss能力,同样也具有尺度不变性。
CIOU,在DIOU的基础上,增加了宽高比的惩罚项。当预测边框和真是边框的中心点重合时,DIOU退化成了传统IOU,综合了IOU的面积损失 、和DIOU的中心点损失和自身宽高比损失三种优势。
yolov5中通过mask掩码来计算损失
所有的预测框都需要计算置信度损失,但是mask为true和false的预测框置信度计算方式 不一样,当mask掩码中最用位置为true的预测框才需要计算分类和回归损失。
如何得到mask?
(1)根据标注文件解析出GT框子的中心坐标和宽高
yolov5网络原生推理出来的为三维的tensorr
[4,3,80,80,8]
[4,3,40,40,8]
[4,3,20,20,8]
pytorch中
nn.parameter参与梯度训练
buffer不参数梯度训练
还可以通过model.save保存
focal loss
保证预测的结果都接近与1无论正负样本
当预测对了的值loss就很小,当预测错了就会很大
关注难样本,解决类别不均衡的问题
indices 正样本的索引
更改objectness
YOLOv3
模型的每个head计算出[bs,c,h,w,nc+5]
GT与每个anchor做IOU的比较,取最大的IOU的anchor,给出mask
BCE要用sigmoid函数
置信度的loss是预测框和真实框的IOU
YOLOv5损失函数
回归损失
预测x、y、w、h四个数值,预测出来的数值,通过CIOU计算loss
置信度损失
计算每个预测框和真实框的CIOU当作置信度,通过BCE计算loss
网络训练流程
1、输入图像网络前向传播输出[[bs,3,80,80,nc+5],[bs,3,40,40,nc+5],[bs,3,20,20,nc+5]]。
2、对于网络的3个头的输出匹配正样本,筛选GT和anchor符合条件的高宽比,大于就是正样本反就是负样本。
出了匹配IOU大于的之外还会匹配满足条件的上下左右的grid
YOLO:简史
YOLO(You Only Look Once)是一种流行的对象检测和图像分割模型,由华盛顿大学的Joseph Redmon和Ali Farhadi开发。YOLO于2015年推出,以其高速度和高精度迅速走红。
YOLOv2于2016年发布,通过合并批处理规范化、锚盒和维度集群来改进原始模型。
YOLOv3在2018年推出使用更高效的骨干网络、多个锚点和空间金字塔池进一步增强了该模型的性能。
YOLOv4于2020年发布,引入了Mosaic数据增强、新的无锚检测头和新的丢失功能等创新。
YOLOv5进一步提高了模型的性能,并添加了超参数优化、集成实验跟踪和自动导出到流行导出格式等新功能。
YOLOv6于2022年由美团开源,目前正在该公司的许多自动配送机器人中使用。
YOLOv7在COCO关键点数据集上添加了额外的任务,如姿态估计。
YOLOv8是Ultralytics公司推出的YOLO的最新版本。作为一款尖端、最先进的(SOTA)车型,YOLOv8在之前版本的成功基础上,引入了新的功能和改进,以增强性能、灵活性和效率。YOLOv8支持全方位的视觉AI任务,包括检测、分割、姿态估计、跟踪和分类。这种多功能性允许用户在不同的应用程序和域中利用YOLOv8的功能。