在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:Bringing-Old-Photos-Back-to-Life开源软件地址:https://gitee.com/mirrors_microsoft/Bringing-Old-Photos-Back-to-Life开源软件介绍:Old Photo Restoration (Official PyTorch Implementation)Project Page | Paper (CVPR version) | Paper (Journal version) | Pretrained Model | Colab Demo | Replicate Demo & Docker ImageBringing Old Photos Back to Life, CVPR2020 (Oral) Old Photo Restoration via Deep Latent Space Translation, PAMI Under Review Ziyu Wan1,Bo Zhang2,Dongdong Chen3,Pan Zhang4,Dong Chen2,Jing Liao1,Fang Wen2 NewsThe framework now supports the restoration of high-resolution input. Training code is available and welcome to have a try and learn the training details. You can now play with our Colab and try it on your photos. RequirementThe code is tested on Ubuntu with Nvidia GPUs and CUDA installed. Python>=3.6 is required to run the code. InstallationClone the Synchronized-BatchNorm-PyTorch repository for cd Face_Enhancement/models/networks/git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorchcp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .cd ../../../ cd Global/detection_modelsgit clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorchcp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .cd ../../ Download the landmark detection pretrained model cd Face_Detection/wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2bzip2 -d shape_predictor_68_face_landmarks.dat.bz2cd ../ Download the pretrained model from Azure Blob Storage, put the file cd Face_Enhancement/wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/face_checkpoints.zipunzip face_checkpoints.zipcd ../cd Global/wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/global_checkpoints.zipunzip global_checkpoints.zipcd ../ Install dependencies: pip install -r requirements.txt How to use?Note: GPU can be set 0 or 0,1,2 or 0,2; use -1 for CPU 1) Full PipelineYou could easily restore the old photos with one simple command after installation and downloading the pretrained model. For images without scratches: python run.py --input_folder [test_image_folder_path] \ --output_folder [output_path] \ --GPU 0 For scratched images: python run.py --input_folder [test_image_folder_path] \ --output_folder [output_path] \ --GPU 0 \ --with_scratch For high-resolution images with scratches: python run.py --input_folder [test_image_folder_path] \ --output_folder [output_path] \ --GPU 0 \ --with_scratch \ --HR Note: Please try to use the absolute path. The final results will be saved in 2) Scratch DetectionCurrently we don't plan to release the scratched old photos dataset with labels directly. If you want to get the paired data, you could use our pretrained model to test the collected images to obtain the labels. cd Global/python detection.py --test_path [test_image_folder_path] \ --output_dir [output_path] \ --input_size [resize_256|full_size|scale_256] 3) Global RestorationA triplet domain translation network is proposed to solve both structured degradation and unstructured degradation of old photos. cd Global/python test.py --Scratch_and_Quality_restore \ --test_input [test_image_folder_path] \ --test_mask [corresponding mask] \ --outputs_dir [output_path]python test.py --Quality_restore \ --test_input [test_image_folder_path] \ --outputs_dir [output_path] 4) Face EnhancementWe use a progressive generator to refine the face regions of old photos. More details could be found in our journal submission and
5) GUIA user-friendly GUI which takes input of image by user and shows result in respective window. How it works:
How to train?1) Create Training FilePut the folders of VOC dataset, collected old photos (e.g., Real_L_old and Real_RGB_old) into one shared folder. Then cd Global/data/python Create_Bigfile.py Note: Remember to modify the code based on your own environment. 2) Train the VAEs of domain A and domain B respectivelycd ..python train_domain_A.py --use_v2_degradation --continue_train --training_dataset domain_A --name domainA_SR_old_photos --label_nc 0 --loadSize 256 --fineSize 256 --dataroot [your_data_folder] --no_instance --resize_or_crop crop_only --batchSize 100 --no_html --gpu_ids 0,1,2,3 --self_gen --nThreads 4 --n_downsample_global 3 --k_size 4 --use_v2 --mc 64 --start_r 1 --kl 1 --no_cgan --outputs_dir [your_output_folder] --checkpoints_dir [your_ckpt_folder]python train_domain_B.py --continue_train --training_dataset domain_B --name domainB_old_photos --label_nc 0 --loadSize 256 --fineSize 256 --dataroot [your_data_folder] --no_instance --resize_or_crop crop_only --batchSize 120 --no_html --gpu_ids 0,1,2,3 --self_gen --nThreads 4 --n_downsample_global 3 --k_size 4 --use_v2 --mc 64 --start_r 1 --kl 1 --no_cgan --outputs_dir [your_output_folder] --checkpoints_dir [your_ckpt_folder] Note: For the --name option, please ensure your experiment name contains "domainA" or "domainB", which will be used to select different dataset. 3) Train the mapping network between domainsTrain the mapping without scratches: python train_mapping.py --use_v2_degradation --training_dataset mapping --use_vae_which_epoch 200 --continue_train --name mapping_quality --label_nc 0 --loadSize 256 --fineSize 256 --dataroot [your_data_folder] --no_instance --resize_or_crop crop_only --batchSize 80 --no_html --gpu_ids 0,1,2,3 --nThreads 8 --load_pretrainA [ckpt_of_domainA_SR_old_photos] --load_pretrainB [ckpt_of_domainB_old_photos] --l2_feat 60 --n_downsample_global 3 --mc 64 --k_size 4 --start_r 1 --mapping_n_block 6 --map_mc 512 --use_l1_feat --niter 150 --niter_decay 100 --outputs_dir [your_output_folder] --checkpoints_dir [your_ckpt_folder] Traing the mapping with scraches: python train_mapping.py --no_TTUR --NL_res --random_hole --use_SN --correlation_renormalize --training_dataset mapping --NL_use_mask --NL_fusion_method combine --non_local Setting_42 --use_v2_degradation --use_vae_which_epoch 200 --continue_train --name mapping_scratch --label_nc 0 --loadSize 256 --fineSize 256 --dataroot [your_data_folder] --no_instance --resize_or_crop crop_only --batchSize 36 --no_html --gpu_ids 0,1,2,3 --nThreads 8 --load_pretrainA [ckpt_of_domainA_SR_old_photos] --load_pretrainB [ckpt_of_domainB_old_photos] --l2_feat 60 --n_downsample_global 3 --mc 64 --k_size 4 --start_r 1 --mapping_n_block 6 --map_mc 512 --use_l1_feat --niter 150 --niter_decay 100 --outputs_dir [your_output_folder] --checkpoints_dir [your_ckpt_folder] --irregular_mask [absolute_path_of_mask_file] Traing the mapping with scraches (Multi-Scale Patch Attention for HR input): python train_mapping.py --no_TTUR --NL_res --random_hole --use_SN --correlation_renormalize --training_dataset mapping --NL_use_mask --NL_fusion_method combine --non_local Setting_42 --use_v2_degradation --use_vae_which_epoch 200 --continue_train --name mapping_Patch_Attention --label_nc 0 --loadSize 256 --fineSize 256 --dataroot [your_data_folder] --no_instance --resize_or_crop crop_only --batchSize 36 --no_html --gpu_ids 0,1,2,3 --nThreads 8 --load_pretrainA [ckpt_of_domainA_SR_old_photos] --load_pretrainB [ckpt_of_domainB_old_photos] --l2_feat 60 --n_downsample_global 3 --mc 64 --k_size 4 --start_r 1 --mapping_n_block 6 --map_mc 512 --use_l1_feat --niter 150 --niter_decay 100 --outputs_dir [your_output_folder] --checkpoints_dir [your_ckpt_folder] --irregular_mask [absolute_path_of_mask_file] --mapping_exp 1 CitationIf you find our work useful for your research, please consider citing the following papers :) @inproceedings{wan2020bringing,title={Bringing Old Photos Back to Life},author={Wan, Ziyu and Zhang, Bo and Chen, Dongdong and Zhang, Pan and Chen, Dong and Liao, Jing and Wen, Fang},booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},pages={2747--2757},year={2020}} @article{wan2020old, title={Old Photo Restoration via Deep Latent Space Translation}, author={Wan, Ziyu and Zhang, Bo and Chen, Dongdong and Zhang, Pan and Chen, Dong and Liao, Jing and Wen, Fang}, journal={arXiv preprint arXiv:2009.07047}, year={2020}} If you are also interested in the legacy photo/video colorization, please refer to this work. MaintenanceThis project is currently maintained by Ziyu Wan and is for academic research use only. If you have any questions, feel free to contact [email protected]. LicenseThe codes and the pretrained model in this repository are under the MIT license as specified by the LICENSE file. We use our labeled dataset to train the scratch detection model. This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments. |
请发表评论