YOLOv5的参数IOU与PR曲线,F1 score

YOLOv5的参数IOU与PR曲线,F1 score

conf_thres

Confidence Threshold,置信度阈值。
只显示预测概率超过conf_thres的预测结果。
    想让YOLO只标记可能性高的地方,就把这个参数提高。

iou_thres

Intersect over Union Threshold,交并比阈值。
IOU值:预测框大小∩真实框大小 / 预测框大小∪真实框大小。
    预测框与真实框的交集与并集的取值。
iou_thres在detect.py中:
    越大,则容易将对于同一个物品的不同预测结果 当成 对多个物品的多个预测结果,导致一个物品出现了多个预测结果。
    越小,则容易将对于多个物品的不同预测结果 当成 对同一个物品的不同预测结果,导致多个物品只出现了一个预测结果。

评估参数

P
    Precision,精确率
    对类A来说(下面提到的都是被预测成A的):
        P = 正确数 / 预测总数
        或 P = 正确数/ 正确数+错误数
    即,预测的东西正确了多少百分比。
R
    Recall,召回率
    对类A来说(下面提到的都是被归为A类的):
        R = 预测正确数 / 真实A类总数。
        或 R = 预测正确数 / 被预测到的A + 未被预测到的A
    即,预测的东西找到了多少百分比。
F1
    F-Measure,F值,P与R的调和平均
    F=1/(λ1P+(1−λ)1R),λ = 0.5时,简化为F1
    F1 = 2*P*R / (P + R)

例:对于一个二分类问题来说:

要对动物进行分类,分为猫与非猫两类。样本中,猫有350份,非猫有150份。
预测出了400份被认为是猫,其中,正确的有300份,错误的有100份。则:
P = 300 / 400 = 0.75
R = 300 / 350 ≈ 0.86

PR图

横坐标是R值,纵坐标是P值,曲线表示当召回率为R时,精确率P的大小。
例:
    假设测试集图片数量为一百张,且测试了一百张。
    当A类的R值设为0时,表示以某精确度P1计算,没有检测到A类。
    当A类的R值设为0.1时,表示以某精确度P2计算,检测到了A类总数的10%。
    以此类推,当A类的R值设为1时,表示以某精确度P11计算,检测到了所有的A类标签。
    可以看出,随R值的升高,A被预测到的数量也会增加,即那些可能性较低的A类也逐渐被预测出来。
    因此,可以判断P值是随着R的升高而降低。
        P值如果设为100,即要求被标记出来的区域一定属于A类,这种概率非常低,所以可能一个A类都识别不出来,进而导致R值为0。
        而若P值设为0.1,则要求被标记出来的区域只要有百分十的概率属于A类即可,那么将有很多A类被标记,R值也进一步提高。
因此,PR图左下方的面积越大,则表示模型对该数据集的效果越好。

AP

Average Precision
以某种方式计算AP值来表达PR图的面积
    下面提到的是PASCAL VOC竞赛于2010年前的计算方式,
    根据我查到的资料,也是YOLOv3的计算方式(目标检测中常提到的IoU和mAP究竟是什么?)。
    但我没有在YOLOv5的github wiki上找到相关资料,也没有在其它地方找到。
使用平均,以R in range(0 : 1 : 0.1)作为IOU,满足这个R值的最大P值作为Pi,求11个Pi的平均数。
    这里的R是以0为起点,1为终点,0.1为步长的十一个值,1也算。
    即上面解释PR图时的例子里R与P的关系。

mAP

mean Average Precision
每个类的AP值的平均数。
用于表达多类标签预测的性能,如AP一样,mAP越高,性能越好。
mAP@.5
    当IoU为0.5时的mAP。
mAP@.5 : .95
    当IoU为range(0.5 : 0.95 : 0.05)时的mAP的平均数。

提高mAP

优化数据集:
    YOLO官方推荐数据集需求:
        每类图片数量:每类大于3000张图片
        每个类的实例:每类实例(标签)大于一万份。
        图像多样性:确保图片来自不同环境。对于现实世界物体的识别,推荐使用来自不同时间、不同季节、不同天气、不同光照度、不同角度、不同来源的图片。
        标签一致性:所有类中所有实例必须都被标签标记,不要遗漏。
        标签准确性:标签能准确标记对象,不要在对象与标记框之间留下缝隙。没有对象可以不用标记(背景图片)。
        背景图片:背景图片是指没有对象的图片,用来减少误报。YOLO推荐0~10%的背景图片来减少误报(COCO数据集包含1000张背景图片,占据总数1%)。
    简单来说:
        增加不同角度/光照度的数据集。
        增加不同环境的数据集。
        增加背景图片(无目标的图片)。
        增加数据集大小。
        确保标签标定准确。
  • 22
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: yolov5pr曲线代码是指用于训练和推理的yolov5模型的具体代码。yolov5是一种目标检测模型,可以用于实时检测图像或视频中的物体。下面是一个简单的yolov5pr曲线代码示例: ``` import torch from torchvision.models import ResNet class YOLOv5PR(torch.nn.Module): def __init__(self, num_classes=80): super(YOLOv5PR, self).__init__() self.backbone = ResNet() self.head = YOLOv5PRHead() def forward(self, x): x = self.backbone(x) x = self.head(x) return x class YOLOv5PRHead(torch.nn.Module): def __init__(self, num_classes=80): super(YOLOv5PRHead, self).__init__() self.conv1 = torch.nn.Conv2d(256, 256, kernel_size=3, padding=1) self.bn1 = torch.nn.BatchNorm2d(256) self.relu1 = torch.nn.ReLU() self.conv2 = torch.nn.Conv2d(256, num_classes * 5, kernel_size=1) self.sigmoid = torch.nn.Sigmoid() def forward(self, x): x = self.conv1(x) x = self.bn1(x) x = self.relu1(x) x = self.conv2(x) x = self.sigmoid(x) return x ``` 上述代码实现了一个简化版的yolov5pr模型。其中,YOLOv5PR类定义了整个模型的结构,包括了一个ResNet作为backbone以及YOLOv5PRHead作为检测头。YOLOv5PRHead类定义了检测头的结构,包括两个卷积层和一个激活函数。 这只是一个简单的示例,真正的yolov5pr曲线代码可能包含更多的层和复杂的结构,以实现更准确和高效的目标检测功能。在实际使用时,还需要进行数据加载、损失函数定义、优化器设置等步骤,以及具体的训练和推理操作。 ### 回答2: Yolov5pr曲线代码是一种用于目标检测神经网络算法,是对Yolov5算法的改进和优化。下面是关于Yolov5pr曲线代码的300字回答: Yolov5pr曲线代码是基于Yolov5算法的改进版本,旨在提高目标检测的准确性和性能。它引入了一种新的曲线参数化机制,从而更好地适应不同尺寸和形状的目标。由于目标的尺寸和形状在实际应用中经常变化,传统的目标检测算法容易出现漏检和误检的情况。而Yolov5pr曲线代码通过曲线参数化机制,可以更好地捕捉目标的形状变化,提高目标检测的精度和稳定性。 Yolov5pr曲线代码的核心思想是通过引入曲线参数来描述目标的形状。传统的目标检测算法通常使用矩形框来表示目标的位置和大小,而Yolov5pr曲线代码则使用曲线来进行参数化描述。曲线可以更好地适应目标的形状变化,因此可以提高目标检测的准确性。 此外,Yolov5pr曲线代码还引入了一种新的训练策略。传统的目标检测算法通常使用固定的图像尺寸进行训练,而Yolov5pr曲线代码则采用多尺度训练的策略。这种策略可以让网络在不同尺度的目标上都能取得较好的效果,从而提高检测的性能。 总之,Yolov5pr曲线代码是一种改进版的目标检测算法,通过引入曲线参数化机制和多尺度训练策略,可以提高目标检测的准确性和性能。它在实际应用中具有较好的表现,并得到了广泛的应用和研究。 ### 回答3: yolov5pr曲线代码是一种用于物体检测的深度学习算法,它是基于YOLO(You Only Look Once)的改进版本。该算法使用深度卷积神经网络来实现实时的物体检测,具有较高的准确率和较快的检测速度。 通过使用yolov5pr曲线代码,我们可以实现以下步骤: 1. 数据集准备:首先,我们需要准备一个包含标注好的图像和对应物体类别的数据集。 2. 数据预处理:将准备好的数据集进行预处理,包括图像的缩放、归一化和图像增强等操作,以便更好地训练模型。 3. 网络架构:yolov5pr曲线代码使用了一种特殊的网络架构,包括主干网络和检测头。主干网络一般为基于ResNet或Darknet的卷积神经网络,用于提取图像特征。检测头则用于预测每个物体的边界框和类别。 4. 损失函数:为了训练网络,我们需要定义一个损失函数,用于衡量预测框与真实标注框之间的差异。一般采用的损失函数包括目标检测中常用的交叉熵损失函数和损失函数。 5. 模型训练:使用准备好的数据集和定义的损失函数,我们可以开始对yolov5pr曲线代码进行训练。训练过程中,通过反向传播更新网络参数,使得网络能够从数据中学习到物体的特征和类别信息。 6. 模型评估:在训练完成后,我们需要使用另外一组标注好的测试集对模型进行评估,以衡量其在检测任务上的性能。评估指标一般包括精确率、召回率、平均精确率均值(mAP)等。 7. 目标检测:使用训练好的模型,我们可以输入一张图像,通过前向传播获得物体检测的结果。结果包括目标类别、边界框位置和置信度等信息。 通过以上步骤,我们可以使用yolov5pr曲线代码实现物体检测任务,该算法在准确率和速度上取得了很好的平衡,适用于实时应用场景,如自动驾驶、视频监控和智能安防等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值