作者 | 王云鹤 编辑 | 汽车人
原文链接:https://zhuanlan.zhihu.com/p/632685158
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心【全栈算法】技术交流群
本文只做学术分享,如有侵权,联系删文
VanillaNet: the Power of Minimalism
6层的VanillaNet可以超过ResNet-34,13层的VanillaNet在ImageNet达到83%的top1精度,超过几百层网络的性能,并展现了非凡的硬件效率优势。顺道一提,VanillaNet的中文名字为朴素网络。论文见:
arxiv.org/abs/2305.12972
附黄大年茶思屋link:
www.chaspark.com/#/hotspots/881006542076252160

在过去几年时间,一直都在找关于神经网络架构创新的灵感。在视觉Backbone这个方向上,端侧我们有了GhostNet这种轻量的模型架构和系列算法。但是面对现在大算力,还没有什么特别好的思路,虽然在Vision Transformer的路上跟着大家也一起做了一点工作,但一直想利用最简单的卷积网络,尝试做出更强的效率和性能,在实际应用中也可以有更大的价值。
从2015年底到现在,基于shortcut的ResNet系列,仍然是神经网络架构设计的主流思路,在一定程度上解决了梯度消失问题之后,大家发现越深越复杂的网络效果越好,所以有了很多很多优秀的工作,直到2020年的ViT。虽然Transformer高阶的计算方式和参数量带来了更好的性能,但它的复杂度和硬件亲和程度也一直让做产品的朋友们叫苦不迭。为此,我跟汉亭、建元还有陶老师一起,设计了一种极简的神经网络模型VanillaNet,期望用最简单的,类似LeNet和AlexNet这样的结构,达到甚至超越现在Vision Transformer的精度,成为新一代的视觉骨干网络。
这个工作的核心就是,如何让一个浅层网络在没有复杂链接和attention的情况下,尽可能地提升精度,实际上我们面临的非线性大幅下降的技术难题。现代深度神经网络强大的拟合能力,甚至在不考虑复杂度的情况下具有逼近任意函数的潜力,很大一部分是复杂的非线性层不断堆叠带来的。
优化策略1:深度训练,浅层推理
为了提升VanillaNet这个架构的非线性,我们提出首先提出了深度训练(Deep training)策略,在训练过程中把一个卷积层拆成两个卷积层,并在中间插入如下的非线性操作:

其中,A是传统的非线性激活函数,最简单的还是 ReLU,会随着模型的优化逐渐变为1,两个卷积层就可以合并成为一层,不改变VanillaNet的结构。
优化策略2:换激活函数
既然我们想提升VanillaNet的非线性,一个更直接的方案是有没有非线性更强的激活函数,并且这个激活函数好并行速度快?为了实现这个既要又要的宪法,我们提出一种基于级数启发的激活函数,把多个ReLU加权加偏置堆叠起来:

然后再进行微调,提升这个激活函数对信息的感知能力。
极简网络的魔力:
直接点,来我们直接看ImageNet上的结果。

这一版的VanillaNet中,我们都采用224* 224的分辨率,跟现在在很多工业界场景都在用的ResNet系列和ViT系列都进行了详细对比。在现代的GPU加持下,VanillaNet的精度和速度,不负众望,达到了我们想看到的结果。虽然参数多,虽然计算量多,但是,势大力沉,精度又高速度又快!

VanillaNet这样一个非常朴素的架构,6层可以超过ResNet-34,13层的VanillaNet在ImageNet达到83%的top1精度,超过几百层网络的性能,并展现了非凡的硬件效率优势,在于Swin-S相当的精度时(83%+),速度快了1倍以上!另,在检测和分割上,Backbone的优势同样可以继承到下游任务中,CV里无论是讨论大模型,还是讨论啥,核心都还是骨干网络。
消融实验的核心汇总一下:
深度训练策略和级数激活函数对VanillaNet的性能提升非常明显,15%以上的绝对精度提升,同样对AlexNet有效,这可能是浅层网路文艺复兴的契机。但是,重点是,对ResNet没有任何明显的效果,非常非常有趣,直观上来说可能这些东西ResNet并不需要吧;
现有主流模型中的shortcut和一些变种,对VanillaNet没有效果,甚至精度还会有一定的恶化。模型结构没那么深的情况下,其实在ResNet原文中也有提到,18层加不加shortcut性能差距不大;
VanillaNet名字的后记:
关于这个网络的名字,我们其实讨论了很多次,最开始的名字叫做DeLeNet(细心的小伙伴可能会在github上看到),什么意思呢,是depthless network。但是这也是个极端,是不是我们不能超过一个层数的限制?所以在跟陶老师讨论的过程中,他建议我们就叫VanillaNet,也建议我们把AlexNet重新优化一下,挖掘这些简单、朴素、极简的架构的潜力,发挥它们在大模型时代的作用。
VanillaNet是我们的一个开端,让我们重新思考了很多,到底什么对深度神经网络性能提升是最重要的,是深度,是感受野,是attention,还是参数量?目前这个版本的VanillaNet我们优化了接近一年,已经在很多实际业务中都用了起来。但它也还有很多提升空间,比如没有加任何的预训练和蒸馏,也没有进一步系统性尝试与其它网络架构的融合,还没有更进一步进行结构的优化。AI的浪潮一波三折,距离AlexNet提出已经有11年过去了,而今迈步从头越,期待未来的新架构和新应用。
① 全网独家视频课程
BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码免费学习)

② 国内首个自动驾驶学习社区
近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、Occupancy、多传感器融合、大模型、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)