写在前面

在刚刚结束的 ACCV 2022 国际细粒度图像分析挑战赛中,我们团队在 133 支参赛队伍中脱颖而出,在 Leadboard-B 上以 2.5 的绝对优势取得冠军。

比赛成绩截图

在比赛过程中,我们使用了一些对细粒度分类十分有效的解决方案。

  • 例如,在数据清洗方面我们去掉二义性的图片;
  • 模型选择和方法方面我们使用了 ViT-L和 Swin-v2;
  • 为了提高实验效率,方便整个实验过程的管理,我们基于 MMSelfSupMMClassification 两个开源算法框架开展比赛。

所有的模型权重和全部代码都已经开源,欢迎大家使用。

本次赛事相关的所有预训练,微调以及推理的代码和配置文件分别放在 MMSelfSup 以及 MMClassification 的 projects 中, 欢迎大家 star 和使用。

自监督预训练部分:

https://github.com/open-mmlab/mmselfsup/tree/dev-1.x/projects/fgia_accv2022_1st

微调与模型推理:

https://github.com/open-mmlab/mmclassification/tree/dev-1.x/projects/fgia_accv2022_1st

今天这篇文章我们将整体介绍此次夺冠的方案,希望为大家提供一些经验以供参考

本周四晚,受 OpenMMLab 社区开放麦栏目的邀请,我们也将会针对本次的冠军方案开展直播,介绍更多的比赛细节,分享比赛期间的经验教训,欢迎大家预约观看!

(插入预约链接)

比赛介绍

ACCV 2022 细粒度图像分析挑战赛是由南京理工大学和澳大利亚 University of Wollongong 主办、极市平台提供技术支持的国际性赛事。

本赛事涉及的细粒度图像分析是计算机视觉和模式识别中的热门研究课题,其目标是对细粒度级别图像中的物体子类(如不同种类的“狗”:“哈士奇”、“阿拉斯加”、“萨摩耶”)进行定位、识别及检索等视觉分析任务的研究,具有真实场景下广泛的应用价值。然而因细粒度级别子类别间较小的类间差异和较大的类内差异,使其区别于传统图像分析问题成为更具挑战的任务。

此次我们参加的赛题是:网络监督的细粒度识别,接下来我们将从数据清洗模型选择训练技巧(Bag-of-tricks)、模型集成和后处理等角度介绍我们的方案。

数据清洗

官方提供的数据包含: Train, Test-A, Test-B。Train 是用于训练的数据,这部分数据官方提供了 label。同时因为这项比赛分为 A/B 榜,所以 Test A 和 Test B 分别是用于评测的数据,这两部分数据是可以获得的,但是他们的 label 是不提供的。 这几部分的数据的详细信息如下:

Train: 835K

Test-A: 60K

Test-B: 90K

对于用于训练的数据 Train, 其分布如下:

可以发现该数据为长尾分布,其中最多类的数据有 422 张图,最少类数据却只有 3 张图, 均值为 166 张。 除了以上的分布问题,训练数据还存在以下几个问题:

  1. 有噪声的图片,数据集中存在大量的图表图片(如下面这些图片所示)
  1. 有些图片的分辨率非常小
  1. 有一部分图片有多个 label
  1. 有些数据不可读取

针对以上问题,我们尝试了以下几种方案:

成功的方案:

  1. 我们过滤掉这些不可读取的图片,一共 4687 张
  1. 根据哈希文件名,过滤掉这些具有多个 label 的图片
  1. 我们不创建额外的 validation set,所有数据用于训练

无明显效果的方案:

  1. 由于数据集是一个长尾分布,我们尝试了 class-balanced sampler
  1. 采用聚类方法,将这些离群的异常值除去掉

模型选择和方法

考虑到模型性能和速度,我们所有实验均采用 ViT-L 和 Swin-V2。方法总览如下图所示:

总结起来就以下几步:

  1. 对 ViT-L[1] 和 Swin-V2[2] 进行自监督预训练
  1. 使用预训练的权重进行微调(fine-tunine)
  1. 然后对各个模型进行集成
  1. 推理时候进行数据的后处理

其中第 2 步和第 3 步通过自蒸馏的形式进行迭代,自蒸馏是指本次训练得到的集成模型充当 teacher 对下一轮模型的训练进行指导。

调试技巧

在分类微调(fine-tuning)的过程中我们使用了以下几种策略:

模型集成

我们最终使用了 17 个模型进行集成,其中包含 10 个 ViT-L 模型和 7 个 Swin-v2 模型,集成的权重通过其分别在 Test A 上的精度,按比例得到。总体来说就是,高精度模型权重更大,低精度模型权重更小。

后处理

因为比赛中有说明,Train 集中的类别不平衡,但 Test 集中类别是按均匀分布的,所有对最后的预测结果,我们微调了标签的分布,调整前后的标签分布如下图所示:

总结

最终,我们模型的消融效果如下图所示:

图十一 性能消融实验分析

代码仓库

考虑到效率和实验管理,我们选择了 MMSelfSupMMClassification,这两个库均来自于 OpenMMLab 开源框架。

此次赛事相关的所有预训练,微调以及推理的代码和配置文件分别放在 MMSelfSup 和 MMClassification 的 projects 中, 欢迎大家 star 和使用。

自监督预训练部分:

https://github.com/open-mmlab/mmselfsup/tree/dev-1.x/projects/fgia_accv2022_1st

微调与模型推理:

https://github.com/open-mmlab/mmclassification/tree/dev-1.x/projects/fgia_accv2022_1st

相较于市面上的其他库,这两个库具有以下优点:

  1. 丰富的模型库,便捷的跨库调用。例如 MMSelfSup 自带 MAE,其预训练无需改变任何代码就可以在 MMClassification 中使用。
  1. 方便的实验管理。下图展示了本次比赛的实验记录,每次实验都会保存在对应的文件夹下,包括详细的训练日志、可复现的 config、相关 checkpoint 等等,可便捷地进行配置对比。
  1. 丰富多元的各种数据增强策略,包括 RandomAug,RandomErase,MixUP,CutMiX,TTA 等等。

实验日志信息截图

我们也将于本周四晚在 OpenMMLab 社区开放麦开展直播,介绍冠军方案更多的比赛细节,分享比赛经验,欢迎预约观看!

引用

[1] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

[2] Swin Transformer V2: Scaling Up Capacity and Resolution

[3] ArcFace: Additive Angular Margin Loss for Deep Face Recognition

[4] Masked Autoencoders Are Scalable Vision Learners

[5] SimMIM: A Simple Framework for Masked Image Modeling

[6] Sub-center ArcFace: Boosting Face Recognition by Large-scale Noisy Web Faces

[7] AdaptiveMarginArcFace: Google Landmark Recognition 2020 Competition Third Place Solution

[8] The Equalization Losses: Gradient-Driven Training for Long-tailed Object Recognition

[9] Learning with not Enough Data Part 1: Semi-Supervised Learning

[10] Model soups: averaging weights of multiple fine-tuned models improves accuracy without increasing inference time

大比分领先!ACCV 2022 国际细粒度图像分析挑战赛冠军方案相关推荐

  1. 国际赛事证书,220G数据集开放下载|ACCV2022国际细粒度图像分析挑战赛开赛

    ACCV 2022 国际细粒度图像分析挑战赛已式开赛,220G大型数据集同步开放下载! 大赛报名及数据集下载:http://m6z.cn/5IrWQL 大赛介绍 ACCV 2022 细粒度图像分析挑战 ...

  2. CVPR 2020 细粒度分类挑战赛冠军方案:数据增强+知识蒸馏,效果大幅提升

    本文转载自机器之心. 近日,支付宝天筭安全实验室在 CVPR FGVC(细粒度视觉分类)workshop 举办的植物病理学挑战赛(Plant Pathology Challenge)中夺冠.本文介绍了 ...

  3. ACCV2020国际细粒度网络图像识别冠军方案解读、经验总结

    0. 团队介绍 团队来自NetEase Games AI Lab,成员分别为韦嘉,习思,徐文元,张伟东,排名不分先后. NetEase Games AI Lab研究员 NetEase Games AI ...

  4. ACCV 2020国际细粒度网络图像识别竞赛——正式开赛!

    >>大赛背景: **ACCV大会(AsianConference on Computer Vision)是由亚洲计算机视觉联合会举办的两年一次的计算机视觉领域国际重要会议.**该会议为研究 ...

  5. ACCV2020国际细粒度网络图像识别亚军方案总结

    大赛官网:https://www.cvmart.net/race/9917/base 背景介绍 ACCV大会(Asian Conference on Computer Vision)是由亚洲计算机视觉 ...

  6. 弱监督学习下商品识别:CVPR 2018细粒度识别挑战赛获胜方案简介

    弱监督学习下商品识别:CVPR 2018细粒度识别挑战赛获胜方案简介 细粒度视觉分类(FGCV,Fine-Grained Visual Categorization)即识别细分类别的任务,一般它需要同 ...

  7. ICCV 2021 口罩人物身份鉴别全球挑战赛冠军方案分享

    作者丨阿里云多媒体 AI 团队 编辑丨极市平台 导读 今年阿里云多媒体 AI 团队参加了 MFR 口罩人物身份鉴别全球挑战赛,并在总共5个赛道中,一举拿下1个冠军.1个亚军和2个季军.本文为该团队的冠 ...

  8. 你的广告能打几分?Kaggle需求预测挑战赛冠军方案这样做丨教程

    作者 Dance with Ensemble  伊瓢 编译  量子位 出品 | 公众号 QbitAI 我们每天在网页上看到的各种电商广告,到底够不够吸引人?4个月前Kaggle和"俄罗斯版5 ...

  9. 开源:CVPR 2020视觉定位挑战赛冠军方案

    今天介绍今年视觉定位挑战赛的冠军方案.接下来会分别介绍什么是视觉定位挑战赛,比赛的难点是什么,冠军方案以及后续展望. 1. 关于视觉定位挑战赛 视觉定位是一个估计6自由度(DoF)相机姿态的问题,从中 ...

最新文章

  1. 学计算机高中要买电脑,大一新生,打着学习的“口号”要求买电脑,父母到底该不该答应?...
  2. Linux命令之crontab命令
  3. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上
  4. Windows上的svn仓库迁移(visualSVN)
  5. 前端学习资料网址收集整理
  6. ARM汇编书写格式及符号(symbol)和表达式(expr)
  7. 虚拟机和电脑共享文件夹
  8. 【python】如何查看已经安装的python软件包和版本
  9. 利用Jenkins+Phantomas进行前端性能自动化测试
  10. 21个最具代表性的英国著名地标建筑
  11. 怎样才能画好古代汉服?画好古代汉服有哪些技巧?
  12. linux的syn攻击软件,linux 防御SYN攻击步骤详解
  13. 飞信登录时SIPC认证失败解决
  14. 5M的开源桌面整理软件,麻雀虽小,功能十分强大
  15. 【日语】日语一级句型强记
  16. 入职两年申请涨薪3K被拒,是我平时好脸给多了?转身立马裸辞走人...
  17. Android Scroller的使用
  18. python爬虫下载网站磁力链接
  19. Huawei MatePad Pro安装GMS服务详细图文教程
  20. 10款最好的免费开源项目进度管理软件

热门文章

  1. Client-Initiated场景下的L2TP实验配置
  2. greenplum的主机名更改导致无法启动问题解决
  3. 使用HoloLens 2调用深度相机和前置摄像头
  4. Python中的变量
  5. python爬虫爬取知乎图片,轻松解决头像荒
  6. html设计个人网页导航
  7. 张庭夫妇公司产品多为代工贴牌,218元洁面乳成本约15元,聊聊微商的利润有多大
  8. X-Order创始人陶荣祺:Libra让所有互联网应用成为开放金融的一部分
  9. SpringMVC 学谈 (第五章)
  10. 从0开始的编程学习计划