前几天英伟达开源了DG-Net的源码。让我们来回顾一下这篇CVPR19 Oral的论文。
论文是英伟达(NVIDIA), 悉尼科技大学(UTS), 澳大利亚国立大学(ANU)的研究人员 在CVPR19上口头报告的文章《 Joint Discriminative and Generative Learning for Person Re-identification》。 深度学习模型训练时往往需要大量的标注数据,但收集和标注大量的数据往往比较困难。作者在行人重识别这个任务上探索了 利用生成数据来辅助训练的方法。通过生成高质量的行人图像,将其与行人重识别模型融合,同时提升行人生成的质量和行人重识别的精度。
Person Re-ID & Generation/video/1151483635302526976
代码运行效果:(训练100000次迭代)
(代码部分)开发环境:Python 3.6
GPU Memory >= 15G 如果使用fp32精度
GPU Memory >= 10G 如果使用fp16精度,可以节省一部分显存
NumPy
PyTorch 1.0+
[Optional] APEX (使用fp16要安装)
我在我的1080Ti上测试了fp16是可以运行的~
(代码部分)数据集下载地址:
(代码部分)训练好的模型下载:
(代码部分)测试效果如下:行人重识别的精度:
生成的行人图像:
(代码部分)训练的命令很简单:
选项已经内置到yaml文件中,若按照全精度fp32来运行,约占用15G显存。
python train.py --config configs/latest.yaml
若使用半精度训练,则只使用约10G显存。
python train.py --config configs/latest-fp16.yaml
训练的log可使用tensorboard 来查看
tensorboard --logdir logs/latest
(理论部分)整体框架:
我发现看大图有点难理解。所以推荐先看小图 b,c,d。 b是同ID生成,c是不同id换衣,d则是利用生成图像来训练,refine encoder。
然后将b,c,d 混合在一起就是a啦~~
(理论部分)具体模型的结构:
Ea 是ResNet50 所以作者没有提供图。
Es 是一个浅层CNN,如下图:
G 是一个Decoder,如下图:
鉴别器D如下:
感谢看完。一部分内容参考作者的csdn和论文: