AI 视频、图片修复 CodeFormer 安装 使用

一 CodeFormer 优秀的开源修复图片与视频的项目

1 下载

  开源地址:https://github.com/sczhou/CodeFormer

下载成功: 

2 安装

 解压进入目录

安装依赖

pip install -r requirements.txt

 安装完成,测试运行,报了个错误如下:ModuleNotFoundError: No module named 'basicsr.version

查看报错的代码位置只是一个引用,代码前后没有用到,直接注释处理如下图:

 处理后可正常运行项目。

3 使用

a 修复破损图:

执行修复python inference_inpainting.py  --input_path inputs/masked_faces 其中--input_path参数可以是要修复的图片目录或文件

python inference_inpainting.py  --input_path inputs/masked_faces

执行后如下图修复成功(首次执行会联网下载训练好的模型): 

这里直接修复项目中示例的5张破损的图片:

执行修复后的效果:

 

b 模糊修复:

python inference_codeformer.py -w 0.7 --input_path ./inputs/cropped_faces 

参数说明

 -w 是权重参数

--input_path 输入目录或文件(可以是图片或视频)

python inference_codeformer.py -w 0.7 --input_path ./inputs/cropped_faces

执行过程如下图: 

修复前的项目示例图: 

修复后的项目示例图:

c 灰图上色:

python inference_colorization.py --input_path ./inputs/gray_faces

上色处理前:

上色处理后:

 

### 如何使用CodeFormer模型进行视频去马赛克处理 #### 准备工作 为了能够有效地应用CodeFormer模型来执行视频中的图像修复任务,特别是针对去除马赛克的效果,首先需要准备环境并加载必要的库。通常情况下,这涉及到安装PyTorch以及特定版本的torchvision和其他依赖项。 #### 加载预训练模型 CodeFormer是一个基于编码器-解码器架构的人脸修复工具,在实际操作前应当先下载官方提供的预训练权重文件。可以通过访问项目主页获取最新的发布版链接[^1]。 ```python from codeformer import CodeFormer import torch device = 'cuda' if torch.cuda.is_available() else 'cpu' model = CodeFormer().to(device) ckpt_path = "path_to_pretrained_weights" checkpoint = torch.load(ckpt_path, map_location=device) model.load_state_dict(checkpoint['params_ema']) ``` #### 处理单帧图片 对于每一帧画面而言,可以将其视为静态图像来进行单独处理。读取一桢图像数据之后调整尺寸使之适应输入要求,并转换成适合网络接收的形式送入到已经加载好的CodeFormer实例当中完成预测过程。 ```python from PIL import Image import numpy as np def process_image(image_path): img = Image.open(image_path).convert('RGB') w, h = img.size scale = max(w, h) / 512. new_w, new_h = int(np.floor(w/scale)), int(np.floor(h/scale)) # Resize and normalize the image before feeding into network transform = transforms.Compose([ transforms.Resize((new_h, new_w)), transforms.ToTensor(), transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) ]) tensor_img = transform(img)[None,...].to(device) with torch.no_grad(): output_tensor = model(tensor_img) return output_tensor.cpu() ``` #### 合成最终结果 当所有帧都经过上述流程后得到对应的修复版本,则可以根据原始顺序重新组合起来形成完整的无损质量影片片段。需要注意的是这里假设每张图像是连续存储在一起构成了一部短片;如果是从真实世界采集来的素材则可能还需要额外考虑时间戳同步等问题。 ```python frames = [] # List of processed frame tensors for i in range(total_frames): frame_output = process_image(f"path/to/frame_{i}.png") frames.append(frame_output.squeeze()) final_video = torch.stack(frames) save_as_video(final_video, save_path="output.mp4", fps=original_fps) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qyhua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值