4. 轻量化模型家族选型
在农业视觉边缘部署中,骨干网络的选择往往比训练技巧更早决定项目上限。田间的虫情测报灯、果园巡检机器人、无人机巡田吊舱,算力通常只有 0.5~6 TOPS,内存 256 MB~2 GB,功耗受电池或太阳能约束。此时“精度最高的模型”未必可用,“最轻的模型”又可能漏检小目标。本节围绕四类主流轻量骨干,讲清它们的结构差异、参数量与精度的权衡关系,并给出一套面向农业任务的选型决策依据。
四类轻量骨干的结构特征
MobileNetV3 的核心是深度可分离卷积加 SE 注意力(Squeeze-and-Excitation),并用神经架构搜索(NAS)确定通道配置。它分 Large 与 Small 两档,Large 约 5.4M 参数、2.2 亿乘加(219 MFLOPs),Small 约 2.5M 参数、0.6 亿乘加。SE 模块让网络能对通道加权,对“病斑区域与健康叶片颜色差异”这类通道可分性强的农业任务较友好,但 SE 的全局池化在极小分辨率下收益下降。
ShuffleNetV2 的设计原则来自对内存访问成本(MAC)的分析:输入输出通道数相等时 MAC 最小,分组卷积要慎用,网络分支不宜过多。它用通道拆分(Channel Split)加通道混洗(Channel Shuffle)实现跨组信息交换,1.0x 版本约 2.3M 参数、146 MFLOPs。结构规整、算子简单,在瑞芯微 RK3568、树莓派这类只有基础卷积加速的平台上实测帧率往往更稳,是“算力弱但要求实时”场景的稳妥选择。
EfficientNet-Lite 是 EfficientNet 面向边缘推理的裁剪版:去掉 SE 中的部分激活、把 Swish 换成 ReLU6、固定分辨率档位(224/240/260/280/300),以适配 INT8 量化。Lite0 约 4.7M 参数、4.1 亿乘加。它的复合缩放(深度、宽度、分辨率同时放大)让精度上限较高,但分辨率放大对边缘端延迟影响显著,需谨慎选择档位。
YOLO-Nano 一类超轻检测骨干(含 NanoDet、YOLOv5n、YOLOv8n 等同类思路)不是纯分类骨干,而是“轻骨干 + 轻检测头”的整体方案,参数量常在 0.3M~3M 量级,直接输出框与类别。它牺牲了分类任务的通用性,换取检测任务的端到端轻量,适合虫体计数、果实定位这类“只要框、不要细分类”的任务。
参数量与精度的权衡不是单调关系
上图给出的是示意性权衡关系,实际选型要理解三点。第一,参数量不等于计算量:MobileNetV3-Large 参数 5.4M,但深度可分离卷积让 FLOPs 只有 219M;EfficientNet-Lite0 参数 4.7M,FLOPs 却达 410M,因为它的分辨率档位更高。边缘端延迟更受 FLOPs 与内存带宽影响,参数量只决定模型文件大小和加载内存。第二,精度提升存在边际递减:从 2.5M 到 5M 参数,ImageNet Top-1 可能只提升 2~3 个百分点,但在农业细粒度任务(如病斑早晚期区分)上,这点差距可能决定误报率。第三,量化友好度差异明显:ShuffleNetV2 的通道拆分在 INT8 下需要额外处理拼接,部分推理框架对其量化支持不如 MobileNetV3 成熟,部署前必须验证。
面向农业任务的选型决策依据
选型不应只看公开榜单,而应按“任务形态 → 算力预算 → 数据特性 → 部署工具链”四步收敛。
第一步看任务形态。若任务是分类(叶片病害分级、种子品种识别),在 MobileNetV3 与 EfficientNet-Lite 间选;若是检测(虫体计数、果实定位、缺苗识别),优先考虑 YOLO-Nano 类端到端方案,避免“分类骨干 + 自建检测头”带来的额外调参成本。若任务是小目标密集检测,骨干轻量化收益有限,应优先提高输入分辨率或改用带 P2 浅层检测头的结构。
第二步看算力预算。以 RK3568(约 0.8 TOPS NPU)为例,INT8 下 MobileNetV3-Small 在 224×224 输入时单帧推理约 8~15 ms,ShuffleNetV2 1.0x 相近或略优;若目标 30 FPS 且还要留出预处理与后处理时间,应选 Small 档而非 Large 档。算力低于 0.5 TOPS 时,优先 ShuffleNetV2 0.5x 或 YOLO-Nano 类极小模型。
第三步看数据特性。农业数据常有两个特点:类别不均衡(健康叶片远多于病叶)和背景复杂(土壤、杂草、光照变化)。SE 注意力对通道可分性强的病斑任务有帮助,但若训练集样本少,SE 的额外参数易过拟合,此时 ShuffleNetV2 的简洁结构反而更稳。建议在自有验证集上做小规模对照,而非直接套用公开精度。
第四步看部署工具链。确认目标推理框架(TFLite、RKNN、TensorRT、NCNN)对候选骨干的算子支持。例如某些版本的 RKNN 对 Channel Shuffle 支持不完整,需在转换后做逐层精度比对;EfficientNet-Lite 的固定分辨率档位则便于提前锁定输入尺寸,减少动态 shape 带来的部署麻烦。
一个可复用的选型对照示例
下表为某果园巡检机器人项目的选型记录(参数为公开量级,延迟为合理假设的示例值,非实测):
| 候选骨干 | 参数量 | 输入尺寸 | 假设 INT8 单帧延迟 | 适用判断 |
|---|---|---|---|---|
| MobileNetV3-Small | 2.5M | 224×224 | 约 12 ms | 病害分级,精度与速度均衡 |
| ShuffleNetV2 1.0x | 2.3M | 224×224 | 约 10 ms | 弱算力平台,实时性优先 |
| EfficientNet-Lite0 | 4.7M | 224×224 | 约 22 ms | 精度优先,可接受较低帧率 |
| YOLO-Nano 类 | 约 0.9M | 320×320 | 约 18 ms | 果实定位,端到端出框 |
最后提醒一个常见误区:把骨干选型当成一次性决定。农业场景的季节性、光照与作物生长阶段会改变数据分布,建议在部署后保留一个轻量的在线评估集,按周统计漏检与误报,当分布漂移明显时再回到本节的四步决策重新评估,而不是盲目换更大的模型。