2022华为全球校园AI算法精英赛:季军方案!

news2024/11/24 9:17:10

 Datawhale干货 

作者:鲤鱼,西安交通大学,人工智能学院

笔者鲤鱼,是西安交通大学人工智能学院的一名研究生,在2022华为全球校园AI算法精英赛的赛道二取得了季军的成绩

初赛阶段一直名列A榜的榜首,复赛前几天也一直处于A榜榜首。虽然最后一天翻车了,但每次切换测试数据集都能取得稳定的优势,模型的泛化性能应该是比较强的,只是可惜最后输在了一些后处理的trick上,现提供一些思路,仅供参考。

如需作者完整PPT,可在Datawhale后台回复关键词 季军 下载。

40c68584704243190c98f74c659bff51.png


赛题理解

本次华为全球校园AI算法精英赛的赛道二——车道渲染数据质量检测赛题。地图数据渲染生成过程中,部分数据会存在诸如缺边少角,异形道路等缺陷,本赛题旨在探索可靠的高精度质检模型。

赛事信息:华为全球校园AI算法精英赛-CV赛题。

d14a777a1d4ba556c13b931616fa05af.png
问题图片的范围包括:中心线问题、停止线问题、引导面问题、路肩问题、路面问题、箭头问题、车道线问题

整个问题为经典的图像分类问题,赛题方提供了7种异常类别的细粒度标注,所以整体思路可以建模为“二分类”或者“多分类(8类:正常类别+7个异常类别)”问题。

数据分析

我们统计了有标签训练集的样本分步,如图1所示,可以看出存在以下两个特点:

  1. 长尾分布比较明显,各个类别样本严重不均衡

  2. 在异常的类别中,第6类“引导面”的占比最大。(说句题外话:本赛题复赛最后的第一名就是针对第六类单独统计了一些像素值,最后通过这些像素值的统计特征将第6类摘出来了,正好第六类占比比较大,弯道超车,属实佩服👍🏻)

4aefc5b4659e7915c1420636765193db.png
图1:有标签训练集的样本分布

此外,我们还统计了有标注数据集的尺寸大小,发现主要是2400*1080的尺寸,长宽比悬殊但比较固定,且尺寸较大。我们尝试过resize成方形的方式进行训练,发现效果不如等比例缩放来的好。所以最终我们将长宽都缩小到了原来的四分之一,在保证训练效果的同时,也节省了显存开销

a1025290066f6471704faed211169fa2.png
图2:有标签训练样本的图片尺寸统计

数据增强

对于大部分比赛而言,合适的数据增强都有奇效,但一般很难吃准什么增强有效,所以大家只能盲目尝试。但笔者一直认为高端的食材只需要简单的烹饪,所以我们只采用了比较基础的数据增强方式(对比度、水平翻转这些)。这里不太适合做那种几何变换的数据增强,否则很容易破坏掉原图的语义结构。

当然,我们观察训练集的标注,发现存在一张照片同属于多个异常类别这个问题,这表明图像可能同时存在多个异常,所以我们采用mixup的增强方式来提升模型分辨不同问题图片的能力。

模型设计

对于分类问题来说,笔者一直觉得大道至简,各种花里胡哨的attention操作有时候还比不上简单纯粹的分类网络,只是需要掌握合适的烹饪手法,才能做出美味的佳肴。这里给出了笔者采用的网络架构。

4a90866756ae0565e3ef94a85663e530.png
图3:网络架构

当然,由于这个比赛比较特殊,存在大量的无标注数据,充分利用大量的无标注数据对模型性能的提升影响很大,所以我们的模型最终采用了三阶段的训练方式

9e8e6e6cfdd0c99cb0a926eab556795d.png
图4:模型训练方式

训练方式如下:

  • Step1:即先通过有标注数据进行监督训练,然后为大量的无标注数据打标签;

  • Step2:接着利用无标注数据进行半监督预训练;

  • Step3:最后将预训练模型拿来初始化监督网络,利用有标注数据进行finetune。

当然,我们也尝试过将二三阶段合并在一起,但效果不太好。主要是由于无标注数据样本太多,有标注数据太少,有标注数据很容易淹没在无标注数据中。

当然有余力的同学可以尝试通过MAE的方式预训练一个模型拿来初始化,但笔者受限于算力环境,不太容易训收敛,所以没采用这种方式,不过这也是一个很好的预训练方式。

实践证明,合理的利用无标注数据进行预训练对泛化性和AUC提升很大。经过分析,发现主要原因可能在于无标注数据的规模比较大,测试集的分布更加接近无标注数据集的分布,故而利用好无标注数据就是一把大杀器。

记得初赛阶段切换过一次数据,在原有4000张测试样本的基础上增加了6000张测试样本,我们发现切换数据后大家的模型性能都遇到了显著的下降,这里我们统计了增加前四千张和增加的六千张的概率分布图,发现差异还比较大。

e0e84013080b936d82f626339721ac4f.png
图5:分布不一致的解决

通过我们半监督预训练的方式,增加的六千张的概率分布图由蓝线变成绿线,和红线更靠近,从而缩小了两部分的差异,大幅提升了分数。所以模型训练的关键就在于合理地利用无标注数据进行预训练,利用测试集与无标注数据的相似性进行调参炼丹。

消融实验

我们也做了一些消融实验,发现存在一些特点

  • 二分类转8分类问题,监督信号变强,使得模型性能有了较大的提升

  • 半监督预训练,虽然线下分数变化不大,但线上提升巨大,与其他选手拉开了差距

d418e001a06195018cc4308173fa7a10.png
图6:不同方法线下验证结果
ee2fde73dbec9a9088120000e31b1d72.png
图7:初赛与复赛的分数变化图

方案优势

综上所述,我们的方案主要有以下几方面的优势:

  • 对于无标注数据的高效利用(使用半监督标注手段对无标注数据进行标注)

  • 多阶段建模(创新性的使用半监督方式预训练模型,再利用真实标注进行finetune)

  • 较强的模型泛化能力(从初赛开始,每一次换数据或者切榜都能取得稳定优势)

bb04067c73ebbe1696c4b69fcd14a7af.png

整理不易,三连

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

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

相关文章

zabbix6.0安装教程(二):Zabbix6.0安装最佳实践

zabbix6.0安装教程(二):Zabbix6.0安装最佳实践 目录概述一、Access control1.Zabbix agent 的安全用户2.UTF-8 编码二、Zabbix Security Advisories and CVE database1.为 Zabbix 前端设置 SSL三、Web server hardening1.在 URL 的根目录上启…

[附源码]Python计算机毕业设计SSM基于的开放式实验室预约系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

人家这才叫软件测试工程师,你那只是混口饭吃

前些天和大学室友小聚了一下,喝酒喝大发了,谈天谈地谈人生理想,也谈到了我们各自的发展,感触颇多。曾经找工作我迷茫过、徘徊不,毕业那会我屡屡面试失败,处处碰壁;工作两年后我一度想要升职加薪…

[附源码]Python计算机毕业设计SSM基于的二手车商城(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

第五款!美创数据水印溯源系统通过中国信通院数据安全能力评测

近期,中国信息通信研究院安全研究所发布“数据安全产品能力验证计划”第六期通过企业名单。美创科技数据水印溯源系统顺利通过测试,成为美创第五款通过权威检验测评的数据安全产品! 此前,中国信息通信研究院安全所开展数据安全类产…

分布式系统中的数据复制

什么是数据复制 数据复制是制作数据的多个副本并将其存储在不同位置的过程,用于备份目的、容错和提高它们在网络中的整体可访问性。与数据镜像类似,数据复制可以应用于单个计算机和服务器。复制的数据可以存储在同一系统、现场和非现场主机以及基于云的…

FT 在图形渲染中的应用:基于 FFT 的海浪模拟

接上文:FT 在图像处理中的应用 五、一个大型案例:基于 FFT 的海浪模拟 前置:​​​​​ 傅里叶级数与傅里叶变换离散傅里叶变换(DFT)​​​​​​​​FT 在图像处理中的应用​5.1 FFT 海洋公式:二维 IDFT https://tore.tuhh.de…

Abz-G-F(4NO2)-P-OH, 67482-93-3

Fluorogenic (FRET) substrate for angiotensin I-converting enzyme (ACE). Enzymatic cleavage of Abz-Gly-Nph-Pro yields Abz-Gly-OH emitting at 420 nm. 血管紧张素I转换酶(ACE,ACE2)底物 血管紧张素i转换酶(ACE)的荧光底物。Abz-Gly-N…

docker 报错 No space left on device

问题&#xff1a; 在 Linux 环境上使用 docker 命令 <docker pull 镜像> 拉取镜像的时遇到了 No space left on device 的问题。 排查过程&#xff1a; 初步分析可能是存储镜像的路径磁盘满了。 但是使用 df -h 命令之后&#xff0c;发现磁盘还有空间。于是猜测应该是…

【Linux】Linux软件包管理器yum

希望你今天有一个好心情 文章目录一、(客户端&&服务器) (软件包&&软件包管理器yum) (利益链&&逻辑链)1.客户端&&服务器2.软件包&&软件包管理器3.一条利益链一条逻辑链二、Linux下包管理器yum的使用(root身份或sudo提权进行搜索list…

【安全】免密登陆SQLSERVER 之 Token 窃取

先"灌肠" 往往在高版本系统 或者 在强密码的等等 特殊情况下我们无法获得 明文密码。那么我们该如何在没有明文密码及有windows哈希的情况下登陆 SQLSERVER呢(当然我并没有sa等任何账号); 默认安装点击登陆名 发现有好几个可以登陆的用户在users 组里都可以登陆 (基本…

WLAN二层旁挂组网与三层旁挂组网

第一部分&#xff1a;关于底层逻辑问题 1、WLAN二层组网与三层组网到底是指哪里是二层哪里是三层&#xff0c;两者有什么区别&#xff1f; WLAN的二层组网与三层组网指的是AP与AC之间建立的Capwap隧道是二层的还是三层的&#xff0c;以此来区分是二层组网还是三层组网。注意&…

使用微信部署ChatGPT

使用微信部署ChatGPT 一、介绍 最近ChatGPT爆火&#xff0c;网上出现了很多ChatGPT项目&#xff0c;有部署到微信的&#xff0c;有部署到QQ机器人的&#xff0c;今天介绍一种部署到微信的方法。 此项目参考github上https://github.com/869413421/wechatbot项目&#xff0c;需…

Ajax简介与基本使用

前言 本文为Ajax简介与基本使用相关知识&#xff0c;首先将对Ajax进行简介&#xff08;包含&#xff1a;什么是Ajax、Ajax的作用、Ajax的好处&#xff09;&#xff0c;然后介绍JS方式Ajax的实现&#xff08;包含发送 Ajax 请求的五个步骤、创建 XMLHttpRequest 对象、向服务器发…

通用的融合框架:IFCNN

IFCNN: A general image fusion framework based on convolutional neural network &#xff08;IFCNN: 基于卷积神经网络的通用图像融合框架&#xff09; 在本文中&#xff0c;我们提出了一种基于卷积神经网络的通用图像融合框架&#xff0c;称为IFCNN。**受变换域图像融合算…

测试人生 | 折腾 6 年踩坑无数的”笨小孩“:方向对了,路就不会遥远!

image1080459 72.4 KB 编者按&#xff1a;本文来自霍格沃兹测试学院学员 笨小孩 的分享&#xff0c;从退伍军人到测试小白&#xff0c;从培训被坑再到经历各种小公司倒闭、裁员、6年间几番折腾&#xff0c;最终靠“笨功夫”成功转型测试开发&#xff0c;年薪近 30W&#xff0c…

番外8:ADS导出DWG文件并交给工厂制板

番外8&#xff1a;ADS导出DWG文件并交给工厂制板 &#xff08;功率放大器板子和散热器&#xff09; 将ADS源文件导出PCB与散热器文件&#xff08;功率放大器&#xff09; 导出文件并预处理 打开制作好的版图文件&#xff0c;在原有基础上打好散热孔和固定孔&#xff0c;散热…

Deep Learning Architecture for Automatic Essay Scoring

1. Introduction 利用手工制作的特征&#xff0c;如文章长度、句子长度、语法正确性或可读性来评分的文章面临以下问题。首先&#xff0c;它可能被学生用作欺骗系统的一种选择&#xff0c;即写出并提交一篇结构良好但偏离主题**的文章。由于文字结构和表面等语言特征&#xff…

[附源码]Python计算机毕业设计电影网站系统设计Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

OpenAi[ChatGPT] 使用Python对接OpenAi APi 实现智能QQ机器人-学习详解篇

文章大部分来自&#xff1a;https://lucent.blog 原文博客地址&#xff1a;https://blog.ideaopen.cn 最近火热全文的ChatGPT&#xff0c;被很多人玩出了花&#xff0c;我们在Github上可以看到几个常见的逆向SDK包&#xff0c;这一篇我将以学习的方式来写这一篇文章。 这些SDK不…