Python 人工智能老照片修复算法学习

 更新时间:2021年11月18日 17:17:36   作者:剑客阿良_ALiang  
老旧或者破损的照片如何修复呢?本文主要介绍了一个非常不错的照片恢复开源项目:Bringing-Old-Photos-Back-to-Life。感兴趣的小伙伴快来看看呀

前言

老旧或者破损的照片如何修复呢?本文主要分享一个博主使用后非常不错的照片恢复开源项目:Bringing-Old-Photos-Back-to-Life。

项目的Github地址:项目地址

我们先看看官方给出的效果图:

就算现在看到这张图,我仍然觉着非常惊艳。下面我会把项目环境安装部署,到最后使用的效果做一个展示。

项目环境搭建

该项目的环境搭建有点复杂,我一点点说。

conda虚拟环境创建

在项目README.md文件中要求python版本在3.6以上。

我们用anaconda创建一个虚拟环境bobl

conda create -n bobl python=3.6

 激活环境

conda activate bobl

在Pycharm项目中配置interpreter,设置到conda目录envs下bobl环境的python。

Pytorch安装

虽然项目官方给出的requirements.txt包含pytorch,为了保险起见,还是去Pytorch官方网站上安装一下。Pytorch官方地址:PyTorch

因为我本机没插显卡,安装的cpu版本。

选择对应的命令安装Pytorch库。

Synchronized-BatchNorm-PyTorch repository安装

 官方给出的安装说明里面需要部署Synchronized-BatchNorm-PyTorch项目进来。

这里注意一点,需要把Synchronized-BatchNorm-PyTorch项目中的sync_batchnorm拷贝到上级目录。完整的目录接口参考下图:

Global目录Synchronized-BatchNorm-PyTorch项目部署

官方说明里面也需要把Synchronized-BatchNorm-PyTorch项目部署到Global里面。

也是一样要把sync_batchnorm拷贝到上级目录。结构如下:

检测预处理模型下载

需要用到一个检测预处理模型,主要是用来识别照片中的人脸部分的。

 注意解压后的位置,结构如下:

下载脸部增强模型文件

官方说明:

下载两个模型zip解压到对应目录下,结构如下:

下载依赖

注意,我这里去掉了pytorch的依赖安装,已经已经装过了。

dlib
scikit-image
easydict
PyYAML
dominate>=2.3.1
dill
tensorboardX
scipy
opencv-python
einops
PySimpleGUI

安装命令:

pip install -r requirements.txt -i https://pypi.douban.com/simple

完整部署后项目结构

完整的结构如下图:

项目使用

官方给到的图,我就不用了,不能说明问题。我自己准备了两种图,一张是一张人脸的,一张是多张人脸的。

 

先按照官方给出的命令跑跑看

我们直接使用最下面这个命令,包含划痕去除与高度还原。看一下执行情况。

(bobl) D:\spyder\Bringing-Old-Photos-Back-to-Life>python run.py --input_folder E:\csdn\老照片 --output_folder result1/ --GPU -1 --with_scratch --HR
Running Stage 1: Overall restoration
initializing the dataloader
model weights loaded
directory of testing image: E:\csdn\老照片
processing 1.jpg
processing 2.jpg
Mapping: You are using multi-scale patch attention, conv combine + mask input
Now you are processing 1.png
C:\ProgramData\Anaconda3\envs\bobl\lib\site-packages\torch\nn\functional.py:3635: UserWarning: Default upsampling behavior when mode=bilinear is changed to align_corners=False since 0.4
.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.
  "See the documentation of nn.Upsample for details.".format(mode)
Now you are processing 2.png
Finish Stage 1 ...
 
 
Running Stage 2: Face Detection
12
1
Finish Stage 2 ...
 
 
Running Stage 3: Face Enhancement
dataset [FaceTestDataset] of size 13 was created
The size of the latent vector size is [16,16]
Network [SPADEGenerator] was created. Total number of parameters: 92.1 million. To see the architecture, do print(network).
hi :)
Finish Stage 3 ...
 
 
Running Stage 4: Blending
Finish Stage 4 ...
 
 
All the processing is done. Please check the results.
 
(bobl) D:\spyder\Bringing-Old-Photos-Back-to-Life>

输出的文件不但有最终的结果,也有检测出来的每个脸的处理前后效果。结果结构如下:

验证一下

1、多人照片最终的效果验证,下面上图是输出结果图,下图是原始图。可以看出有些划痕已经消失,但是还是有一些,不过整体的任务更立体鲜明了。

2、单人照片最终效果验证,下面上图为结果图,下图为原始图。单人就很明显了,不但划痕都消除了,人也更清晰立体,效果是真不错。

3、模型也会把多人图中的每张脸都识别出来,并且跑出结果,可以对比一下看看,细节还是修复的很好的。

 

总结

官方还给出了其他的命令,就不一一验证了。整体的效果是非常好的,只是在多人图的时候还有些瑕疵,瑕不掩瑜。

到此这篇关于Python 人工智能老照片修复算法学习的文章就介绍到这了,更多相关Python人工智能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 学习python需要有编程基础吗

    学习python需要有编程基础吗

    在本篇文章里小编给大家分享的是一篇关于学习python有哪些必要条件,需要的朋友们可以学习下。
    2020-06-06
  • Python如何调用另一个类的方法和属性

    Python如何调用另一个类的方法和属性

    在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择
    2025-08-08
  • Python键鼠操作自动化库PyAutoGUI简介(小结)

    Python键鼠操作自动化库PyAutoGUI简介(小结)

    这篇文章主要介绍了Python键鼠操作自动化库PyAutoGUI简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • python3中eval函数用法使用简介

    python3中eval函数用法使用简介

    这篇文章主要介绍了python3中eval函数用法使用简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python学习笔记之集合的概念和简单使用示例

    Python学习笔记之集合的概念和简单使用示例

    这篇文章主要介绍了Python学习笔记之集合的概念和简单使用,涉及Python集合的定义、查找、添加、删除等相关操作技巧与注意事项,需要的朋友可以参考下
    2019-08-08
  • Python爬取用户观影数据并分析用户与电影之间的隐藏信息!

    Python爬取用户观影数据并分析用户与电影之间的隐藏信息!

    看电影前很多人都喜欢去 『豆瓣』 看影评,所以我爬取44130条 『豆瓣』 的用户观影数据,分析用户之间的关系,电影之间的联系,以及用户和电影之间的隐藏关系,需要的朋友可以参考下
    2021-06-06
  • django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决

    django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t e

    这篇文章主要给大家介绍了关于执行python manage.py migrate时报错:django.db.utils.ProgrammingError: (1146, "Table 'test.model_student' doesn't exist" )问题的解决方法,文中将解决的方法介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • Python数据结构与算法之跳表详解

    Python数据结构与算法之跳表详解

    跳表是带有附加指针的链表,使用这些附加指针可以跳过一些中间结点,用以快速完成查找、插入和删除等操作。本节将详细介绍跳表的相关概念及其具体实现,需要的可以参考一下
    2022-02-02
  • 详解Python发送邮件实例

    详解Python发送邮件实例

    这篇文章主要介绍了Python发送邮件实例,Python发送邮件需要smtplib和email两个模块,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)

    详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)

    这篇文章主要介绍了Anconda环境下载python包的教程(图形界面+命令行+pycharm安装),这篇文章很适合小白入手级别的,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11

最新评论