一键修复老照片
微软研究团队开发的一款开源项目,专注于利用深度学习技术修复老旧照片,包括去除划痕、提高照片清晰度和色彩效果。
Bringing-Old-Photos-Back-to-Life 开源地址:https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life
该项目的基本原理是使用变分自动编码机(VAE)将旧照片和干净照片分别编码到两个潜在空间,然后通过合成数据学习两个潜在空间之间的转换,从而实现对真实照片的修复。
Colab 体验地址:https://colab.research.google.com/drive/1NEm6AsybIiC5TwTU_4DqDkQO0nFRB-uA
为了处理照片中的结构化和非结构化缺陷,项目设计了一个包含全局分支和局部分支的网络结构,其中全局分支使用 partial nonlocal block 处理结构化缺陷,如划痕和灰尘斑点,局部分支处理非结构化缺陷,如噪声和模糊。
1、安装
部署 Bringing-Old-Photos-Back-to-Life 项目需要一定的环境配置,包括 Python、torch 和 torchvision等。
我们需要从 GitHub 下载项目的源代码并安装依赖项,下载必要的组件,如 PyTorch 库和 landmark 检测预训练模型,并使用预训练模型进行照片修复
首先从 GitHub 下载 Bringing-Old-Photos-Back-to-Life 开源项目的源码:
```
git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git
```
然后下载一些必要的组件,进入 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 ../../
```
下载人脸关键点检测的预训练模型:
```
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 ../
```
将文件 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
```
2、使用
安装并下载预训练模型后,您可以使用一个简单的命令轻松恢复旧照片。
注意:GPU 可以设置为 0 或 0,1,2 或 0,2,CPU 使用 -1。
对于没有划痕的图像,命令如下:
```
python run.py --input_folder [test_image_folder_path] \
--output_folder [output_path] \
--GPU 0
```
对于有划痕的图像,命令如下:
```
python run.py --input_folder [test_image_folder_path] \
--output_folder [output_path] \
--GPU 0 \
--with_scratch
```
对于有划痕的高分辨率图像,命令如下:
```
python run.py --input_folder [test_image_folder_path] \
--output_folder [output_path] \
--GPU 0 \
--with_scratch \
--HR
```
[test_image_folder_path] 为输入图片的路径,[output_path] 修复后图片的存储路径。
3、GUI 界面
该项目也提供了一个GUI 界面,用户可以在界面中上传图像并在相应的窗口中显示结果,打开方式如下:
```
运行 GUI.py 文件。
点击 Browse 按钮 并从 test_images/old_w_scratch 文件夹中选择您的图像以删除划痕。
单击 Modify Photo 按钮。
等待一段时间就可以在 GUI 窗口右侧查看到结果。
单击 Exit 按钮可以退出窗口并在输出文件夹中获取结果图像。
```
我的笔记