Python - GFPGAN + MoviePy 提高人物视频画质

目录

一.引言

二.gif_to_png

三.gfp_gan

四.png_to_gif

五.总结


一.引言

前面我们介绍了 GFP-GAN 提高人脸质量OCR 提取视频台词、字幕,前者可以提高图像质量,后者可以从视频中抽帧,于是博主便想到了将二者进行结合并优化人物 GIF 图像质量。其步骤如下:

MoviePy 截取视频关键帧

GFP-GAN 提高人脸图像质量

MoviePy 关键帧合并为 GIF

Tips:

后面的执行步骤需要电脑上已经配置好 GFP-GAN 的环境且安装了 moviepy 的依赖。

二.gif_to_png

python 复制代码
def gif_to_png(_file_name, _output):
    from moviepy.editor import VideoFileClip

    # Load your gif
    clip = VideoFileClip(_file_name)
    print(f'Duration: {clip.duration} FPS: {clip.fps}')

    # Loop over clip frames
    for i, frame in enumerate(clip.iter_frames()):
        from PIL import Image
        img = Image.fromarray(frame)
        img.save(f'{_output}/frame_{i}.png')

if __name__ == '__main__':
    file_name = "/Users/Desktop/ori.gif"
    output = "/Users/Desktop/out"
    gif_to_png(file_name, output)

这一步我们读取 gif 并抽帧保存为多张图片,运行程序后会在 output 文件夹下得到 FPS x Duration = 40 张图片:

python 复制代码
Duration: 4.0 FPS: 10.0

由于是老版电视剧的原因,gif 中人物的表情比较糊,画质较差:

三.gfp_gan

python 复制代码
python inference_gfpgan.py -i inputs/gif_imgs -o results -v 1.3 -s 2

将上面的多帧图片存储至 GFP-GAN inputs 文件夹下,执行 inference_gfpgan.py,结果将输出至 results 文件夹内:

其中 restored_imgs 文件夹内存储了我们修复的多帧图像,看一下修复效果:

四.png_to_gif

python 复制代码
def png_to_gif(_output, gif_name, fps):
    file_list = os.listdir(_output)
    file_list.sort()
    
    # 构造多个 ImageClip 片段
    clips = [ImageClip(_output + img).set_duration(1) for img in file_list if img.endswith(".png")]

    concat_clip = concatenate_videoclips(clips, method="compose")
    concat_clip.write_gif(gif_name, fps=fps)

if __name__ == '__main__':

    file_name = "/Users/Desktop/ori.gif" # 原始 GIF
    input = "/Users/Desktop/result/restored_imgs/" # 修复帧
    output = "out.gif" # 输出 GIF
    # 匹配原 GIF 的 FPS
    ori_fps = VideoFileClip(file_name).fps
    png_to_gif(input, output, ori_fps)
python 复制代码
MoviePy - Building file out.gif with imageio.

出现上述命令后代表开始多帧图像的合并,可以看到修复后的 GIF 人物更加的清晰:

五.总结

GFP-GAN 整体来说可玩性还是很高,后面博主会继续跟进 wave2lip 的测试,把音频、图像、视频结合到一起。这里我们处理的原始 gif 大小为 10m,处理后大小为 14m;同时如果资源比较充足的话,也可以将 GIF 扩展为视频人物细节处理。

相关推荐
数智化精益手记局15 分钟前
拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
大数据·网络·人工智能·安全·信息可视化·精益工程
Flying pigs~~26 分钟前
RAG 完整面试指南:原理、优化、幻觉解决方案
人工智能·prompt·rag·智能体·检索增强生成·rag优化
博.闻广见39 分钟前
AI_概率统计-2.常见分布
人工智能·机器学习
企业架构师老王40 分钟前
2026制造业安全生产隐患识别AI方案:从主流产品对比看企业级AI Agent的非侵入式落地路径
人工智能·安全·ai
Aleeeeex1 小时前
RAG 那点事:从 8 份企业文档到能用的问答系统,全过程拆给你看
人工智能·python·ai编程
冬奇Lab1 小时前
一天一个开源项目(第87篇):Tank-OS —— Red Hat 工程师用一个周末,把 AI Agent 塞进了一个可启动的 Linux 镜像
人工智能·开源·资讯
小糖学代码1 小时前
LLM系列:2.pytorch入门:8.神经网络的损失函数(criterion)
人工智能·深度学习·神经网络
Captaincc1 小时前
转发-中央网信办部署开展“清朗·整治AI应用乱象”专项行动
人工智能·vibecoding
AI自动化工坊1 小时前
Late框架技术深度解析:5GB VRAM实现10倍AI编码效率的工程架构
人工智能·5g·架构·ai编程·late
我是大聪明.2 小时前
DeepSeek V4 Pro + 华为昇腾910:国产大模型落地的性能实测与深度解析
人工智能·华为