【人人都是算法专家】一文搞定AI算法竞赛(全网最详细)

news2024/11/15 17:34:04

Rocky Ding

公众号:WeThinkIn

写在前面

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

大家好,我是Rocky。

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

So,enjoy:

正文开始

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

  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,拉你进群~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/175617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享123个ASP源码,总有一款适合您

ASP源码 分享123个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 123个ASP源码下载链接:https://pan.baidu.com/s/17G9rpRpCJX_D-6DV0j4uFg?pwd3rx8 提取码&#x…

qt json tree 读取json树状结构并显示

1.介绍 用qt的相关的几个类处理json格式的信息 json内容: { "root":{"sites": [{ "name":"菜鸟教程" , "url":"www.runoob.com" }, { "name":"google" , "url":&quo…

QT环境的搭建安装:VsCode及Qt Creator

前言: vscode的界面美观,并且和QT一样的跨平台,所以可以选择vscode作为开发环境。   QT5.9.X版本成熟,相应教程丰富,并且5.9.9版本具有生成CMake功能,所以本文以QT5.9.9版本为例,给出QT环境的…

美团出品 | YOLOv6 v3.0 is coming(性能超越YOLOv7、v8)

🚀🚀🚀美团出品 | YOLOv6 v3.0 is coming !!✨✨✨ 一、前言简介 🎄🎈 📚 代码地址:美团出品 | YOLOv6 3.0代码下载地址 📚 文章地址:https://a…

仿写Dubbo-Java反射

概念 反射是Java的一个特性,反射允许程序运行时动态获取类的所有信息以及对其进行操作。反射在框架(spring,springboot,mybatis等)中的使用非常的广发,可谓是框架的灵魂。 获取Class对象 在使用反射之前,需要获取到Cla…

工欲善其事必先利其器——Elasticsearch安装

安装使用说明 首先在elasticsearch官网下载你想要安装的版本,我这里使用的是7.12.1版本 上传到你想要安装的目录(/user/search/) 然后解压,解压命令如下: tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz 解压后…

创建保存字符串的数组numpy.char以及用于处理字符串数组的函数

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】创建字符串数组numpy.char.array()修改字符串数组大小写capitalize();title();lower();upper()[太阳]选择题对于以下python代码title()方法输出的结果是?imp…

【并发编程十二】c++20线程同步——信号量(semaphore)

【并发编程十二】c20线程同步——信号量(semaphore)一、互斥二、条件变量三、future四、信号量1、信号量原理2、c 20 信号量3、demo简介: 本篇文章,是线程同步的最后一篇。我们详细的介绍下c标准库提供的线程同步方法——信号量&a…

嵌入式Linux-线程创建与终止

1. 线程的创建 1.1 创建线程 启动程序时,创建的进程只是一个单线程的进程,称之为初始线程或主线程,本小节我们讨论如何创建一个新的线程。 创建线程与创建进程的方法是一样的,让我们来看一下创建线程的函数: #incl…

Linux基本功系列之chown命令实战

文章目录一. 前言🚀🚀🚀二. chown命令介绍三. 语法格式及常用选项四. 参考案例3.1 改变指定文件的属组和属主3.2 改变指定文件的所属主与所属组,并显示过程3.3 改变指定目录及其内所有子文件的所属主与所属组3.4 只修改文件所属组…

P问题、NP问题、NP-Complete问题、NP-Hard问题分别代表什么含义?

绪论 在了解P、NP、NP-Complete、NP-Hard问题之前,先感性地感受一下这几个问题之间的区别和联系👇: 上图分为左右两个版本,推荐记住左边的比较通用。这是因为NP=P这个数学问题曾经被列为7大数学难题之一,而且是之首,甚至美国还悬赏100W美金,但是比较认可的结果是暂时…

Python数据可视化之条形图和热力图

Python数据可视化之条形图和热力图 提示:介绍 简单介绍Pthon可视化的图表使用 提示:热力图和条形图 文章目录Python数据可视化之条形图和热力图前言一、导入数据包二、选择数据集2.加载数据2.读入数据总结前言 提示:这里可以添加本文要记录的…

Acwing 1010. 拦截导弹

Acwing 1010. 拦截导弹一、问题描述二、算法分析三、代码实现一、问题描述 二、算法分析 这道题共分为两问,我们先看第一问。 该问的背后是一个很经典的最长单调子序列模型。 在这个模型中,我们的状态f[i]f[i]f[i]的定义是,以第iii个元素为结…

Cert Manager 申请SSL证书流程及相关概念-三

中英文对照表 英文英文 - K8S CRD中文备注certificatesCertificate证书certificates.cert-manager.io/v1certificate issuersIssuer证书颁发者issuers.cert-manager.ioClusterIssuer集群证书颁发者clusterissuers.cert-manager.iocertificate requestCertificateRequest证书申…

50个你离不开的 CLI 工具

作为开发人员,我们在终端上花费了大量时间。有很多有用的 CLI 工具,它们可以让您在命令行中的生活更轻松、更快速,而且通常更有趣。这篇文章概述了我最依赖的 50 个必备 CLI 工具。如果我遗漏了什么 - 请在评论中告诉我 :)在本文的结尾&#…

二叉树专题汇总

二叉树的前中后序遍历day11|144.二叉树的前序遍历、145.二叉树的后序遍历、94.二叉树的中序遍历_奈川直子的博客-CSDN博客二叉树的层序遍历、翻转二叉树、对称二叉树day12|层序遍历合集、226.翻转二叉树、101.对称二叉树_奈川直子的博客-CSDN博客N叉树最大深度、完全二叉树节点…

LCHub:2023年无代码、低代码8大技术趋势

在数字化转型、新冠疫情、全球经济环境动荡等多因素驱动下,使得组织改变了对低代码、无代码的看法,市场规模和场景化落地实现快速增长。根据Gartner预测,到2025年,70%的应用程序将由低代码和无代码开发平台构建,其中 80%的应用程序由非IT工作者开发而成。 没有编程背景的…

青山不语,碧海无痕,数字山河间的中国脊梁

刚刚过去的2022,对于新农人来说,是不寻常的一年。福建宁德的渔民祖祖辈辈都以外出打鱼为生,渔排生活条件艰苦,娱乐匮乏,销路也不稳定,这种苦闷正随着AI、直播等数字新技术的到来而被消解。青海列卜加村的孙…

Arduino的nodemcu 8266开发板使用MicroPython开发的整体流程

程序安装准备 安装开发板驱动,官网:(https://cn.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tabdownloads)这里不是CH340驱动,而是CP210x USB to USART 驱动,最终也是在“设备管理器查看COM口…

【LeetCode:33. 搜索旋转排序数组~~~二分】

题目描述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…