视频中固定对象的去除、替换在当前已没有技术门槛,障碍是知识产权保护和滥用风险。水印一般以固定为的logo、sologan等形式存在,PR、AE乃至PS都可以有效去除,但门槛过高、效率低下。过去,兼顾效率的去水印工具往往被称为“神器”,现在看来,伴随着AI的应用推广、开源社区的成长,“神器”会越来越多。本文分享的除了成熟应用之外,也会将有发展潜力、应用门槛较低的开源应用,需要特别提示的是,任何工具仅适用个人自用,使用者应有这方面的意识,不得对应用技术或工具后的视频进行传播。
1.Hitpaw Watermark Remover
Hitpaw WR是“中国人民的老朋友了”,以其大幅优于同类工具软件的处理效果和合理的处理效率被奉为去水印“神器”,偶尔也会针对特定系统的客户端退出限时免费活动,新用户可以在官方网站下载版本进行免费体验(Free Trail)。
https://www.hitpaw.com/remove-watermark.html
打开HitpawWR,导入需要修补的视频,框选水印区域,点击【导出】即可。
同时,hitpawwr支持按照时间轴分别框选水印区域,对于水印不固定的视频可以进行处理,但过程较为琐碎,开销很大。HitpawWR支持多种移除模式,包括平滑、AI、高斯、颜色、蒙版等,但后三种仅对付费用户提供支持,Free Trail用户欠奉,且不支持视频中水印的移除(仅支持图片水印的移除)。
HitpawWR的5种模式中,「蒙版填充」需要识别、分割对象,是否采用了SAM不得而知。「AI模型」效果略优于「平滑填充」,可以断定的是前端没有使用SAM分割水印,后端采用ONNX标准、具体模型未知,开销很大、非常慢,几乎不可用,与现有的AI开源项目(包括本文介绍的ProPainter和Inpaint/Remove Anything Video)相比,单纯从效果来看,高价的HitpawWR AI及主打AI消除的MediaIO等并无优势。
2.ProPainter
Propainter是一个刚刚发布的改进的视频修复与转换框架,涉及增强的ProPagation和高效的Transformer,可以通过水印掩膜对视频帧进行修复。Propainter的主要功能是对象删除和水印删除,框架兼顾了效率,与抠图神器Segment Anything进行搭配,由SAM导出掩膜并对大尺寸视频进行水印区域预切割,Propainter使用导出的掩膜进行修复,可以在装备Nvidia消费显卡的个人电脑上得到不错的应用效果。
项目地址如下:
https://github.com/sczhou/ProPainter
https://shangchenzhou.com/projects/ProPainter/
项目提供了release包,建议在项目主页下载项目的「zip包」(或直接「点此」下载),方法是【项目主页】->【Code】->【Download Zip】,点击即可。
下载解压至指定位置后,进入解压后的目录,对environment.yaml文件进行必要修改并拷贝requirements.txt文件后,下载老E提供的压缩包的无需再进行前面的文件替换、拷贝操作。之后,通过如下命令安装部署。
#cd %ProPainter% conda env create -f environment.yaml conda activate propainter pip install -r requirements.txt #pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r .\reqirements.txt pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html https://github.com/mikeboers/PyAV pip install av -i https://pypi.mirrors.ustc.edu.cn/simple #pip install av --no-binary av
部署完成后,在本地解压的项目目录下,可通过以下命令进行demo测试。
# The first example (object removal) python inference_propainter.py --video inputs/object_removal/bmx-trees --mask inputs/object_removal/bmx-trees_mask # The second example (watermark removal) python inference_propainter.py --video inputs/watermark_removal/running_car.mp4 --mask inputs/watermark_removal/mask.png
最后,提供国内conda源的配置命令供参考使用。
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
3.Inpaint/Remove Anything Video
本文分享的Inpaint Anything项目来自于中国科学技术大学智能媒体计算实验室,Github项目当前评星4.1k。项目基于Meta SAM (Segment Anything Model),提出了修补一切模型(Inpaint Anything,简称 IA)。区别于传统图像修补模型,IA 模型无需精细化操作生成掩膜(mask),支持一键点击标记选定对象,IA 即可实现移除一切物体(Remove Anything)、填补一切内容(Fill Anything)、替换一切场景(Replace Anything),涵盖了包括目标移除、目标填充、背景替换等在内的多种典型图像修补应用场景。
Github项目的首页如下:
https://github.com/geekyutao/Inpaint-Anything
新手部署Inpaint Anything可能会遇到一些障碍,这里老E梳理了一下,尽可能确保能够一次性部署成功。
3.1 环境搭建与Pytorch安装
打开开始菜单,以管理员身份打开‘miniconda cmd prompt’,运行如下命令创建环境并安装pytorch。
conda create --name pytracking python=3.11 conda activate pytracking pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 #conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
这里需要提示两点:
- 虚拟环境名称本文设定的是pytracking,仅仅是考虑视频中对象修补的核心是tracking,可结合自身管理需求自定义一个易于记忆、辨识的名称。
- 本地安装命令由pytorch根据用户需求自动生成,可在以下官方网址进行配置导出,conda、pip均可,建议使用pip。
https://pytorch.org/get-started/locally/
3.2 Inpaint-Anything安装
可以直接下载项目(方法同上,直接点击「这里」也可,但不会同步更新),建议解压至miniconda3或其他规划好的统一管理目录下,%Inpaint_Anything%为实际解压的项目目录,进入该目录后运行指令分别安装Remove、Fill&Replace以及Remove Video。所有命令的执行前提是激活项目虚拟环境(pytracking),需要使用最新3.11.4/5版本python(本文默认)的,应运行--fix for 3.11+--下的3条指令。
conda activate pytracking cd %Inpaint_Anything% --Remove Anything-- #pip install torch torchvision torchaudio pip install -e segment_anything pip install -r ./lama_requirements_windows.txt pip install timm --Fill&Replace Anything-- pip install diffusers transformers accelerate scipy safetensors --Remove Anything Video-- pip install jpeg4py lmdb --fix for 3.11+-- pip install --upgrade hydra-core pip install imageio[ffmpeg] pip install imageio[pyav]
3.3 预训练模型下载、安装
下载安装3个预训练模型文件「sam_vit_h_4b8939.pth」和「sttn.pth」以及「vitb_384_mae_ce_32x4_ep300.pth」。在项目目录%Inpaint Anything%下创建pretrained_models和pytracking文件夹,在pytracking文件夹下新建pretrain文件夹。按照项目官方指引下载前两个文件并将其移动至pretrained_models文件夹下,第三个追踪预训练模型文件拷贝至pretrain文件夹下。最后,如果使用官方demo及指定采用lama进行对象消除,还需要下载「big-lama」目录并拷贝至pretrained_models文件夹下。
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
https://drive.google.com/file/d/1ZAMV8547wmZylKRt5qR_tC5VlosXD4Wv/view
https://drive.google.com/drive/folders/1ttafo0O5S9DXK2PX0YqPvPrQ-HWJjhSy
https://drive.google.com/drive/folders/1wpY-upCo4GIW4wVPnlMh_ym779lLIG2A
至此,InpaintAnything的安装就结束了,可以对图片进行抹除、替换、填充以及视频的对象消除了。安装过程中,可以参考、配置使用以下国内pip源。
https://pypi.mirrors.ustc.edu.cn/simple https://pypi.tuna.tsinghua.edu.cn/simple https://mirrors.aliyun.com/pypi/simple http://pypi.douban.com/simple http://pypi.hustunique.com https://mirror.baidu.com/pypi/simple
配置pip国内源的命令如下:
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple
Inpaint Anything项目的video remove模块的设计开发目标是适配动态对象的消除,对于静态水印,依然会完整执行track、segment、inpaint三个步骤,至少2/3无用功,因此使用Inpaint Anything处理水印效率一定是偏低的,后端模型有能力的用户可以有针对性地训练出来,默认模型色彩还原较好,细节还原一般,直观体验就一个字“糊”。
基于SAM的开源项目还有很多,同为对象识别、追踪及修补的还有track-anything(项目地址如下)等,也都配有相应的demo。对CV感兴趣的,其他相关项目也可一并参考了解。
Track-anything-https://github.com/gaomingqi/track-anything
XMem-https://github.com/hkchengrex/XMem
V7-https://www.v7labs.com/blog/video-segmentation-guide
4.优化方向
- 长视频处理方面,参照显卡显存容量,较长视频可以使用ffmpeg或open cv2进行均匀分割为不爆显存的临时片段,处理完成后再进行合并。具体片段长度应结合视频分辨率、对象大小和自身显卡情况设置。
- 速度提升方面,无论是前端的SAM还是后端的LaMa,都可以使用如FastSAM等模型替代默认模型,降低开销。
文章评论