当前位置: 首页 > news >正文

去除视频字幕 5: 使用 ProPainter, 记录探索过程

使用 ProPainter 去除视频上的字幕,效果演示(比之前好多了。)


1. 项目目标
去除视频 (bear.webm) 中的硬字幕。

2. 初始尝试与关键失败:IOPaint

  • 方法: 使用 IOPaint(一个图像修复工具)配合 PaddleOCR 逐帧修复。
  • 结果: 修复区域严重闪烁
  • 核心认知: 图像修复工具独立处理每一帧,缺乏时间一致性。必须使用专业的视频修复工具。

3. 正确的工具:ProPainter

  • 项目来源: https://github.com/sczhou/ProPainter
  • 优势: 专为视频设计,能感知帧间联系,从根本上解决闪烁问题。

4. 调试过程

  • A. 环境搭建

    1. git clone 仓库。
    2. 使用 conda env create -f environment.yml 创建并激活 propainter 环境。
    3. 下载预训练模型放入 checkpoints 目录。
  • B. 数据准备:遮罩 (Mask) 的陷阱

    • 问题: ProPainter 要求每一帧都必须有对应的遮罩文件。
    • 解决: 我的 OCR 脚本只为有字幕的帧生成了遮罩。因此,我编写了一个辅助脚本,为所有无字幕的干净帧创建了对应的纯黑色空白遮罩,确保文件数量和帧数完全一致。
  • C. 运行报错:ModuleNotFoundError

    • 问题: 脚本无法找到 utils 等本地模块。
    • 根源: 在错误的 Python 虚拟环境 (venv) 中运行。
    • 解决: 切换到正确的 Conda 环境 (conda activate propainter)。
  • D. 硬件瓶颈:内存耗尽 (Out of Memory)

    • 问题: 32GB 内存被瞬间占满。
    • 根源: 脚本默认将整个视频(所有帧、遮罩、光流数据)一次性加载到内存。
    • 解决: 使用 ProPainter 内置的命令行参数进行优化:
      • --subvideo_length [N]: 最关键的参数。将视频切成 N 帧的短片进行分块处理,大幅降低峰值内存。我设置为 20
      • --fp16: 启用半精度浮点数,内存占用减半。

5. 最终运行命令

500个图片 + 使用 fp16

python inference_propainter.py --video inputs/object_removal/resized-bear-500   --mask inputs/object_removal/resized_mask_500    --fp16

**6. 合并2个视频,对比2个视频。 **

这个命令解决了帧率不同步的核心问题

ffmpeg -i masked_in.mp4 -i inpaint_out.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS,fps=30[v0];[1:v]setpts=PTS-STARTPTS,fps=30[v1];[v0][v1]hstack=inputs=2[v]" -map "[v]" -an -c:v libx264 -crf 23 -preset veryfast -shortest both.mp4

最后说一下感受

  1. 视频处理,需要成本的,硬件,时间。所以,如果一个视频的质量很差,根本不值得搬运。西瓜不甜,不值得摘下来。
  2. 显存不够,会非常慢。只能: 减少帧数,降低图片大小,使用 fp16, 尝试云主机,目前就这几个办法。
http://www.dtcms.com/a/301181.html

相关文章:

  • red靶机
  • MCU 通用AT指令处理框架
  • 洛谷 P2114 [NOI2014] 起床困难综合症-普及+/提高
  • AutoLabelImg:高效的数据自动化标注工具和下载
  • 风光氢系统仿真与容量扩展设计
  • 飞牛NAS本地化部署n8n打造个人AI工作流中心
  • 识别身份证用证件号或姓名改名,如何ocr识别身份证复印件并导出至excel表格?身份证读取软件导出到Excel乱码怎么解决?
  • LLM 多语言数据集
  • 华为OD机试_2025 B卷_书籍叠放(Python,200分)(附详细解题思路)
  • Coze Studio概览(一)
  • 力扣131:分割回文串
  • 详解赛灵思SRIO IP并提供一种FIFO封装SRIO的收发控制器仿真验证
  • 2025年Agent创业实战指南:从0到1打造高增长AI智能体项目
  • FPGA IP升级
  • input_handler和input_dev详解
  • 【AI阅读】20250717阅读输入
  • 深度学习在计算机视觉中的应用:对象检测
  • C++ auto 类型推导
  • Netty中 ? extends Future<? super V>这种的写法的理解
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 73(题目+回答)
  • PDF文件被加密限制怎么办?专业级解除方案分享
  • mysql 快速上手
  • FFmpeg——参数详解
  • 3.JDK+JRE组件构成与协作
  • LeetCode 923.多重三数之和
  • 【AI论文】WebShaper:通过信息寻求形式化实现主动式数据合成
  • CIFAR100数据集实测-基于 AlexNet模型的压缩/Bagging/Boosting 探索
  • 创建的springboot工程java文件夹下还是文件夹而不是包
  • 大数据之路:阿里巴巴大数据实践——大数据领域建模综述
  • 卷积神经网络研讨