Phase A · Step 2:预训练权重与 Pipeline 验证准备

目标

在 没有自己的数据集 的前提下,准备一个可用的 YOLO26 预训练权重, 用于打通「PC 导出 ONNX → 板端 ATC → 板端 ACL 推理」整条 pipeline。

注意 :这一步不是 用预训练权重去检测无人机(Ultralytics 官方权重是 COCO 80 类,不含 drone), 只是借它的网络结构 / 张量形状,把整条工程链路先跑通。等到 08 数据集准备 + 09 模型训练 完成后,只需重新训练,再用新权重重跑 03 → 07 即可,pipeline 部分完全不用改。

为什么要先走 pipeline 验证?

数据集准备(08)是整个流程里最慢、最不可控的一环 ------ 收集图片、标注、QA, 搞一周很正常。如果 pipeline 本身有 bug(ATC 算子不兼容、ACL API 用法错、板端 环境问题等),等到训完模型才发现,所有训练时间都浪费了。

正确策略:

bash 复制代码
Pipeline 验证(用预训练权重,1-2 小时)→ 板端链路全跑通
       ↓
同步进行:数据集准备(08)
       ↓
数据集到位 → 模型训练(09)→ 重跑 03 → 07

前提条件

  • 已完成 01 PC 环境准备
  • yolo26 conda 环境已激活
  • 磁盘剩余 ≥ 2GB(预训练权重 + 中间产物)

步骤

2.1 下载预训练权重

Ultralytics 提供多种规模的 YOLO26 权重:

权重 体积 适用场景
yolo26n.pt ~5 MB 推荐先用这个,最小最快,验证 pipeline 够用
yolo26s.pt ~20 MB 中等规模,pipeline 验证也很快
yolo26m.pt / yolo26l.pt / yolo26x.pt 50-150 MB 留到真实训练阶段按需选用

先激活环境

bash 复制代码
conda activate yolo26

如果一直激活不了环境,可以使用下面命令初始化

bash 复制代码
# 先用 cmd 或 Anaconda Prompt 运行一次初始化(注意:用你自己的 shell 名字)
conda init powershell

初始化后成功激活环境

在项目根目录(建议新建 weights/ 目录避免污染)执行:

bash 复制代码
mkdir -p weights
bash 复制代码
cd weights
bash 复制代码
# 自动下载 yolo26n.pt 到当前目录
python -c "from ultralytics import YOLO; m = YOLO('yolo26n.pt'); print('downloaded')"

成功下载

第一次运行会从 GitHub release 下载 yolo26n.pt(约 5 MB)到 weights/。 国内网络可能慢,若超时:

bash 复制代码
# 手动从镜像下载(需确认 Ultralytics 当前 release URL)
# 或者用代理:
HTTP_PROXY=http://127.0.0.1:7890 python -c "from ultralytics import YOLO; m = YOLO('yolo26n.pt'); print('OK')"

2.2 Sanity check:用预训练权重做一次推理

确认权重文件本身没坏、能正常加载 + 推理:

在weights/目录下新建 test.py:

python 复制代码
# weights/test.py
from ultralytics import YOLO
from PIL import Image
import numpy as np

# 构造一张随机测试图(640x640 RGB)
img = (np.random.rand(640, 640, 3) * 255).astype('uint8')
Image.fromarray(img).save('_dummy.jpg')

# 加载预训练权重
model = YOLO('yolo26n.pt')

# 推理
results = model('_dummy.jpg', imgsz=640, verbose=False)
print(f"Detected {len(results[0].boxes)} objects (随机图应为 0)")

# 检查输出张量形状(确认是 1x3x640x640 输入)
print(f"Model task: {model.task}")
print(f"Model names: {model.names}")   # COCO 80 类

运行:

bash 复制代码
cd weights
python test.py

预期输出(部分):

看到 Model names 打印出 COCO 80 类(person、bicycle、car...)即代表权重可用。

2.3 准备一张真实的测试图(推荐)

随机图能验证加载,但验证不了推理逻辑。准备 1-3 张真实的户外/天空图(JPG/PNG 均可)放到:

bash 复制代码
mkdir -p weights/test_images
# 把测试图复制/下载到 weights/test_images/

可以用手机随手拍一张天空、或者从 Unsplash / Pexels 下载一张。

后续 03 导出 ONNX、05 ATC、06 ACL 时都会用到 test_images/ 里的图。

2.4 预训练权重在 Pipeline 中的角色

后续步骤里,预训练权重 yolo26n.pt 会临时充当 best.pt:

步骤 用预训练权重的位置
03 模型导出 ONNX yolo export model=weights/yolo26n.pt format=onnx ...
05 ATC 模型转换 喂入上面导出的 .onnx
06 ACL 推理部署 加载 .om 推理,输入 test_images/ 里的图
07 端到端验证 smoke test:能跑出非空结果(即使类别是 bird)就视为 pipeline 通过

注意事项

  • 不要把 weights/ 提交到 git :在项目根加 .gitignore:weights/.pt weights/.onnx weights/test_images/
  • 预训练权重 + 模型产物会持续增大,注意定期清理
  • 不要在 PC 端用预训练权重去推断业务场景 ------ 它检测不出无人机,做了也白做
相关推荐
新手小新4 小时前
通信工程师学习笔记5-通信系统
笔记·学习
鸽芷咕4 小时前
把 SQL 编辑器用顺:KSQL Developer 从补全到事务的实战笔记
笔记·sql·编辑器
LuminousCPP4 小时前
数据库学习笔记(二):MySQL 基础操作入门|在 CentOS Stream 10 上连接、建库与建表
数据库·经验分享·笔记·学习·mysql·centos
cao233316 小时前
关于 y0 y1 yn 变量名冲突说法的指正
笔记
~patience~1 天前
WAV 逆向分析工具使用笔记
笔记
滴啦嘟啦哒1 天前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
xier_ran1 天前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习
连山齐名1 天前
ai应用开发的学习笔记
服务器·笔记·学习
乔旭伟1 天前
中小厂生产管理系统选型笔记:驱动方式、主线链路与成本结构
笔记·需求分析·规格说明书
xier_ran1 天前
【infra之路】AI 编译器学习笔记(十四):为什么要 tiling,以及矩阵计算单元的“固定“
人工智能·笔记·学习