照片去模糊

把拍糊了的照片拖进来。去模糊模型只下载一次,之后全部计算都在你这台机器上完成,照片不会离开这个标签页。

去模糊工作台

把拍糊的照片拖到这里

也可以按 Ctrl/⌘+V 粘贴。支持 JPEG、PNG、WebP,单张不超过 400 万像素、20 MB,一次最多三张。

手边没有?试试这两张:
这一批的照片

照片不会上传。打开浏览器的网络面板自己看:模型文件下载完之后,这个页面不再发出任何请求。

它到底能修什么

这个模型是拿高速摄影机拍的「清晰 / 运动模糊」成对画面训出来的。训练数据决定了它能还原哪一类模糊——这件事说清楚,比事后让你失望强。

适合

  • 手抖:1/15 秒手持拍下来,整张图的边缘朝同一个方向拖出影子。
  • 曝光期间主体在动:开过去的车、跑动的小孩、翻页的手。
  • 糊了但笔画轮廓还在的字:价目牌、路牌、白板、小票。

不适合

  • 对错焦。失焦的模糊形状跟运动模糊不是一回事,模型压根没见过。这种可以试试放大工具。
  • 本来就小的图。把 300 像素宽的缩略图放大是分辨率问题,不是模糊问题。
  • 已经糊成一片灰的字。笔画一点都没剩下,文件里就没有信息可还原了——模型只会编出一组看着像样的笔画,编出来的字比看不清更糟。

它是怎么跑起来的

  1. 模型只来一趟第一次使用会下载一个 263 MB 的 ONNX 文件,之后存在浏览器缓存里。再打开这个页面大约两秒就能用,断网也一样。
  2. 照片交给显卡,不是交给服务器照片先解码进 canvas,再交给 Web Worker:有 WebGPU 就走 WebGPU,没有就用 WebAssembly 在单个 CPU 线程上跑。两条路的输出逐像素一致。
  3. 保留多少由你定强度滑杆把结果按比例混回原图。拉到 0% 时下载的就是你的原始像素;拉到 100% 是模型的原始输出。大多数照片的合适位置在两者之间。

模型与许可证

网络
NAFNet-GoPro-width64
下载体积
263 MB(275,371,113 字节),fp32,单文件
许可证
MIT
作者
Chu、Chen、Chen、Lu(旷视研究院),2022 年
训练数据
GoPro:从 240 fps 视频合成的 3,214 对模糊 / 清晰图
本机实测
1024 × 768:WebGPU 2.0 秒,单线程 CPU 41 秒(Apple M2 Max)

NAFNet — “Simple Baselines for Image Restoration”,arXiv:2204.04676。本页用的 ONNX 导出来自 deepghs/image_restoration;权重与代码是 MIT,训练框架的一部分是 Apache 2.0。两份许可证的全文随页面一起发布。

常见问题

我的照片会被传到服务器吗?
不会。这个页面唯一从网上取的东西是模型文件本身,而且是在你打开照片之前就从 CDN 取好的。之后的解码、分块、推理、前后对比,全在这个标签页里完成。你可以自己验证:打开开发者工具切到「网络」面板,跑一张照片,模型之后不会再有任何请求。把网线拔了照样能用。
它能修哪一种模糊?
运动模糊——快门开着的时候相机或者被摄物在动造成的那种。它用的是 GoPro 数据集,那套数据是把 240 fps 视频的连续帧平均出模糊图的,所以带方向的拖影正是它见过几千遍的东西。对焦没对准的松散、雾霾、压缩糊块、分辨率不够,是另外几类问题,有各自的解法;这个模型对它们要么无动于衷,要么修出一层塑料感。
糊掉的字能变清楚吗?
有时候可以,取决于笔画还剩多少。如果你能看出「这里有笔画,只是认不出是哪几笔」,希望不小——价目牌、路牌、教室后排拍的投影都属于这一类。如果字已经糊成一条均匀的灰带,任何工具都救不回来,因为信息已经不在文件里了。看数字要格外小心:修复模型给出的是「最像的」笔画而不是「真正的」笔画,所以千万不要把去模糊之后读到的单号、金额当成事实。
为什么免费档卡在 400 万像素?
是内存和耐心的问题,不是收费的问题。这个网络在原分辨率上保留 64 通道的特征图,一张 400 万像素的图要占掉两三个 GB 的工作内存;再大,WebAssembly 的堆就不够用,标签页会直接崩掉。400 万像素是测试里能稳定跑完的最大尺寸——WebGPU 约 10 秒,走 CPU 大约四分钟。超过这个数,页面会问你要不要缩,而不是背着你偷偷缩。
浏览器没有 WebGPU 还能用吗?
能。同一个模型会用 WebAssembly 在单个 CPU 线程上跑,输出完全一样——我们拿参照实现逐像素比过,最大差异是 255 级里的 2 级。唯一的损失是速度:在这台测试机上每百万像素约 52 秒,而不是 2.5 秒——赶时间的话先把图缩小。Safari 和老版本 Firefox 现在走的就是这条路。
能给视频去模糊吗?
这里不能。一分钟 30 fps 就是 1800 帧,走 CPU 那条路按 1024 × 768 算也要将近一整天,而且会闪——因为每一帧都是在不知道相邻帧长什么样的情况下各修各的。视频去模糊需要一次看好几帧的模型,还需要让浏览器标签页连续活几个小时的办法。如果你只是要片子里的某一个瞬间,把那一帧导成图片再拿过来。