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

news/2024/12/23 2:23:13/

日期: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/news/1535872.html

相关文章

Redis --- 第二讲 --- 特性和安装

一、背景知识 Redis特性: Redis是一个在内存中存储数据的中间件,用于作为数据库,作为缓存,在分布式系统中能够大展拳脚。Redis的一些特性造就了现在的Redis。 在内存中存储数据,通过一系列的数据结构。MySQL主要是通…

yield:生成器 ----------------

yield:生成器 任何使用yield的函数都称之为生成器,如: def count(n):while n > 0:yield n #生成值:nn - 1另外一种说法:生成器就是一个返回迭代器的函数,与普通函数的区别是生成器包含yield语句&…

23.2 prometheus为k8s做的4大适配工作

本节重点介绍 : k8s监控中的4大采集类型总结prometheus为k8s监控做的4大适配工作 k8s关注指标分析 在监控每个细分的领域时,我们都要先思考下到底需要关注哪些方面的指标。k8s中组件复杂,我们主要专注的无外乎四大块指标:容器基础资源指标…

AR技术在电商行业的应用及优势有哪些?

AR(增强现实)技术在电商行业的应用广泛且深入,为消费者带来了全新的购物体验,同时也为商家带来了诸多优势。以下是AR技术在电商行业的主要应用场景及其优势: 一、应用场景 1、虚拟商品展示与试用 家具AR摆放&#x…

B 私域模式升级:开源技术助力传统经销体系转型

一、引言 1.1 研究背景 随着市场竞争加剧,传统经销代理体系面临挑战。同时,开源技术发展迅速,为 B 私域升级带来新机遇。在当今数字化时代,企业面临着日益激烈的市场竞争。传统的经销代理体系由于管理效率低下、渠道局限、库存压…

eNSP网络配置指南:IP设置、DNS、Telnet、DHCP与路由表管理

1.eNSP基本操作和路由器IP配置命令 登录设备:通过Console口或通过eNSP的Telnet/SSH客户端登录到设备。进入特权模式:输入system-view进入系统视图。接口配置: 进入接口视图,例如interface GigabitEthernet0/0/0。配置IP地址和子网…

黑马头条(10-1开始学习)

文章目录 开始序列化将对象与字符串相加(例如 对象 "")和序列化对象(如 JSON 序列化)之间有几个主要的区别:1. **用途**2. **输出格式**3. **适用场景**4. **性能**5. **灵活性**总结 项目手机验证码Thread…

编写高质量dbt模型实践指南

数据建模是越来越受关注的话题,尤其是在分析工程领域。数据建模和流行的数据转换工具dbt是相辅相成的。虽然数据建模概念已经存在很长时间,但dbt让它更具体、更易实现。 可以将数据模型理解为一系列转换,这些转换将数据从原始形式转化为最终可…