Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(二)

简介: Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(二)

2.2 架构之一:纯CNN架构

对于这2个任务方向,作者开发了基于深度学习的网络架构来学习图像描述符,一个是学习高维特征向量以区分更多的类,同时允许类内的可变性。尽管在之前的工作中,全局和局部地标描述符都是分别训练的,并且预测也是以两阶段的方式组合进行的。但也有学者尝试在单一阶段模型中融合全局和局部描述符。

当给定推理条件受限时,作者将重点放在单个图像描述符的单阶段模型上。然而,建模工作将局部特性作为重点,因为它们对地标识别特别重要。

在下文中,提出了2种特别适用于具有噪声数据和高类内变化率的大规模图像识别/检索的体系结构。从概念上讲,两者都使用了基于EfficientNet的卷积神经网络(CNN)和Sub-Center Arcface with dynamic margin(优于经典ArcFace)。

在进行训练时:

  • 1、作者将所有图像调整为正方形大小,并应用shift、scale、rotate和cutout。
  • 2、使用Adam优化+权值衰减+学习率(每个模型学习率不同)
  • 3、遵循在一个warm-up epoch内使用余弦退火学习率机制。

image.png

作者基于EfficientNet B5实现了前部分讨论的DOLG模型,但是也做了一些改进来提高性能。

  • 使用在ImageNet上预训练的EfficientNet编码器;
  • 在第3个EfficientNet块之后添加了局部分支,并使用3个不同的空洞卷积提取1024维局部特征(其中每个模型的空洞率不同),Cat输出的3个空洞卷积局部特征,并利用Spatial Attention进行处理得到最终的1024维的局部特征;
  • 然后,将局部特征与全局特征进行正交融合(全局特征是由第4个EfficientNet块输出并GeM池化得到的1024维特征);
  • 使用平均池化操作聚合融合后的特征,然后被输入一个由FC-BN-PReLU组成的Neck输出一个512维的单一描述符。

为了训练,这个单一的描述符被输入到一个Sub-Center(k=3)的ArcFace Head,具有预测81313类的Dynamic Margin。

DOLG-EfficientNet模型是按照3个步骤训练的:

  • 首先,在GLDv2c上使用小图像对模型进行10个epoch的训练;
  • 然后,使用中等大小的图像在噪声更大的GLDv2x上继续训练30-40个Epoch;
  • 最后,使用GLDv2x对大尺寸图像对模型进行微调。

2.3 架构之二:Hybrid-Swin-Transformer with Sub-Center Arcface

第2种架构利用了最近在使用Transformer解决计算机视觉问题方面的进展。在CNN上附加了一个Vision Transformer形成了Hybrid-CNN-Transformer模型。

这里,CNN部分可以解释为一个局部特征提取器,而Transformer部分可以看作一个图神经网络将局部特征聚合到一个单一的向量。

具体步骤:

  • 1、使用EfficientNet提取特征;
  • 2、将第一步输出的特征进行Flatten操作,以适应Transformer的输入;
  • 3、生成一个与Flatten Feature相同shape的Position Embedding与Flatten Feature进行add操作;
  • 4、将Virtual Token与add后的特征进行Cat操作;
  • 5、将cat后的特征作为输入送入Swin-Transformer Block;
  • 6、取出Virtual Token对应位置的描述符送入Neck(Conv-BN-PReLU);
  • 7、将512维的描述符送入Sub-Center ArcFace With Dynamic Head(81313类)进行分类和loss回传。

image.png

当将在ImageNet上预训练的EfficientNet模型和Swin-Transformer Block组合在一起时,一个详细的训练方法是很重要的,以避免溢出和nan,特别是在使用混合精度时。

作者使用以下4步方法:

  • 第1步:初始化Transformer-Neck-Head部分,使用GLDv2c的小图像进行10个Epoch的训练;
  • 第2步:将Transformer原有的Patch Embedding换成2个EfficientNet Block,冻结之前的Transformer-Neck-Head部分,并在中等大小的图像上对新添加的CNN部分进行一个Epoch的训练;
  • 第3步:使用GLDv2x对整个模型进行30-40个Epoch的训练;
  • 第4步:在CNN和Swin-Transformer之间进一步插入一个预训练的EfficientNet Block,并使用大图像和GLDv2x对整个模型进行微调。

2.4 Ensemble

获奖的模型是8个模型的集合,包括3个DOLG和3个Hybrid-Swin-Transformer模型,它们具有不同的EfficientNet主干和输入图像大小。此外,作者还按照谷歌2020地标性识别比赛第3名团队提供的代码和说明对2个EfficientNet模型进行了训练。

表1给出了主干、图像大小、使用的数据和结果得分的概述。对于一些模型,作者没有在最后的训练步骤中增加图像的大小,而是将第1卷积层的stride从(2,2)减小到(1,1),这对于较小的原始图像尤其有利。

2.5 推理预测

对于这2个任务,作者使用了一种预测的检索方法,其中对于每个查询图像,使用L2归一化图像描述符之间的余弦相似度,然后在索引图像数据库中搜索最相似的图像。

在识别任务中,将训练集作为索引图像数据库,并使用最相似列车图像的地标标签作为对给定测试图像的预测。相比之下,为了检索最相似的图像,预定义了一个索引图像数据库。为了增加更多的类内多样性,作者使用完整的GLDv2和来自WIT的地标图像扩展了训练集。

在检索任务中,作者进一步扩展了2019年检索竞赛的索引集。

2.6 检索的后处理

为了在给定的查询图像中检索出最相似的索引图像,作者使用每个模型的512维描述符的余弦相似度对所有索引图像进行排序,从而得到查询索引对分数。

在第一步标签查询和索引图像使用余弦相似度给定的训练集。然而,与Hard Rerank不同的是,作者使用了一种 soft up-rank 过程,即如果查询和索引图像的标签匹配,则将top3索引序列余弦相似度添加到查询索引得分中。

当额外执行一个 soft down-ranking 的过程。如果查询图像和索引图像的标签不匹配,通过减去0.1倍的前3个索引序列余弦相似度来实现向下排序。对于集成中的每个模型,使用上述方法提取每个查询图像的top750索引图像id和相关分数,并将top100作为最终预测之前,对每个图像id进行求和,从而得到6000个分数。

2.7 识别的后处理

使用集成为每个训练和测试图像提取8个512维向量。然后对每个模型类型(DOLG-EfficientNet、Hybrid-Swin-Transformer、pure EfficientNet)的向量进行平均,得到3个512维的向量,然后将它们Cat起来形成一个1536维的图像描述符。利用余弦相似度为每幅测试图像找到最接近的训练图像,并进行后处理重新排序和非地标识别,从而得到最终的预测结果。


3可视化检索结果



4参考


[1].Efficient large-scale image retrieval with deep feature orthogonality and Hybrid-Swin-Transformers


5推荐阅读


苹果公司提出Mobile-ViT | 更小、更轻、精度更高,MobileNets或成为历史!!!

详细分析ResNet | 用CarNet教你如何一步一步设计轻量化模型

快到起飞 | PP-LCNet在CPU上让模型起飞,精度提升且比MobileNetV3+快3倍

相关文章
|
机器学习/深度学习 算法 PyTorch
Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(一)
Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(一)
307 0
|
机器学习/深度学习 数据挖掘 计算机视觉
Google新作 | 详细解读 Transformer那些有趣的特性(建议全文背诵)(二)
Google新作 | 详细解读 Transformer那些有趣的特性(建议全文背诵)(二)
124 0
|
机器学习/深度学习 数据可视化 计算机视觉
Google新作 | 详细解读 Transformer那些有趣的特性(建议全文背诵)(一)
Google新作 | 详细解读 Transformer那些有趣的特性(建议全文背诵)(一)
119 0
|
6月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2403 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
6月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
86 0
|
6月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
132 0
|
6月前
|
编解码
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
76 0
|
6月前
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
256 0
|
6月前
|
传感器 编解码 数据处理
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
122 0

热门文章

最新文章