Video-subtitle-remover

项目简介

License
python version
support os

Video-subtitle-remover (VSR) 是一款基于AI技术,将视频中的硬字幕去除的软件。
主要实现了以下功能:

  • 无损分辨率将视频中的硬字幕去除,生成去除字幕后的文件
  • 通过超强AI算法模型,对去除字幕文本的区域进行填充(非相邻像素填充与马赛克去除)
  • 支持自定义字幕位置,仅去除定义位置中的字幕(传入位置)
  • 支持全视频自动去除所有文本(不传入位置)
  • 支持多选图片批量去除水印文本

demo.png

使用说明:

  • 有使用问题请加群讨论,QQ群:806152575
  • 直接下载压缩包解压运行,如果不能运行再按照下面的教程,尝试源码安装conda环境运行

下载地址:

Windows GPU版本v1.1.0(GPU):

仅供具有Nvidia显卡的用户使用(AMD的显卡不行)

演示

  • GUI版:

demo2.gif

demo.gif

源码使用说明

无Nvidia显卡请勿使用本项目,最低配置:

GPU:GTX 1060或以上显卡

CPU: 支持AVX指令集

1. 下载安装Miniconda

2. 创建并激活虚机环境

(1)切换到源码所在目录:

1
cd <源码所在目录>

例如:如果你的源代码放在D盘的tools文件下,并且源代码的文件夹名为video-subtitle-remover,就输入 cd D:/tools/video-subtitle-remover-main

(2)创建激活conda环境

1
conda create -n videoEnv python=3.8
1
conda activate videoEnv

3. 安装依赖文件

请确保你已经安装 python 3.8+,使用conda创建项目虚拟环境并激活环境 (建议创建虚拟环境运行,以免后续出现问题)

  • 安装CUDA和cuDNN

    Linux用户
    (1) 下载CUDA 11.7
    wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
    (2) 安装CUDA 11.7
    sudo sh cuda_11.7.0_515.43.04_linux.run

    1. 输入accept

    2. 选中CUDA Toolkit 11.7(如果你没有安装nvidia驱动则选中Driver,如果你已经安装了nvidia驱动请不要选中driver),之后选中install,回车

    3. 添加环境变量

    在 ~/.bashrc 加入以下内容

    # CUDA
    export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

    使其生效

    source ~/.bashrc
    (3) 下载cuDNN 8.4.1

    国内:cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz 提取码:57mg

    国外:cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz

    (4) 安装cuDNN 8.4.1
     tar -xf cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz
     mv cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive cuda
     sudo cp ./cuda/include/* /usr/local/cuda-11.7/include/
     sudo cp ./cuda/lib/* /usr/local/cuda-11.7/lib64/
     sudo chmod a+r /usr/local/cuda-11.7/lib64/*
     sudo chmod a+r /usr/local/cuda-11.7/include/*
    Windows用户
    (1) 下载CUDA 11.7
    cuda_11.7.0_516.01_windows.exe
    (2) 安装CUDA 11.7
    (3) 下载cuDNN 8.2.4

    cudnn-windows-x64-v8.2.4.15.zip

    (4) 安装cuDNN 8.2.4

    将cuDNN解压后的cuda文件夹中的bin, include, lib目录下的文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\对应目录下

  • 安装GPU版本Paddlepaddle:

    • windows:

      1
      python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
    • Linux:

      1
      python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
  • 安装GPU版本Pytorch:

    1
    conda install pytorch==2.0.1 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia

    或者使用

    1
    pip install torch==2.0.1 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu118
  • 安装其他依赖:

    1
    pip install -r requirements.txt

4. 运行程序

  • 运行图形化界面
1
python gui.py
  • 运行命令行版本(CLI)
1
python ./backend/main.py

常见问题

  1. 提取速度慢怎么办

修改backend/config.py中的参数,可以大幅度提高去除速度

1
2
MODE = InpaintMode.STTN  # 设置为STTN算法
STTN_SKIP_DETECTION = True # 跳过字幕检测,跳过后可能会导致要去除的字幕遗漏或者误伤不需要去除字幕的视频帧
  1. 视频去除效果不好怎么办

修改backend/config.py中的参数,尝试不同的去除算法,算法介绍

  • InpaintMode.STTN 算法:对于真人视频效果较好,速度快,可以跳过字幕检测
  • InpaintMode.LAMA 算法:对于图片效果最好,对动画类视频效果好,速度一般,不可以跳过字幕检测
  • InpaintMode.PROPAINTER 算法: 需要消耗大量显存,速度较慢,对运动非常剧烈的视频效果较好
  • 使用STTN算法
1
2
3
4
5
6
7
8
MODE = InpaintMode.STTN  # 设置为STTN算法
# 相邻帧数, 调大会增加显存占用,效果变好
STTN_NEIGHBOR_STRIDE = 10
# 参考帧长度, 调大会增加显存占用,效果变好
STTN_REFERENCE_LENGTH = 10
# 设置STTN算法最大同时处理的帧数量,设置越大速度越慢,但效果越好
# 要保证STTN_MAX_LOAD_NUM大于STTN_NEIGHBOR_STRIDE和STTN_REFERENCE_LENGTH
STTN_MAX_LOAD_NUM = 30
  • 使用LAMA算法
1
2
MODE = InpaintMode.LAMA  # 设置为STTN算法
LAMA_SUPER_FAST = False # 保证效果

如果对模型去字幕的效果不满意,可以查看design文件夹里面的训练方法,利用backend/tools/train里面的代码进行训练,然后将训练的模型替换旧模型即可

  1. CondaHTTPError

将项目中的.condarc放在用户目录下(C:/Users/<你的用户名>),如果用户目录已经存在该文件则覆盖

解决方案:https://zhuanlan.zhihu.com/p/260034241

  1. 7z文件解压错误

解决方案:升级7-zip解压程序到最新版本

  1. 4090使用cuda 11.7跑不起来

解决方案:改用cuda 11.8

1
pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu118