首页 > 其他分享 >YOLO

YOLO

时间:2024-01-31 17:13:23浏览次数:29  
标签:Pr confidence YOLO cell bbox truth

参考目录:

论文:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf

YOLO论文解读:https://zhuanlan.zhihu.com/p/31427164

fasterRCNN是two-stage的目标检测算法,即分别完成分类和回归任务。而YOLO提出将物体检测作为一个回归问题进行求解,即输入图像经过一次网络,就得到物体的位置、类别和置信度,开启了one-stage目标检测。

YOLO的网络结构:

1. YOLO的网络结构

(这段将在我看完YOLO的代码后来补充)

2. 创新点和核心思想

YOLO的创新点和核心思想主要可以总结为以下几个:

2.1 网格

将输入图像设置若干个等间隔的线,假设纵向S条,横向S条,这些线会将图像分割为S*S个cell。每一个cell对应着一个类别,标签的类别将有ground truth决定。在训练和推理过程中,判断一个bbox的方法就是看这个bbox的中心点落在哪一个cell中。因此,一个cell中对应的所有bbox的类别都是同一类

2.2 confidence

引入了置信度confidence的概念。confidence具有两重信息:(1)目标中心是否落在cell中;(2)预测值和ground truth的IoU。因此,可以表示为:

\[confidence = Pr(object)·IoU^{truth}_{pred}\\ where\ Pr(object) = \begin{cases} 1,\ cell\ in\ bboxes\\ 0,\ others \end{cases} \]

同时,bounding box的表示从四维增加到了五维,即由原先的\((x,y,w,h)\)变为\((x,y,w,h,confidence)\),添加了置信度(且这里的\(x,y,w,h\)都是经过归一化的)。

2.3 class-specific confidence score

在进行推理时,会将每个网格预测的条件概率(即,对于这个网格,类别为\(Class_i\)的概率)\(Pr(Class_i|Object)\)和confidence相乘,即:

\[Pr(Class_i|Object) \times confidence \\ = Pr(Class_i|Object) \times Pr(object) \times IoU^{truth}_{pred}\\ = Pr(Class) \times IoU^{truth}_{pred} \]

最后这个成绩为每个bbox的class-specific confidence score,既包含了bbox属于的类别的概率,又包含了bbox的位置的准确度。

3. Training

YOLO的训练过程中,在设计Loss函数时考虑了以下几个方面:

3.1 bbox的坐标预测误差

作者认为,对于不同大小的bbox,相比于大bbox的大小预测有了一定的偏差,小的bbox的大小有了相同的偏差是更致命的。因此,在loss中同等对待不同大小bbox的预测偏差是不合理的。因此作者选择将w和h用\(sqrt\)进行压缩,这样随着w和h的增大,惩罚程度的上升会逐渐变慢。

3.2 bbox的confidence预测误差

图像中的大部分cell可能包含背景(即不包含目标),因此大多数box的confidence为0.作者认为confidence为1和0的bbox不应该同等对待,confidence=0的惩罚被减轻了,乘以了权重\(\lambda_{noobj} = 0.5\).

此外坐标预测误差和conference预测误差之间也有权重\(\lambda_{coord} = 5\).

3.3 分类预测误差

前面提到过,每一个cell对应的bbox都是同一类,因此在计算时只需要逐cell计算,而不需要逐bbox计算。

最终的预测误差如下:

标签:Pr,confidence,YOLO,cell,bbox,truth
From: https://www.cnblogs.com/pab-oolongtea/p/17999670

相关文章

  • YOLOv2
    论文:https://openaccess.thecvf.com/content_cvpr_2017/papers/Redmon_YOLO9000_Better_Faster_CVPR_2017_paper.pdf改进点讲解1:https://zhuanlan.zhihu.com/p/71179215改进点讲解2:https://blog.csdn.net/weixin_40227656/article/details/116018040协变量偏移和BatchNormaliz......
  • YOLOv5代码详解1(train.py)
    YOLOv5代码详解(第一部分)1.train.py1.1使用nvidia的apex接口计算混合精度训练1.2获取文件路径1.3获取数据路径1.4移除之前的结果1.5创建模型1.6检查训练和测试图片尺寸1.7设置优化器参数1.8加载预训练模型和权重,并写入训练结果到results.txt1.9把混合精度......
  • YOLOv8实例分割实战:TensorRT加速部署
    课程链接:https://edu.51cto.com/course/35610.html课程简介:PyTorch版的YOLOv8支持高性能实时实例分割方法。TensorRT是针对英伟达GPU的加速工具。本课程讲述如何使用TensorRT对YOLOv8实例分割进行加速和部署,实测推理速度提高3倍以上。采用改进后的tensorrtx/yolov8的代码,使用Tens......
  • YOLOv8终极指南
    YOLOv8是计算机视觉领域的最新发展,它是一种用于目标检测、实例分割和分类的最新先进模型。除了对模型架构本身的改进之外,YOLOv8通过一个用于使用YOLO模型的PIP包为开发者提供了一个新的友好界面。在这篇文章中,我们将深入探讨YOLOv8在计算机视觉领域的重要性,将其与其他类似模型在准......
  • 利用yolov模型和django实现网页摄像头调用进行实时预测
    前端:<imgid="video"width="640"height="480"ref="video"></img>调用方法:startCamera(){varvideo1=document.getElementById("video");video1.src="http://localhost:8080/api/webcam/"}......
  • Yolov8不废话!参考手册!
    yolotask=detectmode=trainmodel=yolov8n.ptargs...classifypredictyolov8n-cls.yamlargs...segmentvalyolov8n-seg.yamlargs...exportyolov8n.ptformat=onnxargs...使用Ultral......
  • Yolov8不废话!参考手册!
    yolotask=detectmode=trainmodel=yolov8n.ptargs...classifypredictyolov8n-cls.yamlargs...segmentvalyolov8n-seg.yamlargs...exportyolov8n.ptformat=onnxargs...使用Ultral......
  • YOLOv8终极指南
    YOLOv8是计算机视觉领域的最新发展,它是一种用于目标检测、实例分割和分类的最新先进模型。除了对模型架构本身的改进之外,YOLOv8通过一个用于使用YOLO模型的PIP包为开发者提供了一个新的友好界面。在这篇文章中,我们将深入探讨YOLOv8在计算机视觉领域的重要性,将其与其他类似模型在......
  • 机器视觉 - yolo 相关工具
    模型可视化netron网站netron源码标签格式转换文章:https://zhuanlan.zhihu.com/p/461488682代码:https://github.com/KKKSQJ/DeepLearning/blob/master/others/label_convert/README.mdyolo标注文件可视化源码:https://github.com/KKKSQJ/DeepLearning/blob/master/oth......
  • 机器视觉 - yolo 调参
    模型训练通用规则:如果train效果挺好,但test或predict效果较差,说明overfit了.原因有:(1)模型太复杂了,这时候应该减少epoch或者使用更小scale的模型.(2)train数据集太小,这时候需要增加训练数据如果train效果不佳,可以使用更大规模的模型,或者增加训练数据,......