黑羽

  • 10

    获得赞
  • 0

    发布的文章
  • 4

    答辩的项目

瑜伽体式分类-黑羽

图像分类

最后更新 2022-06-01 12:10 阅读 4145

最后更新 2022-06-01 12:10

阅读 4145

图像分类

赛题背景:      

本次赛题背景是瑜伽的动作类别太多,很难记住每个体式的名字,通过图像分类模型帮助我们识别各种瑜伽体式类别。    

赛题分析:     

 数据集包含瑜伽体式共6大类、82小类(实际:线下49类,线上50类)

 评价指标:准确率

赛题难点:

1、类别较多,分布不平衡

2、背景干扰项较多,人物在图片中的比例范围比较大

 3、存在错误的图片数据

4、存在一些抽象的线条等较难识别的样本


解题过程: 

思路一:多个Loss的分类网络 (没时间尝试,代码修改起来比较麻烦)

思路二:姿势识别+分类网络  (效率较低,姿势识别准确度不够,后续分类很难进行)

 思路三:单个Loss的分类网络 (容易实现,直接用蘑菇分类的代码修改即可)

数据处理:   

 1、直接把小类的标签提取处理作为类别,大类舍弃    

 train_csv_path = os.path.join(DATA_PATH,'YogaClassification',"train.csv")

 df = pd.read_csv(train_csv_path)

 df['label'] = df['labels'].map(lambda x: int(x.split(',')[2]))    

2、数据集划分   

 (1)使用两种划分方式: 8:2和9:1两种比例划分训练集和验证集   

 (2)遍历每一个类别,打乱数据,按照设定的比例采样训练与验证数据

分类模型选择:       

Se_ResNet154     (92.16)    

DenseNet161      (92.28)   

 Swin Transformer (94.61)   这两次比赛感觉Transformer系列是分类网络的首要选择

具体的参数:

(1)数据集划分:  训练集:验证集=8:2 / 9:1  

(2)模型选择:      Swim-Transformer     预训练模型: swin_large_patch4_window12_384_22k.pth

(3)inputsize:   384*384

(4)batchisize:    4

(5)max_epochs: 30

(6)学习率:   initlr = 1e-3,  每隔10轮    lr=0.1*lr

(7)优化器:      optim.SGD((self.model_ft.parameters()), lr=1e-3, momentum=momentum, weight_decay=0.0005)

(8)损失函数:LabelSmoothingCrossEntropy(smoothing=0.1).cuda()

(9)增强策略:  训练集: 随机裁剪、水平翻转、随机擦除;验证集:简单缩放

(10)测试增强:正常图片+ 水平翻转 -> 求平均

(11)融合策略:3个Swim-Transformer模型融合,结果用投票的少数服从多数原则 

提分的一些操作:       

    1、标签平滑       

    2、模型选择 Swim-Transformer       

    3、模型融合        

    4、随机裁剪、随机擦除       

    5、tta     

模型融合: 

融合实验一:  94.98      

Swim-Transformer  TTA    (原始图片+水平翻转)  (Split=0.9)    

 融合实验二: 96.45 

Swim-Transformer  TTA  (原始图片+水平翻转)   (Split=0.9)   

Swim-Transformer                                                   (Split=0.9)  

 Swim-Transformer                                                   (Split=0.8)    

总结和展望: 

(1)多看看最新的论文和算法,多去尝试一些新的优秀模型,Transformer模型在最后才利用上,在这两次比赛中的提分非常明显 

(2)拥有一套比较完善的比赛框架,便于快速实现赛题目标 

(3)尽量避免用K折交叉融合模型,没法评估单个模型的性能,还浪费时间 

(4)提交要趁早,比赛最后时刻排队时间太长 

(5)数据预处理还有很大的挖掘空间,人体检测、关键点检测,错误样本剔除等 

(6)数据增强可以尝试新的增强组合 

(7)学习率和优化器多去尝试,对结果影响都比较大 

(8)大类别分类模型、骨骼点检测用于结果的矫正

                                                                                                                                                                                                          

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://flyai.com/article/985
讨论
500字
表情
发送
删除确认
是否删除该条评论?
取消 删除