Muyun99's wiki Muyun99's wiki
首页
学术搬砖
学习笔记
生活杂谈
wiki搬运
资源收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Muyun99

努力成为一个善良的人
首页
学术搬砖
学习笔记
生活杂谈
wiki搬运
资源收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 代码实践-目标检测

  • 代码实践-图像分割

  • 代码实践-自监督学习

  • 竞赛笔记-视觉竞赛

    • 当我们在谈论图像竞赛EDA时在谈论些什么
    • kaggle-Classify Leaves 竞赛方案学习
    • 图像检索orReID 竞赛的 Tricks
    • kaggle-CowBoy Outfits Detection 竞赛方案学习
      • kaggle-CowBoy Outfits Detection 竞赛方案学习
        • 01、沐神总结
        • 02、Kaggle 社区方案解析
        • 03、总结
    • kaggle 图像分割竞赛学习
    • few-shot learning 竞赛学习
    • few-shot learning 竞赛学习-2
    • 遥感图像建筑物变化检测竞赛学习-1
  • 框架解析-mmlab系列

  • 讲座记录-有意思的文章集合

  • 体会感悟-产品沉思录观后有感

  • 体会感悟-摄影

  • 系列笔记-

  • 系列笔记-乐理和五线谱

  • 系列笔记-爬虫实践

  • 系列笔记-Django学习笔记

  • 系列笔记-Git 使用笔记

  • 系列笔记-网站搭建

  • 系列笔记-图卷积网络

  • 课程笔记-MIT-NULL

  • 系列笔记-OpenCV-Python

  • 系列笔记-使用 Beancount 记账

  • 系列笔记-Python设计模式

  • 系列笔记-MLOps

  • 系列笔记-Apollo自动驾驶

  • 系列笔记-PaddlePaddle

  • 系列笔记-视频操作

  • Vue+Django前后端分离开发

  • 深度学习及机器学习理论知识学习笔记

  • PyTorch Tricks

  • 学习笔记
  • 竞赛笔记-视觉竞赛
Muyun99
2021-08-22

kaggle-CowBoy Outfits Detection 竞赛方案学习

# kaggle-CowBoy Outfits Detection 竞赛方案学习

# 01、沐神总结

# 1.1 数据重采样

  • 将不足的类别样本复制多次
  • 在随机采样小批量时对每个类别使用不同的采样频率
  • 在计算损失时增大不足类别样本的权重
  • SMOTE: 在不足类样本的中选择相近对做插值
  • 数据增强:mixup 等

# 1.2 所使用模型

  • YOLOX:YOLOv3 + anchor free
  • YOLOv5
  • Detectron2:Faster RCNN
  • 大都采用了多模型、k fold 融合

# 02、Kaggle 社区方案解析

# 1、2nd 解决方案:yolox-for-cowboyoutfits (opens new window)

  • 使用 Yolox-m 模型,训练了40个epoch,前5个epoch为warm up,中间 20 epoch 为加入aug的训练,后15个 epoch 为不加入 augmentation 的训练
  • 最后的测试结果为 58.46
  • 代码链接:https://github.com/Megvii-BaseDetection/YOLOX

# 2、4th 解决方案:yolov5-transformer-module-ensemble (opens new window)

  • 使用三个模型
    • Yolov5x6
    • Yolov5x6-transformer(1 transformer module)
    • Yolov5l6-transformer(2 transformer modules)
  • 构建验证集时:按照训练集比例抽样
  • 构建 model config 时候添加了 C3TR ,代表 Transformer module

# 3、5th 解决方案:Challenge with imbalanced training data (opens new window)

  • # 统计count的轮子
    from collections import Counter
    for ann in data["annotations"]:
        list_cat.append(dict_cat[ann["category_id"]])
    Counter(list_cat)
    
    1
    2
    3
    4
    5
  • 使用 SMOTE 算法处理样本不平衡问题,使得所有的类别训练样本都是 2097 了

    • 使用的库是 https://github.com/scikit-learn-contrib/imbalanced-learn

    • from imblearn.over_sampling import SMOTE
      x_train_only_id = pd.DataFrame(x_train['id'])
      X_SMOTE, Y_SMOTE = SMOTE().fit_resample(x_train_only_id.values,y_train.values)
      Counter(Y_SMOTE)
      
      1
      2
      3
      4
  • 使用模型是 yolov5s

# 4、6th 解决方案:cowboy detectron2 faster-rcnn (opens new window)

  • # 定义的数据增强
    class myMapper:
        def __init__(self, cfg, is_train: bool = True):
            if is_train:
                aug_list = [T.ResizeShortestEdge([640, 800], sample_style='range'),
                            T.RandomBrightness(0.8, 1.2),
                            T.RandomContrast(0.8, 1.2),
                            T.RandomSaturation(0.8, 1.2),
                            T.RandomFlip(prob=0.5, horizontal=True, vertical=False)]
            else:
                aug_list = [T.ResizeShortestEdge(800, sample_style='choice')]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  • 五折训练,每个模型 25 个 epoch,大概 10 个 epoch 就足以达到比较好的 mAP 值,最终使用 weighted boxes fusion 做结果的集成

# 5、8th 解决方案:MMDetection+CascadeRCNN (opens new window)

  • CascadeRCNN 12 个 epoch
  • 为啥我的结果这么差???

# 6、Megvii_YOLOX (opens new window)

  • 使用模型 yolox_x,分数为 64.36084,在初榜排第9

# 7、YOLOV5+k-fold+ensemble (opens new window)

  • 如题所示,分组思路是基于StractifiedKfold, 但是因为对于目标检测,除了label balance 还有很多因素需要考虑,比如说目标检测框的数量分布,种类分布,甚至面积大小分布,所以这边参考了一下stackoverflow 上一个讨论 (opens new window)。 使用了floor division //5

# 8、windows_YOLOv5L (opens new window)

  • 没什么trick,算是一个工程上的实践

# 03、总结

此次目标检测的竞赛并不像图像分类的竞赛那样,大家在各类 trick 上都有所尝试。因为图像分类任务简单,训练迭代快,并且大家基本都能从零搭建起自己的分类代码框架,所以在修改上是十分自由的。而对于目标检测竞赛,大家基本都是在使用别人的框架:

  • YOLOv5 以及 最新出的 YOLOX 都受到了大家的青睐
  • 此外还是老朋友 mmDetection 和 Detectron2

社区所分享方案中,大家所使用的个性化方案其实是比较有限的

  • 针对不平衡数据的过采样
  • 多折数据的划分
  • 多折训练及 WBF 集成

这也充分说明了搞 CV 的同学对于大型框架的修改动手能力还是较弱的(和我一样),改改 config 是不能成为核心竞争力的,等把我的分割框架搭建完成就来从别人代码的基础上搞一个自己的检测框架

上次更新: 2021/09/05, 19:05:19
图像检索orReID 竞赛的 Tricks
kaggle 图像分割竞赛学习

← 图像检索orReID 竞赛的 Tricks kaggle 图像分割竞赛学习→

最近更新
01
Structured Knowledge Distillation for Semantic Segmentation
06-03
02
README 美化
05-20
03
常见 Tricks 代码片段
05-12
更多文章>
Theme by Vdoing | Copyright © 2021-2023 Muyun99 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×