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

目录
  • 前言
  • 项目环境搭建
    • conda虚拟环境创建
    • 激活环境
    • Pytorch安装
    • Synchronized-BatchNorm-PyTorch repository安装
    • Global目录Synchronized-BatchNorm-PyTorch项目部署
    • 检测预处理模型下载
    • 下载脸部增强模型文件
    • 下载依赖
    • 完整部署后项目结构
  • 项目使用
  • 验证一下
  • 总结

前言

老旧或者破损的照片如何修复呢?本文主要分享一个博主使用后非常不错的照片恢复开源项目: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人工智能内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 窃取摄像头照片的实现示例

    python窃取摄像头照片源码+获取授权码方法+py打包成exe 教你用python做一个属于自己的窃取摄像头照片的软件. 需要安装python3.5以上版本,在官网下载即可. 然后安装库opencv-python,安装方式为打开终端输入命令行. 可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple,这样就会从清华这边的镜像去安装需要的库,会快很多. pip install opencv-python -i https://pypi.

  • Python实现老照片修复之上色小技巧

    导语 "黑白变彩色,就是这么简单" 老照片上色,是一门功夫,费时费力. 老照片上色,也是一门艺术,还原历史. 提起老照片上色,小编第一个想到了的就是一位名叫Marina Amaral的艺术家,她将历史上很多著名的老照片,都用后期处理的方式填补上了颜色. 逼真.写实,看不出丝毫的漏洞,你对她的作品有多钦佩,也就意味着这项技艺有多复杂. 所以,你想学习老照片上色吗?也想把父母的照片,或者儿时的黑白照变成彩色的吗? 那木木子给你的建议的是:别费劲了,因为,这项工作,以后交给AI去完成就可以了

  • Python 照片人物背景替换的实现方法

    目录 前言 项目说明 项目结构 数据准备 替换背景图代码 代码说明 验证一下效果 总结 前言 本文的github仓库地址为: 替换照片人物背景项目(模型文件过大,不在仓库中) 由于模型文件过大,没放在仓库中,本文下面有模型下载地址. 项目说明 项目结构 我们先看一下项目的结构,如图: 其中,model文件夹放的是模型文件,模型文件的下载地址为:模型下载地址 下载该模型放到model文件夹下. 依赖文件-requirements.txt,说明一下,pytorch的安装需要使用官网给出的,避免显卡驱

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

    目录 前言 项目环境搭建 conda虚拟环境创建 激活环境 Pytorch安装 Synchronized-BatchNorm-PyTorch repository安装 Global目录Synchronized-BatchNorm-PyTorch项目部署 检测预处理模型下载 下载脸部增强模型文件 下载依赖 完整部署后项目结构 项目使用 验证一下 总结 前言 老旧或者破损的照片如何修复呢?本文主要分享一个博主使用后非常不错的照片恢复开源项目:Bringing-Old-Photos-Back-to-L

  • python人工智能深度学习算法优化

    目录 1.SGD 2.SGDM 3.Adam 4.Adagrad 5.RMSProp 6.NAG 1.SGD 随机梯度下降 随机梯度下降和其他的梯度下降主要区别,在于SGD每次只使用一个数据样本,去计算损失函数,求梯度,更新参数.这种方法的计算速度快,但是下降的速度慢,可能会在最低处两边震荡,停留在局部最优. 2.SGDM SGM with Momentum:动量梯度下降 动量梯度下降,在进行参数更新之前,会对之前的梯度信息,进行指数加权平均,然后使用加权平均之后的梯度,来代替原梯度,进行参数的

  • Python人工智能深度学习模型训练经验总结

    目录 一.假如训练集表现不好 1.尝试新的激活函数 2.自适应学习率 ①Adagrad ②RMSProp ③ Momentum ④Adam 二.在测试集上效果不好 1.提前停止 2.正则化 3.Dropout 一.假如训练集表现不好 1.尝试新的激活函数 ReLU:Rectified Linear Unit 图像如下图所示:当z<0时,a = 0, 当z>0时,a = z,也就是说这个激活函数是对输入进行线性转换.使用这个激活函数,由于有0的存在,计算之后会删除掉一些神经元,使得神经网络变窄.

  • 人工智能——K-Means聚类算法及Python实现

    目录 1 概述 1.1 无监督学习 1.2 聚类 1.3 K-Mean均值算法 2 K-Mean均值算法 2.1 引入 2.2 针对大样本集的改进算法:Mini Batch K-Means 2.3 图像 3 案例1 3.1 代码 3.2 结果 4 案例2 4.1 案例——数据 4.2 代码 4.3 结果 4.4 拓展&&改进 1 概述 1.1 无监督学习 在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签

  • python 人工智能算法之随机森林流程详解

    目录 随机森林 优缺点总结 随机森林 (Random Forest)是一种基于决策树(前文有所讲解)的集成学习算法,它能够处理分类和回归两类问题. 随机森林的基本思想是通过随机选择样本和特征生成多个决策树,然后通过取多数投票的方式(分类问题)或均值计算的方式(回归问题)来得出最终的结果.具体来说,随机森林的训练过程可以分为以下几个步骤: 首先从原始数据集中随机选择一定数量的样本,构成一个新的训练集 从所有特征中随机选择一定数量的特征,作为该节点的候选特征 利用上述训练集和候选特征生成一棵决策树

  • python算法学习之计数排序实例

    python算法学习之计数排序实例 复制代码 代码如下: # -*- coding: utf-8 -*- def _counting_sort(A, B, k):    """计数排序,伪码如下:    COUNTING-SORT(A, B, k)    1  for i ← 0 to k // 初始化存储区的值    2    do C[i] ← 0    3  for j ← 1 to length[A] // 为各值计数    4    do C[A[j]] ← C[A

  • Python决策树分类算法学习

    从这一章开始进入正式的算法学习. 首先我们学习经典而有效的分类算法:决策树分类算法. 1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题.因此如何构建一棵好的决策树是研究的重点. J. Ross Quinlan在1975提出将信息熵的概念引入决策树的构建,这就是鼎鼎大名的ID3算法.后续的C4.5,

  • python入门之算法学习

    前言 参考学习书籍:<算法图解>[美]Aditya Bhargava,袁国忠(译)北京人民邮电出版社,2017 二分查找 binary_search 实现二分查找的python代码如下: def binary_search(list, item): low = 0 #最低位索引位置为0 high = len(list)- 1 #最高位索引位置为总长度-1 while low <= high: mid = (low + high)//2 #检查中间的元素,书上是一条斜杠,我试过加两条斜杠才

  • python算法学习双曲嵌入论文方法与代码解析说明

    目录 1. 方法说明 损失函数 梯度下降 梯度求解 2. 代码训练过程 3. 结果表现 其他参考资料 本篇接上一篇:python算法学习双曲嵌入论文代码实现数据集介绍 1. 方法说明 首先学习相关的论文中的一些知识,并结合进行代码的编写.文中主要使用Poincaré embedding. 对应的python代码为: def dist1(vec1, vec2): # eqn1 diff_vec = vec1 - vec2 return 1 + 2 * norm(diff_vec) / ((1 -

随机推荐