Python 人工智能老照片修复算法学习
作者:剑客阿良_ALiang 发布时间:2022-10-31 03:37:18
前言
老旧或者破损的照片如何修复呢?本文主要分享一个博主使用后非常不错的照片恢复开源项目: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、模型也会把多人图中的每张脸都识别出来,并且跑出结果,可以对比一下看看,细节还是修复的很好的。
来源:https://blog.csdn.net/zhiweihongyan1/article/details/121385975


猜你喜欢
- python 定时器默认定时器只执行一次,第一个参数单位S,几秒后执行import threadingdef fun_timer(): pr
- 从开始认识CSS(DW4)那时起,我就知道了CSS的强大,但从未用CSS排版过,因为我曾经尝试过学习,但感觉太难了而且用DW的表格,所见及所
- 1.前言数据展示,即数据可视化,是数据分析的第五个步骤,大部分人对图形敏感度高于数字,好的数据展示方式能让人快速发现问题或规律,找到数据背后
- 引言在负责咨询工作的过去 6 年中,我曾多次听说关于数据访问和操作方面的问题,它时刻困扰着用户:“如何编写应用程序,以便
- 前言索引对有一定开发经验的同学来说并不陌生,合理使用索引,能大大提升sql查询的性能,可以这么讲,随着业务数据量的不断增长,优化系统的响应速
- 多表连接的基本语法多表连接,就是将几张表拼接为一张表,然后进行查询select 字段1, 字段2, ...from 表1 {inner|li
- 本文实例讲述了Go语言实现socket的方法。分享给大家供大家参考。具体分析如下:用golang不用他的net包还有什么意义,这里提供一个测
- 目前全球疫情仍然比较严重,为了能清晰地看到疫情爆发以来至现在全球疫情的变化趋势,我绘制了一张疫情变化地图。 废话不多说,先上图下面就来重点介
- 随着网络的发展,人们通过各种方式使用它。今天,网络购物,跟朋友或者不认识的人聊天,管理银行账户,以及一些日常应用,共享照片或视频,等等。事实
- 转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式。让程序员的恋人们感受一下IT人的浪漫。
- 本文实例为大家分享了python3实现多张图片附件邮件发送的具体代码,供大家参考,具体内容如下直接上代码,没有注释!from email.m
- 通常情况下,定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其对接收的数据做具体的操作处理。在使用函数时,经常会用到形
- Json简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Sta
- 指定的代码页特性无效。 codepage属性:是指出网页的代码页 如果制作的网页脚本与WEB服务端的默认代码页不同,则必须指明代码页: 代码
- 本文实例为大家分享了python实现移位加密和解密的具体代码,供大家参考,具体内容如下代码很简单,就不多做解释啦。主要思路是将字符串转为As
- 重复触发就是防止用户重复点击提交数据了,我们一般都是点击之后没反应会再次点击了,这个不但要从用户体验上来做好,还在要js或php程序脚本上做
- 本文实例讲述了Python捕捉和模拟鼠标事件的方法。分享给大家供大家参考。具体分析如下:这个假期玩了不少galgame,不过有些很老的游戏没
- 好不容易有些空余时间,便拿来写自己的CSS选择器引擎了,这个CSS选择器引擎的目标只有三个:速度要快代码要精简要支持CSS3的选择器。希望通
- 以下是详细步骤:1、查看磁盘空间情况:[root@localhost backup]# df -h文件系统 &n
- 本文实例讲述了PHP连接MySQL数据库的三种方式。分享给大家供大家参考,具体如下:PHP与MySQL的连接有三种API接口,分别是:PHP