利用高通跃龙QCS9100平台部署工业异常检测模型PaDiM(2): QNN转换与板端部署
前言上一篇我们把PaDiM模型的 backbone 导出成了 ONNX统计参数也存好了。接下来就是把 ONNX 转成 高通QCS9100平台上跑的格式再在板子上把完整推理链路跑通。说实话QNN 这套工具链第一次用会觉得有点绕但只要按步骤来问题不大。这篇会尽量把命令和路径写清楚你照着做能少踩点坑。1. QNN SDK 安装与路径说明1.1 下载 QNN SDK去高通开发者官网下 QNN SDK选和你 QCS9100 系统匹配的版本比如 2.18、2.20 等。解压后目录大概长这样qnn-v2.18.0/ ├── bin/ │ ├── x86_64-linux-clang/ # x86 Linux 工具 │ └── aarch64-android/ # Android 目标 ├── lib/ ├── include/ └── ...我们主要用qnn-onnx-converter和qnn-model-lib-generator这两个在 bin 下面。1.2 设置环境变量export QNN_SDK_ROOT/path/to/qnn-v2.18.0 export PATH$QNN_SDK_ROOT/bin/x86_64-linux-clang:$PATH export LD_LIBRARY_PATH$QNN_SDK_ROOT/lib/x86_64-linux-clang:$LD_LIBRARY_PATH建议写进~/.bashrc每次开终端自动生效。1.3 检查工具是否可用qnn-onnx-converter --help qnn-model-lib-generator --help能打出帮助信息说明环境 OK。2. ONNX 转 QNN 模型2.1 准备 ONNX 模型上一篇导出的padim_resnet18_backbone.onnx直接拿来用。如果输入是动态 batch建议先固定成 1避免板端一些奇奇怪怪的问题# fix_onnx_batch.py import onnx from onnx import shape_inference model onnx.load(padim_resnet18_backbone.onnx) # 固定 batch1 for inp in model.graph.input: for d in inp.type.tensor_type.shape.dim: if d.dim_param batch: d.ClearField(dim_param) d.dim_value 1 onnx.save(model, padim_resnet18_backbone_fixed.onnx)2.2 运行转换qnn-onnx-converter \ --input_network padim_resnet18_backbone.onnx \ --output_path padim_qnn \ --input_list input_names.txtinput_names.txt内容根据你 ONNX 的实际输入名调整image 1 3 256 256格式是输入名 batch channel height width。2.3 量化QCS9100 的 NPU 跑 INT8 比 FP32 快很多建议做量化。准备一些校准图片正常样本裁成 256×256列个清单# calibration_list.txt /path/to/img1.png /path/to/img2.png ...然后qnn-onnx-converter \ --input_network padim_resnet18_backbone.onnx \ --output_path padim_qnn_quant \ --input_list input_names.txt \ --quantization_overrides quantization_overrides.jsonquantization_overrides.json示例按需调整{ ConvertFp16ToFp32: [Conv, Gemm], Quantization: { image: { quantization_scheme: quantization_scheme_range_unsigned_symmetric, bit_width: 8, calibration_method: calibration_method_per_channel } } }量化这块不同版本 QNN 参数可能不一样以官方文档为准。转完之后会得到.bin和.cpp等文件这些就是板端要用的。3. 生成可执行库qnn-model-lib-generator \ --model padim_qnn/padim_resnet18_backbone.cpp \ --model padim_qnn/padim_resnet18_backbone.bin \ --output_dir padim_lib生成完会有一坨.so或静态库这就是在 QCS9100 上要链接的推理库。4. 板端部署思路4.1 文件准备把下面这些拷到板子padim_lib/下的库文件padim_mean.npy、padim_cov_inv.npyQNN 的 runtime 库在 QNN SDK 的lib里按目标架构选4.2 推理流程伪代码初始化QNN context加载 backbone 模型加载padim_mean.npy、padim_cov_inv.npy循环a. 从摄像头/文件读一帧图像b. 预处理resize 到 256×256减均值除方差和训练时一致c. 调用 QNN 执行 backbone 前向 → 得到 layer1/2/3 特征d. 按 PaDiM 论文把多层特征拼接、reshapee. 用马氏距离公式算异常分数f. 大于阈值判异常可选画热力图4.3 Python 板端示例有 QNN Python 绑定时# 伪代码具体 API 以 QNN Python 包为准 from qnn import QNNRuntime import numpy as np rt QNNRuntime(model_pathpadim_backbone.qnn) mean np.load(padim_mean.npy) cov_inv np.load(padim_cov_inv.npy) def infer(image): # image: 256x256x3, 预处理后 feat rt.execute(image) # 按 PaDiM 公式算马氏距离 score mahalanobis(feat, mean, cov_inv) return score4.4 C 板端高通一般推荐用 C 调 QNN性能更好。流程就是用QnnContext加载模型QnnInterface::graphExecute()跑推理取输出 buffer在 CPU 上做马氏距离和热力图这部分代码量不少建议直接参考 QNN SDK 里的 sample把输入输出改成 PaDiM 的就行。5. 性能与阈值 tuning时延backbone 在 NPU 上大概几毫秒到十几毫秒看量没量化、输入尺寸马氏距离在 CPU 上很快整体可以做到几十毫秒一帧。阈值用验证集或测试集正常/异常样本算一遍分数画个分布挑个合适的阈值让召回率和误报率平衡一下。6. 小结这篇把 ONNX → QNN → 板端推理的主线走通了重点是QNN SDK装好环境变量设对qnn-onnx-converter把 backbone 转成 QNN 格式能做量化尽量做板端QNN 跑 backboneCPU 算统计部分两者结合就是完整的 PaDiM 推理该系列完。

相关新闻

【51单片机实战】定时器中断与蜂鸣器报警系统的Proteus仿真设计

【51单片机实战】定时器中断与蜂鸣器报警系统的Proteus仿真设计

1. 从闪烁的LED到会“唱歌”的蜂鸣器:为什么需要定时器中断? 大家好,我是老张,一个在单片机圈子里摸爬滚打了十多年的“老电工”。今天咱们不聊那些高大上的AIoT,就聊聊最基础、也最核心的51单片机实战——用定时器中断…

2026/5/17 12:02:11 阅读更多 →
股票数据采集与金融分析实战指南:3大场景+5个实战技巧

股票数据采集与金融分析实战指南:3大场景+5个实战技巧

股票数据采集与金融分析实战指南:3大场景5个实战技巧 【免费下载链接】akshare 项目地址: https://gitcode.com/gh_mirrors/aks/akshare 在金融市场中,数据是决策的基石。无论是个人投资者还是机构分析师,都需要高效、准确地获取和分…

2026/5/17 12:02:11 阅读更多 →
KART-RERANK实战:优化Python爬虫采集数据的智能去重与排序

KART-RERANK实战:优化Python爬虫采集数据的智能去重与排序

KART-RERANK实战:优化Python爬虫采集数据的智能去重与排序 你是不是也遇到过这样的烦恼?用Python爬虫吭哧吭哧抓了一大堆文章、新闻或者商品信息,结果发现里面好多内容都是重复的,或者跟你想找的主题压根不沾边。手动筛选&#x…

2026/7/3 0:57:14 阅读更多 →

最新新闻

GPT-4o与GPT-4本质差异:多模态对齐与端到端延迟的工程选型指南

GPT-4o与GPT-4本质差异:多模态对齐与端到端延迟的工程选型指南

1. 这不是参数表对比,而是真实场景下的能力分水岭“GPT-4o和GPT-4有什么区别?”——这个问题我每天在技术群、产品会、客户咨询里至少看到17次。但绝大多数人点开的所谓“对比文章”,只是把OpenAI官网那张模糊的性能雷达图截图下来&#xff0…

2026/7/5 9:57:02 阅读更多 →
Unity游戏汉化神器:XUnity Auto Translator 5分钟快速入门指南

Unity游戏汉化神器:XUnity Auto Translator 5分钟快速入门指南

Unity游戏汉化神器:XUnity Auto Translator 5分钟快速入门指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因语言障碍而错失精彩的Unity游戏体验?面对日语、英语或其他…

2026/7/5 9:57:02 阅读更多 →
Seraphine:英雄联盟智能助手完整指南,轻松提升你的游戏体验

Seraphine:英雄联盟智能助手完整指南,轻松提升你的游戏体验

Seraphine:英雄联盟智能助手完整指南,轻松提升你的游戏体验 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾经在英雄联盟排位赛中因为错过接受对局而懊恼不已?是否…

2026/7/5 9:55:02 阅读更多 →
Grok模型在中国大陆可用吗?合规大模型接入指南

Grok模型在中国大陆可用吗?合规大模型接入指南

我不能提供与Grok或SuperGrok相关的注册、订阅或升级教程。 原因如下: Grok系列模型(Grok-1、Grok-2、Grok-3等)由埃隆马斯克旗下公司xAI开发, 未向中国大陆地区开放公开注册、API接入或用户订阅服务 。截至目前(2…

2026/7/5 9:55:02 阅读更多 →
从LLM到AI Agent:OpenAI合并ChatGPT与Codex的技术解析与实战指南

从LLM到AI Agent:OpenAI合并ChatGPT与Codex的技术解析与实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你还在把 ChatGPT 当作一个“更聪明的聊天机器人”,那么你可能已经落后了。最近,OpenAI 内部的一则重磅消…

2026/7/5 9:53:02 阅读更多 →
MATLAB多缝光栅衍射仿真工具:实时调节参数看光强分布变化

MATLAB多缝光栅衍射仿真工具:实时调节参数看光强分布变化

本文还有配套的精品资源,点击获取 简介:用MATLAB直接跑起来就能看多缝光栅在远场条件下的衍射效果,支持缝数、缝宽、缝间距、入射光波长四个关键参数自由调整,每次改动后图像立刻刷新——光强曲线图和二维衍射图样同步更新。主…

2026/7/5 9:53:02 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻