searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

第二届琶洲算法大赛“基于文心交通大模型的多任务联合训练”亚军方案分享

2024-05-16 09:46:08
48
0

一、赛题回顾 

1. 赛题内容 

本赛道旨在通过多任务联合训练来提升模型的泛化能力,同时解决多任务、多数据之间冲突的问题。根据给出的分类、检测、分割三任务的数据集,使用统一大模型进行AllInOne联合训练,使得单一模型能够具备分类、检测、分割的能力。 

2.评价指标 

分类任务(Classification task):Top-1 accuracy

检测任务(Detection task):mAP50

分割任务(Segmentation task):mIoU 

3.难点分析 

3.1 多任务特征冲突

对于多个不同任务(例如分割、分类、检测),其所需要的特征是不同的,有的需要浅层特征,有的关注深层特征,有的关注局部,有的关注全局。

3.2 Loss数量级不一致    

对于多任务学习,每个任务都有专属Loss,若各任务数量级不一致,会使得大数量级的任务占据主导,小数量级任务不易收敛。

3.3 各任务收敛速度不一致    

不同任务收敛速度不一致,例如分类任务简单,更易收敛,检测任务则需要更多训练轮数,可能导致分类已过拟合,检测仍未收敛。

3.4 多任务训练显存占用大    

多任务Head和数据需要保存更多的梯度以及其它优化器变量,显存占用成倍增长,限制Batch size大小,影响训练速度和精度。 

二、解题思路

1. 数据分析 

分类数据类别分布,不存在长尾问题 

目标检测数据各类别分布,存在一些小类别 

分割数据不同大小目标分布,存在较多小目标(32x32以下) 

目标检测数据不同大小目标分布,存在较多小目标(32x32以下) 

2.模型设计 

2.1 Backbone选择 

同颜色表示同家族模型,圆圈越大表示FLOPS越高,计算量越大; 同等计算量下,ConvNeXt精度优于Swin和ViT; 在比赛数据集上,相同输入大小和数据增强下,ConvNeXt的精度和显存占用优于Swin和ViT。 

2.2 分割head设计 

2.3 分类head设计 

2.4 检测head设计 

本队伍最终采用的网络结构,通过Backbone输出多尺度特征, 各任务通过注意力机制或者特征金字塔按需使用,减轻特征冲突; 针对Loss数量级不一致,分别调整任务Loss内部权重,保证Loss数量级差异倍数不超过10。 

 

3. 训练方案 

先训练最难收敛或者最重要的任务,比如Task2, 固定Backbone和Task2 Head的参数,再训练其他任务,只更新对应的Task Head参数。 交替训练方法,即每次更新参数时,依次使用Task1、Task2、Task3的数据forward,再更新参数。 先交替训练,固定Backbone参数,然后分别对每个Task Head微调. 

训练方案

分割

分类

检测

总分

1

0.66447

0.9321

0.95564

0.8507

2

0.70532

0.95436

0.94549

*0.8684

3

0.65625

0.95374

0.94094

0.8503

 

4. 训练技巧 

5. 数据增强 

6. Test Time Adapation 

7. 思考总结 

7.1 模型选型 

Transformer能捕捉全局信息,逐渐在CV领域大放异彩,有一统江湖的趋势。

CNN具有平移不变性和局部相关性,处理2D图像出色,算子成熟,速度快易部署。

Transformer在大数据集中上限高于CNN。

CNN在小数据集中更容易训练,有非常多成熟的网络结构。 

Transformer 还是 CNN?根据具体场景灵活选用网络结构,Transformer和CNN可以互相借鉴优秀的网络结构和训练方法,可以两者结合起来使用。 

7.2 网络结构设计 

Mask2Former在Transformer结构上达到了sota,其分割head优秀,同样值得CNN借鉴。 YOLOv5网络结构在业界大量使用,优秀的特征金字塔和损失设计可以移植到优秀的CNN backbone上。 单 FC层无法很好学习分类特征,使用CBAM注意力增强特征注意力。 使用了ConvNext的多尺度特征,来捕捉不同层级的语义。多任务Head按需索取,进一步提升总体精度。 

灵活运用各领域优秀的结构,站在巨人的肩膀上,合理选用优秀的网络结构设计! 

7.3 多任务训练心得 

 在有限的显存下,通过梯度累积实现更大的batch size 平衡各任务的Loss, 可以获得更加均衡的结果,避免参数朝向单一任务最优去更新。 根据各任务的收敛速度调整任务的epoch数以达到同时收敛。 选择合适的数据增强方法,减少过拟合,且增加难例和小目标的精度。 

多分析训练时各任务的Loss、收敛速度、验证精度以及显存占用等,在有限的资源下实现多任务的最佳平衡。 

0条评论
0 / 1000
周****伟
5文章数
0粉丝数
周****伟
5 文章 | 0 粉丝
原创

第二届琶洲算法大赛“基于文心交通大模型的多任务联合训练”亚军方案分享

2024-05-16 09:46:08
48
0

一、赛题回顾 

1. 赛题内容 

本赛道旨在通过多任务联合训练来提升模型的泛化能力,同时解决多任务、多数据之间冲突的问题。根据给出的分类、检测、分割三任务的数据集,使用统一大模型进行AllInOne联合训练,使得单一模型能够具备分类、检测、分割的能力。 

2.评价指标 

分类任务(Classification task):Top-1 accuracy

检测任务(Detection task):mAP50

分割任务(Segmentation task):mIoU 

3.难点分析 

3.1 多任务特征冲突

对于多个不同任务(例如分割、分类、检测),其所需要的特征是不同的,有的需要浅层特征,有的关注深层特征,有的关注局部,有的关注全局。

3.2 Loss数量级不一致    

对于多任务学习,每个任务都有专属Loss,若各任务数量级不一致,会使得大数量级的任务占据主导,小数量级任务不易收敛。

3.3 各任务收敛速度不一致    

不同任务收敛速度不一致,例如分类任务简单,更易收敛,检测任务则需要更多训练轮数,可能导致分类已过拟合,检测仍未收敛。

3.4 多任务训练显存占用大    

多任务Head和数据需要保存更多的梯度以及其它优化器变量,显存占用成倍增长,限制Batch size大小,影响训练速度和精度。 

二、解题思路

1. 数据分析 

分类数据类别分布,不存在长尾问题 

目标检测数据各类别分布,存在一些小类别 

分割数据不同大小目标分布,存在较多小目标(32x32以下) 

目标检测数据不同大小目标分布,存在较多小目标(32x32以下) 

2.模型设计 

2.1 Backbone选择 

同颜色表示同家族模型,圆圈越大表示FLOPS越高,计算量越大; 同等计算量下,ConvNeXt精度优于Swin和ViT; 在比赛数据集上,相同输入大小和数据增强下,ConvNeXt的精度和显存占用优于Swin和ViT。 

2.2 分割head设计 

2.3 分类head设计 

2.4 检测head设计 

本队伍最终采用的网络结构,通过Backbone输出多尺度特征, 各任务通过注意力机制或者特征金字塔按需使用,减轻特征冲突; 针对Loss数量级不一致,分别调整任务Loss内部权重,保证Loss数量级差异倍数不超过10。 

 

3. 训练方案 

先训练最难收敛或者最重要的任务,比如Task2, 固定Backbone和Task2 Head的参数,再训练其他任务,只更新对应的Task Head参数。 交替训练方法,即每次更新参数时,依次使用Task1、Task2、Task3的数据forward,再更新参数。 先交替训练,固定Backbone参数,然后分别对每个Task Head微调. 

训练方案

分割

分类

检测

总分

1

0.66447

0.9321

0.95564

0.8507

2

0.70532

0.95436

0.94549

*0.8684

3

0.65625

0.95374

0.94094

0.8503

 

4. 训练技巧 

5. 数据增强 

6. Test Time Adapation 

7. 思考总结 

7.1 模型选型 

Transformer能捕捉全局信息,逐渐在CV领域大放异彩,有一统江湖的趋势。

CNN具有平移不变性和局部相关性,处理2D图像出色,算子成熟,速度快易部署。

Transformer在大数据集中上限高于CNN。

CNN在小数据集中更容易训练,有非常多成熟的网络结构。 

Transformer 还是 CNN?根据具体场景灵活选用网络结构,Transformer和CNN可以互相借鉴优秀的网络结构和训练方法,可以两者结合起来使用。 

7.2 网络结构设计 

Mask2Former在Transformer结构上达到了sota,其分割head优秀,同样值得CNN借鉴。 YOLOv5网络结构在业界大量使用,优秀的特征金字塔和损失设计可以移植到优秀的CNN backbone上。 单 FC层无法很好学习分类特征,使用CBAM注意力增强特征注意力。 使用了ConvNext的多尺度特征,来捕捉不同层级的语义。多任务Head按需索取,进一步提升总体精度。 

灵活运用各领域优秀的结构,站在巨人的肩膀上,合理选用优秀的网络结构设计! 

7.3 多任务训练心得 

 在有限的显存下,通过梯度累积实现更大的batch size 平衡各任务的Loss, 可以获得更加均衡的结果,避免参数朝向单一任务最优去更新。 根据各任务的收敛速度调整任务的epoch数以达到同时收敛。 选择合适的数据增强方法,减少过拟合,且增加难例和小目标的精度。 

多分析训练时各任务的Loss、收敛速度、验证精度以及显存占用等,在有限的资源下实现多任务的最佳平衡。 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
0