21岁,华科博士在读,我的赛事Top经验

news2024/11/17 12:42:38

 Datawhale干货 

作者:vaew,华中科技大学,博士二年级在读

简介

笔者vaew,21岁,现为华中科技大学机械科学与工程学院陶波教授课题组博士二年级学生。主要研究方向是基于视触融合的机器人灵巧操作。学业之余的研究兴趣包括图像分类,目标检测和AI攻防,获得2022年“移动云杯”算力网络大赛叉车周界行人检测专题第一名,2022 天池BMW Hackthon工业质检赛道第二名,2022 CCF-BDCI 基于TPU平台实现人群密度估计第三名等多个算法比赛top名次,相关的比赛方案后续有时间可能也会分享在Github上。本次主要分享在2022全球校园AI算法精英赛的车道线渲染质量评估赛道的Rank5方案。

个人Github地址:https://github.com/vaew

我们团队做这个比赛的时间有点靠后,差不多截止报名的时候才开始入场。我们刚开始做的时候,初赛只剩下一周的时间,因此整套方案的一些参数可能还没有很好的调整,初赛是A榜Rank3,B榜Rank7,后面决赛又调整了一些参数达到Rank5。个人认为针对此类问题的这套Pipeline应该是非常有效的,这也是我们能够卡在ddl弯道超车的重要原因。下面分享一下我们队伍对本次比赛的理解和详细方案。

赛题分析

本赛题为选手提供地图渲染数据及其部分标注。训练集包括车道渲染数据的图片集及部分标注,选手使用训练数据进行模型训练。测试集分为A/B两个测试集。测试集仅提供车道渲染数据图片集,选手使用模型预测测试图片是否存在问题。整个比赛的缺陷数据一共如下7类(中心线问题、停止线问题、引导面问题、路肩问题、路面问题、箭头问题、车道线问题),选手并不需要对这7类分别进行分类,只需要检测渲染的车道线图像数据是否存在问题即可。

48d69937e9c5ece67f341b27379b660f.png

不同异常图像一览

这是一个很典型的异常图像分类问题,我们的第一想法是直接用图像分类模型+挖掘一些缺陷图像上明显的视觉特征,然后通过模板匹配之类的机器视觉方案来做。

于是我们提取了这7类缺陷中视觉上看有明显特征的路肩问题、路面问题,抽取了两个问题类别的10个样本中路肩突出区域/路面异常区域的10*10像素块,作为模板匹配的模板,但是匹配一轮后发现这样的匹配其实不能有效涨点。

9cebb3a48cc6f76d89c394dfed3bb29f.png

具有“显著特征”的路肩问题、路面问题

因此我们对数据进行了新一轮的分析,发现原因在于整个图像中出现问题的地方相对于整体的区域实际上特征是比较弱的。整个赛题有如下的难点:

1)图像特征弱:本赛题中车道线渲染数据变换复杂,不同缺陷类别图像没有明显的有区分性的特征,同时缺陷数据相比于正常数据而言也没有非常明显的有区分性的特征,因此难以实现鲁棒性高图像分类。

2)数据规模小:本赛题车道线渲染数据数据规模相对于传统图像分类数据集来说较小,保证模型收敛到最优精度困难。

3)语义理解难:本赛题标识较多,渲染问题复杂,分类模型对于图像的语义理解能力有限,难以对不同渲染问题进行高精度的判定。

同时,还有非常值得选手注意的一点是本次比赛中给出了一个相对于有标注训练数据集来说非常大的无标注数据集,如何对这样一个无标注数据集进行有效处理也是本次比赛的一大难点。

获取本文PPT可在后台回复“华为大赛ppt”

基本解题思路

确定了不能通过大量机器视觉中常见的特征工程手段来做之后,我们拿出了解决图像分类问题的一套经典的Pipeline,我们希望在这套Pipeline上进行深挖,最终实现比较好的分类效果。

f28e05d952f4e4d06e553b324901c67e.png

基本解题思路

诚如这张ppt上说的,这样一套pipeline在特征明显的大规模数据上是会取得非常好的效果的,但是本次比赛的数据属于弱特征小规模数据,我们需要进行更多的方案上的探索

尝试思路&最终方案

57394488112d8761e2d5507f250a7d7e.png

失败了一半的尝试思路 or 成功的数据增强方案

事实上,本次比赛给了一个相比于有标注训练集而言规模很大的无标注的训练集。因此,如何构建一套有效的方案赋予这些未标注的训练集合适的伪标签是很重要的。我们的第一个基本思路是首先基于Swin Transformer[1], EffcientNet-B8[2], ConvNeXt[3],Deit[4]等十分强劲的Backbone构建一个粗分类Ensemble模型,然后用这个Ensemble模型来做无监督的目标检测。

fd235b39b00308040edd5cf22377b82e.png

多模融合构建自监督模型

更具体的,我们提取粗分类Ensemble模型的Attention Map,使用非常经典的DDT[5]方法来对Attention Map进而得到一个注意力最集中的区域作为我们认为的伪缺陷区域。

c7ea461a9d12a19e7ad336be3ed2482b.png

自监督目标检测

遗憾的是这样的尝试思路和之前我们尝试基于模板匹配等机器视觉方法的异常图像检测trick一样,没有取得非常好的效果。但是这条尝试思路严格来说失败了一半,因为它在后面的数据增强过程中实际上是非常有效的。

我们发现本题中1/3类缺陷图像数目较少,我们对1/3类原始图像进行这样的自监督目标检测,之后将DDT方法标注出来的缺陷框进行随机的Copy&Paste&Shift,最终实现了针对这两类数据的增强。

7e8270391be8cfb104b152770ac80b87.png

成功的尝试思路 and 最终的方案

尝试了上面说的自监督目标检测方案,发现行不通之后我们进行了黄框中的思路的尝试。我们使用之前说的粗分类模型来做半监督,赋予无标注数据一个比较准确的伪标签。然后用打了伪标签的数据和赛方给的有标注数据集进行训练。并在整个训练过程中加了很多的提分Trick,下面将会将所有的提分Trick列出分享。

提分亮点

这里我们将提分Tricks分为三个部分:数据增强,训练增强和推理优化。

数据增强

我们认为好的数据增强方案应该是能促进模型对于整个异常检测任务的现实意义的理解,同时我们也认为不产生真实生产环境下不可能出现的奇异图像的数据增强才可能让模型学到一些物理层面有用的东西,而非图像的噪声。所以与其他选手不同,我们最终使用的所有的数据增强方法都不会产生奇异的车道线渲染图像。如:使用MixUp[6]等方式将不同类别的两张图像生硬的叠加,我们认为是一种不太正确的策略,我们更倾向于使用能够保持图像语义特征的Mix方式。同样的RandomShuffle等对图像块的直接Shuffle操作也不在我们考虑的范围内,我们使用一些语义上的Shuffle或者Shift方式来对整个图像进行增强操作。

下面是我们具体采用的数据增强方式,我们通过这些数据增强手段来提高模型鲁棒性和泛化能力。

  • Texture Feature Transformation

为了在不改变数据语义特征的同时进一步提高模型的鲁棒性,我们首先想到的就是对图像的纹理特征进行增强。更具体的,这里我们使用HSV通道互换,对比度增强,亮度增强等方式对图像的纹理特征进行增强。

  • Shape Transformation

除了对图像的纹理特征进行增强,我们还考虑了一些不产生异常图像的形状变换增强思路。此处我们使用Random Flip Transformation,Elastic Shape Transformation进行图像形状增强,以期得到更多的不同结构的异常图像。

  • Image Shift

如前所述,由于本题中1/3类缺陷图像数目较少,我们基于DDT检测结果对1/3类原始图像做一定的随机shift,生成一些新的数据,用于模型的训练

  • TokenMix

此处为了不产生奇异的Mixup等方式混合生成的图像,我们引入TokenMix[7]方法。这是一种token级增强技术,可以很好地应用于训练各种基于transformer的架构。TokenMix在token级别直接混合两个图像,以促进输入token的交互,并在考虑图像语义信息的情况下生成更合理的目标

  • Auto Augmentation

此外,我们使用针对ImageNet的Auto data augmentation工具箱[8],进行数据增强。值得注意的是此处删掉了可能生成奇异图像的数据增强。

训练增强

在训练增强上,我们引入了多种训练技巧保证模型最终收敛到最优值。此处在具体的训练过程中我们发现有标注数据和无标注数据的分布、线上数据和线下数据的分布其实都是很不一致。我们还发现线上的数据其实是更接近于无标注数据的数据,因此我们的比较重要的一个训练增强手段就是进行模型的域适应学习,下面将从域适应学习方法开始,一一介绍我们的训练增强策略。

  • 域适应学习

此处我们使用有标注数据作为源域,无标注数据作为目标域。使用Ganin[9]等人提出的经典的域适应学习网络来进行领域自适应。使用的网络结构如下图,由三部分组成:特征映射网络 ,标签分类网络和域判别网络。

1052ac1f4533daa6b9a98b90516b42ac.png

域适应学习Pipeline

  • 交叉熵损失函数

这里我们其实使用了很多种不同的Loss进行模型的调优,最终发现还是使用分类模型中最为常见的交叉熵损失函数进行模型的训练,因为它在实际实验中效果较好。

  • Cosine Annealing Warm Restarts

这里我们采用的是等间隔的退火策略,验证准确率总是会在学习率的最低点达到一个很好的效果,而随着学习率回升,验证精度会有所下降。最终可以实现稳定的模型收敛。

  • Stochastic Weight Averaging

这里我们使用一个比较经典的随机权值平均策略。随机权值平均只需快速集合集成的一小部分算力,就可以接近其表现。随机权值平均可以用在任意架构和数据集上,都会有不错的表现。

  • Adaptive Adversarial Training

这个其实是我博士期间的一小部分工作,即通过自适应对抗攻击的方法对模型添加扰动[10]。目前文章已经投稿相关期刊,并挂在了Arxiv上,感兴趣的可以参阅 Adaptive adversarial training method for improving multi-scale GAN based on generalization bound theory

推理优化

由于我们使用的是一个多模型Ensemble的分类方案,而且由于线上线下数据分布不均,所以在最后的下游推理过程中其实是有很多的工作可以做的。

  • SoftMax加权输出

前面对类别数据进行统计我们发现其实每一类的分布是比较不均的,同时从线上线下以及有标注无标注数据的数据分布我们也可以发现数据分布不一致这个问题还是挺严重的。因此此处我们使用了一个非常简单粗暴的方法,我们固定训练好的模型的权重,然后直接根据数据分布不均的特点,对softmax层进行加权输出。

b4ad217112b9ee1e4842b8953f52bc6e.png

SoftMax加权输出

  • 多模型反Sigmoid融合

比赛的评估指标是AUC,因此我们首先考虑了模型的加权融合和Rank融合,但是发现效果没有那么的理想。我们分析原因发现可能是不同模型预测的结果非常接近,因此这样的融合其实对整个预测结果精度的提升不会有那么大的帮助。此处我们首先对模型的预测结果进行rank排序,之后将排序结果进行归一化。我们将归一化后的值输入反Sigmoid函数进行映射,之后对映射的结果进行加权融合,得到最终的推理结果。

反Sigmoid函数的函数曲线如下图所示,可以看到这样的曲线可以极大地放大靠近预测概率位于0.5附近的预测值差距,进而实现对非常接近的预测结果的有效融合。

5cdfe0bef763d7541ebeaba04b01fab3.png

反Sigmoid函数曲线

方案总结

最后我们对整个方案进行总结的话,可以把我们的主要贡献概括为如下四点:

1 构建了一种针对车道线渲染数据半监督学习方法

2 设计了域适应方案用于车道线问题分类模型的增强

3 使用多模型Sigmoid融合进行车道线问题的估计

4 使用多种数据增强手段和训练技巧实现高精度、高鲁棒性的车道线渲染数据分类模型

8e914e7687c35f5bfa32693450b630e3.png

不同策略的效果

方案展望

213cee4a3548fdddcb3526dd553e8607.png

后续优化思路展望

参考文献

[1] Liu, Ze, et al. "Swin transformer: Hierarchical vision transformer using shifted windows." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021.

[2] Tan, Mingxing, and Quoc Le. "Efficientnet: Rethinking model scaling for convolutional neural networks." International conference on machine learning. PMLR, 2019.

[3] Liu, Zhuang, et al. "A convnet for the 2020s." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022.

[4] Touvron, Hugo, et al. "Training data-efficient image transformers & distillation through attention." International Conference on Machine Learning. PMLR, 2021.

[5] Wei, Xiu-Shen, et al. "Deep descriptor transforming for image co-localization." arXiv preprint arXiv:1705.02758 (2017).

[6] Zhang, Hongyi, et al. "mixup: Beyond empirical risk minimization." arXiv preprint arXiv:1710.09412 (2017).

[7] Liu, Jihao, et al. "Tokenmix: Rethinking image mixing for data augmentation in vision transformers." European Conference on Computer Vision. Springer, Cham, 2022.

[8] Cubuk, Ekin D., et al. "Autoaugment: Learning augmentation policies from data." arXiv preprint arXiv:1805.09501 (2018).

[9] Ganin, Yaroslav, and Victor Lempitsky. "Unsupervised domain adaptation by backpropagation." International conference on machine learning. PMLR, 2015.

[10] Tang, Jing, et al. "Adaptive adversarial training method for improving multi-scale GAN based on generalization bound theory." arXiv preprint arXiv:2211.16791 (2022).

获取完整PPT请在后台回复“华为大赛ppt”

eba7b3017c1c0cc4db4e802b9e8f6050.png开源分享,三连

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

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

相关文章

ChatGPT怎么样?

一、先说几个注意的地方1、chat.openai.com发现是中国网络的用户也会访问不了,或提示你此网站在此国家访问不了。2、短信接码平台要先充值,才能加购物车。3、印度、马来西亚、印尼的号不行可以换美国的很快就能收到(找个便宜的)。…

刷题25-重排链表

重排链表 解题思路:通过观察链表可以发现,把链表一分为二,后半段链表反转,然后两个链表穿插连接,当链表的节点总数是奇数时,要保证链表的前半段比后半段多一个节点。 关于把链表一分为二,可以…

CSS中的BFC详细讲解(易懂)

带你用最简单的方式理解最全面的BFC~~~1.先了解最常见定位方案普通流元素按照其在 HTML 中的先后位置至上而下布局行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行所有元素默认都是普通流定位浮动元素首先按照普通流的位置…

通过中断控制KUKA机器人暂停与再启动的具体方法示例

通过中断控制KUKA机器人暂停与再启动的具体方法示例 中断程序的基本介绍:  当出现例如输入信号变化等事先定义的事件时,机器人控制器中断当前程序,并处理一个已定义好的子程序  由中断而调用的子程序称为中断程序  最多允许同时声明32个中断  同一时间最多允许有16个…

Linux网络技术学习(六)—— 网络设备初始化(II)

文章目录初始化选项模块选项设备处理层初始化:net_dev_init用户空间辅助程序kmod解析热插拔虚拟设备虚拟设备范例通过/proc文件系统调整初始化选项 内核内建的组件以及模块加载的组件都能输入参数,使用户调整组件所实现的功能、重写默认值等 模块选项&…

Java微服务安全丨雪崩问题及解决方案

1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时&…

微信小程序 之 原生开发

目录 一、前期预备 1. 预备知识 ​2. 注册账号 - 申请AppID 3. 下载小程序开发工具 4. 小程序项目结构 ​5. 小程序的MVVM架构 二、创建小程序项目 1. 查看注册的appId ​2. 创建项目 ​3. 新建页面 01 - 创建text页面文件夹 ​02 - 新建text的page ​03 - 在app.json中配置 ​…

从未想过制作数据可视化展示竟可以如此简单

还在跟着网络上一节课好几个小时的付费课程学习如何制作数据可视化大屏嘛?还在为不知道怎么设计数据展示排版而苦恼?今天教大家用最简单的方式制作一个数据可视化大屏,首先让我们看一下参考大屏样式:接下来我们将制作数据可视化大…

【Kubernetes】【九】Label,Deployment,Service

Label Label是kubernetes系统中的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。 Label的特点: 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等等一个资源对象可以定义任意数量的L…

Python正则表达式中group与groups的用法详解

本文主要介绍了Python正则表达式中group与groups的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧目录在Python中,正则表达式的group和groups方…

阿里一面:你做过哪些代码优化?来一个人人可以用的极品案例

前言 在尼恩读者50交流群中,尼恩经常指导小伙伴改简历。 改简历所涉及的一个要点是: 在 XXX 项目中,完成了 XXX 模块的代码优化 另外,在面试的过程中,面试官也常常喜欢针对提问,来考察候选人对代码质量的追…

06 OpenCV 阈值处理、自适应处理与ostu方法

1 基本概念 CV2中使用阈值的作用是将灰度图像二值化,即将灰度图像的像素值根据一个设定的阈值分成黑白两部分。阈值处理可以用于图像分割、去除噪声、增强图像对比度等多个领域。例如,在物体检测和跟踪中,可以通过对图像进行阈值处理来提取目…

更专业、安全、可控!政企都选择WorkPlus私有化部署

现如今政企机构在信息化建设的过程中,内部的沟通协作都离不开即时通讯软件。但大多数企业使用的即时通讯软件都是Saas部署的,虽然使用Saas部署产品成本低,又方便快捷,但还是建议企业有条件最好使用私有化部署的即时通讯软件&#…

ERP是什么?中小商户有必要用吗?秦丝、金蝶、管家婆哪家强?

ERP系统刚开始传入中国的时候,基本上只有超大型或大型企业有条件实施,不过最近几年随着小微企业、中小商户的信息化需求不断增长,ERP软件已慢慢被普遍使用。但是仍然有不少中小商户,还没搞清楚ERP到底是什么,看到大家都…

【LeetCode】每日一题(5)

题目&#xff1a;2341. 数组能形成多少数对 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; class Solution { public:vector<int> numberOfPairs(vector<int>& nums) {} }; 解题思路&#xff1a; 做了一个星期的每日一题&#xff0c;终于…

自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲

自动驾驶&#xff1a;BEV开山之作LSS&#xff08;lift,splat,shoot&#xff09;原理代码串讲前言Lift参数创建视锥CamEncodeSplat转换视锥坐标系Voxel Pooling总结前言 目前在自动驾驶领域&#xff0c;比较火的一类研究方向是基于采集到的环视图像信息&#xff0c;去构建BEV视角…

疑似45亿地址信息泄露事件跟进后续

开放隐私计算 收录于合集#数据安全13个开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播&#xff0c;愿成为中国 “隐私计算最后一公里的服务区…

重生之我是赏金猎人-漏洞挖掘(十一)-某SRC储存XSS多次BypassWAF挖掘

0x01&#xff1a;利用编辑器的超链接组件导致存储XSS 鄙人太菜了&#xff0c;没啥高质量的洞呀&#xff0c;随便水一篇文章吧。 在月黑风高的夜晚&#xff0c;某骇客喊我起床挖洞&#xff0c;偷瞄了一下发现平台正好出活动了&#xff0c;想着小牛试刀吧 首先信息收集了一下&a…

【ns-3】零基础安装教程

文章目录前言1. 安装虚拟机及Ubuntu2. 安装依赖库3. 下载ns-34. 构建ns-3前言 近期因工作需要开始接触ns-3。作者零基础&#xff0c;从零开始顺利完成了ns-3的安装。本篇为ns-3安装过程记录贴或针对小白的零基础教程。 本篇内容所使用到的软件版本信息如下&#xff1a;VMware…