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

embedded/2024/12/22 0:50:54/

日期: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版本是否一样,大家感兴趣自己测试一下

python">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,查看或保存到本地就可以验证了。

python">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.ppmy.cn/embedded/126016.html

相关文章

优达学城 Generative AI 课程2:Large Language Models (LLMs) Text Generation

建议先了解一下附录知识。 文章目录 1 官方课程内容自述Lesson 1: 大型语言模型(LLMs)简介Lesson 2: 自然语言处理(NLP)基础Lesson 3: Transformer 和注意力机制Lesson 4: 检索增强生成(RAG)Lesson 5: 为大…

Python编程:创意爱心表白代码集

在寻找一种特别的方式来表达你的爱意吗?使用Python编程,你可以创造出独一无二的爱心图案,为你的表白增添一份特别的浪漫。这里为你精选了六种不同风格的爱心表白代码,让你的创意和情感通过代码展现出来。 话不多说,咱…

frida

出frida魔改过检测方案

制造已然走出国门,数据如何走向全球?

1 行业趋势和背景 1.1 海外全球化——由中国制造到中国品牌全球造的全球化布局 为实现资源的最优配置、效率的最大化,现在越来越多的制造业企业,凭借着自己的品牌力和技术能力,进行全球化布局,加速从原来的“中国制造”到“中国…

rabbitmq死信队列详解与使用

RabbitMQ 中的死信队列(Dead Letter Queue, DLQ)是处理无法正常消费消息的有效机制。以下是对死信队列的详细解读和使用方法。 1. 什么是死信队列 死信队列是一个特殊的队列,用于存储那些无法被正常消费的消息。这些消息通常会被转移到死信…

PostgreSQL学习笔记六:模式SCHEMA

模式(Schema) PostgreSQL中的模式(Schema)是一个命名的数据库对象集合,包括表、视图、索引、数据类型、函数、存储过程和操作符等。模式的主要作用是组织和命名空间数据库对象,使得同一个数据库中可以包含…

基于PHP+MySQL组合开发的720VR全景在线制作网站源码系统 带完整的安装代码包以及搭建部署教程

系统概述 该系统采用PHP作为后端开发语言,MySQL作为数据库管理系统,两者结合具有高度的稳定性和可扩展性。PHP作为一种广泛使用的开源脚本语言,具有丰富的库函数和强大的社区支持,能够轻松处理各种复杂的业务逻辑。MySQL则以其高…

sqli-labs less-14post报错注入updatexml

post提交报错注入 闭合方式及注入点 利用hackbar进行注入,构造post语句 unameaaa"passwdbbb&SubmitSubmit 页面报错,根据分析,闭合方式". 确定列数 构造 unameaaa" or 11 # &passwdbbb&SubmitSubmit 确定存在注…