AI修复照片

一、前言

最近闲来无事,翻了翻以前的老照片,看着多年前的老照片,感慨万千,仿佛又回到了以前的青春岁月。
只可惜青春易逝,无法重来。意气风发,头角峥嵘的画面只能永远地留存在相片之中了。只叹当时没有多拍几张照片留作纪念,可惜当时设备也不好,照片效果不佳。留下遗憾。
最近学习了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日

相关文章

  • Python函数的参数

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

    Python开发 2023年4月2日
    00
  • 行走的数字

    一、前言 有一定数学基础的同学们都知道,如果两个正整数相除之后得到的结果,要么能除尽,要么就是一个循环小数。假如结果是循环小数,那么小数的每一位取值是0-9,且存在循环节点。如果我们用小数的每一位进行画图,每位小数用固定的线段表示,而每位小数的大小则用角度(1代表36度,2代表72度,以此类推)表示,这样的话我们就可以看到画图板上有一条线段在行走一样。示例:…

    2023年4月2日
    00
  • Python关键字(保留字)

    3.2 Python关键字(保留字) 保留字又称关键字,不可用于普通标识符。关键字的拼写必须与这里列出的完全一致。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字。>>> import keyword>>> keyword.kwlist [‘False’, ‘None’, ‘True’,…

    Python开发 2023年4月2日
    00
  • JSON

    4.8 JSON 4.8.1 JSON简介 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数…

    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
  • 数字(number)

    4.2 数字(number) Python中数字类型有4种: 整型(int) 布尔型(bool) 浮点数(float) 复数(complex) 4.2.1 整型(int) 形如:1、233、-6、69这样的数据都是整型。1、在Python3中只有一种整型int,表示长整型,没有Python2中的long。2、理论上Python3中的int类型可以表示无限大的…

    Python开发 2023年4月2日
    00
  • Python简单语句

    3.5 Python简单语句 Python语句由关键字、标识符、表达式组成。语句的根本作用就是执行某些修改操作,让代码发挥作用去做某些事。语句从执行结构上来分有顺序、条件、循环结构,这3种结构可以实现任何算法功能。Python语句根据代码占用的逻辑行数分为只占用1行的简单语句和占用多行的复合语句。 3.5.1 赋值语句 赋值语句用于将名称(重)绑定到特定值,…

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