Rethinking ImageNet Pre-training 论文笔记

本文探讨了Kaiming He的论文《Rethinking ImageNet Pre-training》,指出在目标检测、实例分割和人体关键点检测任务中,随机初始化网络参数的模型经过足够迭代也能达到与预训练模型相似的效果。适当归一化策略如组归一化(GN)和同步批归一化(Sync BN)对于从头训练至关重要。尽管预训练模型在初期收敛速度较快,但可能引发过拟合,尤其在数据量较小的情况下。此外,预训练模型在空间位置敏感的任务上帮助有限,研究强调了针对特定任务的网络设计优化的重要性。

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

论文:Rethinking ImageNet Pre-training
论文链接:https://arxiv.org/abs/1811.08883

Kaiming He这篇文章以计算机视觉中的目标检测、实例分割和人体关键点检测领域为例,思考预训练模型是否真的那么重要,最后基于实验结果得出结论:基于随机初始化的网络参数(train from scratch)训练模型的效果并不比基于ImageNet数据集的预训练模型效果差。具体而言主要有以下几个发现:
1、采用基于ImageNet的预训练模型参数可以加快模型的收敛速度,尤其是在训练初期,而基于随机初始化网络结构参数训练模型时在采用合适的归一化方式且迭代足够多的次数后也能够达到相同的效果,可以参考Figure1的结果。在Figure1中作者以训练Mask-RCNN算法为例,采用组归一化(group normalization,缩写为GN,参考博客:Group Normalization算法笔记)训练不同参数初始化的网络并对比效果,可以看出模型在训练初期的收敛速度存在较大差异,但是在训练迭代次数足够多时,随机初始化网络结构参数能够达到采用预训练模型参数相同的效果。
在这里插入图片描述
这里要强调一下选择合适的归一化算法对从头开始训练检测算法的重要性,忽略归一化方式的选择容易产生目标检测算法难以在随机初始化网络结构参数的情况下训练的错觉。目前BN(batch normalization)是图像分类算法中最常用的归一化层,当在目标检测任务中使用基于ImageNet的预训练模型,因为相比之下目标检测任务的输入图像更大、网络结构更加复杂等原因,因此目标检测任务的batch size参数比图像分类任务要小(尤其是Faster RCNN这种two stage类型的检测算法),而BN层的计算在batch si

### 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点云语义分割方法的基础组件之一。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值