【实验记录1】行人重识别

使用ResNet50训练Market1501

  • 0x00参考
  • 0x01准备数据集
  • 0x02搭建模型ResNet50
  • 0x03test
  • 0x04可视化结果

0x00参考

⭐️郑哲东博士的GitHub
从零开始行人重识别-知乎
全篇对于上手person ReId 具有重要意义


环境:
torch_version=1.13.0+cu117
python_version=3.8.13
torch_version=1.10.2+cu102
python_version=3.6.13
没有的包pip install安装就好了,
修改pip源为清华源pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
需要GPU,纯CPU应该不够

0x01准备数据集

Market-1501很多找找都能下到
首先使用prepare.py处理数据集,自己下载的数据集文件位置记得改进去
运行完会生成一个pytorch文件
【实验记录1】行人重识别_第1张图片

跑完之后,在pytorch的每个子文件夹中,图像都是按ID来排列的。
对于Market这个数据集,图像文件名就是它的ID/label

0x02搭建模型ResNet50

model.py中已经改好需要变动的地方:
Market中的类别数是751,原来使用的ImageNet的类别数是1000.

具体来看model.py的改动:
(continue…)

(win10)笔记本跑的报错cannot import name ‘PY3‘ from ‘torch._six‘百度查的说是torch和torchvision版本不匹配,但此前运行别的项目都没这问题
解决办法:重装版本匹配的torch和torchvision,此句可行pip install --user --upgrade torch1.10.0 torchvision0.11.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
在这里插入图片描述
写的很乱,总之就是CUDA和pytorch,torchvision版本都要兼容,官网可查

训练

(caiman).../Person_reID_baseline_pytorch-master$ python train.py --gpu_ids 0 --name ft_ResNet50 --train_all --batchsize 32 --data_dir ../data/Market1501/pytorch

14:50终于开始跑
【实验记录1】行人重识别_第2张图片

可以看到GPU利用率也很好
【实验记录1】行人重识别_第3张图片

昨天做的上不去,一开始以为是训练数据太少,今天才知道装的pytorch和CUDA版本不匹配,还是不能太依赖别人的环境,重建了一个虚拟环境费点时间但是问题有源可寻
查看CUDA是否可用:print(torch.cuda.is_available())
查看CUDA版本:nvcc -V

50分钟训练完
【实验记录1】行人重识别_第4张图片

train_acc=99.94%
验证集的准确率到98%

0x03test

1.载入刚刚训练的模型来抽取每张图片的视觉特征
执行命令:

python test.py --gpu_ids 0 --name ft_ResNet50 --test_dir ../data/Market1501/pytorch --batchsize 32 --which_epoch 59

【实验记录1】行人重识别_第5张图片
运行结果截图(part)
【实验记录1】行人重识别_第6张图片
2. 用抽取的特征去匹配图像
运行evaluate_gpu.py

python evaluate_gpu.py

在这里插入图片描述

0x04可视化结果

值得注意的是demo.py中的14行dataset的位置根据个人的调整
运行命令

python demo.py --query_index 777

或者pycharm直接运行也行,前提是path都改成自己的了,前面几个操作我都在命令行现给的自己放data的路径

运行结果:
【实验记录1】行人重识别_第7张图片
嘢,不能显示UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figureagg是一个没有图形显示界面的终端
看到第8行
在这里插入图片描述
那把agg改成TKagg试试,TKAGG是有图形界面显示的终端,

修改之后能可视化了,但是看到一下top10就结束了,
查看代码,保存了结果在当前目录下,可以改一下保存路径
这是我的fig.savefig("../data/show.png")
在最后加句plt.waitforbuttonpress()可以停留运行结果不直接结束直到按键盘

运行结果:
【实验记录1】行人重识别_第8张图片

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