老电影修复新范式:用AI让胶片记忆重焕4K生机

老电影修复新范式:用AI让胶片记忆重焕4K生机

【免费下载链接】Bringing-Old-Photos-Back-to-Life Bringing Old Photo Back to Life (CVPR 2020 oral) 【免费下载链接】Bringing-Old-Photos-Back-to-Life 项目地址: https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life

你是否曾为家庭录像带中的珍贵画面逐渐褪色而惋惜?是否想过让童年的生日派对、毕业仪式重现清晰色彩?本文将带你用Bringing Old Photos Back to Life项目,将尘封的老电影修复成4K超清画质。读完本文,你将掌握:视频分帧处理技巧、划痕智能检测、人脸增强算法、批量修复自动化流程,让百年影像焕发新生。

项目核心价值与工作流

Bringing Old Photos Back to Life是基于深度学习的老照片修复工具(CVPR 2020 Oral论文成果),通过三阶段处理流程实现历史影像的全面修复。该项目不仅支持照片修复,其核心算法可扩展至视频领域,解决胶片老化带来的划痕、褪色、模糊三大难题。

修复流程

项目采用模块化架构设计,主要包含三大核心模块:

  • 全局修复Global/目录下实现结构化与非结构化退化修复,通过三域转换网络处理整体画质提升
  • 人脸增强Face_Enhancement/采用渐进式生成器优化面部细节,支持高清人脸重建
  • 划痕检测Global/detection.py实现自动划痕定位,生成精准修复掩码

视频修复准备工作

环境搭建与依赖安装

# 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life
cd Bringing-Old-Photos-Back-to-Life

# 安装同步批归一化模块
cd Face_Enhancement/models/networks/
git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch
cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm .
cd ../../../

# 下载人脸特征点检测模型
cd Face_Detection/
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
bzip2 -d shape_predictor_68_face_landmarks.dat.bz2
cd ../

# 安装核心依赖
pip install -r requirements.txt

预训练模型部署

模型权重文件需放置在指定目录,全局修复与人脸增强模型分别存放于:

  • Global/checkpoints/:全局修复模型
  • Face_Enhancement/checkpoints/:人脸增强模型
# 下载并解压模型文件
cd Face_Enhancement/
wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/face_checkpoints.zip
unzip face_checkpoints.zip
cd ../Global/
wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/global_checkpoints.zip
unzip global_checkpoints.zip
cd ../

视频分帧与预处理

视频转图像序列

使用FFmpeg将视频分割为图像序列,建议采用25fps采样率保持时间连续性:

# 创建分帧目录
mkdir -p video_frames/input video_frames/output

# 视频分帧处理(每10帧取1帧加速处理)
ffmpeg -i old_movie.avi -vf "fps=10,scale=640:480" video_frames/input/%06d.png

批量处理配置

修改run.py中的批量处理参数,设置自动模式:

# 在run.py中添加批量处理支持
def batch_process(input_dir, output_dir, with_scratch=True, HR=True):
    for img in os.listdir(input_dir):
        if img.endswith(('.png', '.jpg', '.jpeg')):
            predict(
                image=os.path.join(input_dir, img),
                HR=HR,
                with_scratch=with_scratch
            )

核心修复流程详解

1. 划痕智能检测

划痕检测效果

对分帧图像进行划痕检测,生成掩码文件用于精准修复:

cd Global/
python detection.py --test_path ../video_frames/input \
                    --output_dir ../video_frames/mask \
                    --input_size full_size

检测算法采用多尺度特征融合策略,通过Global/networks.py中定义的U-Net架构实现端到端划痕分割,支持三种输入模式:

  • resize_256:快速检测模式(256×256分辨率)
  • full_size:精准检测模式(原始分辨率)
  • scale_256:等比例缩放模式(保持纵横比)

2. 全局画质增强

全局修复模块采用创新的三域转换网络,同时处理划痕修复与画质提升:

cd Global/
python test.py --Scratch_and_Quality_restore \
               --test_input ../video_frames/input \
               --test_mask ../video_frames/mask \
               --outputs_dir ../video_frames/global_restored

核心算法位于Global/models/pix2pixHD_model.py,通过以下技术实现高清修复:

  • 非局部特征匹配:NonLocal_feature_mapping_model.py
  • 多尺度注意力机制:支持4K分辨率输入的分块处理
  • 域转换损失函数:结合感知损失与风格损失优化视觉效果

全局修复效果

3. 人脸细节优化

视频中人脸区域往往包含重要信息,通过专用人脸增强模块提升面部清晰度:

cd Face_Enhancement/
python test_face.py --test_dir ../video_frames/global_restored \
                    --output_dir ../video_frames/face_enhanced \
                    --checkpoints_dir checkpoints

人脸处理流程包含三个关键步骤:

  1. 人脸检测与对齐:Face_Detection/detect_all_dlib.py
  2. 特征点提取:68点人脸 landmarks 定位
  3. 高清重建:Face_Enhancement/models/generator.py实现超分辨率重建

人脸修复流程

视频合成与后处理

图像序列转视频

将修复完成的图像序列合成为视频文件:

ffmpeg -framerate 10 -i video_frames/face_enhanced/%06d.png \
       -c:v libx265 -crf 23 -preset medium \
       -pix_fmt yuv420p restored_movie.mp4

色彩一致性调整

为保证视频色彩连贯,使用OpenCV进行帧间色彩均衡:

import cv2
import numpy as np
from glob import glob

frames = [cv2.imread(f) for f in sorted(glob('video_frames/face_enhanced/*.png'))]
adjusted_frames = []

# 计算参考帧直方图
ref_hist = cv2.calcHist([frames[0]], [0,1,2], None, [8,8,8], [0,256,0,256,0,256])
ref_hist = cv2.normalize(ref_hist, ref_hist).flatten()

for frame in frames:
    # 直方图匹配实现色彩一致性
    matched = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)).apply(frame)
    adjusted_frames.append(matched)

高级应用与批量处理

批量修复脚本开发

利用项目提供的run.py接口,开发视频批量修复脚本:

from run import run_cmd
import os

def video_restoration_pipeline(video_path):
    # 创建工作目录
    work_dir = 'video_workspace'
    os.makedirs(work_dir, exist_ok=True)
    
    # 分帧处理
    run_cmd(f"ffmpeg -i {video_path} {work_dir}/input/%06d.png")
    
    # 执行修复流程
    run_cmd(f"python run.py --input_folder {work_dir}/input \
                           --output_folder {work_dir}/output \
                           --GPU 0 \
                           --with_scratch \
                           --HR")
    
    # 合成输出视频
    run_cmd(f"ffmpeg -framerate 25 -i {work_dir}/output/final_output/%06d.png \
                    -c:v libx264 -crf 20 {video_path}_restored.mp4")
    
    return f"{video_path}_restored.mp4"

质量评估与参数调优

根据视频特点调整修复参数,获得最佳效果:

  • 低质量视频:增加--HR参数启用高清模式
  • 多划痕视频:调整--mask_dilation参数优化掩码膨胀
  • 人脸密集视频:增加--face_scale参数提升人脸分辨率

质量评估可通过util.py中提供的指标计算函数:

  • PSNR(峰值信噪比)
  • SSIM(结构相似性指数)
  • LPIPS(感知相似度)

项目扩展与未来展望

模型训练与定制化

项目提供完整训练代码,支持针对特定类型视频进行模型微调:

# 创建训练数据文件
cd Global/data/
python Create_Bigfile.py

# 训练域A和域B的VAE模型
python train_domain_A.py --use_v2_degradation --training_dataset domain_A --name custom_train
python train_domain_B.py --training_dataset domain_B --name custom_train

# 训练映射网络
python train_mapping.py --training_dataset mapping --load_pretrainA checkpoints/domainA --load_pretrainB checkpoints/domainB

图形化界面操作

对于非技术用户,项目提供直观的GUI工具GUI.py

python GUI.py

图形界面支持拖拽操作与实时预览,适合少量视频片段的修复处理:

  1. 导入视频分帧图像
  2. 选择修复模式(带划痕/无划痕)
  3. 调整增强参数
  4. 预览修复效果
  5. 导出修复结果

GUI界面

总结与资源获取

本文详细介绍了如何将Bringing Old Photos Back to Life项目扩展应用于老电影修复,通过分帧处理→全局修复→人脸增强→视频合成的完整流程,实现历史影像的高清重建。核心优势包括:

  1. 端到端自动化处理,无需专业图像编辑技能
  2. 先进的AI算法,超越传统视频编辑软件修复效果
  3. 完全开源免费,支持商业与非商业用途

项目完整文档与最新更新请参考:

收藏本文,关注项目更新,下期将带来"老电影上色与修复全自动化流程",让我们一起守护珍贵的影像记忆!

【免费下载链接】Bringing-Old-Photos-Back-to-Life Bringing Old Photo Back to Life (CVPR 2020 oral) 【免费下载链接】Bringing-Old-Photos-Back-to-Life 项目地址: https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值