目标
在 没有自己的数据集 的前提下,准备一个可用的 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 环境准备
yolo26conda 环境已激活- 磁盘剩余 ≥ 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 端用预训练权重去推断业务场景 ------ 它检测不出无人机,做了也白做