大家好,我是Rocky。

之前Rocky总结过很多关于AI算法竞赛的方法论、经验思考以及细节注意事项等方面的内容。虽然写了不同维度的文章,但是感觉比较零散,故Rocky在本文中将之前分享的核心观点和对AI算法竞赛最新的思考进行整合梳理,力求通过本文能让大家不再惧怕AI算法竞赛,并且在紧张的厮杀中能从容,能有收获

So,enjoy:

为什么要参加AI算法竞赛

参加AI算法竞赛的底层逻辑,Rocky这里主要总结以下几点:

学生时期

  1. 通过参加AI算法竞赛来入场AI领域,以赛代学,赛中学,学中赛。

  2. 丰富简历,为实习/升学/校招做准备。

  3. 增加实验室课题组的AI影响力。

  4. 赚取奖金。

  5. 热爱竞赛氛围,渴望提升技术能力。

工作时期

  1. AI竞赛工具化,作为业务扩展的demo。

  2. 提升公司的AI影响力&AI软实力。

  3. 参与学术分享,提升行业内的知名度。

  4. AI Lab的常规业务。

  5. 工作之余,赚取奖金。

AI算法竞赛的赛题挖掘

Rocky认为,AI算法竞赛的赛题本质通常是成熟领域+创新领域的混合模式

成熟领域包括图像分类,图像分割,目标检测,目标追踪,对抗攻防等。

创新领域则一般是在成熟领域中再往前走一到两步,主要表现形式如下:

  1. 结合实际场景,如智慧城市,智慧安防,智慧工业,智慧电商,智慧硬件等。

  2. 成熟领域中的难点方向,如规则限制,条件约束,细分场景(细粒度,小样本,多任务结合等),引入前沿概念(“以数据为中心”,“元宇宙”,“大模型”等)。

  3. 结合新兴研究方向(扩散模型,AIGC,可信AI,Transformer等)

当然,除此之外,还包括一些热身赛,入门赛等赛题形式,这些赛题往往比较直观简单,在此就不做赘述。

AI算法竞赛厮杀方法论

优质AI算法竞赛就是算法领域的天下第一武道大会。” —— Rocky Ding(中国)

Rocky相信一个有足够资源背书,竞赛赛题切实新颖,参赛队伍卧虎藏龙,并有顶级学术会议分享机制的AI竞赛,可以称得算上优质。如果我们能在这样的AI竞赛中全力以赴,深度参与,那么最后一定会有比较丰富的收获与感悟。

为了帮助大家更好的参与“天下第一武道大会”,Rocky从工业界的角度出发,结合自身的多年竞赛厮杀经验,总结了一套全方位的AI算法竞赛厮杀方法论

赛题挖掘

在上一节中已经详细阐述,此处就不再赘述。

数据EDA(Exploratory Data Analysis)

磨刀不误砍柴工,对数据进行分析挖掘,从而对数据整体特征有更好的把握。我们可以从下面几个维度入手:

  1. 数据量级和基本信息

  2. 是否存在噪声数据/脏数据

  3. 是否存在小目标

  4. 是否存在类别不均衡问题

  5. 理解不同类别的数据特征

  6. 是否存在难样本

模型Baseline

一般选择SOTA模型或者竞赛打榜热门模型做baseline入场,再针对竞赛赛题的特点对模型结构进行针对性的优化。

比如在成熟领域,图像分类任务先上类ResNet模型,图像分割任务先上类U-Net模型,目标检测任务先上类YOLO模型

我们可以直接将上述模型的预训练权重进行微调,一般会有不错的效果。搭建模型的框架推荐使用PyTorch,它本身代码比较轻量级,代码逻辑清晰,撰写方便,更重要的是,很多竞赛支持开源库(Fast.ai,Albumentations等)与预训练模型都有PyTorch的API,这让我们的idea能高效实现与验证。

在有了入场模型之后,接着再进行模型的替换,模型结构优化,多模型级联等尝试。

数据工程

针对赛题特点对数据进行增强,包括线下增强和线上增强等,一些常用的数据工程手段有:

  1. 常规数据增强(crop、pad、flip、resize、rotation、translation、noise等)

  2. 使用传统CV算法处理数据(传统CV算法API工具化)

  3. 高级数据增强(interpolation、cutmix、mosaic等)

  4. 数据特征组合(concate、stack,Patch等)

这里说一句题外话,AI技术发展到现阶段,数据护城河远远超过了模型以及相关的附带技术。所以从工业界角度看,数据价值大于整个比赛,数据价值大于整个比赛,数据价值大于整个比赛

前处理&后处理

通过一些前处理&后处理算法对模型进行更多的约束,从而提升模型的综合性能:

  1. 使用传统CV算法做前&后处理。

  2. 测试时增强(Test Time Augmentation,TTA)

  3. 设计规则减少bad case。

  4. 模型集成(竞赛核武

消融实验

主要可以从以下几个方面进行:

  1. 损失函数

  2. 优化器

  3. 激活函数

  4. 学习率

  5. Batch-size、epoch设置

  6. 正则化

  7. 阈值设置

  8. 模型结构

  9. 其他

同时高效的消融实验非常重要,因为深度学习模型训练时间一般较久,如果一个实验跑一周的话在竞赛中是完全不行的,这就考验参赛队伍的算力以及训练策略了。

持续优化闭环

良好的心态

竞赛短则1-2个月,长则半年,不同的竞赛时间段都需要保持一个合适的心态,在竞赛前期不要放松,在竞赛中期不要焦躁,在竞赛后期冲刺时保持心态平稳。

分类/分割/检测算法竞赛中的实用Tricks

内容中包含的图片若涉及版权问题,请及时与我们联系删除