浏览器本地 AI 视频去水印实践:从矩形补丁到笔画级修复

简介: Timeline Studio 开源视频编辑器基于 MI-GAN 与 WebGPU 实现浏览器端本地去水印,无需上传素材。创新采用笔画级遮罩、局部泊松融合与保守跨帧辅助,精准保留皮肤、阴影等真实细节,显著改善矩形色块与帧间不一致问题。欢迎体验或贡献代码!

视频去水印最难的地方,往往不是把文字擦掉,而是让观众看不出这里曾经被修复过。
在开源视频编辑器 Timeline Studio 中,我们使用 MI-GAN 和 WebGPU 实现了浏览器本地修复。素材无需上传,模型在用户设备上运行。第一版已经能够去除水印,但处理人物颈部、衣领、阴影等复杂位置时,仍然容易出现矩形色块、轮廓变形,以及相邻帧修复结果不一致的问题。

本文介绍的视频修复方案已集成到开源项目 Timeline Studio 中。欢迎在线体验,也可以前往 GitHub 查看实现、提交问题或参与改进。如果这个项目对你有帮助,欢迎点一个 Star,关注后续更新。

经过多轮实际视频测试,我们逐渐发现:提高效果不能只依赖更大的模型,还需要重新考虑三个问题——哪些像素真的需要修复、其他帧能提供什么信息,以及修复结果应该如何融合回原视频。
从一个矩形色块说起
测试素材中,有一行白色文字横跨人物的颈部和衣领。
用户用矩形框选中几个字后,模型确实去掉了文字,却同时改变了框内原本正确的皮肤、阴影和衣服边缘。最终看起来像贴上了一块颜色接近、形状却不太自然的补丁。
原因在于:用户框选的是操作范围,算法却把整个范围都当成了缺失区域。
一个矩形中可能只有一小部分像素属于文字。字与字之间、笔画之间,仍然保留着真实背景。如果把这些像素一起遮掉,就等于主动丢弃了可以直接使用的信息,再要求模型重新猜测。
这也是此次优化中最重要的转变:选框用于表达用户意图,实际修复遮罩应尽量接近真正需要移除的内容。
让模型少猜一点:从整框修复到笔画级遮罩
对于能够明确识别的白色文字,我们增加了一条更精细的处理路径。
系统先在选区内寻找接近白色的高亮像素,再通过连通区域的尺寸、形状、排列关系和基线一致性,判断它们是否构成文字。这里没有引入完整 OCR,也不需要知道文字具体写了什么,重点是识别需要修复的笔画区域。
汉字尤其需要注意分离笔画。一个字可能由多个不相连的部分组成,如果只保留较大的连通区域,就会留下偏旁、短横或者顶部笔画。因此,确认文字排列后,还需要把相关的小片段一起纳入遮罩。
遮罩也不能紧贴最亮的像素。视频中的文字边缘通常包含抗锯齿和压缩产生的过渡像素。我们对笔画做适度扩张,再给外侧加入柔和过渡,减少白边和残留轮廓。
识别不可靠时,系统仍然采用原有的区域修复路径。这条优化主要面向明确的白色文字,并不意味着任意颜色、任意透明度的水印都能被准确分割。
在这段测试素材的一个选框中,笔画级处理让约 52% 的选区像素保持原样。它的意义不是某个漂亮的百分比,而是模型不再需要重画这些原本正确的皮肤和衣领细节。
局部融合:修好边界,也要控制修改范围
遮罩变精细后,另一个问题随之出现:即使文字已经消失,填补区域的亮度仍可能与周围背景不一致。
一般区域修复中,我们使用有界的局部泊松校正,并在最后执行边缘过渡。实际排查还发现了一个实现问题:此前泊松校正成功后,会跳过最终的边缘融合。
但“求解成功”并不等于“边界颜色完全一致”。当校正幅度受到限制时,残余色差仍可能形成清晰的矩形接缝。因此,最终边缘衔接需要独立保证。
对于细小的文字笔画,我们采用更局部的调和插值,用笔画周围的真实像素作为边界约束。这可以理解为泊松问题的一种特殊形式:在待填补区域内求解拉普拉斯方程,让内部颜色平滑连接到已知边界。
两条路径的侧重点不同:较大的区域需要模型提供内容,细小笔画则可以更多依赖近在周围的真实细节。
融合不是越强越好。把整个选框都做平滑,虽然可能隐藏边界,也可能破坏已经修得不错的内部纹理。此次优化始终强调控制修改范围,而不是用大面积模糊掩盖问题。
视频中的信息,不只来自当前帧
单帧修复依赖空间上下文,而视频还提供了时间上下文。
人物或镜头移动后,当前被水印遮挡的背景,可能在前一帧或者后一帧中变得可见。对于离线视频处理,未来帧与过去帧一样,都可以成为参考。
但直接复制邻帧像素会产生错位。人物转头、衣服变形、镜头切换,都可能让“看起来相似”的区域不再对应同一处内容。
当前实现优先检查前后各两张邻近原始帧。当可用信息不足时,再有限地搜索前后约三秒内的候选帧。候选内容需要通过光流、前后向一致性、局部颜色、遮挡和场景连续性等检查。
更远的参考还需要多个独立匹配结果相互支持,避免把一次偶然匹配直接当成可靠背景。
这套方法属于保守的跨帧辅助,并不是完整的深度视频修复网络。光流也不能凭空知道水印下面是什么:它主要帮助判断可见区域如何运动,再为有限范围内的内容借用提供依据。证据不足时,仍然保留模型修复结果。
对于已经可靠分离出的细小白色笔画,当前帧保留下来的真实背景通常更加直接,因此无需对每个笔画都进行昂贵的远帧搜索。
时间一致性,还包括文字自己的变化
视频文字可能逐渐淡出。如果每一帧都独立使用固定亮度阈值,遮罩就可能随着亮度下降而不断缩小,最后留下半个字或闪烁的残影。
我们在确认文字后,保留其笔画形状,并结合后续帧判断文字是否仍然存在。淡出过程中保持稳定的修复范围;文字消失后,则停止填补,避免继续改动已经恢复干净的原始画面。
这里追求的不是让遮罩永远不变,而是避免检测结果的小幅波动直接变成可见的画面闪烁。
模型之外,解码与合成同样影响效果
视频修复不是“逐帧调用模型”这么简单。
如果解码、预览与合成采用不同的时间映射,即使每一张修复图都正确,也可能在输出视频中出现错帧、停顿或前后对比不同步。
我们按原视频的真实呈现时间戳处理选中帧,兼顾变帧率视频和裁切片段。修复结果以局部补丁参与合成,未选区域继续使用源视频画面。
浏览器支持时优先使用原生编码路径,另保留 FFmpeg 回退。这里的“保留源画面”指合成内容的来源,并不代表最终编码后每个像素或压缩数据都与原文件完全相同。
此外,切回原片时必须清除旧修复预览。否则,界面虽然显示选择了原片,下一轮处理却可能继续沿用旧结果,让已经产生的瑕疵反复进入后续流程。
如何判断优化真正有效
这次验证没有停留在代码检查或单帧截图。
我们用同一段 1080p 视频,完整执行了选区修复、视频合成、应用到时间线和连续播放,并重点检查早期帧、文字淡出帧以及修复区间之后的画面。
在选定的 0–1.82 秒范围内,共处理了 55 帧。同时验证了框外像素保护、文字残留、取消操作、恢复原片后的预览清理,以及变帧率素材的处理流程。
最终,这段素材中原先明显的矩形色块得到改善。笔画覆盖的位置仍有轻微软化,但周围的皮肤、阴影和衣领不再被整块重画。
这不代表视频去水印已经成为一个普遍解决的问题。大面积遮挡、复杂透明水印、快速运动、细密纹理,以及始终没有在任何帧中出现的背景,仍然具有挑战。
此次实践最有价值的经验是:修复质量不仅取决于模型生成了什么,也取决于系统保住了多少本来就正确的信息。

相关文章
|
2月前
|
人工智能 测试技术 知识图谱
DeepSeek Harness + RAG 知识图谱:AI 测试用例生成,为什么不能只靠 Prompt?
9月1日公益训练营聚焦AI生成测试用例的工程落地:突破“写出来”瓶颈,构建RAG+知识图谱+智能体(Harness/MCP/Subagent)协同链路,让AI真正理解业务、追溯依据、支持验证与持续更新。
|
4月前
|
人工智能 编解码 前端开发
从模型 Demo 到剪辑产品:基于 MI-GAN、ONNX 与 WebGPU 实现浏览器本地视频去水印
本项目在浏览器中实现本地AI视频去水印,基于MI-GAN ONNX模型与WebGPU加速,支持多区域框选、时间范围设定及动态水印关键帧插值。全程无需上传视频,保障隐私,降低服务端成本,修复结果实时预览并保留原始音轨。(239字)
|
2月前
|
存储 人工智能 算法
阿里云 Milvus 自研内核 EAGLE 发布:向量检索的SOTA,我们决定自己造
阿里云Milvus全新自研内核EAGLE发布:在全内存场景和内存磁盘混合场景下,性能与性价比双突破。实测吞吐领先、P99延迟大幅降低。完全开源可复现,拒绝“拼凑式” benchmark——真性能,经得起物理规律与真实业务检验。
455 5
|
1月前
|
JSON Java API
OpenAI 接口协议是普通话,其他大模型是方言,Java 视角拆字段与流式调用
OpenAI 接口协议是大模型世界的普通话,国内模型多是方言。用 Java 视角讲清关键字段、流式调用与 Anthropic Messages API 差异。
244 2
OpenAI 接口协议是普通话,其他大模型是方言,Java 视角拆字段与流式调用
|
1月前
|
JavaScript API 数据处理
米米商聊免打扰功能拆解:消息接收、提醒规则与 @ 例外
本文解析米米商聊“免打扰”本质:消息照常接收,仅抑制提醒;群内@可设例外触发提醒。通过JS示例厘清消息到达、应用规则、系统通知三层边界,助产品与开发者精准定位问题。(239字)
|
1月前
|
网络协议 Shell Android开发
一句“为什么连不上 192.168.1.102”,我和 nl2sh 折腾出了一场局域网悬案
从 Ping 不通、ARP 全零、怀疑 AP 隔离,到目标设备反向 Ping 一次后突然恢复——这是一次真实的 nl2sh 端侧 Agent 网络排障记录。
234 2
|
1月前
|
存储 人工智能 安全
AI医疗大模型工程实践:详解等保、HIPAA、GDPR与数据脱敏,医疗数据合规全流程24.7
本文系统解析AI医疗大模型的数据合规要点,涵盖等保2.0三级、HIPAA、GDPR核心要求,详解医疗数据分类、脱敏技术(掩码/去标识化/匿名化)、全链路风险防控及动态/静态脱敏实践,强调合规需前置设计而非后期补救。
212 1
|
1月前
|
缓存 人工智能 自然语言处理
引用回复为什么不能只存一段文字?消息标识、上下文与失效引用
本文探讨聊天系统中“引用回复”的本质设计问题:如何确保回复**准确指向原消息**(而非靠内容或位置)、**当前可展示什么**(区分加载/权限/删除状态)、**点击后能否可靠定位**(需独立于分页与缓存)。强调用`(会话ID, 消息ID)`稳定标识,分离关系、展示、定位三重契约,避免摘要误导与位置漂移。(239字)
|
1月前
|
人工智能 知识图谱 索引
向量检索与传统 SEO:在 AI 搜索下谁的曝光逻辑更稳
AI搜索时代,企业曝光逻辑已分化:SEO优化网页排名,向量检索支撑生成式引用。实测显示,叠加向量知识库后,AI答案露出率从11%跃升至64%,获客增长3.2倍,成本降45%。二者应并行而非替代,共筑“被搜到+被援引”双轨竞争力。(239字)
向量检索与传统 SEO:在 AI 搜索下谁的曝光逻辑更稳
|
1月前
|
缓存 测试技术 C语言
0.8MB 跑通 Qwen|第 1-3 篇:推理引擎的自检门——没有模型的确定性测试,第一次读懂 PASS/FAIL
本文介绍RK3588平台LLM推理引擎的“自检门”机制:无需模型文件,通过标量参考对拍、固定种子随机与确定性PASS/FAIL测试,快速验证编译后代码正确性;实测覆盖L3缓存、量化点积等核心逻辑,体现工业级可信验证思想。(239字)
169 0
 0.8MB 跑通 Qwen|第 1-3 篇:推理引擎的自检门——没有模型的确定性测试,第一次读懂 PASS/FAIL

热门文章

最新文章