YOLOv8s on CoralNPU: end-to-end int8 inference + optimization (delivery)
⚠️ 执行前必须先读两份文档,否则会踩坑: doc/yolov8s/HW-CONFIG-2026-10-20.md —— 硬件/固件配置、复现命令(§5)、期望结果(§6) doc/yolov8s/HANDOFF-2026-10-16.md —— 环境清单(§5)、10 条踩坑清单(§6) 以及 doc/yolov8s/OPTIMIZATION-SUMMARY.md —— 8 个优化阶段的完整记录。 (这些文档在 overlay/doc/yolov8s/ 下;执行 apply.sh 后位于 upstream/doc/yolov8s/。)
⚠️ 执行前必须先读两份文档,否则会踩坑:
doc/yolov8s/HW-CONFIG-2026-10-20.md
doc/yolov8s/HANDOFF-2026-10-16.md
以及 doc/yolov8s/OPTIMIZATION-SUMMARY.md —— 8 个优化阶段的完整记录。 (这些文档在 overlay/doc/yolov8s/ 下;执行 apply.sh 后位于 upstream/doc/yolov8s/。)
doc/yolov8s/OPTIMIZATION-SUMMARY.md
overlay/doc/yolov8s/
apply.sh
upstream/doc/yolov8s/
本仓库是 「YOLOv8s 在 CoralNPU 上端到端 int8 推理 + 优化」 的增量交付: 相对上游 google-coral/coralnpu 的 commit 517f4c09 的全部改动(代码 + RTL + 文档), 打包成一个 commit。
google-coral/coralnpu
517f4c09
结果(mpact ISS 实测):
读上面两份文档(HW-CONFIG §5 复现命令、HANDOFF §5 环境 + §6 踩坑清单)。
HW-CONFIG
HANDOFF
./apply.sh
脚本会:clone 上游 google-coral/coralnpu → checkout 到 517f4c09 → 把 overlay/ 的改动覆盖进去 → 得到含全部优化的完整树(在 upstream/)。
overlay/
upstream/
见 HW-CONFIG.md §5.5 / HANDOFF.md §5,要点:
HW-CONFIG.md
HANDOFF.md
yolo
ultralytics==8.4.82
tensorflow==2.19.1
toolchain
一键脚本:overlay/doc/yolov8s/tools/env_yolo.sh(注意先补 ultralytics==8.4.82 的 pin,见脚本注释)。
overlay/doc/yolov8s/tools/env_yolo.sh
cd upstream && conda activate yolo && \ python doc/yolov8s/tools/export_yolov8s_int8.py --force # 产出 sw/examples/models/yolov8s_int8.tflite(全整型变体,11,564,448 B)
说明:模型二进制不随仓库分发,由导出脚本从 yolov8s.pt(Ultralytics 官方权重)+ 标定样本再生成。
yolov8s.pt
命令全文见 HW-CONFIG.md §5,三个必带参数缺一不可:
bazel build //sw/examples/yolov8s:yolov8s_binary //tests/npusim_examples:npusim_run_yolov8s \ --action_env=PATH=<toolchain PATH> --host_action_env=PATH=<同值> \ --repo_env=CC=/usr/bin/gcc --repo_env=CXX=/usr/bin/g++ \ --distdir=<distdir>
invalid registered toolchain ... no such package '@@rules_cc++cc_configure_extension+local_config_cc'
error fetching repository '...local_config_cc'
--repo_env=CC=/usr/bin/gcc --repo_env=CXX=/usr/bin/g++
no such package '//coralnpu_test_utils/sim_backends'
git -C upstream rev-parse --short HEAD
clang: command not found
--action_env=PATH
bazel-bin/...yolov8s_binary.elf: No such file
bazel-bin
README.md # 本文件 apply.sh # 一键:拉上游 517f4c09 + 应用增量 overlay/ # 相对上游的增量(按原 coralnpu 目录结构) ├── sw/opt/litert-micro/ # 优化内核(conv/logistic/mul/add…) ├── sw/examples/yolov8s/ # 固件 ├── sw/examples/{*_probe}/ # 探针 ├── hdl/verilog/rvv/design/ # VDOT 指令 RTL(vdot_unit + 译码改动) ├── third_party/coralnpu_mpact/ # ISS 补丁(0009-0014) ├── third_party/tflite-micro/ # AddLogistic 重载补丁 ├── rules/ toolchain/ # 构建/工具链改动 └── doc/yolov8s/ # 全部文档 + 工具脚本 .gitignore # 忽略 upstream/
YOLOv8s 在 CoralNPU 上的端到端 int8 推理优化:15.9 倍提速,含 VDOT 指令 RTL 与完整文档;基于上游 517f4c09 的增量交付,按 README 可复现。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
CoralNPU · YOLOv8s 优化成果(增量交付)
这是什么
本仓库是 「YOLOv8s 在 CoralNPU 上端到端 int8 推理 + 优化」 的增量交付: 相对上游
google-coral/coralnpu的 commit517f4c09的全部改动(代码 + RTL + 文档), 打包成一个 commit。结果(mpact ISS 实测):
复现步骤(别人 / 新服务器)
第 0 步:先读文档
读上面两份文档(
HW-CONFIG§5 复现命令、HANDOFF§5 环境 + §6 踩坑清单)。第 1 步:拉上游 + 应用增量
脚本会:clone 上游
google-coral/coralnpu→ checkout 到517f4c09→ 把overlay/的改动覆盖进去 → 得到含全部优化的完整树(在upstream/)。第 2 步:装环境(版本必须精确)
见
HW-CONFIG.md§5.5 /HANDOFF.md§5,要点:yolo(模型导出+验证)ultralytics==8.4.82(≥8.4.83 会段错误)、tensorflow==2.19.1、onnx、onnxslim、numpy、pyyaml、onnxruntimetoolchain(ISS 构建)一键脚本:
overlay/doc/yolov8s/tools/env_yolo.sh(注意先补ultralytics==8.4.82的 pin,见脚本注释)。第 3 步:导出模型(.tflite 未包含在仓库,需自生成)
第 4 步:构建 → ISS 推理 → 验证
命令全文见
HW-CONFIG.md§5,三个必带参数缺一不可:常见错误(已有人踩过,先看这里)
invalid registered toolchain ... no such package '@@rules_cc++cc_configure_extension+local_config_cc'或error fetching repository '...local_config_cc'--repo_env=CC=/usr/bin/gcc --repo_env=CXX=/usr/bin/g++no such package '//coralnpu_test_utils/sim_backends'./apply.sh(它带自检,会明确报出 HEAD 不对);确认git -C upstream rev-parse --short HEAD=517f4c09clang: command not found/ 配置切换后重分析失败--action_env=PATHbazel-bin/...yolov8s_binary.elf: No such filebazel-bin软链仓库结构