YOLOv5:按每个类别的不同置信度阈值输出预测框

news/2024/7/10 0:06:53 标签: YOLO, 目标检测, 人工智能, 深度学习, pytorch

YOLOv5:按每个类别的不同置信度阈值输出预测框

  • 前言
  • 前提条件
  • 相关介绍
  • YOLOv5:按每个类别的不同置信度阈值输出预测框
    • 预测
      • 修改detect.py
      • 输出结果
    • 验证
      • 修改val.py
      • 输出结果
  • 参考

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入YOLO系列专栏、自然语言处理
    专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

前提条件

  • 熟悉Python

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • PyTorch 是一个深度学习框架,封装好了很多网络和深度学习相关的工具方便我们调用,而不用我们一个个去单独写了。它分为 CPU 和 GPU 版本,其他框架还有 TensorFlow、Caffe 等。PyTorch 是由 Facebook 人工智能研究院(FAIR)基于 Torch 推出的,它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的 GPU 加速的张量计算(如 NumPy);2、构建深度神经网络时的自动微分机制。
  • YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。它是一个在COCO数据集上预训练的物体检测架构和模型系列,代表了Ultralytics对未来视觉AI方法的开源研究,其中包含了经过数千小时的研究和开发而形成的经验教训和最佳实践。

YOLOv5_32">YOLOv5:按每个类别的不同置信度阈值输出预测框

在这里插入图片描述

预测

在这里插入图片描述

修改detect.py

				# filter with label, class, map
                filter_score_maps = {
                    0 : 0.45, # person
                    5 : 0.85, # bus
                }

                # Write results
                for *xyxy, conf, cls in reversed(det):
                    # filter with label, class # 按照各个类别框的置信度,过滤框
                    if int(cls) in filter_score_maps.keys() and conf < filter_score_maps[int(cls)]:
                        continue
                    if save_txt:  # Write to file
                        xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist()  # normalized xywh
                        line = (cls, *xywh, conf) if save_conf else (cls, *xywh)  # label format
                        with open(txt_path + '.txt', 'a') as f:
                            f.write(('%g ' * len(line)).rstrip() % line + '\n')

                    if save_img or save_crop or view_img:  # Add bbox to image
                        c = int(cls)  # integer class
                        label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}')
                        annotator.box_label(xyxy, label, color=colors(c, True))
                        if save_crop:
                            save_one_box(xyxy, imc, file=save_dir / 'crops' / names[c] / f'{p.stem}.jpg', BGR=True)

在这里插入图片描述

输出结果

在这里插入图片描述

验证

在这里插入图片描述

修改val.py

            # filter with label, class, map
            filter_score_maps = {
                0 : 0.45, # person
                5 : 0.85, # bus
            }

            # Write results
            filter_pred = []
            for i,(*xyxy, conf, cls) in enumerate(pred):
                # filter with label, class # 按照各个类别框的置信度,过滤框
                # print((i,conf, cls))
                if (int(cls) not in filter_score_maps.keys()) or (int(cls) in filter_score_maps.keys() and conf > filter_score_maps[int(cls)]):
                    filter_pred.append(pred[i].tolist())
                
            pred = torch.Tensor(filter_pred).to(device)

在这里插入图片描述

输出结果

在这里插入图片描述

参考

[1] https://github.com/ultralytics/yolov5.git

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入YOLO系列专栏、自然语言处理
    专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

http://www.niftyadmin.cn/n/5149371.html

相关文章

Leetcode67二进制求和

1104 代码&#xff1a; class Solution {public String addBinary(String a, String b) {StringBuffer ans new StringBuffer();int n Math.max(a.length(),b.length()),carry 0;for(int i0;i<n;i){carry i < a.length()?(a.charAt(a.length()-1-i)-0):0;carry i…

学习c++的第五天

目录 循环 循环类型 循环控制语句 无限循环 判断 判断语句 ? : 运算符 函数 函数定义 函数声明 函数参数 参数的默认值 调用函数 Lambda 函数与表达式 循环 循环类型 在计算机科学中&#xff0c;循环是一种重复执行一段代码直到满足某个条件的控制结构。通常&…

【六、http】go的http的客户端重定向

一、http的重定向 重定向过程&#xff1a;客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器–》客户浏览器发现是302响应&#xff0c;则自动再发送一个新的http请求&#xff0c;请求url是新的location地址----》服务器根据此请求寻…

多态实现的原理:动态联编

1.编译器发现一个类中有虚函数&#xff0c; 便会立即为此类生成虚函数表 vtable。 虚函数表的各表项为指向对应虚函数的指针。 2.编译器还会在此类中隐含插入一个指针 vptr指向虚函数表vtable。 调用此类的构造函数时&#xff0c;将 vptr 指向对应的 vtable&#xff0c; 将类与…

一.基本的select语句

目录 一.SQL分类二.SQL语言的规则与规范三.基本的SELECT语句四.显示表结构五.过滤数据 一.SQL分类 SQL语言在功能上主要分为如下3大类: DDL&#xff08;Data Definition Languages、数据定义语言&#xff09;&#xff0c;这些语句定义了不同的数据库、表、视图、索引等数据库对…

动态规划28(Leetcode309买股票的最佳时机含冷冻期)

1105 代码&#xff1a; class Solution {public int maxProfit(int[] prices) {int n prices.length;int[][] dp new int[n][3];dp[0][0] -prices[0];for(int i1;i<n;i){dp[i][0] Math.max(dp[i-1][0],dp[i-1][2]-prices[i]);dp[i][1] dp[i-1][0] prices[i];dp[i][2…

tcp/ip协议2实现的插图,数据结构2 (15 - 章)

(40) 40 十五1 插口层 结构socket,sysent (41) 41 十五2 插口层 实用函数与file结构描述汇总 (42) 42 十五3 插口层 函socket,socreate,pr_usrreq (43)