AI修复照片

yizhihongxing

一、前言

最近闲来无事,翻了翻以前的老照片,看着多年前的老照片,感慨万千,仿佛又回到了以前的青春岁月。
只可惜青春易逝,无法重来。意气风发,头角峥嵘的画面只能永远地留存在相片之中了。只叹当时没有多拍几张照片留作纪念,可惜当时设备也不好,照片效果不佳。留下遗憾。
最近学习了Python,发现可以通过Python使用AI来修复老旧照片,而且修复后的效果非常不错。
AI是一种人工智能技术,它可以用来处理图像和视频。在某些情况下,AI可以帮助修复照片中的瑕疵或缺陷,例如曝光不足、颜色失真等。这意味着,通过使用AI,我们可以更好地处理我们的照片,并确保其质量得到最大程度地修复提升。
要实现这一目标,首先需要对照片进行分析和检测,找出问题所在。然后,将相关信息输入到计算机中,利用深度学习技术进行自动化修复。通过本教程,可以快速有效地完成整个流程,从而为我们带来更加精美的照片。希望能帮到那些和笔者一样留有遗憾的读者们。

二、准备

2.1 前期准备

2.1.1 Python版本

必须高于3.7版本,笔者使用的是3.10

2.1.2 下载项目

https://github.com/TencentARC/GFPGAN.git

2.1.3 下载训练模型

https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth
将此训练模型保存在刚才下载的项目的experiments/pretrained_models文件夹中。

2.1.4 准备需要修复的老旧照片

image

image

(图片来源于网络,侵删。)

2.2 用到的库

basicsr:
基于PyTorch的开源图像视频复原工具箱, 比如超分辨率、去噪、去模糊等
facexlib:
提供实用的人脸相关功能的集合
realesrgan:
图像分辨率修复工具,可以提升照片分辨率

2.2.1 安装需要的库

pip install basicsr==1.4.2
PS:basicsr库安装可能会报错,如果一直报错,则先不管它,继续下面的操作。
pip install facexlib
pip install realesrgan

2.2.2 安装GFPGAN依赖包

pip install -r requirements.txt
Python setup.py develop

三、实操

3.1 操作步骤

1、将需要修复的老旧照片放到项目中的inputsmy_test_pics
2、打开终端,切换目录到项目根目录下
3、在终端中输入代码:
python inference_gfpgan.py -i inputs/my_test_pics -o results -s 2
说明:
inputs/my_test_pics:待修复照片所在目录
results:修复后的照片目录,会自动创建4个文件夹,其中:
cmp:存放了修复后的照片中所有人物头像的对比照
cropped_faces:存放了照片中所有的人物头像(未修复)
restored_faces:存放了照片中所有的人物头像(已修复)
restored_imgs:存放了已修复的整张照片
4、等待完成,此过程耗费时间取决于电脑配置。一般2-5分钟处理完一张照片。

3.1.1 属性对比

image

image

3.1.2 人像对比

image
image
image

3.1.3 修复后的完整图片

image
image

3.2 注意

1、待处理照片文件名必须为ASCII字符,不能包含中文或其他国家字符。
2、修复时会自动找寻照片中的人物头像进行修复,但也有可能会修复失败。
3、分辨率会提升至原来的4倍,即长和宽分别翻倍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:AI修复照片 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 字符串(str、bytes)

    4.3 字符串(str、bytes) 4.3.1 字符串前置知识 4.3.1.1 字符串的概念 字符串由一系列字符组成,字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符串是编程语言中表示文本的数据类型。字符串就是由一个个元素(字符)组成的。像这种由一个个元素按照顺序组成的数据,在Python语言里面,把这种特…

    Python开发 2023年4月2日
    00
  • 列表(list)

    4.4 列表(list) 列表是Python中使用最频繁也是最重要最灵活的一种数据结构。Python列表中的元素类型可以不同,可以存放各种各样的数据,比如:数字、字符串、函数、类、字典等,甚至还可以嵌套存放列表。列表也是一种序列,可以通过索引获取列表中的元素。支持序列的各种操作。 4.4.1 列表的创建 4.4.1.1 通过列表标识符号创建 列表在创建的时候…

    Python开发 2023年4月2日
    00
  • 类属性和对象属性

    6.3 类属性和对象属性 在类定义中,属性按照归属分为对象属性、类属性。按照调用的私密性分为一般属性和私有属性。 6.3.1 类属性和对象属性 对象属性是最常用到的一种属性。即使我们对上面的类:MyClass1实例化了一个mc的对象,mc对象也不能进行有实质的操作。因为mc对象的类:MyClass1中既没有定义属性也没有定义方法。在定义类时还能定义类属性。接…

    Python开发 2023年3月31日
    00
  • Python函数的参数

    5.3 函数参数 示例2中定义的函数虽然能够计算总分数,但是每次计算后的结果是固定的,为了增加函数的灵活性,我们希望在调用函数的时候可以传入一些数据,然后根据传入的数据进行计算。要满足这种需求,就需要在定义函数的时候定义参数。 5.3.1 形参和实参 在编程语言中,函数定义使用的是形参,调用时传入的是实参。形参(parameter),全称为形式参数,不是实际…

    Python开发 2023年4月2日
    00
  • Python变量

    4.10 Python变量 4.10.1 变量介绍 变量,顾名思义,就是可以变化的量。变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python中,变量就是变量,它没有类型,我们所说的类型是变量所指的内存…

    Python开发 2023年4月2日
    00
  • Python运算符

    3.3 Python运算符 运算符用于执行程序代码运算,根据操作数一般分为一元运算符、二元运算符。例如:2+3,其操作数是2和3,而运算符则是+。在Python中运算符可以分为以下几种类型:算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。 3.3.1 算术运算符 +、-、*:分别对应数学中的加减乘,在此不做过多的赘述…

    Python开发 2023年4月2日
    00
  • Python代码块及输入输出

    3.7 Python代码块及输入输出 3.7.1 Python代码块 前面分别介绍了关键字、运算符,由运算符和操作数组成了表达式。而语句由关键字、标识符、表达式组成。而代码块由若干条语句组成。通常Python中的代码块是通过缩进来创建的。在很多语言中,都使用一个特殊的单词或字符,比如begin或{来标识代码块的起始位置,并使用另一个特殊的单词或字符,如end…

    Python开发 2023年4月2日
    00
  • Python特性

    3.1 Python特性 Python是为可读性设计的,与英语有一些相似之处,并受到数学的影响。比如: Python使用新行来完成命令,而不像通常使用分号或括号的其他编程语言。 Python依赖缩进,使用空格来定义范围;例如循环、函数和类的范围。其他编程语言通常使用花括号或关键字来实现此目的。 Python中没有单个字符,单字符被认为是1个字符的字符串。 对…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部