deep-person-reid是一个针对Person re-identification问题的训练框架。它基于深度学习框架PyTorch,提供了规范的代码组织结构,适用于reid问题的实验拓展。本文就自己第一次训练测试过程进行记录。
项目gituhb仓库地址:https://github.com/KaiyangZhou/deep-person-reid
项目文档:https://kaiyangzhou.github.io/deep-person-reid/
cd deep-person-reid-master
conda create --name torchreid python=3.7
conda activate torchreid
之后如果运行是还缺其他包再pip安装
pip install -r requirements.txt
根据自己的配置安装对应torch版本
在终端输入nvcc -V查看自己的cuda版本。如我是10.2
上官网找到pythorch安装命令
如我安装的pytorch1.8.0版本,使用命令即可安装。
conda install pytorch1.8.0 torchvision0.9.0 torchaudio==0.8.0
cudatoolkit=10.2 -c pytorch
Google Drive
Market-1501-v15.09.15
修改为
market1501
在scripts/下创建文件start_train_main.py
参考官方文档,代码如下:
import torchreid
datamanager = torchreid.data.ImageDataManager(
# 修改成自己下载的market1501数据集路径
root="../Dataset/",
sources="market1501",
targets="market1501",
height=256,
width=128,
batch_size_train=32,
batch_size_test=100,
transforms=["random_flip", "random_crop"]
)
model = torchreid.models.build_model(
name="resnet50",
num_classes=datamanager.num_train_pids,
loss="softmax",
pretrained=True
)
model = model.cuda()
optimizer = torchreid.optim.build_optimizer(
model,
optim="adam",
lr=0.0003
)
scheduler = torchreid.optim.build_lr_scheduler(
optimizer,
lr_scheduler="single_step",
stepsize=20
)
engine = torchreid.engine.ImageSoftmaxEngine(
datamanager,
model,
optimizer=optimizer,
scheduler=scheduler,
label_smooth=True
)
engine.run(
save_dir="log/resnet50",
max_epoch=60,
eval_freq=10,
print_freq=10,
test_only=False
)
如果报错没有torchreid module问题,在最前面加入
import sys
# 修改成自己的项目路径
sys.path.append('../deep-person-reid-master')
最后运行代码:
python scripts/start_train_main.py
此过程需要大量时间,根据个人机器情况不定。
训练结束会在log/resnet50/model/生成自己的训练模型。
在scripts/下创建文件start_test.py文件。
讲训练代码复制进行,随后如下图38、39行所示增加两行代码,38行为自己的模型路径。
然后修改engine.run()如下。
最后运行代码:
python scripts/start_test.py
测试结束后会在log/resnet50/visrank_market1501/下生成可视化结果。
行人重识别(ReID) ——数据集描述 Market-1501