代码学习001:Strong baseline

文章目录

  • 0 引言
  • 1 环境配置
  • 2 Train and test
  • 3 应用

0 引言

最近参加了NAIC的2020届行人重识别(ReID)的比赛,由于之前没做过ReID的项目,故先找了个2019届行人重识别(ReID)季军团队方案作为项目熟悉。
这里提到一个更加强力的ReID Baseline:
https://github.com/michuanhaohao/reid-strong-baseline
那么接下来就先把这个github的baseline跑通训练吧。

1 环境配置

个人电脑系统是Ubuntu18.04,按照github的环境配置:

  1. 先下载github项目,或者安装git,先cd 到自己下载项目的目录,再clone:git clone https://github.com/michuanhaohao/reid-strong-baseline
  2. 安装环境和依赖,因为我之前已经安装了pytorch 1.6.0+cuda 10.1 和 torchvision 0.7.0,就直接安装 ignite :pip install ignite -i https://pypi.douban.com/simple,之后安装yacs :pip install yacs -i https://pypi.douban.com/simple
  3. 准备和下载数据集,可以用百度云下载:Market1501:在这里插入代码片 ; DukeMTMC-reID:在这里插入代码片。我先用Market1501数据集,把数据集解压后,整个文件夹重命名market1501,放到项目的data目录下
  4. 接下来下载预训练权重:我用的是ResNet的resnet50-19c8e357.pth,我直接在项目中搜索的下载链接:https://download.pytorch.org/models/resnet50-19c8e357.pth,我下载后放入到绝对目录:/home/pluto/anaconda3/lib/python3.7/site-packages/torch/models/resnet50-19c8e357.pth,因此我先把config中的default.py中第29行代码修改为:_C.MODEL.PRETRAIN_PATH = '/home/pluto/anaconda3/lib/python3.7/site-packages/torch/models/',之后再把configs中的四个 .yml文件中的PRETRAIN_PATH修改为:PRETRAIN_PATH: '/home/pluto/anaconda3/lib/python3.7/site-packages/torch/models/resnet50-19c8e357.pth'

2 Train and test

项目中有很多 .sh文件进行选择,由于先打算用Market1501数据集训练,故先选择了Experiment-all_tricks-without_center-market.sh,在pycharm中打开进行修改:

python3 tools/train.py --config_file='configs/softmax_triplet.yml' MODEL.DEVICE_ID "('0')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "('/home/pluto/PycharmProjects/Github/reid-strong-baseline/data')" OUTPUT_DIR "('/home/pluto/log/reid_baseline_review/Opensource_test/market1501/Experiment-all-tricks-256x128-bs16x4-warmup10-erase0_5-labelsmooth_on-laststride1-bnneck_on')"

 
 
   
   
   
   
  • 1

这里的MODEL.DEVICE_ID为0(因为我只有一张显卡),DATASETS.NAMS和你解压后的文件夹名一样,DATASET.ROOT_DIR和你放项目的目录路径一样,到data为止,最后的OUTPUT_DIR根据自己想要输出的目录进行修改。

修改完之后,就可以在终端,先cd到这个Experiment-all_tricks-without_center-market.sh的目录下,然后终端输入:

sh Experiment-all_tricks-without_center-market.sh

 
 
   
   
   
   
  • 1

结果遇到一个bug:

  File "./engine/trainer.py", line 156, in do_train
    checkpointer = ModelCheckpoint(output_dir, cfg.MODEL.NAME, checkpoint_period, n_saved=10, require_empty=False)
  File "/home/pluto/anaconda3/lib/python3.7/site-packages/ignite/handlers/checkpoint.py", line 705, in __init__
    raise ValueError(msg)
ValueError: Argument save_interval is deprecated and should be None. This argument will be removed in 0.5.0.Please, use events filtering instead, e.g. Events.ITERATION_STARTED(every=1000)

 
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

因此我先尝试用在trainer.py程序中用Events.ITERATION_STARTED(every=1000)进行替代Events.ITERATION_STARTED,但重新sh,还是出现这个问题,然后想安装github说的ignite版本,但ignite目前只能安装1.0.0及以上,重新安装了ignite还是出现了问题,纠缠很久这个bug,最后直接修改了trainer.py中的156行代码(去掉了参数checkpoint_period):

checkpointer = ModelCheckpoint(output_dir, cfg.MODEL.NAME, n_saved=10, require_empty=False)

 
 
   
   
   
   
  • 1

再次sh Experiment-all_tricks-without_center-market.sh,项目开始训练,这里提醒一下,项目最大训练epoch是120,结果训练结果的确很好,这个baseline果然强大:

代码学习001:Strong baseline_第1张图片
一个跑通训练,其他 .sh的训练就相对来说更轻车熟路了。。。

3 应用

未完待续(当然,我最终肯定是为了训练2020届NAIC的ReID的数据集)。。。

你可能感兴趣的:(代码学习,深度学习,计算机视觉)