老照片修复
困扰
由于工作需要,经常需要找些老电影的剧照,并做些清晰度的调整。目前在用美图软件,一张张的修复,效率很低下。偶尔思考,能不能找个批量的软件给批量的处理下。
由于对代码略知一二,查下全球最大同性交友网站(github),找到了一个 老照片修复的代码 ,于是做了如下尝试。
解决方案
- 在github中找到老照片修复的代码(是的,这是微软的一个开源项目)
- 查看README,竟然有在线尝鲜地址,抱着试一试的态度打开软件,竟然真的可以用(需科学上网)。 在线尝鲜地址
- 上传照片修复,效果如下图:
- 看效果图,还是美图的修复功能略胜一筹
若只图个乐,到此可以结束了,但要批量处理自己的图片,就不得不下载并运行代码了。
代码安装调试
-
环境准备
conda create --name py36 python=3.6 source activate py36
-
代码准备
git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git cd Bringing-Old-Photos-Back-to-Life pip install -r requirements.txt
-
库、模型依赖
a. 下载PyTorch库```bash cd Face_Enhancement/models/networks/ git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm . cd ../../../ mkdir Global/detection_models cd Global/detection_models git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm . cd ../../ ```
b. 下载landmark 检测预训练模型
```bash wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 bzip2 -d shape_predictor_68_face_landmarks.dat.bz2 cd ../ ```
c. 从Azure Blob下载训练模型
```bash cd Face_Enhancement/ wget https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Face_Enhancement/checkpoints.zip unzip checkpoints.zip cd ../ cd Global/ wget https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Global/checkpoints.zip unzip checkpoints.zip cd .. ```
-
运行测试代码
cd test/Bringing-Old-Photos-Back-to-Life/ # CPU版本 # --GPU -1 指使用CPU; --HR 高分辨率 python run.py --input_folder test_images/old_w_scratch --output_folder output --GPU -1 --HR
-
测试自己的图片
# 创建测试目录 mkdir my_test_images mkdir my_output # 放入带转换的图片 mv ~/1.png ~/2.png ~/3.png my_test_images/ # 转换 python run.py --input_folder my_test_images --output_folder my_output --GPU -1 --HR
补充
除了画质的修复,也支持裂痕的抹除,如下图:
Q&A
-
下载、安装cmake (https://cmake.org/download/)
# 官网下载cmake.dmg # 安装后执行 /Applications/CMake.app/Contents/bin/cmake-gui --install=/usr/local/bin # 或 brew install cmake
总结
- 如需批量修复,且对修复效果要求不高可使用代码。
- 如需精修,还得借助专业的修图工具。