Ultralytics_yolov10目标检测,预处理函数入口

日期:2024.10.7.
随着Ultralytics的更新,yolov5-v11可以统一使用Ultralytics包体,我之前分析的yolov5关键代码定位在Ultralytics中不适用,这篇博客更新一下。

1. Ultralytics包体版本:

$ pip list | grep ultralytics
ultralytics                  8.2.101
ultralytics-thop             2.0.8

2. 测试代码

我不确定yolov10的预处理入口和其他yolo版本是否一样,大家感兴趣自己测试一下

from ultralytics import YOLO# Load a model
model = YOLO("yolov10n.pt")  # build a new model from YAML# Train the model with data augmentation enabled
results = model.train(data="your_path1/your_dataset.yaml",epochs=150,imgsz=320,batch=8,project='your_path2',name='train',pretrained=True,
)

3. train阶段预处理入口

  1. 文件:ultralytics/data/base.py
  2. 类:class BaseDataset(Dataset):
  3. 函数:def load_image(self, i, rect_mode=True):

在base.py文件中的---->BaseDataset类---->load_image函数

4. val阶段预处理函数入口

  1. 文件:ultralytics/data/augment.py
  2. 类:class LetterBox:
  3. 函数:def call(self, labels=None, image=None):

在augment.py文件中的---->LetterBox类---->__call__函数

5. 验证方法

5.1. 方法1:

修改预处理方法,查看训练结果存放的文件夹your_path2/train,这个文件夹在第2节的测试代码中指定,文件夹内可以看到train和val阶段的图片

5.2. 方法2

打断点查看进入WarmupForward的图片,打断点的位置:

  1. 文件:ultralytics/engine/trainer.py
  2. 类:class BaseTrainer:
  3. 函数:def _do_train(self, world_size=1):
  4. 在函数中找到for i, batch in pbar:并打断点

对batch中的img,查看或保存到本地就可以验证了。

images = batch['img']
save_path = "./image_{}.jpg"  # 用你自己的路径# 遍历每一张图片
for i in range(images.shape[0]):# 获取第 i 张图片的 Tensor,形状 [3, 320, 320]img_tensor = images[i]# 调整维度顺序,从 [3, 320, 320] -> [320, 320, 3]img_np = img_tensor.permute(1, 2, 0).numpy()# 将Tensor数值范围从[0, 1](假设这是你的数据范围)转换为[0, 255],并转换为uint8类型img_np = (img_np).astype(np.uint8)# 使用 PIL Image 将 NumPy 数组转换为图像img_pil = Image.fromarray(img_np)# 保存图片img_pil.save(save_path.format(i))  # 保存图片路径中带有索引i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git删除错误的commit

文章目录 1、git删除错误的commit2、.gitignore配置文件不生效的问题 1、git删除错误的commit git的流程如图: 当某次失误造成commit的版本有问题,需要回退到正常的版本修改后重新add。 首先通过git log查看commit提交记录,可以看到HEAD-…

公网IP and 局域网IP

Part 1 Java获取公网IP 在Java中获取公网IP地址(即外部IP地址,而非局域网地址)通常需要借助外部服务,因为Java本身没有直接获取公网IP地址的API。你可以通过向一个外部服务发送HTTP请求,然后解析其返回的响应来获取公…

JAVA毕业设计191—基于Java+Springboot+vue的电子产品商城管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的电子产品商城管理系统(源代码数据库)191 一、系统介绍 本项目前后端不分离,分为用户、管理员两种角色 1、用户: 注册、登录、商品…

C++设计模式——代理模式

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言代理模式的定义代理模式的具体实现 引言 我们经常听到代理服务器「代理服务器是一个中间服务器,能够接收客户端的请求,并代表客户端向服务器发起请求,然后将服…

金蝶云星空与金蝶云星空对接集成采购订单查询连通采购订单新增(采购订单)

金蝶云星空与金蝶云星空对接集成采购订单查询连通采购订单新增(采购订单) 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用…

git stash命令的使用

工作中,若正在一个分支进行开发,而另一个分支出现bug,这时候,不想commit代码,我们就可以使用git stash将代码暂时存储起来,git stash就相当于一个临时暂存区,这样git status就会发现工作区是干净…

YOLOv10改进策略【注意力机制篇】| 2024 SCSA-CBAM 空间和通道的协同注意模块

一、本文介绍 本文记录的是基于SCSA-CBAM注意力模块的YOLOv10目标检测改进方法研究。现有注意力方法在空间-通道协同方面未充分挖掘其潜力,缺乏对多语义信息的充分利用来引导特征和缓解语义差异。SCSA-CBAM注意力模块构建一个空间-通道协同机制,使空间注意力引导通道注意力增…

HTTP 协议详解

HTTP 协议是 Web 的基石,它定义了客户端和服务器之间的通信规则。本文将深入地探讨 HTTP 的核心概念,包括工作原理、请求方法、状态码以及不同 HTTP 版本的演进。 一、HTTP 的工作原理 HTTP 协议基于客户端-服务器模型,遵循请求-响应的循环&…

opencv学习:CascadeClassifier和detectMultiScale算法进行人脸识别

CascadeClassifier CascadeClassifier 是 OpenCV 提供的一个用于对象检测的类,它基于Haar特征和AdaBoost算法。它能够识别图像中的特定对象,比如人脸、眼睛、微笑等。CascadeClassifier 需要一个预训练的XML分类器文件,该文件包含了用于检测…

Mac 需要杀毒软件?

大部分 mac用户普遍认为 Apple mac 不受病毒和恶意软件的影响。这导致许多 Mac 用户误以为无需为 Mac 安装防病毒软件,但事实并非如此。 在这篇文章中,将深入探讨 Mac 安全性的细节,探索针对 Apple 设备的恶意软件类型,并为您…

Python和CUDA(C++)量子退火和伊辛二次算法模型

🎯要点 简化量子退火或离散优化算法处理,使用张量网络模拟和动态系统方法及神经网络逼近。实现并行退火算法和CUDA支持下穷举搜索法。使用大都会算法模拟二维自旋玻璃伊辛模型并测量磁化率、比热容和能量。对比其他组合优化解方法,使用英伟达…

Windows 安装 Maven 并配置环境变量

一、简介 Maven 是一款基于 Java 平台的项目管理和整合工具,用来构建项目的。也就是清理、编译、测试、运行、打包、安装整个过程都交给 Maven 管理,整个过程就是构建。 二、安装 Java JDK Maven 依赖 Java JDK,如果本机没有安装过 Java 的…

C#使用PdfSharp生成PDF文件实例详解

许多项目开发中需要生成PDF, 常规办法使用官方提供的Microsoft.Office.Interop.Worddll插件,但是这种方法需要完全安装OFFICE,另外版本不一致还会出现很多错误。一般不推荐使用。 下面介绍几种巧妙的用法,定能事半功倍。 本文使用PDFsharp完成功能。 PDFsharp一款开源的…

CRM客户关系管理系统的功能、作用、特点有哪些?

大家都知道,CRM是销售常用的客户关系管理系统。销售是客户关系管理系统中的主要组成部分,主要包括潜在客户、客户、联系人、业务机会、订单、回款单、报表统计图等模块。那么CRM只能销售人员用来管理客户关系吗? 其实,CRM的功能远…

HUAWEI_HCIA_实验指南_Lib2.1_交换机基础配置

1、原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数,比如速率、双工模式等。交换机的全双工是指交换机在发送数据的同时也能够接收数据,两者同时进行。就如平时打电话一样,说话的同时也能够听到对方的声音。而半双工指在同一…

开发日志:IIS安全配置

为了解决IIS文件路径泄漏问题,可以采取以下措施: 一. 详细操作 1. CMD关闭NTFS 8.3文件格式的支持 命令行:fsutil 8dot3name set 1 2. 修改注册表禁用短文件名功能 CMD输入regedit回车,在注册表中找到HKEY_LOCAL_MACHINE\SYSTEM\C…

离职跳槽,不要上了这些当!

在离职跳槽的过程中,许多人可能会遇到各种陷阱和误导,这些不当行为不仅会影响个人的职业发展,还可能带来经济损失和法律风险。以下是一些常见的离职跳槽陷阱及应对策略,帮助你避免上当。 一、离职前的陷阱 1. 盲目冲动离职 现象…

科大讯飞C++开发一面-面经总结

1、内存泄漏和内存溢出的概念? 内存泄漏定义:内存泄漏是指程序在动态分配内存后,失去了对该内存的引用,但该内存并没有被释放。也就是说,程序无法再访问这块内存区域,导致这部分内存被“遗忘”而无法被回收…

uniapp学习(005-1 详解Part.1)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第36p-第p40的内容 文章目录 响应式尺寸单位 rpx各种工具修改ui给的图片的宽度ps操作步骤即时设计操作步骤&…

Cherno游戏引擎笔记(61~72)

---------------一些维护和更改------------- 》》》》 Made Win-GenProjects.bat work from every directory 代码更改: echo off->pushd ..\->pushd %~dp0\..\call vendor\bin\premake\premake5.exe vs2019popdPAUSE 为什么要做这样的更改? …