WeThinkIn

V1

2023/01/21阅读:11主题:橙心

【人人都是算法专家】一文搞定AI算法竞赛

Rocky Ding

公众号:WeThinkIn

WeThinkIn公众号
WeThinkIn公众号

写在前面

【人人都是算法专家】栏目专注于分享Rocky在AI行业中业务/竞赛/研究/产品维度的思考与感悟。欢迎大家一起交流学习💪

大家好,我是Rocky。

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

So,enjoy(与本文的BGM一起食用更佳哦):

正文开始

----【目录先行】----

  1. 为什么要参加AI算法竞赛

  2. AI算法竞赛的赛题挖掘

  3. AI算法竞赛厮杀方法论

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

  5. 打完AI算法竞赛的日子

为什么要参加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

本章节主要介绍AI算法竞赛中的“东邪、西毒、南帝、北丐以及中神通”。而AI算法竞赛的整体氛围,也犹如华山论剑一般,紧张刺激。

  1. 分类经典模型:ResNet,RVT, Swin,EfficientNet等。
  2. 分割经典模型:U-Net,deeplab,PSPNet,Mask R-CNN等。
  3. 检测经典模型:YOLOv5,Faster R-CNN,Cascade R-CNN等。
  4. Model Exponential Moving Average参数更新策略。
  5. mixup,cutmix等在线增强策略。
  6. 余弦退火学习率优化手段。
  7. 在线样本生成。(难样本,增强样本,小样本)
  8. Label Smooth。
  9. Early Stopping。
  10. 测试时增强(Test Time Augmentation,TTA)
  11. 模型集成。
  12. 使用dilation convolution。
  13. 融合不同维度的特征信息。
  14. 嵌入注意力机制。
  15. 增加上下文信息。
  16. 使用图像Patch的输入进行训练,以减少训练时间。
  17. 使用伪标签。
  18. 多尺度训练。
  19. 借鉴YOLO系列论文中提出的优化点。
  20. 使用Soft NMS。
  21. 使用在线难例挖掘(OHEM)
  22. 使用可形变卷积。
  23. 交叉验证。
  24. 使用xavier初始化。
  25. 传统CV算法辅助支持。
  26. 其他

打完AI算法竞赛的日子

在新经济周期中,AI算法竞赛一定要和现金流业务拉通,竞赛成果需要快速转化沉淀,形成业务闭环。

并且可以参与到个人和组织的AI品牌软实力&影响力建设中(学术分享,高校合作,科研机构合作,组织竞赛等

精致的结尾

最后,希望大家能在被压力,竞争,适应,迭代,及时复盘,打榜等关键词汇填充的竞赛周期里,不断成长,不断前进,从容地打完收工。

Rocky一直在运营技术交流群(WeThinkIn-技术交流群),这个群的初心主要聚焦于技术话题的讨论与学习,包括但不限于算法,开发,竞赛,科研以及工作求职等。群里有很多人工智能行业的大牛,欢迎大家入群一起学习交流~(请添加小助手微信Jarvis8866,拉你进群~)

分类:

人工智能

标签:

人工智能

作者介绍

WeThinkIn
V1