[具身智能-632]:efficientnasnet、googlenet、resnet18、vargconvnet对比

📅 2026/7/23 22:40:33 👁️ 阅读次数 📝 编程学习
[具身智能-632]:efficientnasnet、googlenet、resnet18、vargconvnet对比

test_efficientnasnet_m.py test_googlenet.py test_mobilenetv1.py test_resnet18.py test_vargconvnet.py 这几种CNN网络介绍与对比

5 个网络完整介绍 + RDK X5 部署场景横向对比

文件清单:test_resnet18.pytest_mobilenetv1.pytest_googlenet.pytest_vargconvnet.pytest_efficientnasnet_m.py全部都是图像分类 CNN,适配地平线 RDK X3/X5 BPU 部署(对应你手上 NV12 输入.bin 模型 demo 体系,ImageNet-1000)。

前置背景:

  • 传统手工设计 CNN:GoogLeNet、ResNet18、MobileNetV1
  • 搜索架构 NAS:EfficientNASNet-M
  • 地平线自研高效架构:VarGConvNet(面向 BPU 硬件优化)

一、逐个网络简介

1. ResNet18(test_resnet18.py,你当前正在运行)

论文:Deep Residual Learning for Image Recognition(2015)核心创新:残差连接 Shortcut Connection,解决深度网络梯度消失,可以堆叠更深网络。

  • 结构:18 层卷积网络,基础模块Conv-BN-ReLU + 残差分支
  • 卷积:标准 3×3 普通卷积
  • 参数量:~11.7M
  • 计算量:FLOPs ~1.8G

✅ 优点

  1. 工业界最通用基线,预训练权重极多;
  2. 结构规整,BPU 调度友好;
  3. 训练稳定,微调简单; ❌ 缺点
  4. 没有深度可分离卷积,算力消耗大于轻量化网络;
  5. 单纯堆叠 3×3 卷积,移动端 / 边缘端算力利用率一般。

适用场景:通用分类、简单缺陷检测、作为检测网络 Backbone 基线。


2. MobileNetV1(test_mobilenetv1.py)

论文:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(2017)核心创新:深度可分离卷积 Depthwise Conv + Pointwise Conv,大幅削减计算量。

  • 结构:全部由DW Conv + PW Conv串联
  • 参数量:~4.2M
  • FLOPs:~0.57G

✅ 优点

  1. 初代轻量化标杆,算力远低于 ResNet18;
  2. 推理速度快; ❌ 缺点
  3. DW 卷积在部分 BPU / 硬件上并行效率一般
  4. 精度上限不高;
  5. 缺少残差结构,深层训练容易不稳定;
  6. ReLU6 激活函数。

地平线提示:DW 卷积要关注模型编译优化策略,部分场景不如 VarGConvNet。

适用场景:极低算力设备、简单分类、低速抓拍场景。


3. GoogLeNet(Inception v1,test_googlenet.py)

论文:Going Deeper with Convolutions(2014)核心创新:Inception 模块(多尺度并行卷积:1×1、3×3、5×5 同时提取特征再 concat)

  • 参数量:~6.7M(比 ResNet18 更小)
  • FLOPs ~1.5G

✅ 优点

  1. 多尺度特征原生支持,对大小差异目标友好; ❌ 缺点
  2. 分支多、concat 操作频繁;
  3. 网络拓扑碎片化;
  4. BPU 硬件调度压力大,延迟波动更大
  5. 比较老旧,同等算力下精度弱于 ResNet 系列。

适用场景:历史项目兼容,新项目基本不优先选用。


4. VarGConvNet(test_vargconvnet.py,地平线自研网络)

VarGConvNet = Variable Group Convolution Network地平线面向BPU 硬件量身设计轻量化 CNN,官方提供预训练 ImageNet 权重。 核心思想:可变分组卷积 + 硬件友好算子组合,平衡精度、访存、BPU 并行效率。

✅ 优点

  1. 针对地平线 BPU 做算子优化!同精度下,推理延迟普遍优于 MobileNetV1;
  2. 算子连续、分支少,减少 DDR 数据读写;
  3. 不需要大量 DW 卷积规避硬件短板;
  4. RDK 平台官方主推轻量化骨干之一; ❌ 缺点
  5. 第三方框架生态弱(谷歌 / 学术界不通用);
  6. 外部资料少,只能参考地平线文档;

⭐重点:RDK X3/X5 部署首选轻量化骨干之一适用场景:边缘实时分类、目标检测轻量化 backbone,推荐优先对比它和 MobileNet。


5. EfficientNASNet-M(test_efficientnasnet_m.py)

属于NAS 神经架构搜索得到的网络(地平线内部搜索得到系列,EfficientNASNet-M medium 版本) 区别于 Google EfficientNet;是地平线 NAS 产出模型。 原理:通过强化学习自动搜索最优卷积组合、通道数、网络深度,不是人工设计。

✅ 优点

  1. 在给定算力约束下,自动逼近最优精度;
  2. 相比手工网络更容易实现 “精度 / 速度平衡点”; ❌ 缺点
  3. 网络结构不规则,碎片化算子;
  4. 部分零散小卷积组合,极端情况下 BPU 利用率不如 VarGConvNet
  5. 微调难度高于 ResNet;

分级:

  • EfficientNASNet-S:小模型
  • EfficientNASNet-M:中等规模(这份 demo)
  • EfficientNASNet-L:大模型

适用场景:追求极致精度,愿意投入时间调编译参数;产品定型阶段选型对比实验。

二、综合横向对比表(ImageNet1k,RDK X5 实测参考维度)

定性排序:精度越高↑;推理耗时越低越好↓

表格

网络设计方式核心算子参数量规模ImageNet 精度 (参考)RDK X5 推理延迟特性生态通用性推荐优先级(RDK)
ResNet18人工设计标准 3×3 卷积 + 残差中大★★★★稳定,速度中等⭐⭐⭐⭐⭐ 通用基线★★★★☆
MobileNetV1人工轻量化深度可分离卷积 DW/PW★★★较快,DW 卷积硬件存在瓶颈⭐⭐⭐⭐★★★☆
GoogLeNet人工多尺度Inception 多分支 concat中小★★★分支多,延迟波动大⭐⭐⭐★★☆(新项目不推荐)
VarGConvNet地平线硬件定向人工设计可变分组卷积★★★★轻量化里速度最优,BPU 高度适配⭐⭐★★★★★(轻量化首选)
EfficientNASNet-MNAS 自动搜索搜索混合卷积结构中小★★★★☆速度中等,上限高,依赖编译优化⭐⭐★★★★(精度优先选型)

三、选型指南(直接结合你的 RDK X5 工程)

场景 1:需要通用基线、后续还要迁移检测 / 分割

👉ResNet18标准骨干,论文、预训练、开源工具链最全;适合算法验证、做精度基准对比。

场景 2:追求轻量化、低延迟,实时图像分类(摄像头 25fps+)

👉优先 VarGConvNet > MobileNetV1VarGConv 是地平线硬件特化,很多实测同样精度比 MobileNetV1 更快,访存开销更低。

场景 3:想压榨最高精度,算力余量充足

👉EfficientNASNet-MNAS 搜索架构,同等计算量精度普遍高于手工轻量化网络,代价是调参、模型编译需要多测试。

场景 4:存量旧项目维护

👉 GoogLeNet;新项目尽量不要从零启动 GoogLeNet。

四、结合你现有代码的工程提示

  1. 所有 demo 结构完全统一:读取图→resize→BGR2NV12→dnn推理→ctypes调用libpostprocess可以直接一套预处理代码无缝切换各个网络.bin 模型
  2. 模型必须使用地平线 hb_mapper 单独编译,不能跨网络混用;
  3. 如果你后续把分类骨干迁移到 FCOS/YOLO 目标检测:
    • ResNet18、VarGConvNet 最适合作为 Detection Backbone;
    • MobileNetV1 也常用;GoogLeNet 很少用于检测;
  4. 精度优化关键点: ResNet18/EfficientNASNet 可以支持更大分辨率;轻量化网络建议 224 输入。

五、补充测试建议(你可以批量跑实验)

统一条件:输入 224×224 NV12,RDK X5,统计指标:

  1. 单帧推理耗时(forward 耗时)
  2. Top1 准确率(自制测试集)
  3. BPU 占用率 最终选出:延迟 & 精度平衡点