赞
踩
以下链接是个人关于DG-Net(行人重识别ReID)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号− 海量资源。 \color{blue}{ 海量资源}。 海量资源。
极度推荐的商业级项目: \color{red}{极度推荐的商业级项目:} 极度推荐的商业级项目:这是本人落地的行为分析项目,主要包含(1.行人检测,2.行人追踪,3.行为识别三大模块):行为分析(商用级别)00-目录-史上最新无死角讲解
通过前面的博客,大家应该拿到论文和源码,为了方便,我这里把源码再粘贴一次:https://github.com/NVlabs/DG-Net
不用多说什么,拿到源码之后,肯定是先阅读README.md,不管三七二十一,先根据提示操作一波,遇到问题再说,所谓水来土掩兵来将挡(环境搭建就大家自己解决了-表示本人也遇到了一些坑)。
根基提示我们先下载数据集(本人下载的是[Baidu Disk]):
数据下载好之后,我们要执行
python prepare-market.py
在执行之前,需要更改一下路径,本人如下:
# download_path = '../Market'
download_path = 'E:/1.PaidOn/5.ReID/1.DG-Net/2.Dataset/1.OfficialData/1.traindata/Market-1501-v15.09.15'
其目的即使把官方的数据集进行处理,把行人分好类到\Market-1501-v15.09.15\pytorch下面,制作号训练数据,我们就要进行测试了,测试之前当然是下载好预训练模型:
这里出现了一个小问题,那就是下载好之后,我们的预训练模型应该要放在哪里呢?本人放置的方式如下:
放置好了之后,我们就要进行模型评了。
根据提示,他让我们查看visual_tools目录下面的README.md,然后使用./visual_tools/test_folder.py生成大量的图片进行评估,对于 SSIM 与FID(如果不是很了解,可以看看上两篇论文翻译的博客,并且一定要了解,不然对后面的讲解看得会比较模糊)指标,我们仅需要改变一下路径就能进行测试了。
那么我们就来看看visual_tools目录下面的README.md,可以看到,他提示我们需要去下载:
https://github.com/layumi/TTUR
直接把整个工程下载下来就OK了,不用考虑那么多。完成之后,本人的两个项目是并列放置的,如下:
首先我们要修改DG-Net-master\visual_tools\test_folder.py的路径,本人修改如下:
parser.add_argument('--output_folder', type=str, default="E:/1.PaidOn/5.ReID/1.DG-Net/2.Dataset/1.OfficialData/1.traindata/Market-1501-v15.09.15/pytorch/off-gan_id1/", help="output image path")
parser.add_argument('--output_folder2', type=str, default="E:/1.PaidOn/5.ReID/1.DG-Net/2.Dataset/1.OfficialData/1.traindata/Market-1501-v15.09.15/pytorch/off-gan_bg1/", help="output image path")
parser.add_argument('--input_folder', type=str, default="E:/1.PaidOn/5.ReID/1.DG-Net/2.Dataset/1.OfficialData/1.traindata/Market-1501-v15.09.15/pytorch/train_all/", help="input image path")
后面生成的图片就在Market-1501-v15.09.15/pytorch目录之中,然后我们指定预训练模型的路径:
opts = parser.parse_args()
opts.checkpoint_gen = "./outputs/%s/checkpoints/gen_00%06d.pt"%(opts.name, opts.which_epoch)
opts.checkpoint_id = "./outputs/%s/checkpoints/id_00%06d.pt"%(opts.name, opts.which_epoch)
opts.config = './outputs/%s/config.yaml'%opts.name
下面是一个重点,大家一定要修改好,在程序的最后,本人修改如下:
print('---- start fid evaluation ------')
os.system('cd ../../TTUR & python fid.py \
E:/1.PaidOn/5.ReID/1.DG-Net/2.Dataset/1.OfficialData/1.traindata/Market-1501-v15.09.15/pytorch/train_all \
E:/1.PaidOn/5.ReID/1.DG-Net/2.Dataset/1.OfficialData/1.traindata/Market-1501-v15.09.15/pytorch/off-gan_id1 \
--gpu 0')
可以看到,在数据生成之后,其执行了一条命令,这条命令,就是执行我们之前下载好的代码程序,对生成的数据集进行评估。还有一点大家要注意两个点是。
1.在源码中,os.system的命令是用;号分开的,这是在linux运行,我这里改成了&。这是winds下执行多条命令的格式
2.这里不能使用朋友pycharm进行评估,否则评估之后的信息看不到,本人修改完成之后,直接执行如下命令:
python test_folder.py
如果报错 No module named ‘trainer’,则修改如下:
#sys.path.append('.')
sys.path.append('..')
运行打印如下:
进行等待即可,这里再进行数据生成,还没有进行评估,其生成过程需要一段时间。等待生成之后,会进行FID评估。
可以看到,其评估得到的FID值,和论文的描述是相近的,表示的是生成照片和实际照片的分离度。也就是说,该值越小表示模型效果越好。
源码中似乎没有介绍SSIM的评估,如果后续有时间,我会介绍一下SSIM评估的过程。现在我们来看看下载的Market-1501数据集。
本人下载数据集之后,解压如下:
执行完上面的FID评估程序之后,目录如下:
我们可以很明显的看到多了一个pytorch的文件夹,这个估计是生成的数据,暂时我们先不去理会。下面是readme简单的翻译:
%******************************************************************************************************************%
% The Market-1501 dataset is collected with six cameras, open environment, in Tsinghua University. %
% A total of 1501 individuals are annotated. 751 individuals are used for training. There are 750 individuals for %
% testing, and in total 3368 query images. %
% There are 19732 images in the test set, and 12936 images in the training set. %
% If you use this dataset, please kindly cite our paper as, %
% %
% Liang Zheng*, Shengjin Wang, Liyue Shen*, Lu Tian*, Jiahao Bu, and Qi Tian. Person Re-identification Meets Image %
% Search. Technical Report, 2015. (*equal contribution) %
% %
% This dataset should be used for research only. Please DO NOT distribute or use it for commercial purpose. %
%******************************************************************************************************************%
# 上面说这是清华大学收集的数据集(来自六个摄像头)。一共有1501人个人经过的注释,其中751个人(12936张图片)用于训练,750个人(19732张图片)用于测试。
%%%%%% Content in the Zip file%%%%%%%%%%
# 这个文件包含了19732张的测试图片
1. "bounding_box_test" file. This file contains 19732 images for testing.
# 这个文件包含了12936张训练图片
2. "bounding_box_train" file. This file contains 12936 images for training.
# 该文件包含了3368张来自于bounding_box_test抽取的图片,也就是3368有疑问的照片
3. "query" file. It contains 3368 query images. Search is performed in the "bounding_box_test" file.
# 该文件包含了25259张图片,全都是手工框出的行人,这些图片包含了训练和测试的所有行人。简单的说,就是检测出了行人,但是没有根据ID分类。
4. "gt_bbox" file. It contains 25259 images, all hand-drawn. The images correspond to all the 1501 individuals in the test and training set.It is used to distinguish "good" "junk" and "distractors".
# gt_query目录每个人的图片,都包含了质量好的,或者质量差的照片,其中有3368张图片是带有疑问的。该数据可以用于性能评估(原谅我真的翻译不过来)
5. "gt_query" file. For each of the 3368 queries, there are both good and junk relevant images (containing the same individual). This file contains the image index of the good and junk images. It is used during performance evaluation.
If you have any problem, please contact me at liangzheng06@gmail.com.
下面我们来看看重新生成pytorch,文件夹:
现在我们看来也比较懵逼,由于还没有去分析代码,也不知道生成的数据有那些特点,下面是本人观察之后的大概 猜测(参考即可,不需要太在意)
off-gan_bg1 # 忽略背景,其中的人相同,但是背景衣服不一样,训练出来的模型可以忽略同一人,不同衣服的影响
off-gan_id1 # 衣服是相同的,但是每个文件夹下的ID都不是同一个
# 上面的两个文件夹,应该都是生成的图片,是为了FID的评估,也就是训练的时候不会用到这两个文件(在线生成,不会保存)
train与train_all#的人物ID都一样,但是train的图片少一些,暂时不知道删除了那些照片
val #中的应该是验证集的照片,其中每个人都只有一张照片,ID和train_all中的是一样的
# val+train=train_all的数目,所以猜测val为验证集
multi-query #应该是测试集的照片
query # 应该就是测试集了吧
gallery # 包含了所有的照片,其他文件夹中的照片,应该都能再这里找到。其中有一个-1的文件夹,保存那些不知道所属ID的图片
暂时这样去分析,感觉乱七八糟的,等我们后续分析代码,应该就清楚怎么回事。那么该章博客就介绍到这里了。下小节我们将开始讲解训练过程!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。