4. 工业AI模型选型与Kria部署约束

在Kria KV260或KR260上做工业AI推理,模型选型不是“精度越高越好”,而是要在检测精度、推理延迟、功耗和FPGA资源之间找到可落地的平衡点。Kria的核心计算资源是PL端的DPU(Deep Learning Processing Unit),以KV260常见的DPUCZDX8G为例,典型配置为B4096(4096个DSP等效乘加单元),在1.5GHz左右时钟下可提供约1.4 TOPS的INT8算力。这个数字决定了模型不能无限大:一个ResNet-50的INT8版本约25.6M参数、4.1G MACs,在B4096上单帧推理约十几毫秒;而YOLOv5s约7.2M参数、16.5G MACs,单帧往往需要30~50ms。选型的第一步,就是先算清楚模型的MACs和参数量,再对照DPU的算力预算。

工业场景通常分三类:质检、机器人和安防。质检以缺陷检测、分类、分割为主,输入分辨率高(如1280×1024),对漏检率敏感;机器人以目标检测、位姿估计、避障为主,要求低延迟(<30ms)和确定性;安防以人形、车辆、行为识别为主,可接受稍高延迟,但需要多路视频并行。这三类需求直接对应不同的模型族:ResNet适合高精度分类和特征提取,MobileNet适合轻量分类和骨干网络,YOLO适合实时检测。选型时先明确任务类型,再匹配模型族,最后用输入尺寸和量化敏感度做微调。

Kria DPU 资源预算与模型匹配关系 以 KV260 / DPUCZDX8G B4096 为参考,INT8 量化,1.5GHz 时钟 DPU 算力预算 ≈ 1.4 TOPS INT8 | DSP 4096 | LUT ≈ 80K | BRAM ≈ 144 ResNet 系列 适用场景 高精度分类 / 特征提取 质检缺陷分类、安防属性识别 典型参数 ResNet-18: 11.7M / 1.8G MACs ResNet-50: 25.6M / 4.1G MACs 输入尺寸 224×224(标准) 可提升至 320×320 保精度 量化敏感度 中 BN 层融合后 INT8 掉点约 0.5~1.5% Kria 匹配 B4096 可跑,延迟约 8~15ms MobileNet 系列 适用场景 轻量分类 / 检测骨干 机器人避障、移动端质检 典型参数 MobileNetV2: 3.4M / 0.3G MACs MobileNetV3-S: 2.5M / 0.06G MACs 输入尺寸 224×224(分类) 320×320(检测骨干) 量化敏感度 低 深度可分离卷积对 INT8 友好 Kria 匹配 B4096 轻松跑,延迟约 2~5ms YOLO 系列 适用场景 实时目标检测 / 定位 质检缺陷框选、机器人抓取 典型参数 YOLOv5s: 7.2M / 16.5G MACs YOLOv8n: 3.2M / 8.7G MACs 输入尺寸 640×640(标准) 416×416 可降延迟约 40% 量化敏感度 高 检测头对 INT8 敏感,需 QAT 校准 Kria 匹配 B4096 需优化,延迟约 30~50ms

输入尺寸是第二个关键约束。DPU对输入张量的通道对齐有要求:通常需要通道数为4的倍数,且H×W不宜超过4096。YOLOv5s默认640×640,在B4096上单帧约35ms;若降到416×416,MACs从16.5G降到约7G,延迟可压到20ms以内,但小目标召回率会下降。质检场景中,缺陷往往只有几十像素,此时不能盲目降分辨率,而应改用切图推理(tiling):把1280×1024切成4块640×512分别推理,再合并结果。代价是4倍推理次数,但保留了小目标细节。MobileNetV2在224×224下仅0.3G MACs,即使切图也游刃有余,适合作为高分辨率质检的骨干网络。

量化敏感度是第三个约束,也是最容易被忽视的。DPU只支持INT8推理,模型必须经过量化。ResNet的BN层在量化前需要融合进卷积,融合后INT8掉点通常在0.5%~1.5%;MobileNet的深度可分离卷积对量化天然友好,掉点往往小于1%;YOLO的检测头包含大量小数值回归输出,直接PTQ(训练后量化)可能导致mAP掉3~8个百分点,必须用QAT(量化感知训练)或至少用500~1000张校准图做PTQ校准。在Vitis AI中,量化流程是:先导出ONNX,再用`vai_q_onnx`做量化,校准集要覆盖工业现场的光照、角度和缺陷类型,否则量化后的模型在产线上会“水土不服”。

下面给出一个可执行的选型决策表,按任务类型、延迟预算和精度要求三个维度交叉判断。表中参数为示例参考值,实际需以Vitis AI编译后的实测为准。

任务类型 延迟预算 推荐模型 输入尺寸 量化方式 Kria B4096 预期延迟(示例)
质检缺陷分类 <10ms MobileNetV3-S 224×224 PTQ 约 2~4ms
质检缺陷分类 <20ms ResNet-18 224×224 PTQ + BN融合 约 6~10ms
质检缺陷检测 <50ms YOLOv8n 640×640 QAT 约 25~35ms
机器人抓取检测 <30ms YOLOv5s 416×416 QAT 约 18~25ms
安防人形检测 <40ms YOLOv5s 640×640 PTQ + 校准 约 30~45ms
高分辨率质检 <80ms MobileNetV2 + 切图 4×640×512 PTQ 约 4×3ms + 合并
实操建议:在Vitis AI中编译模型时,先用`vai_c_xir`生成DPU指令,再用`vaitrace`或`xir`工具查看每层的周期数。如果发现某层(如YOLO的Focus层或ResNet的7×7卷积)占用周期异常高,可考虑替换为等效的3×3堆叠或调整输入尺寸。KV260的DPU时钟可通过`xlnx_dpu`驱动调整,但不要超过1.5GHz,否则时序可能不收敛。

最后强调一个工程原则:模型选型不是一次性的,而是“编译—实测—回退”的迭代过程。先在PC上用Vitis AI量化并编译,得到`.xmodel`,再部署到Kria上用`xir`或`vaitrace`测实际延迟。如果延迟超标,优先降输入尺寸,其次换更轻的模型,最后才考虑降低精度要求。工业场景中,一个稳定跑30ms的YOLOv8n,往往比一个勉强跑20ms但偶尔丢帧的YOLOv5s更有价值。选型的终点不是“最优模型”,而是“在Kria资源约束下可稳定交付的模型”。