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
猜你喜欢
- reflow是个神奇的东西,之前Realazy说到过这个reflow,我摘出其中的重点:在CSS规范中有一个渲染对象的概念,通常用一个盒子(
- python批量命名照片的具体代码,供大家参考,具体内容如下废话不多说,上效果图全部代码from tkinter import *impor
- 1. go的依赖管理发展GOPATH 所有的依赖都放置在同一路径下,可以复用下载的依赖,但是当不同项目需要依赖不同版本的依赖时,就很容易出现
- 准确地讲,Python没有专门处理字节的数据类型。但由于str既是字符串,又可以表示字节,所以,字节数组=str。而在C语言中,我们可以很方
- 序言哈喽兄弟们,今天咱们来了解一下 fileinput 。说到fileinput,可能90%的码农表示没用过,甚至没有听说过。这不奇怪,因为
- 本文实例讲述了python简单实现基于SSL的 IRC bot。分享给大家供大家参考。具体如下:#!/usr/bin/python# -*-
- 1.代码准备没有语法错误的Python程序:#!/usr/bin/pythonimport numpy as npclass Network
- 实现功能:删除当前目录下,除保留目录和文件外的所有文件和目录#!bin/env pythonimport osimport os.pathi
- 前言相比常用的 os.path而言,pathlib 对于目录路径的操作更简介也更贴近 Pythonic。但是它不单纯是为了简化操作,还有更大
- 一. Python 的类和实例在面向对象中,最重要的概念就是类(class)和实例(instance),类是抽象的模板,而实例是根据类创建出
- 写任何编程代码,不同的开发者都会有不同的见解。但参考一下总是好的,下面是来自 Javascript Toolbox 发布的 14条最佳JS代
- 最近在刚从tensorflow转入pytorch,对于自定义的nn.Module 碰到了个问题,即使把模组 modle=Model().cu
- 本文实例为大家分享了基于TensorFlow的CNN实现Mnist手写数字识别的具体代码,供大家参考,具体内容如下一、CNN模型结构输入层:
- 作者:peace.zhao 关于 游标 if,for 的例子 create or replace procedure peace_if is
- 自己写的方法,适用于linux,#!/usr/bin/python#coding=utf-8import sysimport os, os.
- 关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习。今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常
- python,pycharm的环境变量设置官网下载安装python解释器时,如果忘记勾选添加到环境变量[add to path],可进行如下
- 爬虫是大家公认的入门Python最好方式,没有之一。虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就
- 介绍这个例子主要利用turtle库实现根据输入动态展示不同机器人的图像和属性信息。代码部分非原创只是做了些许修改和整理使得更易阅读。图片和文
- 1. IO多路复用O多路复用技术是使用一个可以同时监视多个IO阻塞的中间人去监视这些不同的IO对象,这些被监视的任何一个或多个IO对象有消息