装配视觉算法迁移至昇腾NPU,不是把原模型文件复制到Atlas设备,而是完成模型格式、算子、输入输出、运行时接口和验收口径的系统适配。典型路径为:固定原始模型基线,导出ONNX,检查图结构与算子,使用ATC生成面向目标昇腾处理器的OM模型,通过AscendCL接入推理,再完成前后处理一致性、检测结果、运行性能和版本交付验证。
稳格科技的装配视觉检测软件与算法应用已经在华为昇腾Atlas 200I DK A2上运行。对于采用分类、目标检测或分割模型的项目,可以在现有相机接入、ROI配置、结果记录和本地部署基础上增加昇腾NPU模型推理链路。
迁移前需要固定哪些输入?
开始迁移前应形成可复现的基线包,至少包括:
- 原始训练框架、模型结构、权重和导出脚本;
- ONNX模型的输入名称、输入尺寸、数据类型和动态维度要求;
- 图像颜色顺序、缩放、裁剪、归一化和张量排列方法;
- 分类标签、检测框解码、置信度阈值、NMS或分割后处理规则;
- 一组固定的OK、NG和边界样本及其期望结果;
- 目标Atlas设备、昇腾处理器型号、操作系统、CANN和算子包版本;
- 准确率、漏检、误报、单次耗时、吞吐和内存等项目验收指标。
如果这些输入没有固定,模型转换成功也无法判断迁移前后差异来自模型、前处理、后处理还是版本环境。
第一步:建立原模型结果基线
使用同一组验收图片运行原模型,保存输入张量、原始输出、后处理结果和最终业务判定。目标检测项目还应保存检测框、类别、置信度和NMS后的结果;分割项目应保存掩膜尺寸、类别映射和轮廓结果。
基线的作用不是给出统一准确率,而是为后续ONNX和OM结果提供逐样本比较依据。项目指标应按客户样本、缺陷定义和工位条件确定。
第二步:导出并检查ONNX模型
从训练框架导出ONNX后,需要检查:
- 输入、输出节点名称是否稳定;
- 输入尺寸是固定尺寸还是动态尺寸;
- 算子版本与图结构是否符合目标转换环境;
- 是否包含仅在训练阶段使用的节点;
- ONNX运行结果与原模型结果是否在约定误差范围内。
这一步应先解决模型本身的导出问题,再进入昇腾侧转换,避免把源模型差异带入设备端。
第三步:检查算子兼容性和图结构
ATC转换前应核对模型使用的算子、属性、数据类型和shape约束。若出现不支持的算子或组合,可以根据模型结构选择图改写、等价算子替换、拆分前后处理或定制算子,不应仅以“转换命令执行完成”作为适配完成标准。
对于动态batch、动态图像尺寸或动态维度,需要根据实际工位输入配置对应档位。固定相机和固定检测尺寸的装配工位通常可以先使用固定shape,减少运行时分支并便于验收。
第四步:使用ATC生成OM模型
华为昇腾官方文档说明,ATC用于把ONNX等开源框架模型转换为昇腾AI处理器可识别的OM离线模型。典型命令结构如下:
atc --model=model.onnx
--framework=5
--output=model_atlas
--input_shape="images:1,3,H,W"
--soc_version=<目标昇腾处理器型号>
实际参数必须与模型输入、目标处理器和项目环境一致。转换时应保存ATC命令、环境版本、转换日志、检查报告和生成文件的SHA-256,用于追溯和复现OM模型构建过程。
第五步:接入AscendCL推理链路
OM模型生成后,需要在设备端应用中完成资源初始化、设备选择、模型加载、输入输出内存管理、模型执行、结果读取和资源释放。装配视觉系统的完整数据路径通常为:
工业相机或图像文件
-> 解码、裁剪与图像质量检查
-> resize、颜色转换、归一化与张量排列
-> OM模型推理
-> 分类、检测框或分割结果解码
-> ROI与装配业务规则
-> PASS / FAIL / UNKNOWN
-> 证据图、结果记录与工位接口
推理接口只负责模型计算,最终工位判定还要处理触发去重、画面质量、结果证据、异常状态、PLC或I/O接口和数据追溯。
第六步:验证前处理和后处理一致性
迁移项目中常见差异并不一定来自模型本身,颜色顺序、插值方法、归一化系数、量化方式、张量布局、坐标缩放和NMS参数都可能改变输出。
建议按以下层级比较:
- 输入层:比较进入原模型和OM模型的张量;
- 输出层:比较模型原始输出的形状、数值范围和节点顺序;
- 算法层:比较类别、检测框、掩膜和置信度;
- 业务层:比较每张样本的PASS、FAIL或UNKNOWN结果;
- 证据层:比较缺陷位置、标注图和结果记录是否对应同一工件。
只有逐层定位差异,才能判断需要调整模型转换、数据处理还是业务规则。
第七步:完成设备端性能和稳定性验证
性能测试应在目标Atlas设备、正式图像尺寸和实际处理链路上进行,并区分:
- 图像采集或解码时间;
- 前处理时间;
- 单次模型推理时间;
- 后处理和业务规则时间;
- 证据图及结果文件写入时间;
- 端到端工位响应时间。
测试结果应同时记录模型版本、OM文件哈希、CANN版本、处理器型号、输入尺寸、batch、精度模式、预热次数和样本数量。准确率、生产节拍和长期稳定性按具体项目的独立验收集与连续运行条件确认。
第八步:形成可回滚的版本交付
正式交付至少应包含:
- 原始模型或约定范围内的模型源文件;
- ONNX模型及导出说明;
- OM模型、ATC命令、转换日志和校验值;
- 前处理、推理、后处理和业务接口代码;
- 操作系统、CANN、算子包和依赖版本清单;
- 样本验证结果、差异记录和性能测试报告;
- 配置、服务启动、日志、升级、备份和回滚说明。
稳格科技可将模型迁移工作与相机、光学、ROI、I/O、界面、结果追溯及本地部署一起实施,使模型推理成为完整装配检测系统的一部分,而不是孤立的模型演示。
哪些问题最容易影响迁移结果?
| 问题 | 常见表现 | 处理方向 |
|---|---|---|
| 输入定义不一致 | 结果整体偏移或置信度异常 | 固定颜色、尺寸、归一化和张量布局 |
| 算子或shape不兼容 | ATC转换失败或输出结构变化 | 图改写、算子替换、动态档位或定制算子 |
| 后处理不一致 | 检测框数量、位置或类别不同 | 统一解码、阈值、NMS和坐标还原 |
| 版本组合不固定 | 同一模型在不同环境表现不同 | 固定系统、CANN、算子包和OM构建记录 |
| 只测模型耗时 | 现场节拍仍不满足要求 | 测量采集到结果输出的完整链路 |
| 缺少独立验收集 | 无法判断迁移是否保持业务效果 | 使用未参与调参的OK、NG和边界样本 |
常见问题
ONNX模型可以直接在昇腾NPU上运行吗?
通常需要根据目标昇腾处理器和CANN环境,使用ATC把ONNX模型转换为OM离线模型,再由AscendCL等设备端接口加载和执行。
转换生成OM文件是否等于迁移完成?
不等于。还需要完成输入输出对接、前后处理一致性、逐样本结果比较、设备端性能测试、异常处理和版本交付验证。
传统视觉规则是否必须全部改成神经网络?
不需要。固定位置、边界清楚的ROI规则可以继续保留;分类、目标检测或分割模型用于处理类别变化、复杂背景和语义识别任务,二者可以在同一Atlas应用中组合。
同一个OM模型可以直接用于所有Atlas设备吗?
OM模型转换参数与目标昇腾处理器及软件环境有关。项目实施时应按目标设备确认处理器型号、CANN和算子包版本,并保留对应构建记录。
如何判断迁移前后结果一致?
应使用固定样本逐层比较输入张量、模型原始输出、算法结果和最终业务判定,并按双方确认的误差、准确率和工位规则验收,不能只比较少量演示图片。
官方资料来源
- 华为昇腾:ONNX模型转换为OM模型
- 华为昇腾:ATC命令行参数与算子约束
https://www.hiascend.com/document/detail/en/canncommercial/850/devaids/atctool/atlasatc_16_0039.html
- 华为昇腾:AscendCL模型构建与应用开发
Atlas、昇腾、CANN、AscendCL及相关名称归其权利人所有。本文说明稳格科技面向装配视觉项目提供的适配方法,不表示相关权利人参与或认可具体项目。设备和工具能力以对应官方版本文档为准,项目结果以实际模型、样本、设备和验收条件为准。
在线咨询
电话咨询
微信咨询
回到顶部