点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
仅作学术分享,不代表本公众号立场,侵权联系删除
转载于:机器之心
基线:我要是用上最新的训练流程,性能还能涨一波。
在计算机视觉领域,何恺明等人 2015 年提出的 ResNet(deep residual network,深度残差网络)一直被视为经典架构,它解决了深度 CNN 模型难训练的问题,是 CNN 图像史上的一个里程碑之作。
自提出以来,ResNet 系列模型一直被用作研究中的默认架构,或者新模型提出时用来对比的基线。然而,在过去的几年里,神经网络训练方面的最佳实践已经取得了很大进展。新颖的优化、数据增强等方法提高了训练流程的有效性。
在这篇论文中,独立研究者 Ross Wightman 以及 Facebook AI、索邦大学的两位研究者重新评估了普通 ResNet-50 在加入上述训练进展之后所能达到的性能。
论文链接:https://arxiv.org/pdf/2110.00476.pdf
具体而言,研究者重新评估了使用不同训练方法时普通 ResNet-50 的性能,并在 timm 开源库中分享了有竞争力的训练设置和预训练模型,希望它们可以成为未来研究工作的更好基线。例如,在 ImageNet-val 数据集上,使用研究者更高要求的训练设置,并在无额外数据或蒸馏的情况下,普通 ResNet-50 在分辨率 224×224 下实现了 80.4% 的 top-1 准确率。
此外,研究者还报告了其他流行模型使用他们的训练流程时取得的性能结果。
基线也需要与时俱进
在过去的十几年里,人们已经见证了图像分类领域的很多重大进展,这些反映在了 ILSVRC’2012 挑战赛或其他图像分类基准测试结果的改进上。从原理上来讲,性能的提升反映了社区对下面这个问题的最大化求解:
A 为架构设计,T 为训练设置和超参数,N 为测量噪声,其中还包括从大量超参数或方法中选择最大值时经常出现的过拟合。降低 N 的良好做法有几种,比如使用不同的 seed 测量标准差、使用单独的评估数据集或者在迁移任务上对模型进行评估。
暂且撇开 N 不谈,评估 A 或 T 上的进展也构成了一个挑战,这是因为它们的进展随时间推移而变化。当在 (A, T ) 上进行联合优化时,无法保证给定架构 A_1 的最优选择 T_1 依然是另一模型设计 A_2 的最佳选择。因此,即使是在同一训练流程下比较模型时,人们也可能隐式地偏爱某一个模型。
将训练流程与架构各自带来的改进分开的一个好处是确保基线包含来自文献的新「成分」,并在调整超参数方面付出合理的努力。理想状态下,如果没有资源和时间限制,人们可以为每个架构适配最佳的训练流程,如下公式(1)所示:
但在现实中,这种理想状态是不可能的。当比较架构时,大多数论文往往与以往发表论文中的结果进行比较,但被比较的这些架构使用的通常是相对较弱的训练流程,最好的情况下也仅仅是使用类似或相同的流程。
本文作者表示,他们还没有发现专门通过广泛的成分选择和超参数搜索来提升 ResNet-50 训练流程的研究努力。在以往的文献中,ImageNet-1k-val 上报告的针对 ResNet-50 架构的性能范围区间为 75.2% 到 79.5%,具体取决于论文本身。目前还不清楚是否已经投入足够的努力来进一步推动基线。因此,研究者想要填补这方面的研究空白。
研究者探究的是何恺明等人提出的普通 ResNet-50 架构。他们优化训练流程以最大化该模型在原始测试分辨率 224 × 224 下的性能。这里只考虑训练流程(training recipe)。因此,研究者排除了 ResNet-50 的所有变体,如 SE-ResNet-50 或 ResNet-50-D,这些变体通常会在相同的训练流程下提升准确率。
3 种不同的训练流程
研究者提出了 3 种具有不同成本和性能的训练流程,以覆盖不同的用例,下表 1 展示了 3 种训练流程的资源使用情况和 top-1 准确率结果。
这 3 种训练流程以实现测试分辨率 224 × 224 下 ResNet-50 的最佳性能为目标。研究者探索了很多使用不同优化器、正则化以及超参数合理网格搜索数量的变体。其中,他们主要关注以下三个不同的训练流程:
流程 A1 旨在为 ResNet-50 提供最佳性能,因此 epoch 数量最多(600),训练时间最长(在一个配有 4 个 V100 32GB GPU 的节点上训练 4.6 天)
流程 A2 的 epoch 数量为 300,可与 DeiT 等其他几个优秀训练流程媲美,但批大小更大(2048)。
流程 A3 旨在通过 100 个 epoch 和 2048 的批大小超越普通 ResNet-50 的流程,它在 4 个 V100 16GB GPU 上训练了 15 个小时,并且可能是探索性研究的良好设置。
如下表 2所示,研究者将用于训练普通 ResNet-50 的不同方法与他们的方法进行了比较,其中只考虑修改了未修改的 ResNet-50 架构(即不考虑其他变体)。此外,研究者不考虑使用蒸馏之类的高级训练设置,或者通过自监督或伪标签预训练的模型。
实验结果
上表 1 总结了文中提出的训练流程的主要特点。研究者表示,就他们所知,使用训练流程 A1 训练的一个普通 ResNet-50 架构在 224×224 分辨率的 ImageNet 图像测试中超越了 SOTA 模型。其他两个训练流程(A2、A3)虽然没有达到 A1 的水平,但也用较少的资源实现了较高的性能。
在下表 3 中,研究者记录了使用本文提出的训练流程训练其他架构时的效果,以测试这些训练流程在其他模型上的泛化能力。在某些情况下,研究者观察到 A2 要优于 A1,这表明超参数不适用于较长的 schedule(通常需要更多的正则化)。
在下表 4 中,研究者对表 3 中的结果进行了补充。
在下表 5 中,研究者记录了使用不同的预训练流程在 7 个细粒度数据集上得到的迁移学习性能数据,并与默认的 PyTorch 预训练进行了比较。总体来看,A1 在大多数下游任务中都达到了最好的性能。
更多细节请参见论文。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~