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 端用预训练权重去推断业务场景 ------ 它检测不出无人机,做了也白做
相关推荐
旖旎夜光3 小时前
LeetCode 137 : 只出现一次的数字 II(位运算) —— 题解
c++·笔记·学习·算法·leetcode·力控
金色光环4 小时前
概率论笔记:连续型随机变量函数的分布与尺度变换 连续型随机变量函数的分布:定义法与公式法推导
笔记·概率论
维克兜率天5 小时前
【维克】均值回归:跌多了会涨,涨多了会跌
开发语言·笔记·python·算法·均值算法·回归·量化
zhangrelay5 小时前
ROS2 Lyrical实验5导航Nav2
linux·笔记·学习·ubuntu·机器人
yi0115 小时前
DAY 14: LeetCode 394. 字符串解码|递归和栈到底怎么处理嵌套?
数据结构·笔记·python·算法·leetcode
小刘在重生~6 小时前
CSS 零基础完整学习笔记|选择器|盒子模型|布局
css·笔记·学习
浩瀚地学6 小时前
deepagents学习打卡day07
经验分享·笔记·python·学习·agent
泰晶科技6 小时前
【智能手表晶振选型:小尺寸与低功耗如何兼得】
人工智能·笔记
Awh-6 小时前
ARM 裸机开发 DAY5 学习笔记
arm开发·笔记·学习