第一次尝试打比赛的反思



  • 第一次打CV方面的比赛,中间遇到了诸多问题,在此进行总结。

    赛题重现

    2021 Multi-modal Aerial View Object Classification Challenge - Track 1 (SAR)

    比赛目标简单来说就是训练一个10分类的分类器。

    问题和难点

    1. 数据不匹配

      数据是由卫星拍摄得到的,其中可以分为两类图片:A类和B类,两类图片的特征差异极大,可以说同一个东西拍出来完全不是人能认出来的。

    2. 数据分布极不均匀

      官方提供的数据有train和valid两个文件,但是valid中没有标签(可能提供了给参赛者尝试半监督学习的方向?)。我的做法是将数据集全部按4:1拆分后,4为我的训练集。其中4的这个部分的分布如下:

      0 1 2 3 4 5 6 7 8 9
      183769 22472 12241 8524 1393 682 663 500 672 507

      前4个类和后面6个差距太大

    3. 图片风格的新颖

      这里不再放图了,问题在于图片是很奇怪的图像,人通常不能判断出来

    4. 官方提供资料较少

      参考的baseline就只有一个resnet50.py

    反思与感悟

    样本严重不平衡的问题那个

    • 要不要使用Focal Loss?并不能一看数据不平衡就盲目使用Focal Loss,但是也最后不要不尝试

      数据集如果足够纯净,没有标签错误的样本,那么大可尝试Focal Loss,反之则要慎重考虑。

    • 框架的使用会影响我们自己的魔改操作,我在整个过程中使用了两个框架,一个是PytorchInsight,另外一个是mmclassification。在训练已有模型时很方便,但是在进行魔改时问题很大,尤其是mmclassification这样大型的框架,源码套了好几层根本找不到。

    • 简单的诸如分类网络的框架可以自己写,甚至直接套Pytorch的官方doc都能差不多,但是这样自己搭起来的非常方便魔改和备份。

    特殊样本的问题

    • 对于样本不是传统的图片,有稀奇古怪的图片的时候,要先行调研,而不是直接上手开始训练、写代码。去看看有没有相关论文,开源数据集,解决类似问题的已有模型和仓库,深度学习很多是只用于某一方面的,需要不断调整。
    • 及时与同学、学长交流,交换意见头脑风暴

    比赛流程中

    • 比赛开始后第一件事:先跑出一个结果,因为不同的比接口不同,有的是csv文件,有的就只是传统的imagenet类数据格式,这个时候要先适应这些格式,为此要先跑出一个结果,这样方便后续idea的实施和修改
    • 实验过程中可以减小数据量,通常比赛的数据量较大,训练太慢。可以大幅削减数据量,加快训练速度,确定自己的想法能够work,确定某一个方向有用之后再使用全部数据

    具体模型使用

    • 新的论文一直都会出现,但是他们是针对公开数据集的,对于比赛这些有特定情景的任务并不一定适用,没必要盲目崇拜。
    • 大小模型不一定哪一种好用,大的可能过拟合,小的可能欠拟合,要具体试过才知道
    • 尝试投票策略等各种想法,越早尝试越好!
    • 一定一定及时和他人交流!

    其他

    • 提前完成一些代码的编写,就像数模期间大家都会提前写好一些算法。这里大家可以提前准备一些自己写的框架或者是读写数据的接口,减少开始比赛后的工作量。

    第一次参加类似的比赛,还是有很多不足,以上仅是个人的一些小见解,还请大家批评指正。


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待