reid-strong-baseline源码运行

文章目录

  • 配置环境
  • 下载资源
  • 调整源码
  • 测试运行

论文题目:Bag of Tricks and A Strong Baseline for Deep Person Re-identification
论文地址 提取码:h6qp

配置环境

新建一个名为reid的python虚拟环境

conda create -n reid python=3.6

切换至该虚拟环境下

安装pytorch和torchvision

conda install pytorch==1.6.0 torchvision==0.7.0  -c pytorch

安装yacs

pip install yacs

安装pytorch-ignite

pip install pytorch-ignite

安装utils

pip install utils

下载资源

reid-strong-baseline开源代码地址
下载项目文件夹,放在自己的project目录下。

Market1501数据集 提取码:t48p
将该压缩包下载并解压,文件夹重命名为“market1501”,然后将该文件夹放在原项目的data/目录下

预训练权重 提取码:d8fc
将该文件下载后,放在任意目录下。这个目录要记下,后面会用到。

调整源码

1)config/defaults.py调整
第19行_C.MODEL.PRETRAIN_PATH设置为自己的预训练模型所在目录

_C.MODEL.PRETRAIN_PATH = 'D:/setup/Anaconda/envs/reid/Lib/site-packages/torch/models/' # 模型预训练权重

2)configs/目录下的4个yml文件
PRETRAIN_PATH设为resnet50-19c8e357.pth所在目录

PRETRAIN_PATH: 'D:/setup/Anaconda/envs/reid/Lib/site-packages/torch/models/resnet50-19c8e357.pth'

3)engine/trainer.py调整
156行和235行删除参数checkpoint_period

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

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

如果不删除参数checkpoint_period,运行.sh脚本文件时会出现如下报错:

Traceback (most recent call last):
  File "tools/train.py", line 158, in <module>
    main()
  File "tools/train.py", line 154, in main
    train(cfg)
  File "tools/train.py", line 68, in train
    start_epoch     # add for using self trained model
  File "E:\project_file\PyCharm\reid\baseline\engine\trainer.py", line 156, in do_train
    checkpointer = ModelCheckpoint(output_dir, cfg.MODEL.NAME,checkpoint_period,  n_saved=10, require_empty=False)
  File "D:\setup\Anaconda\envs\reid\lib\site-packages\ignite\handlers\checkpoint.py", line 854, 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)

4)tools/train.pytools/test.py调整
sys.path.append('.')之前加入下面两行代码

parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,parentdir)

如果不加这两行,运行.sh脚本文件时会出现如下报错:

Traceback (most recent call last):
  File "tools/train.py", line 16, in <module>
    from data import make_data_loader
  File ".\data\__init__.py", line 7, in <module>
    from .build import make_data_loader
  File ".\data\build.py", line 10, in <module>
    from .datasets import init_dataset, ImageDataset
  File ".\data\datasets\__init__.py", line 7, in <module>
    from .dukemtmcreid import DukeMTMCreID
  File ".\data\datasets\dukemtmcreid.py", line 14, in <module>
    from utils.iotools import mkdir_if_missing
ModuleNotFoundError: No module named 'utils.iotools'

5)Experiment-all_tricks-without_center-market.sh调整
python3改为python
MODEL.DEVICE_ID设为自己要使用的设备ID
DATASETS.NAMES设为自己要训练的数据集文件夹名,就是之前下载的那个文件夹
DATASETS.ROOT_DIR设为数据文件路径,就是DATASETS.NAMES所在的目录
OUTPUT_DIR是输出目录,这个可以随便设。代码运行时,会在该文件夹下生成一个txt文件,在控制台的每一条输出都会记录在该txt文件中,方便我们随时查看。
(如果你要运行其他.sh脚本,以类似的格式进行修改即可)

python tools/train.py --config_file='configs/softmax_triplet.yml' MODEL.DEVICE_ID "('0')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "('E:/project_file/PyCharm/reid/baseline/data')" OUTPUT_DIR "('E:/project_file/PyCharm/reid/out/market1501/Experiment-all-tricks-256x128-bs16x4-warmup10-erase0_5-labelsmooth_on-laststride1-bnneck_on')"

测试运行

.sh脚本文件需要使用sh命令运行,而Windows的命令行是不支持sh的,所以需要想点其他办法。我电脑上之前就安装了git,所以就直接用了git的命令行窗口,非常方便。
如果想直接在pycharm中运行,点击file–settings–tools–treminal,更改Shell path为git安装目录下的sh.exe(不做更改前默认是Windows的cmd.exe)。
reid-strong-baseline源码运行_第1张图片
这样就可以直接在pycharm中运行.sh脚本了,也可以直接在Treminal界面输入以下命令:

sh Experiment-all_tricks-without_center-market.sh

这个强大的baseline就成功的跑起来了
reid-strong-baseline源码运行_第2张图片

参考:
参考文章1
参考文章2
参考文章3

你可能感兴趣的:(ReID,计算机视觉,python)