本人研一小白一枚, 老师给定的研究方向为行人重识别的方向, 最近在知乎上面看到了郑哲东大佬以及他们悉尼科技大学小组曾经写的知乎帖子https://zhuanlan.zhihu.com/p/50387521, 随手也附上他们的GitHub项目链接https://github.com/layumi/Person_reID_baseline_pytorch/tree/master/tutorial,方便后续进行温故复习, 如果过程中出现错误还请各位大佬指点,非常感谢!
由于代码发布时间和现在相比很遥远,而且当时郑大佬在写代码时采用的是Linux操作系统而不是Windows操作系统,导致代码在进行运行时出现了一些错误, 下面对错误和代码的一些理解进行记录, 代码理解可能有不对之处还请各位指正。
step1 下载数据集
按照知乎帖子里面的流程, 先下载Market1501的数据集, 由于这个数据集放在了Google Drive因此需要采用魔法方法进入, 也可以采用百度网盘的方式进行下载, 链接https://pan.baidu.com/s/1ntIi2Op?at=1709632053048, 数据集的Google Drive链接https://drive.google.com/file/d/0B8-rUzbwVRk0c054eEozWG9COHM/view?resourcekey=0-8nyl7K9_x37HlQm34MmrYQ。最好解压完以后的文件夹和GitHub上面的项目并行, 如图所示:
step2 在anaconda里面创建虚拟环境
在anaconda中创建虚拟环境
conda create -n ReID_base python=3.6
安装pytorch和torchvision
可以根据自己电脑的GPU对应自己的cuda号(貌似只支持Nvidia的显卡, 查看cuda的命令为nvidia-smi), 然后在pytorch官网中查找对应的安装命令进行安装。
注:一定要先进入虚拟环境中进行安装!!(conda activate ReID_base)
安装对应的包
先利用命令行找对对应下载项目的目录, 然后pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple, 进行安装, 基本上配置环境大功告成, 可以开始编译代码了。
step2 运行prepare.py
按照知乎流程操作即可。
step3 查看model.py
把原先的class fc_net那里屏蔽掉改成如下的代码:
点击查看代码
class ft_net(nn.Module):
def __init__(self, class_num=751):
super(ft_net, self).__init__()
model_ft = models.resnet50(pretrained=True)
model_ft.avgpool = nn.AdaptiveAvgPool2d((1, 1))
self.model = model_ft
self.classifier = ClassBlock(2048, class_num, 0.5)
def forward(self, x):
x = self.model.conv1(x)
x = self.model.bn1(x)
x = self.model.relu(x)
x = self.model.maxpool(x)
x = self.model.layer1(x)
x = self.model.layer2(x)
x = self.model.layer3(x)
x = self.model.layer4(x)
x = self.model.avgpool(x)
x = torch.squeeze(x)
x = self.classifier(x)
return x
step4 修改train.py的代码
在第166行左右这个代码进行修改
点击查看代码
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=opt.batchsize,
shuffle=True, num_workers=0, pin_memory=True,)
#prefetch_factor=2, persistent_workers=True) # 8 workers may work faster
for x in ['train', 'val']}