需要的数据集:
原始数据集:DukeMTMC-reID和Market-1501
标注数据集:DukeMTMC-attribute-master和Market-1501_Attribute-master
按照作者的要求,分别在DukeMTMC-reID和Market-1501文件下新建文件夹,命名为attribute,然后将DukeMTMC-attribute-master和Market-1501_Attribute-master中的duke_attribute.mat和market_attribute.mat分别放入所属的attribute文件夹。最后再将Market-1501文件放入DukeMTMC-reID目录下。
把作者的仓库下载到本地
其中的checkpoints文件要从作者给的百度云中下载,它是作者训练好了的模型,也就是说有了它我们就可以直接尝试test和inference而不需要自己再去训练模型(训练GPU有一定要求,因为作者使用的是resnet50网络)
打开test.py文件,因为作者不是在windows平台上写的,所以要在最顶端加入以下代码
import multiprocessing
if __name__ == '__main__':
multiprocessing.freeze_support()
同时在为了避免在Windows系统中使用多进程时报错,要将参数num_workers设置为0
def get_dataloader():
image_datasets = {}
image_datasets['gallery'] = Test_Dataset(data_dir, dataset_name=dataset_name, query_gallery='gallery')
image_datasets['query'] = Test_Dataset(data_dir, dataset_name=dataset_name, query_gallery='query')
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=args.batch_size,
shuffle=True, num_workers=0)
for x in ['gallery', 'query']}
return dataloaders
然后我们就可以在终端进行调试了
作者原语句为:
python3 test.py --data-path ~/dataset --dataset [market | duke] --model resnet50 [--print-table]
我修改为:
python test.py --data-path D:\dataset --dataset duke --backbone resnet50 --print-table
成功打印出table
接下来就是自己测试验证了
在数据集下新建test_sample文件夹,放入自己想测试的图片,并且以test_market.jpg格式命名
接下来就可以在终端执行命令了
python inference.py D:/dataset/DukeMTMC-reID/test_sample/test_market.jpg --dataset market --backbone resnet50
样张如图:
结果如图:
这样这个人物属性识别网络就大功告成啦!