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

日期:2024.10.7.

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

1. Ultralytics包体版本:

bash 复制代码
$ 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

打断点查看进入Warmup或Forward的图片,打断点的位置:

  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
相关推荐
一水鉴天5 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能
198******126346 小时前
2026 企业 AI 办公产品选型指南:从场景匹配判断工具价值
人工智能
玫瑰互动GEO6 小时前
GEO优化学习九级模型:开发者从认知层切入
人工智能·ai·ai搜索·gem·生成式引擎优化·gem优化
海绵宝宝转agent6 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
Ruiery6 小时前
Linux 6.6内核 CPU 深度解析(七):调度器启动 — 从单核到多核,调度器分阶段点亮
linux·运维·服务器
小奇不哭6 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
50万马克的面包6 小时前
CSDN-栈队列数组-知识点整理
linux·运维·服务器
每天都要写算法(努力版)6 小时前
【行业前沿报告】DAgger:让智能体在自己走到的状态上学习
人工智能·学习·机器学习
liron716 小时前
智能实体演化系统的统一性概念
人工智能·深度学习·神经网络
小小龙学IT6 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn