摘要:目前我们不打算直接发布带有标签的旧照片划痕数据集。如果你想获取成对的数据,可以使用我们的预训练模型对收集的图像进行测试以获得标签:
老照片修复工具
# 旧照片修复(官方PyTorch实现)
项目页面 | 论文(CVPR版本) | 论文(期刊版本) | 预训练模型 | Colab演示 | 复现实验及Docker镜像
旧照片焕生机
该代码已在安装了Nvidia GPU和CUDA的Ubuntu系统上进行了测试。运行代码需要python版本>=3.6。
安装步骤
教程
• 进入目录,克隆仓库,并将其中的文件夹复制到当前目录:cd Face_Enhancement/models/networks/git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorchcp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm.cd ../../../• 进入Global/detection_models目录,同样克隆Synchronized-BatchNorm-PyTorch仓库并复制sync_batchnorm文件夹:cd Global/detection_modelsgit clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorchcp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm.cd ../../下载预训练模型
• 下载地标检测预训练模型:
• 从Azure Blob Storage下载预训练模型,将Face_Enhancement/checkpoints.zip文件放在./Face_Enhancement目录下,将Global/checkpoints.zip文件放在./Global目录下,并分别解压: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../安装依赖项
pip install -r requirements.txt安装完成并下载预训练模型后,你可以使用一个简单的命令轻松修复旧照片。
• 对于无划痕的图像:
python run.py --input_folder [测试图像文件夹路径] \ --output_folder [输出路径] \ --GPU 0• 对于有划痕的图像:
python run.py --input_folder [测试图像文件夹路径] \ --output_folder [输出路径] \ --GPU 0 \ --with_scratch• 对于有划痕的高分辨率图像:
python run.py --input_folder [测试图像文件夹路径] \ --output_folder [输出路径] \ --GPU 0 \ --with_scratch \ --HR注意:请尽量使用绝对路径。最终结果将保存在./output_path/final_output/目录下,你也可以在output_path中查看不同步骤产生的结果。划痕检测
目前我们不打算直接发布带有标签的旧照片划痕数据集。如果你想获取成对的数据,可以使用我们的预训练模型对收集的图像进行测试以获得标签:
cd Global/python detection.py --test_path [测试图像文件夹路径] \ --output_dir [输出路径] \ --input_size [resize_256|full_size|scale_256]全局修复
提出了一个三元组域转换网络来解决旧照片的结构化退化和非结构化退化问题。
cd Global/python test.py --Scratch_and_Quality_restore \ --test_input [测试图像文件夹路径] \ --test_mask [对应的掩码] \ --outputs_dir [输出路径]python test.py --Quality_restore \ --test_input [测试图像文件夹路径] \ --outputs_dir [输出路径]人脸增强
我们使用渐进式生成器来细化旧照片的人脸区域。更多细节可以在我们的期刊投稿和文件夹中找到。注意事项
• 此仓库主要用于研究目的,尚未优化运行性能。 • 由于模型是用256*256的图像预训练的,对于任意分辨率的图像,模型可能无法达到理想效果。
图形用户界面(GUI)
一个友好的图形用户界面,用户可以在其中输入图像,并在相应窗口中查看结果。
训练方法
创建训练文件
将VOC数据集文件夹、收集的旧照片(例如Real_L_old和Real_RGB_old)放入一个共享文件夹中,然后执行以下命令:cd Global/data/python Create_Bigfile.py注意:请根据自身环境修改代码。
分别训练域A和域B的变分自编码器(VAE)
cd..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 [你的数据文件夹] --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 [你的输出文件夹] --checkpoints_dir [你的检查点文件夹]python train_domain_B.py --continue_train --training_dataset domain_B --name domainB_old_photos --label_nc 0 --loadSize 256 --fineSize 256 --dataroot [你的数据文件夹120 --no_html --gpu_ids 0,1,2,3 --self_gen --nThreads 3 --k_size 4 --use_v2 --mc 64 --start_r 1 --kl [你的输出文件夹] --checkpoints_dir [你的检查点文件夹]训练域之间的映射网络
• 训练无划痕的映射:
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 [你的数据文件夹] --no_instance --resize_or_crop crop_only --batchSize 80 --no_html --gpu_ids 0,1,2,3 --nThreads 8 --load_pretrainA [domainA_SR_old_photos的检查点] --load_pretrainB [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 [你的输出文件夹] --checkpoints_dir [你的检查点文件夹]• 训练有划痕的映射:
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 [你的数据文件夹] --no_instance --resize_or_crop crop_only --batchSize 36 --no_html --gpu_ids 0,1,2,3 --nThreads 8 --load_pretrainA [domainA_SR_old_photos的检查点] --load_pretrainB [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 [你的输出文件夹] --checkpoints_dir [你的检查点文件夹] --irregular_mask [掩码文件的绝对路径]• 针对高分辨率输入的多尺度补丁注意力训练有划痕的映射:
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 [你的数据文件夹] --no_instance --resize_or_crop crop_only --batchSize 36 --no_html --gpu_ids 0,1,2,3 --nThreads 8 --load_pretrainA [domainA_SR_old_photos的检查点] --load_pretrainB [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 [你的输出文件夹] --checkpoints_dir [你的检查点文件夹] --irregular_mask [掩码文件的绝对路径] --mapping_exp 1来源:才思敏捷柳叶fr