从理论到实践:DG-Net行人重识别模型训练全流程(附代码详解)

从理论到实践:DG-Net行人重识别模型训练全流程(附代码详解)

【免费下载链接】DG-Net :couple: Joint Discriminative and Generative Learning for Person Re-identification. CVPR'19 (Oral) :couple: 【免费下载链接】DG-Net 项目地址: https://gitcode.com/gh_mirrors/dg/DG-Net

DG-Net是一个创新性的行人重识别模型,它通过联合判别式和生成式学习来解决行人重识别问题。该模型在CVPR 2019会议上以口头报告形式发表,展现了在Market-1501等数据集上的卓越性能。本文将带您从理论到实践,全面了解DG-Net的工作原理和训练流程。

一、DG-Net模型原理:创新的双空间学习框架

DG-Net的核心创新在于将行人图像特征分解为两个互补空间:外观空间(Appearance Space)和结构空间(Structure Space)。这种分解使得模型能够更好地处理行人重识别中的挑战,如视角变化、姿态差异和光照条件变化等。

DG-Net双空间学习框架

图1:DG-Net的双空间学习框架展示。外观空间关注衣物颜色、纹理等身份相关特征,结构空间则捕捉人体姿态、体型等结构信息。

外观空间主要捕捉衣物颜色、纹理和款式等与身份直接相关的视觉线索,而结构空间则关注人体大小、发型、携带物品、姿态和背景等结构信息。通过这种分离,DG-Net能够更有效地学习到鲁棒的行人特征表示。

二、环境准备:快速搭建DG-Net运行环境

在开始训练DG-Net之前,我们需要准备好相应的运行环境。以下是详细的环境配置步骤:

2.1 硬件要求

  • GPU内存:至少15G(fp32模式)或10G(fp16/fp32混合精度模式)
  • Python 3.6环境

2.2 软件依赖

  • PyTorch 1.0+
  • torchvision 0.2.1+
  • NumPy
  • [可选] APEX(用于混合精度训练)

2.3 安装步骤

首先,克隆DG-Net仓库:

git clone https://gitcode.com/gh_mirrors/dg/DG-Net
cd DG-Net/

然后安装PyTorch和torchvision:

# 安装PyTorch,请根据您的CUDA版本选择合适的命令
pip install torch torchvision

# 或者从源码安装torchvision以获得最新功能
git clone https://github.com/pytorch/vision
cd vision
python setup.py install
cd ..

[可选] 安装APEX以支持混合精度训练:

git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cuda_ext --cpp_ext
cd ..

三、数据集准备:Market-1501数据集处理

DG-Net在行人重识别领域常用的Market-1501数据集上进行训练和测试。以下是数据集的准备步骤:

3.1 下载数据集

下载Market-1501数据集:

3.2 数据预处理

使用提供的脚本将数据集整理为按ID分组的格式:

python prepare-market.py

请记得在脚本中修改数据集路径为您自己的路径。处理后的数据集结构应该如下:

Market-1501/
└── pytorch/
    ├── train/
    │   ├── 0002/
    │   ├── 0007/
    │   └── ...
    ├── query/
    └── gallery/

四、训练流程:从零开始训练DG-Net模型

DG-Net的训练过程分为两个主要步骤:训练教师模型和训练DG-Net模型本身。

4.1 训练教师模型

DG-Net需要一个预训练的教师模型作为初始化。您可以直接下载预训练好的教师模型:

或者,您也可以自己训练教师模型:

# 参考person re-id baseline仓库训练教师模型
git clone https://github.com/layumi/Person_reID_baseline_pytorch
# 按照该仓库的说明训练模型
# 将训练好的模型复制到DG-Net的models目录下
cp Person_reID_baseline_pytorch/log/best/net_last.pth models/best/

教师模型需要放在以下路径:

├── models/
│   ├── best/                   /* teacher model for Market-1501
│       ├── net_last.pth        /* model file

4.2 配置训练参数

修改配置文件configs/latest.yaml,主要设置数据根目录:

data_root: "../Market-1501/pytorch"  # 修改为您的数据集路径

4.3 开始训练DG-Net

使用以下命令开始训练:

# 标准精度训练
python train.py --config configs/latest.yaml

# 或者使用混合精度训练(节省GPU内存)
python train.py --config configs/latest-fp16.yaml

训练过程中,中间结果和模型文件会保存在outputs/latest目录下。

4.4 监控训练过程

使用TensorBoard监控训练损失和性能:

tensorboard --logdir logs/latest

五、模型评估:测试DG-Net性能

训练完成后,我们需要评估模型的性能。DG-Net提供了在多个数据集上的评估结果。

5.1 下载预训练模型

如果您不想自己训练,可以直接下载预训练好的DG-Net模型:

下载后将模型放在outputs目录下:

├── outputs/
│   ├── E0.5new_reid0.5_w30000

5.2 行人重识别性能评估

DG-Net在多个数据集上取得了优异的性能:

数据集Rank@1mAP
Market-150194.8%86.0%
DukeMTMC-reID86.6%74.8%
MSMT1777.2%52.3%
CUHK03-NP65.6%61.1%

此外,DG-Net还展现了良好的泛化能力,在跨数据集迁移学习中表现出色:

迁移方向Rank@1Rank@5Rank@10mAP
Market→Duke42.62%58.57%64.63%24.25%
Duke→Market56.12%72.18%78.12%26.83%
Market→MSMT17.11%26.66%31.62%5.41%

5.3 图像生成质量评估

DG-Net不仅在重识别任务上表现出色,还能生成高质量的行人图像。以下是DG-Net生成的行人图像示例:

DG-Net生成的行人图像网格

图2:DG-Net生成的行人图像网格,展示了模型在不同姿态和外观变化下的生成能力。

要评估图像生成质量,可以使用visual_tools目录中的工具:

cd visual_tools
python test_folder.py  # 生成大量图像用于评估

然后使用SSIM和FID指标进行定量评估,具体方法请参考SSIMFID的文档。

六、高级应用:DG-Market合成数据集

DG-Net还提供了一个大规模的合成数据集DG-Market,包含128,307张生成图像,约为原始Market-1501训练集的10倍。这个数据集可用于半监督学习等场景。

6.1 下载DG-Market数据集

使用gdrive工具快速下载:

wget https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_386.tar.gz
tar -xzvf gdrive_2.1.1_linux_386.tar.gz
gdrive download 126Gn90Tzpk3zWp2c7OBYPKc-ZjhptKDo
unzip DG-Market.zip

6.2 DG-Market数据集统计信息

统计项DG-MarketMarket-1501 (训练集)
身份数-751
图像数128,30712,936

七、总结与展望

DG-Net通过创新的双空间学习框架,在行人重识别任务上取得了显著的性能提升。其联合判别式和生成式学习的方法不仅提高了重识别精度,还能够生成高质量的行人图像,为相关研究提供了新的思路和数据资源。

未来,DG-Net的思想可以扩展到其他视觉识别任务,如车辆重识别、人脸验证等。同时,结合最新的自监督学习方法,DG-Net有望在更少标注数据的情况下取得更好的性能。

如果您在研究中使用了DG-Net,请引用以下论文:

@inproceedings{zheng2019joint,
  title={Joint discriminative and generative learning for person re-identification},
  author={Zheng, Zhedong and Yang, Xiaodong and Yu, Zhiding and Zheng, Liang and Yang, Yi and Kautz, Jan},
  booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
  year={2019}
}

希望本文能够帮助您顺利上手DG-Net模型的训练和应用。如有任何问题,欢迎查阅项目的官方文档或在GitHub仓库提交issue。

【免费下载链接】DG-Net :couple: Joint Discriminative and Generative Learning for Person Re-identification. CVPR'19 (Oral) :couple: 【免费下载链接】DG-Net 项目地址: https://gitcode.com/gh_mirrors/dg/DG-Net

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值