轻量级网络
2017年,轻量谷歌发了一篇论文,轻量提出了一种叫MobileNet的轻量卷积神经网络结构。它的轻量核心操作叫"深度可分离卷积",把标准卷积拆成两步走。轻量效果很直接:计算量降到原来的轻量八到九分之一,参数量也大幅缩水,轻量但图像分类的轻量准确率只掉了不到两个百分点。这个结果放到今天看依然让人兴奋——原来模型可以瘦身这么多,轻量却不怎么伤筋动骨。轻量 这事得从卷积本身说起。轻量标准卷积在做一个3×3的轻量核时,每个输出通道都要跟所有输入通道做乘加运算。轻量输入64通道、轻量输出128通道的轻量话,计算量就是64×128×3×3。深度可分离卷积把它拆开:先让每个输入通道各自做一次空间卷积,再用1×1的卷积做通道间的信息融合。计算量变成64×3×3加上64×128。差距在通道数大的时候非常明显。 我第一次在树莓派上跑MobileNet的时候,帧率大概能到15帧左右。同样的任务换成ResNet-50,直接卡成幻灯片。这不是实验室里的纸面数据,是真实硬件上的手感差异。轻量级网络解决的就是这个问题——让模型能在手机、摄像头、嵌入式板子上跑起来,而不是非得挂一块GPU。 不过轻量级网络不只是"把大模型砍小"这么简单。砍法有很多种,各有各的代价。 MobileNet走的是结构设计路线,从卷积方式本身下手。ShuffleNet换了个思路,用分组卷积加通道混洗,让不同组之间的信息能流通。还有一类做法是神经架构搜索,让算法自己去搜一个又小又好的结构,比如MobileNetV3就是这么来的。另外一条路是量化——把32位浮点参数压成8位整数甚至更低,模型体积直接缩到四分之一,推理速度也能提升两三倍。剪枝则是另一条路,把训练好的网络里那些贡献小的连接直接去掉。 这些方法经常叠着用。一个典型的部署方案可能是:先用MobileNetV3做骨架,训练完做量化感知训练,再导出成TFLite格式,最后跑在手机NPU上。每一步都在抠那几毫秒的延迟和几兆的存储。 但轻量级网络有个绕不开的矛盾。模型越小,表达能力越有限。在ImageNet上,MobileNetV2的top-1准确率大概72%,ResNet-50能到76%。四个百分点的差距在学术榜单上看着不大,放到实际场景里——比如医学影像筛查或者自动驾驶的障碍物检测——可能就是漏检和误检的区别。所以选不选轻量级网络,本质是在延迟、功耗、存储和精度之间做取舍。没有免费午餐。 我自己的经验是,很多团队一上来就想用最大的模型,觉得精度高就万事大吉。结果部署的时候发现推理时间根本达不到要求,又回头返工。不如一开始就明确硬件约束,倒推模型该多大。移动端目标检测,输入分辨率320×320,骨干网络用MobileNetV3-Small,检测头用SSD的轻量版本,整体控制在5MB以内,在骁龙865上能跑到30帧以上。这个配置不一定最优,但它是从约束出发的。 轻量级网络这个方向到现在还在快速演化。2023年之后,一些基于Transformer的轻量结构也开始出现,比如MobileViT试图把注意力机制的全局建模能力和卷积的局部效率结合起来。效果怎么样还有争议,但至少说明一件事:大家不再觉得"小"就等于"差"。在边缘计算越来越普遍的今天,能塞进设备里跑起来的模型,才是真正有用的模型。
-
上一篇
-
下一篇
- 随机阅读
- 搜索
-
- 友情链接
-