069、NCNN 移动端部署:YOLOv8 到 NCNN 转换、量化与 Android 集成方案一、从一次诡异的崩溃说起上个月帮客户调一个YOLOv8的Android demo,模型在PC上跑NCNN的benchmark一切正常,一上真机就崩——不是闪退,是推理到一半直接SIGSEGV。查了两天,最后发现是模型转换时用了错误的param文件,导致卷积层的padding参数被截断。这种坑,踩过一次就再也不会忘了。今天这篇笔记,我把YOLOv8从PyTorch到NCNN的完整链路拆开揉碎,重点讲那些文档里不会写的细节:ONNX导出时哪些op会被NCNN嫌弃、量化校准集怎么选才不会让mAP掉成负数、Android端怎么把NCNN的native层和Java层优雅地串起来。二、模型转换:ONNX是中间人,但别太信任它2.1 PyTorch导出ONNX的“潜规则”YOLOv8的官方代码里export.py已经写好了导出逻辑,但直接跑出来的ONNX,NCNN不一定买账。我习惯在导出前做两件事:第一,把模型切换到eval模式,这步很多人会忘。别笑,我真见过有人用train模式导出,结果BN层的running_mean和running_var全乱套,推理结果直接飘到天上去。第二,固定输入尺寸。YOLOv8支持动态batch和动态尺寸,但NCNN对动态shape的