Rethinking ImageNet Pre-training

本文探讨了在COCO数据集上,通过优化归一化技术和延长训练时间,无需ImageNet预训练也能实现竞争性的目标检测和实例分割精度。研究发现,虽然从零开始训练可能需要更多迭代,但其效果与ImageNet预训练相当,且预训练在某些任务中的优势有限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

PDF地址:

后续更新

代码地址就不提供了,因为这个工作有点老了哈哈,但是凯明大神的想法真的很超前,之后会优先做凯明大神的论文系列,在当年还有很多小伙伴是评论说这个论文其实是一篇广告或者标准的实验报告,广告是因为凯明在此之前提出了GBN(后续会更新这个的笔记),然后这篇文章提及到了;实验报告是因为,这篇论文的实验细节还有数据处理的思路非常的自然严谨。

其他:这个笔记其实是21年做的,今天翻出来了哈哈。

介绍:

COCO上进行随机初始化(从零开始)训练,无需任何预训练,就可以达到竞争性目标检测和实例分割的准确性
在这里插入图片描述

如果:

(i)我们使用适当的归一化技术进行优化,

(ii)我们对模型进行了足够长的训练,以弥补前训练的不足,没有根本的障碍阻止我们从头开始训练

可以从零开始训练大型模型——比ResNet101大4倍——而不会过度拟合

(i) ImageNet预训练的加速收敛,特别是在培训

(ii) ImageNet预训练不会自动提供更好的正则化

(iii)当目标任务/指标对精确定位的空间预测更敏感时,ImageNet的预训练没有显示出任何好处


相关工作:

对象检测器是在没有预训练的情况下进行训练的——这一事实在今天多少被忽略了

从零开始获取更多的探测数据是可能的,并且可以达到90%的精确调整精度

重点是理解ImageNet在非专门化体系结构(即最初设计时没有考虑从零开始培训的模型)

证明了在从零开始训练时,即使没有做任何预训练的处理,也可以保持精确的调整精度


方法:

目标是通过控制实验来消除ImageNet预训练的作用,而无需ImageNet预训练就可以做到

架构改进不是我们的目的

在最小的修改下从头开始训练传统的体系结构

描述了我们认为唯一必要的两个修改,与模型归一化训练长度有关

标准化:

图像分类器的训练需要标准化来帮助优化

(i)Group Normalization:作为最近提出的BN的替代方案,GN执行的计算与批处理维无关。GN的精度对批量尺寸不敏感

(ii) Synchronized Batch Normalization (SyncBN): 这是一个实现的bn与批统计计算跨多个设备(gpu)。这增加了使用许多gpu时BN的有效批处理大小,从而避免了小批处理

实验表明,GN和SyncBN都可以使检测模型从零开始训练

适当的规范化初始化,我们可以在不使用BN或GN的情况下通过随机初始化来训练使用VGGNet的对象检测器

收敛:

期望从随机初始化训练得到的模型能比从ImageNet预训练得到的模型收敛更快是不现实的忽略了这个事实,就会得出完全或错误的结论,即忽略了从零开始训练的模型的真正能力

即从零开始训练追求的不是收敛更快,而是精确度

零开始的模型必须学习低层次和高级层次的语义,因此为了更好地收敛,可能需要更多的迭代

在这里插入图片描述

ImageNet的预训练为100 epoch,微调采用2x schedule(在COCO上~24 epoch),随机初始化采用6x schedule(在COCO上~72 epoch)。在ImageNet中,实例数为1个(而在COCO中为7个),ImageNet中的像素数为224×224,COCO为800x 1333

随机初始化训练出来的模型要想很好地收敛,需要足够多的总样本(可以证明是在像素方面)


实验设置:

体系结构:

将训练区域建议网络(RPN)的端到端的与Mask R-CNN联合使用。GN/SyncBN用于替换所有“冻结的BN”(通道方向的仿射)层

学习速率调度:

研究了更长的训练,并且使用了类似的术语,例如,所谓的“6x时间表”有540k次迭代

第一个(大)学习率下训练时间更长是有用的,但在小学习率下训练时间更长常常导致过拟合

超参数:

所有其他超参数均遵循Detectron,特别地,初始学习率为0.02,重量衰减是0.0001,动量是0.9。所有模型使用同步的SGD在8个GPU上进行训练,每个GPU有2个小批量图像

Detectron中的Mask R-CNN默认不使用数据增强进行测试,以及只使用水平翻转增强进行训练


结果和分析:

训练从零开始,以匹配的准确性:

从零开始训练的模型在准确性上可以赶上那些经过微调的模型

COCO train2017分割中训练模型,该分割有118k(118287)图像,并在5k COCO val2017分割中进行评估。我们评估用于对象检测的边界盒(bbox)平均精度(AP)和用于实例分割的掩膜AP
在这里插入图片描述

Baselines with GN and SyncBN:

对于每一幅图,我们将随机初始化训练的模型与ImageNet预训练的微调模型之间的曲线进行比较

对于每种情况,我们研究了五种不同的调度,即2x到6x的迭代

我们将一个模型的五个调度叠加在同一个图中。AP曲线的跳跃是学习率降低的结果

(i)典型的微调周期(2x)对于预训练收敛到接近最优的模型很好,但对于从零开始训练的模型来说,这些周期是不够的

(ii)从零开始训练的模型可以赶上它们的微调对应,如果使用5x或6x的时间表实际上,当它们收敛到最优,它们的检测AP不会比微调对应的更糟

ImageNet的预训练主要在训练初期有助于加快对目标任务的收敛速度,但在最终的检测准确率上几乎没有提高的迹象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多个检测指标:

零开始训练的模型和经过预训练的模型具有相似的AP度量

对于APbox度量(使用高重叠阈值),从头开始训练比通过明显的边界进行微调(1.0或0.8 AP)更好

在这里插入图片描述

训练时间规模增大:

不同的增强基线中也可以观察到,在进行培训之前和没有进行培训之前是可以比较的

使用Detectron实现的简单训练时间尺度增强:图像较短的一侧从[640,800]像素中随机采样

在从头训练时将周期增加到9倍,在ImageNet前训练时将计划增加到6倍

级联R-CNN:

作为一种专注于提高定位精度的方法,级联R-CNN附加了两个额外的阶段到标准的两阶段更快的R-CNN系统

为了节省从头开始的模型的运行时间,我们在没有级联的情况下从头开始训练Mask R-CNN,并在最后的270k迭代中切换到级联,注意到这并不能改变最终模型在训练前没有使用ImageNet的事实

定位监督主要由目标数据集提供,并不是基于分类的ImageNet预训练中明确提供的

不期望ImageNet的预培训能在这种设置中提供额外的好处

测试时间增加:

将结合来自多个缩放转换的预测来进一步执行测试时间的增加,就像Detectron中实现的那样

从零开始训练的模型并不比训练前的模型差。实际上,在这种情况下,从头开始训练的模型甚至更好一些

从零开始训练了一个明显更大的Mask R-CNN模型,尽管模型很大,但没有明显的过拟合

对于这个大型模型,预训练也不能提高结果

与以往从零开始训练的结果对比:

没有证据表明没有经过ImageNet预处理的模型可以和ImageNet预处理的模型相比有可比性

ImageNet的预训练几乎没有什么好处,随机初始化的训练可以在不增加训练迭代的情况下快速赶上

关键点检测:

从头开始训练的模型可以更快地赶上进度,即使没有增加训练迭代次数,它也可以与使用ImageNet预训练的模型进行比较

ImageNet的预训练由于缺少明确的定位信息,对关键点检测没有帮助

没有BN/GN的VGG网络:

需要某种形式的激活标准化(例如BN或GN)

使用适当的初始化规范化,就可以从头开始训练,而不需要激活规范化

使用vgg16作为骨干从头开始训练更快的R-CNN的行为

按照原来Faster R-CNN论文[37]及其vgg16架构来实现模型

使用完全相同的超参数微调和训练从零开始

训练前,VGG-16的完全收敛速度很慢。在11倍的时间表之后,从头开始训练的模型达到了类似的性能水平


用更少的数据从零开始训练:

在这里插入图片描述

35k COCO训练图像:

ImageNet预训练并不能自动帮助减少过拟合

对使用ImageNet预训练的模型重做网格搜索

从头开始训练我们的模型,使用完全相同的新超参数

尽管数据较少,但已经赶上了训练前的对应对象

10K COCO训练图像:

较小的训练集上重复相同的实验,训练集为10k COCO images

经过预训练的模型在迭代次数为60k时达到26.0 AP,但当训练次数更多时,其退化程度略有下降

1K COCO训练图像:

在10k图像中从零开始的训练同样准确,这令人惊讶。但是,对于任意小的目标数据,预期这种趋势将持续下去是不合理的

仅使用1k COCO训练图像(约为完整COCO图像的1/100,再次对预训练案例的超参数进行优化)重复同一组实验,并显示了训练损失

从零开始的训练并不会更糟,只是收敛得更慢而已

ImageNet预训练模型的AP为9.9,而从头开始的模型的AP为3.5

还进行了网格搜索,以优化从头开始的情况结果提高到5.4 AP,但没有赶上。这是由于严重缺乏数据而导致的严重过拟合的迹象

PASCAL VOC:

实例(和类别)越少,也会产生与培训数据不足类似的负面影响,可以解释为什么在VOC上从零开始的培训无法跟上COCO的进度


在这里插入图片描述

使用1k张COCO图像进行训练(显示为训练集中的损失)。模型为Mask R-CNN,采用R50-FPN和GN。与之前一样,我们使用预先训练的模型优化的超参数,并从随机初始化中对模型应用相同的超参数。随机初始化模型可以弥补训练损失,但验证精度(3.4 AP)低于预训练模型(9.9 AP)。


总结

作者总结了以下几个观点:

  1. 在不改变体系结构的情况下,对目标任务进行从头开始的训练是可行的; 从头开始训练需要更多的迭代才能充分收敛;
  2. 在许多情况下,从头开始训练的效果不会比ImageNet预训练的效果差,训练数据可低至10k张COCO图像;
  3. ImageNet预训练加速了目标任务的收敛;
  4. ImageNet预训练不一定有助于减少过拟合,除非我们进入一个非常小的数据空间(也就是图像都非常的接近,没有多样性);
  5. 如果目标任务对定位比分类更敏感,ImageNet预训练的帮助就会更小(这句话其实非常重要,一些任务可能更倾向于找到位置,如瑕疵检测、病变检测、计数检测,但是现在可能不适用了);

个人的一些看法:这篇论文的思路很严谨吗,给从零开始训练的研究者们提供了一个可行的思路(也可称作引证,证明这个方向其实还是有得做的),实际上绝大部分任务都是预训练,而且预训练也不再是ImageNet这种上古数据集,可能涉及更多域、更庞大、多样性更丰富,但这是18年的论文,还是respect的!

### Few-shot 3D点云语义分割的研究与方法 Few-shot学习是一种机器学习范式,旨在通过少量样本训练模型来完成特定任务。对于3D点云语义分割而言,这一领域面临的主要挑战在于如有效提取几特征以及适应新类别时的数据稀缺问题。 #### 数据增强与元学习 为了应对数据不足的问题,一些研究引入了基于元学习的方法。这些方法通常会构建一个基础网络,在大量已知类别的支持下进行预训练,并通过优化算法快速适配到新的未知类别上。例如,有工作提出了一种原型网络框架,该框架能够通过对不同类别的平均嵌入向量计算距离来进行分类决策[^1]。 #### 图神经网络的应用 由于3D点云本质上是非结构化数据形式,传统卷积操作并不适用。因此,近年来图神经网络(GNNs)被广泛应用于处理此类数据集。具体来说,可以先建立K近邻(KNN)图表示点之间的关系,再利用GNN实现消息传递机制更新节点特征直至收敛后再做最终预测。这种方法充分利用了局部区域内的空间关联特性从而提高了泛化能力尤其适合于few-shot场景下的应用需求。 另外值得注意的是Mask R-CNN虽然主要用于图像实例分割但在某些变体版本里也被扩展到了三维物体检测当中去比如PointRCNN它结合了pointnet++ backbone 和rcnn head共同完成了端到端的目标定位加mask生成过程尽管如此这类两阶段pipeline架构可能不太容易直接迁移到极低标注率条件下所以还需要进一步改进才能满足few-shot setting的要求[^2]. ```python import torch from torch_geometric.nn import GCNConv class SimpleGCN(torch.nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(SimpleGCN, self).__init__() self.conv1 = GCNConv(input_dim, hidden_dim) self.conv2 = GCNConv(hidden_dim, output_dim) def forward(self, data): x, edge_index = data.x, data.edge_index x = self.conv1(x, edge_index) x = torch.relu(x) x = self.conv2(x, edge_index) return x ``` 上述代码展示了一个简单的图卷积网络(Graph Convolutional Network),它可以用于处理点云中的邻居关系并进行特征传播,这是许多Few-shot 3D点云语义分割方法的基础组件之一。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值