重拾旧时光——Bringing-Old-Photos-Back-to-Life

Bringing-Old-Photos-Back-to-Life项目简介



  最近在公众号看到有关Bringing-Old-Photos-Back-to-Life的内容,觉得很有意思,可以将模糊的,褶皱的照片相应的还原,在这里插入图片描述
重拾旧时光的回忆,所以自己尝试一下。

  这个开源的项目在github上可以找到,这里给出项目地址Bringing-Old-Photos-Back-to-Life。这个项目是有关于模糊,褶皱照片的修复的算法,是基于2020微软最新的一篇CPVR的文章,原理简单来说就是用变分自动编码机(VAE)将图像变换到隐藏空间,并在隐空间进行图像恢复操作在这里插入图片描述


Bringing-Old-Photos-Back-to-Life项目资源下载与配置

  该项目包含了测试训练集和资源包,所以先下载该项目,项目地址
https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life
项目也依赖于Synchronized-BatchNorm-PyTorch,文章中也给出了我们配置教程,所以按照教程来配置即可。

  第一步,克隆项目,即下载压缩包并解压

git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git



  第二步,配置环境,进入项目的目录下

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 ../../

然后下载相应的组件

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 ../
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 ../

安装依赖项

pip install -r requirements.txt

  更详细的教程可以查看Colab中的内容。

Bringing-Old-Photos-Back-to-Life的使用和相关问题的解决

  对于没有裂痕的图片的修复可以是用这个代码,进入项目文件的目录下

python run.py --input_folder [test_image_folder_path] \
              --output_folder [output_path] \
              --GPU 0

其中[test_image_folder_path]是想要修复的图片的目录地址,[output_path]是结果存放的地址,同时这些地址路径要是绝对路径

  如果是有裂痕的图片,代码有所不同

python run.py --input_folder [test_image_folder_path] \
              --output_folder [output_path] \
              --GPU 0 \
              --with_scratch

  当然文章中给出的代码我在实际运行的情况中还是会出现问题的,这里我对我遇到的问题和相应简单的解决办法进行介绍:

  在对没有裂痕的图片进行修复的时候出现在这里插入图片描述
这里我们可以将Face_Enhancement \ test_face.py中的第40行的代码img_name = img_path[b].split("/")[-1]改为img_name = os.path.split(img_path[b])[-1]问题可以解决。

  该算法的运行实现对GPU的内存很挺高的要求,对于处理高像素的图片,我出现过Skip当前图片的提示,还有CUDA out of memory. Tried to allocate 78.00 MiB (GPU 0; 7.43 GiB total capacity; 6.42 GiB already allocated; 88.94 MiB free; 6.75 GiB reserved in total by PyTorch)这样的报错,主要问题还是内存处理不够,GPU同时处理不了这些操作,为了简单方便,所以我就从输入上,将要处理的图片的像素都先缩放至我电脑可以处理的像素要求,这样可以使算法相应的工作。

  对于处理没有裂痕的图片的操作,我们可以将Global \ test.py中的data_transforms函数中的

h = int(round(oh / 4)*4)
w = int(round(ow / 4)*4)

直接修改为我们想要输入的图片缩放成能处理的像素大小,比如我这里就修改为

w = 450
h = 450

将原始输入图片缩放为450 x 450的像素,即可以正常运行(虽然结果会有点不太好看)。

  对于处理有裂痕的图片,我们可以将Global \ detection.py中ata_transforms函数中if full_size == "full_size"中的

h = int(round(oh / 16) * 16)
w = int(round(ow / 16) * 16)

改为

h = 256
w = 256

这样缩放为256 x 256像素的图片。


  处理完问题后,我们可以来测试一下,我们先对项目给出的图片进行测试。

  对于没有裂痕的图片的处理(这里仅放出部分)

修复前
在这里插入图片描述
修复后
在这里插入图片描述

修复前
在这里插入图片描述
修复后
在这里插入图片描述

修复前
在这里插入图片描述
修复后
在这里插入图片描述
由于调整了像素,所以与原图有所出入,但是图片的清晰程度增加了,我们也可以试试自己的图片,我在网上找了几张图:

修复前
在这里插入图片描述
修复后
在这里插入图片描述

修复前
在这里插入图片描述
修复后
在这里插入图片描述



  对于有裂痕的图片的处理

修复前
在这里插入图片描述
修复后
在这里插入图片描述

修复前
在这里插入图片描述
修复后
在这里插入图片描述

修复前
在这里插入图片描述
修复后
在这里插入图片描述

修复前
在这里插入图片描述
修复后
在这里插入图片描述

同样,我们可以将自己的图片的进行修复,比如我找到的一张:

修复前
在这里插入图片描述
修复后
在这里插入图片描述



总结
  怎么样,是不是觉得这个算法很有意思,那就找出那些照片来修复,重拾那些美好的旧时光,同时,有条件的伙伴可以提高电脑的配置,来修复更高像素的图片。

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值