Code for the paper Progressive Pose Attention for Person Image Generation in CVPR19(Oral). The paper is available here. The video demo is coming soon.
[19/4/24] Codes for pytorch 1.0 is available now under the branch pytorch_v1.0. The same results on both datasets can be reproduced with the pretrained model.
This is Pytorch implementation for pose transfer on both Market1501 and DeepFashion dataset. The code is written by Tengteng Huang and Zhen Zhu.
- pytorch 0.3.1
- torchvision
- numpy
- scipy
- scikit-image
- pillow
- pandas
- tqdm
- dominate
- Clone this repo:
git clone https://github.com/tengteng95/Pose-Transfer.git
cd Pose-Transfer
We use OpenPose to generate keypoints. We also provide our extracted keypoints files for convience.
- Download the Market-1501 dataset from here. Rename bounding_box_train and bounding_box_test to train and test, and put them under the
market_data
directory. - Download train/test splits and train/test key points annotations from Google Drive or Baidu Disk, including market-pairs-train.csv, market-pairs-test.csv, market-annotation-train.csv, market-annotation-train.csv. Put these four files under the
market_data
directory. - Launch
python tool/generate_pose_map_market.py
to generate the pose heatmaps.
- Download the DeepFashion dataset from Google Drive or Baidu Disk. Unzip
train.zip
andtest.zip
into thefashion_data
directory. - Download train/test splits and train/test key points annotations from Google Drive or Baidu Disk, including fasion-resize-pairs-train.csv, fasion-resize-pairs-test.csv, fasion-resize-annotation-train.csv, fasion-resize-annotation-train.csv. Put these four files under the
fashion_data
directory. - Launch
python tool/generate_pose_map_fashion.py
to generate the pose heatmaps.
Market-1501
python train.py --dataroot ./market_data/ --name market_PATN --model PATN --lambda_GAN 5 --lambda_A 10 --lambda_B 10 --dataset_mode keypoint --no_lsgan --n_layers 3 --norm batch --batchSize 32 --resize_or_crop no --gpu_ids 0 --BP_input_nc 18 --no_flip --which_model_netG PATN --niter 500 --niter_decay 200 --checkpoints_dir ./checkpoints --pairLst ./market_data/market-pairs-train.csv --L1_type l1_plus_perL1 --n_layers_D 3 --with_D_PP 1 --with_D_PB 1 --display_id 0
DeepFashion
python train.py --dataroot ./fashion_data/ --name fashion_PATN --model PATN --lambda_GAN 5 --lambda_A 1 --lambda_B 1 --dataset_mode keypoint --n_layers 3 --norm instance --batchSize 7 --pool_size 0 --resize_or_crop no --gpu_ids 0 --BP_input_nc 18 --no_flip --which_model_netG PATN --niter 500 --niter_decay 200 --checkpoints_dir ./checkpoints --pairLst ./fashion_data/fasion-resize-pairs-train.csv --L1_type l1_plus_perL1 --n_layers_D 3 --with_D_PP 1 --with_D_PB 1 --display_id 0
Market1501
python test.py --dataroot ./market_data/ --name market_PATN --model PATN --phase test --dataset_mode keypoint --norm batch --batchSize 1 --resize_or_crop no --gpu_ids 2 --BP_input_nc 18 --no_flip --which_model_netG PATN --checkpoints_dir ./checkpoints --pairLst ./market_data/market-pairs-test.csv --which_epoch latest --results_dir ./results
DeepFashion
python test.py --dataroot ./fashion_data/ --name fashion_PATN --model PATN --phase test --dataset_mode keypoint --norm instance --batchSize 1 --resize_or_crop no --gpu_ids 0 --BP_input_nc 18 --no_flip --which_model_netG PATN --checkpoints_dir ./checkpoints --pairLst ./fashion_data/fasion-resize-pairs-test.csv --which_epoch latest --results_dir ./results
We adopt SSIM, mask-SSIM, IS, mask-IS, DS, and PCKh for evaluation of Market-1501. SSIM, IS, DS, PCKh for DeepFashion.
For Market-1501:
python tool/getMetrics_market.py
For DeepFashion:
python tool/getMetrics_market.py
Download pretrained on VOC 300x300 model and install propper caffe version SSD. Put it in the ssd_score forlder.
For Market-1501:
python compute_ssd_score_market.py --input_dir path/to/generated/images
For DeepFashion:
python compute_ssd_score_fashion.py --input_dir path/to/generated/images
For PCKh evaluation, Tensorflow 1.4.1 is required.
- First, run
tool/crop_market.py
ortool/crop_fashion.py
. - Download pose estimator from Google Drive or Baidu Disk. Put it under the root folder
Pose-Transfer
. - Change the paths input_folder and output_path in
tool/compute_coordinates.py
. And then launch
python2 compute_coordinates.py
- run
tool/calPCKH_fashion.py
ortool/calPCKH_market.py
Our pre-trained model can be downloaded Google Drive or Baidu Disk.
If you use this code for your research, please cite our paper.
@article{zhu2019progressive,
title={Progressive Pose Attention Transfer for Person Image Generation},
author={Zhu, Zhen and Huang, Tengteng and Shi, Baoguang and Yu, Miao and Wang, Bofei and Bai, Xiang},
journal={arXiv preprint arXiv:1904.03349},
year={2019}
}
Our code is based on the popular pytorch-CycleGAN-and-pix2pix.