一寸光阴一寸金,寸金难买寸光阴。

只在一小块地方动刀:Jasna 把视频里的马赛克逐帧修回去

先把画面讲清楚

一段视频里,有一小块区域被马赛克盖住了。其余的一切——背景、人物、光线、噪点、镜头的轻微抖动——都是完好的,没有任何问题。

大多数视频修复工具的思路是「整帧处理」:把每一帧当成一张图,送进模型,出来一张更清晰、更平滑、也更陌生的图。代价是全局的,收益也是全局的,你没法只要其中一小块。

Jasna 走的是另一条路。它的定位只有一句:找出视频里的马赛克,把它们修回来,画面其余部分一概不动。

项目地址:https://github.com/Kruk2/jasna

这句话听起来像一句寻常的功能介绍,其实是整份工程设计的原点。因为「只改一小块」这件事,在视频里比在图片里难得多——图片改一块就完了,视频里同一块区域会移动、会变形、会被切镜打断,你必须先知道它在每一帧的哪里,才谈得上修。

它到底能做什么

把功能摊开看,五条:

  • 找出来,再修回来。 在视频里定位马赛克区域并还原,画面其余部分不受影响。
  • 两种还原模型。 快的 BasicVSR++,免费;慢但细节更多的 LTX,面向支持者,且只支持 NVIDIA。
  • 只修你圈定的部分。 在 Segment Editor 里带预览地选区,修哪块由你决定。
  • 支持 VR180 视频和静态图片。 静态图片走 SD 1.5,面向支持者。
  • 实时预览。 在 Video Player 里直接看还原后的效果,不落地成文件。

这五条里,最有意思的其实是最后一条。多数工具的工作流是「跑完 → 打开输出文件 → 发现不对 → 改参数 → 再跑一遍」,一轮几十分钟。能先看再决定要不要生成文件,把试错成本从「一次渲染」压到了「一次播放」。

门槛摆在明面上

这份工具不装客气,硬件要求写在最前面,而且写得很具体。

显卡。 NVIDIA 需要 GTX 16 系列、RTX 20 系列或更新,驱动要够新——Windows 上 610 以上,Linux 上 580 以上。GTX 10 系列及更老的不行。换 AMD 的话,Radeon RX 7000、9000 系列可以跑,但标注为实验性。

更细一层的要求也给了:NVIDIA 的卡需要计算能力 7.5 或更高;AMD 需要 ROCm 支持的型号,包括 RX 7000、9000 系列以及 Radeon 780M、760M、740M 和 Ryzen AI。Windows 上 AMD 驱动要 Adrenalin 26.8.1 或更新。而二级修复和 LTX,只有 NVIDIA 能跑。

路径。 解压目录不能在路径里带中文、日文、带音标的字母或其他非英文字符。这条限制很朴素,也很容易在第一分钟绊倒人。

磁盘。 Windows 上用 NTFS;Linux 上用 ext4、Btrfs、XFS 或 ZFS。网络磁盘不支持。建议 SSD——如果放在机械硬盘上,Jasna 的启动和模型加载都会明显变慢。

LTX 的额外账。 需要 NVIDIA RTX 显卡,至少 8 GB 显存和 16 GB 内存。

这些条件加在一起,等于一句实话:这是一个明确面向「有独立显卡的本地机器」的工具,不打算讨好所有人。

第一次跑,慢是正常的

上手四步,没有安装程序,没有配置向导:

  1. 下载对应你系统和显卡的发行版。
  2. 解压到一个路径不含非英文字符的文件夹。
  3. 启动:Windows 双击 jasna.exe;Linux NVIDIA 运行 jasna 文件;Linux AMD 运行 run_jasna_amd.sh。
  4. 添加视频,选好设置,点底部那个 ▶。

真正的坑在第四步之后。第一次任务会很慢。 在 NVIDIA 上,Jasna 要先为你的具体型号准备模型,这个过程大约 15 到 60 分钟,而且只需要做一次。这段时间里最好关掉其他程序,也别拿这台机器干别的。

准备结果存在 model_weights 目录里,之后一直复用。更新 Jasna 的时候,把这个目录复制到新版本里,就不必再等一遍。

其余的学习成本被压进了界面:每个设置都有提示,鼠标移到 ⓘ 图标上就能看到。显存不够了怎么办?降低 Max Clip Size,比如从 90 降到 60。

七步管线:一条全程不下 GPU 的流水线

这一节是整份文档里含金量最高的部分。Jasna 的流程几乎全部跑在显卡上——从读视频到最后存视频,中间没有来回搬运。

第一步,解码。 在 GPU 上解,NVIDIA 走 NVDEC,AMD 走 AMF。

第二步,检测。 逐帧找出马赛克的位置,默认模型是 rfdetr-v6。

第三步,跟踪。 把同一块马赛克在时间上串起来,把它的这些帧归成一个片段,长度上限就是 Max Clip Size。片段会在切镜处断开,所以两个不同的镜头永远不会被混在一起。

这一步是整条管线的关节。它承认了一个事实:视频不是一叠图片,镜头是有语法单位的。在切镜处切断,等于把「同一段连续画面」作为处理的最小语义单元交下去。

第四步,还原。 每个片段以 256×256 的规格送进 BasicVSR++。片段之间会稍微重叠一点,这样接缝处不会出现肉眼可见的跳变。

重叠这一手很不起眼,但它是「看起来像一段视频」和「看起来像一堆碎片」的分界线。

第五步,可选的二级修复。 用 UNet 4x、RTX Super Res 或 Topaz TVAI 把还原出来的画面放大、变锐。

第六步,混合。 把修好的画面贴回原始帧,只有马赛克那块区域发生变化。

第七步,编码。 用 GPU 编码器输出,NVIDIA 走 NVENC,AMD 走 AMF。音频直接复制,只有当输出格式装不下它时才重新编码。

把这七步连起来看,会发现一个贯穿始终的取舍:每一步都尽量少碰像素。 检测只关心一块区域,还原只在 256×256 的小图上做,混合只覆盖那一块,编码只做一次。省下来的不只是时间,还有「改坏了别处」的风险。

第一次任务之所以慢,是因为第二步和第四步的模型,以及可能用到的 UNet 4x,都要针对你的具体显卡重新准备,这一准备只在 NVIDIA 上发生。结果落在 model_weights,之后反复使用,也可以复制到更新版本的 Jasna 里。

LTX:另一条更慢、也更贪心的路

BasicVSR++ 是「还原」,LTX 更接近「重画」。

它不走上面那条流水线,而是把视频过四遍:找马赛克、准备、用扩散模型还原、保存。慢得多,但能补出更多真实的细节。

这种「更多细节」是可以按档位买的——不是花钱买,是花时间买:

档位 相对速度
Standard 默认,最快
Good 约慢 1.5 倍
High 约慢 2.5 倍
Top 约慢 5 倍

扩散模型这条路线绕不开一个问题:它补出来的细节,有多少是画面里真有的,有多少是模型觉得「这里应该有」的。档位越高,模型参与的力度越大,画面越漂亮,也越需要你自己判断它补得对不对。

想先知道自己的卡撑不撑得住,可以跑 Trial mode,也就是速度测试。免费,会告诉你能不能跑 LTX、大概要多久,但不还原视频。

只修你选中的那一块

Jasna 在「修哪里」这件事上给足了控制权。

Segment Editor 让你圈定范围并预览效果,只处理你选中的部分。这比整段处理要省,也比整段处理要准——尤其是当画面里只有几个镜头出问题的时候。

VR180 视频也能处理,左右并排的 VR 画面有专门的处理方式。

静态图片走 SD 1.5 模型,标注为实验性。

Video Player 则是前面提过的那个「先看再决定」的入口:直接看还原后的播放效果,不生成文件。

对批量任务,命令行覆盖了应用里的大部分能力,但不是全部——Video Player、LTX 的种子预览、遮罩建议和交互式图片模式,只在图形界面里有。

命令行:三行命令,三种粒度

1
2
3
4
5
6
7
8
# 一个视频
jasna --input input.mp4 --output output.mkv

# 一张图片
jasna --input photo.png --output restored.png

# 一整个文件夹
jasna --input input_folder --output output_folder

三种粒度:单个文件、单张图片、整个目录。所有选项用 jasna --help 列出来。

如果你是从源码跑的,那里也能用免费的 BasicVSR++;但激活和支持者模型必须走官方发行版。这条界线划得很清楚——开源的是应用代码,不是模型。

性能:拿 RTX 5090 跑一段 3 分 22 秒

README 里给了一组直接的对比,条件是同一段 3 分 22 秒的视频、BasicVSR++、RTX 5090、Linux,数字是完整还原所需时间,越低越好。

输入 Lada 0.11.0 Jasna v0.9.1
720p H.264 01:47 00:32,快 3.4 倍
1080p H.264 02:02 00:34,快 3.6 倍
2160p H.264 04:56 01:03,快 4.7 倍

三个数字放在一起看,有意思的不是绝对值,而是分辨率越高,差距越大。720p 到 2160p,像素量涨了九倍,Jasna 的耗时只从 32 秒涨到 63 秒。这说明瓶颈不在「处理多少像素」,而在那些与分辨率无关的固定开销——检测、跟踪、调度。

显存这一栏,README 给了一张按版本排列的典型值与峰值表,覆盖 720p、1080p、2160p 以及一段 15 秒的 8K VR HEVC 60fps,也给了更早版本的数据。同时留了一句很实在的提醒:Lada 用的显存比 Jasna 少。

这句话值得单独拎出来说。一份性能对比文档,通常只写自己赢的那一栏;这份把输的那一栏也写在摘要里。快是有代价的,代价就是显存。

免费,但模型要钱养

Jasna 是免费的。这一点没有含糊。

那模型从哪来?README 说得很直白:支持者的钱主要花在训练新模型上,而训练的大头是租 GPU。

支持换来的是一串「支持者模型」的许可证码:

门槛 得到什么
累计 15 美元或以上 UNet 4x,让还原区域更锐利;SD 1.5,面向静态图片的实验模型
25 美元 UNet 4x 与 SD 1.5,外加 LTX——比 BasicVSR++ 慢得多但细节更多,仅限 NVIDIA,含该 LTX 模型的后续更新

还有一个时间点:在 2026 年 10 月 14 日或之前已经给到 15 美元以上的支持者,可以免费拿到 LTX。

至于许可证码从哪来,文档把话说得很重:正版码只能从三个地方来——Buy Me a Coffee、Unifans,以及中国大陆的闲鱼卖家。除此之外,任何出售 Jasna、许可证码或修改版文件的人都是骗子:他们的密钥不生效,他们的文件可能在你机器上运行隐藏代码。Jasna 只从 GitHub 下载。

这段警告写得比多数项目都硬,但它对得起「本地跑、要执行文件」这件事的风险量级。

激活的流程也不复杂:打开 Activate Jasna,填入许可证码,点 Activate online。那台机器没网,或者在线激活失败,就走 Manual 手动方式。

一个许可证码可以用在 3 台 PC 或云工作区上。激活之后可以离线使用。租 GPU 的话还有专门的说明。

「什么算一台新机器」这条定义得挺细:Windows 上换主板算新机器,Linux 上重装系统算新机器,各占一个名额;重装 Windows、换显卡、换硬盘、换内存都不算,用同一个码重新激活即可。少数 Windows 机器没有真正的主板 ID,在那类机器上,换系统盘也会被算成新机器。

还有一条给老用户的提醒:如果你手里是 Jasna 0.10 时期的邮箱和密钥,它们已经不能用了,需要回到当初购买的地方换新的许可证码。

谁站在谁的肩膀上

文档末尾的致谢很短,但分量不轻。

Lada,托管在 Codeberg 上。Jasna 受它启发,在部分地方基于它构建;Jasna 使用的 mosaic_restoration_1.2 模型,正是由 Lada 的作者 ladaapp 训练的。

ZeLeFans,提供了 VR 检测模型,以及关于马赛克形状与 VR 投影的细致分析。

这两个致谢解释了一件事:这类工具的进步不是凭空长出来的。检测模型、还原模型、对马赛克形态的理解,每一块都有人先铺过路。

授权:一层一层分开算

Jasna 公开的应用源码采用 AGPL-3.0。但模型和打包进来的依赖各自保留自己的条款——不是一个大许可盖住全部,而是分层说明:许可与源码可得性一份文件,第三方模型声明一份,发行版源码对应关系一份。

这种拆法看着麻烦,其实是唯一诚实的拆法。代码是你写的,你可以决定它怎么授权;模型是别人训的,你没有权力替它做主。

最后

回到那个画面。

一小块被盖住的区域,周围一切都完好。Jasna 做的事,说穿了就是把注意力收窄:只在那一小块上找、只在那一小块上算、只在那一小块上改。为了做到这一点,它把整条流水线搬上了显卡,把镜头切成片段,把片段之间的接缝用重叠抹平,最后只把修补过的那一块贴回去。

这是一种很克制的工程审美。能准确地说出「我不动别的地方」,比宣称「我什么都能修」要难得多。