告别模糊与划痕:Bringing Old Photos Back to Life 全流程使用教程

告别模糊与划痕:Bringing Old Photos Back to Life 全流程使用教程

【免费下载链接】Bringing-Old-Photos-Back-to-Life Bringing Old Photo Back to Life (CVPR 2020 oral) 【免费下载链接】Bringing-Old-Photos-Back-to-Life 项目地址: https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life

你是否还在为家中老照片的褪色、划痕和模糊问题烦恼?是否想让珍贵的回忆重现光彩?本文将带你一步步使用 Bringing Old Photos Back to Life 项目,通过简单的命令行操作,让老照片恢复清晰质感。读完本文后,你将能够:

  • 搭建完整的老照片修复环境
  • 使用全流程自动化修复(带划痕/无划痕照片)
  • 掌握高分辨率照片修复技巧
  • 了解项目核心技术模块的工作原理

项目简介

Bringing Old Photos Back to Life 是一个基于深度学习的老照片修复项目,能够解决老照片常见的模糊、褪色、划痕等问题。该项目在 CVPR 2020 会议上作为口头报告发表,采用了三域翻译网络(triplet domain translation network)和渐进式人脸增强技术,实现了从全局到局部的精细修复。

老照片修复效果展示

项目核心功能包括:

  • 划痕检测:自动识别照片中的划痕区域
  • 全局修复:解决结构化和非结构化退化问题
  • 人脸增强:针对面部区域进行精细化处理
  • 高分辨率支持:处理大尺寸照片的修复需求

项目结构采用模块化设计,主要包含以下关键目录:

环境搭建

准备工作

首先克隆项目仓库到本地:

git clone https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life
cd Bringing-Old-Photos-Back-to-Life

安装依赖组件

项目需要同步批归一化(Synchronized-BatchNorm)支持,执行以下命令安装:

# 安装人脸增强模块依赖
cd Face_Enhancement/models/networks/
git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch
cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .
cd ../../../

# 安装全局检测模块依赖
cd Global/detection_models
git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch
cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .
cd ../../

下载预训练模型

  1. 人脸关键点检测模型
cd Face_Detection/
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
bzip2 -d shape_predictor_68_face_landmarks.dat.bz2
cd ../
  1. 修复模型权重
# 人脸增强模型
cd Face_Enhancement/
wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/face_checkpoints.zip
unzip face_checkpoints.zip
cd ../

# 全局修复模型
cd Global/
wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/global_checkpoints.zip
unzip global_checkpoints.zip
cd ../
  1. 安装Python依赖
pip install -r requirements.txt

快速开始:全流程修复

项目提供了便捷的全流程修复脚本 run.py,支持三种模式:无划痕照片修复、带划痕照片修复和高分辨率照片修复。

1. 无划痕照片修复

对于仅存在模糊、褪色等问题的老照片,使用基础修复模式:

python run.py --input_folder test_images/old/ \
              --output_folder results/no_scratch \
              --GPU 0

2. 带划痕照片修复

当照片存在明显划痕时,启用划痕检测与修复功能:

python run.py --input_folder test_images/old_w_scratch/ \
              --output_folder results/with_scratch \
              --GPU 0 \
              --with_scratch

划痕检测效果

划痕检测模块会自动生成掩码(mask)标识划痕区域,如上图所示:左为原始带划痕照片,右为检测结果

3. 高分辨率照片修复

对于大尺寸照片,使用--HR参数启用高分辨率修复模式:

python run.py --input_folder test_images/old_w_scratch/ \
              --output_folder results/hr_restoration \
              --GPU 0 \
              --with_scratch \
              --HR

高分辨率修复效果

高分辨率修复效果对比:上排为输入图片,下排为修复结果

注意:修复结果默认保存在output_folder/final_output/目录下,中间过程结果(如划痕掩码、全局修复中间产物)会保存在对应子目录中,方便调试和查看。

核心功能详解

划痕检测

划痕检测模块可单独运行,用于生成照片中的划痕掩码,方便后续修复:

cd Global/
python detection.py --test_path test_images/old_w_scratch/ \
                    --output_dir results/scratches \
                    --input_size full_size

该模块使用 Global/detection_models/ 中的网络结构,通过深度学习自动识别照片中的划痕区域。支持三种输入尺寸模式:

  • resize_256:调整为256x256尺寸
  • full_size:保持原始尺寸
  • scale_256:按比例缩放到256像素(保持纵横比)

全局修复

全局修复模块处理照片的整体退化问题,包括色彩还原、对比度调整和结构修复:

cd Global/
# 仅质量修复(无划痕)
python test.py --Quality_restore \
               --test_input test_images/old/ \
               --outputs_dir results/global_quality

# 划痕与质量联合修复
python test.py --Scratch_and_Quality_restore \
               --test_input test_images/old_w_scratch/ \
               --test_mask results/scratches/masks/ \
               --outputs_dir results/global_scratch

全局修复采用三域翻译网络架构,工作流程如下:

全局修复流程图

三域翻译网络架构:通过A→C→B的映射关系,实现从退化老照片到修复后照片的转换

人脸增强

人脸增强模块针对照片中的面部区域进行精细化处理,使用渐进式生成器提升面部细节:

cd Face_Enhancement/
python test_face.py --dataroot test_images/old/ \
                    --results_dir results/face_enhance \
                    --name faceenhancer \
                    --model test \
                    --no_dropout \
                    --gpu_ids 0

该模块的核心代码位于 Face_Enhancement/models/,特别是生成器网络 Face_Enhancement/models/networks/generator.py 实现了渐进式细节增强。

人脸增强效果

人脸增强效果对比:左为输入,中为全局修复结果,右为最终人脸增强结果

GUI界面(适合非技术用户)

项目提供了图形用户界面,简化操作流程:

python GUI.py

使用步骤:

  1. 点击"Browse"按钮选择要修复的照片(可从 test_images/old_w_scratch/ 选择带划痕样本)
  2. 点击"Modify Photo"按钮开始修复
  3. 修复完成后在界面查看结果
  4. 关闭窗口后,结果自动保存到output文件夹

GUI界面

图形用户界面:简单直观的操作流程,适合非技术用户

高级应用:训练自定义模型

如果你有大量标注数据,可以训练自定义修复模型。完整训练流程包括以下步骤:

1. 准备训练数据

cd Global/data/
python Create_Bigfile.py  # 根据实际数据路径修改代码

2. 训练域A和域B的VAE模型

# 训练域A VAE(高分辨率到低分辨率映射)
cd Global/
python train_domain_A.py --use_v2_degradation --continue_train \
                         --training_dataset domain_A \
                         --name domainA_SR_old_photos \
                         --dataroot [你的数据文件夹] \
                         --batchSize 100 --gpu_ids 0,1,2,3

# 训练域B VAE(老照片到新照片映射)
python train_domain_B.py --continue_train \
                         --training_dataset domain_B \
                         --name domainB_old_photos \
                         --dataroot [你的数据文件夹] \
                         --batchSize 120 --gpu_ids 0,1,2,3

3. 训练映射网络

# 无划痕映射
python train_mapping.py --use_v2_degradation --training_dataset mapping \
                        --name mapping_quality \
                        --load_pretrainA [domainA模型路径] \
                        --load_pretrainB [domainB模型路径] \
                        --dataroot [你的数据文件夹]

# 带划痕映射
python train_mapping.py --no_TTUR --NL_res --random_hole --use_SN \
                        --training_dataset mapping \
                        --name mapping_scratch \
                        --load_pretrainA [domainA模型路径] \
                        --load_pretrainB [domainB模型路径] \
                        --dataroot [你的数据文件夹] \
                        --irregular_mask [掩码文件路径]

训练参数配置可在 Global/options/train_options.py 中调整,包括学习率、批大小、迭代次数等超参数。

常见问题解决

内存不足问题

  • 降低输入图片分辨率:使用--input_size resize_256参数
  • 减少批处理大小:修改测试脚本中的--batchSize参数
  • 使用CPU运行:添加--GPU -1参数(速度会显著变慢)

修复效果不佳

  • 确保使用正确的模型:带划痕照片需使用--with_scratch参数
  • 尝试高分辨率模式:添加--HR参数处理大尺寸照片
  • 检查预处理步骤:确保人脸检测模型正确安装

中文路径问题

项目不支持中文路径,请确保所有图片和文件夹路径仅使用英文字符和数字。

总结与展望

Bringing Old Photos Back to Life 项目通过深度学习技术,为老照片修复提供了一套完整的解决方案。其模块化设计不仅便于使用,也为二次开发提供了灵活性。无论是家庭用户修复珍贵回忆,还是专业人员进行批量照片修复,都能找到适合的工具和流程。

项目目前仍在持续维护中,未来可能会加入更多功能,如视频修复、色彩增强等。如果你对项目有任何改进建议或问题反馈,可以参考 SECURITY.md 中的联系方式与开发团队取得联系。

提示:更多技术细节可参考项目论文 Paper (CVPR version)。如果觉得本项目有帮助,请为仓库点赞和收藏!

【免费下载链接】Bringing-Old-Photos-Back-to-Life Bringing Old Photo Back to Life (CVPR 2020 oral) 【免费下载链接】Bringing-Old-Photos-Back-to-Life 项目地址: https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life

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

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

抵扣说明:

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

余额充值