综合介绍
“Bringing Old Photos Back to Life”是微软研究团队开发的一个开源项目,专注于利用AI技术修复老旧照片。它基于深度学习方法,能够处理照片中的严重退化问题,如划痕、模糊和褪色等,让历史影像重焕新生。该项目在2020年CVPR(计算机视觉与模式识别会议)上以口头报告形式发表,受到广泛关注。用户可以通过GitHub访问代码和预训练模型,适用于研究或个人照片修复需求。项目不仅提供技术实现,还包括详细文档和示例,方便开发者与爱好者使用。
在线体验地址:https://colab.research.google.com/drive/1NEm6AsybIiC5TwTU_4DqDkQO0nFRB-uA?usp=sharing
功能列表
- 老照片整体质量提升:通过AI算法改善照片的清晰度、对比度和色彩。
- 划痕自动修复:检测并修复照片上的物理划痕,恢复原始图像细节。
- 人脸区域增强:针对人脸区域进行精细化处理,提升面部特征的清晰度。
- 高分辨率支持:支持处理较高分辨率的照片,适用于专业修复需求。
- 用户界面操作:提供GUI界面,简化照片上传和修复流程。
- 自定义训练模型:允许用户根据需求训练特定数据集,扩展适用场景。
使用帮助
安装流程
要使用“Bringing Old Photos Back to Life”,需要先完成环境配置和代码安装。以下是详细步骤,适用于Ubuntu系统(Windows用户需根据环境调整):
1. 准备环境
- 系统要求:Ubuntu(推荐),支持Nvidia GPU和CUDA。
- Python版本:确保安装Python 3.6或以上版本。
- 依赖安装:
- 打开终端,输入以下命令安装必要库:
pip install torch torchvision numpy opencv-python PySimpleGUI
- 如果需要GPU支持,确保已安装CUDA和对应版本的PyTorch。
- 打开终端,输入以下命令安装必要库:
2. 下载代码和模型
- 克隆仓库:
git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git cd Bringing-Old-Photos-Back-to-Life
- 同步批标准化模块:
- 进入
Face_Enhancement/models/networks/
目录:cd Face_Enhancement/models/networks/ git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm ./ cd ../../../
- 进入
Global/detection_models/
目录重复上述操作:cd Global/detection_models/ git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm ./ cd ../../
- 进入
- 下载预训练模型:
- 进入
Face_Enhancement/
目录,下载人脸增强模型: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 ../
- 进入
Global/
目录,下载全局修复模型: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 ../
- 进入
- 人脸检测模型:
- 进入
Face_Detection/
目录,下载检测文件: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 ../
- 进入
3. 测试安装
- 运行示例命令确认环境无误:
python run.py --input_folder ./test_images --output_folder ./output --GPU 0
- 如果成功,修复后的照片将保存在
./output/final_output/
目录。
使用方法
通过命令行操作
- 准备输入文件夹:将需要修复的老照片放入一个文件夹(如
test_images/
)。 - 运行修复命令:
- 无划痕修复:
python run.py --input_folder /path/to/test_images --output_folder /path/to/output --GPU 0
- 含划痕修复:
python run.py --input_folder /path/to/test_images --output_folder /path/to/output --GPU 0 --with_scratch
- 无划痕修复:
- 查看结果:修复后的照片会自动保存到指定的输出文件夹(如
/path/to/output/final_output/
)。
通过GUI界面操作
- 启动GUI:
python GUI.py
- 操作步骤:
- 点击“选择照片”按钮,上传需要修复的老照片。
- 点击“修改照片”按钮,等待处理完成(时间取决于照片大小和硬件性能)。
- 处理完成后,结果会显示在界面上,同时保存至
./output/
文件夹。 - 点击“退出窗口”关闭程序。
特色功能操作流程
1. 划痕修复
- 适用场景:照片有明显物理划痕。
- 操作方法:
- 在命令行中添加
--with_scratch
参数,或在GUI中勾选相关选项(若支持)。 - 系统会自动检测划痕区域并进行修复,过程可能稍长。
- 检查输出结果,划痕部分应被平滑填补。
- 在命令行中添加
2. 人脸增强
- 适用场景:照片中人脸模糊或细节缺失。
- 操作方法:
- 确保
Face_Enhancement/
目录下的模型正确加载。 - 运行时,系统会自动识别人脸区域并进行精细化处理。
- 输出照片中人脸细节(如眼睛、嘴角)会更加清晰。
- 确保
3. 高分辨率处理
- 适用场景:需要修复高分辨率扫描照片。
- 操作方法:
- 在命令行中添加
--HR
参数:python run.py --input_folder /path/to/test_images --output_folder /path/to/output --GPU 0 --HR
- 注意:由于模型默认训练于256x256分辨率,高分辨率可能需要更多计算资源。
- 在命令行中添加
注意事项
- 路径问题:建议使用绝对路径(如
/home/user/test_images
)以避免错误。 - 性能优化:项目尚未针对运行速度优化,大尺寸照片可能处理较慢。
- 分辨率限制:最佳效果在256x256像素,超大分辨率可能需分块处理。
通过以上步骤,用户可轻松上手修复老照片,无论是个人回忆还是研究用途,都能获得满意结果。