浏览器里修图:WebGPU 图像修复工具 inpaint-web 上手记
【免费下载链接】inpaint-webA free and open-source inpainting & image-upscaling tool powered by webgpu and wasm on the browser。| 基于 Webgpu 技术和 wasm 技术的免费开源 inpainting & image-upscaling 工具, 纯浏览器端实现。项目地址: https://gitcode.com/GitHub_Trending/in/inpaint-web
inpaint-web 是一款纯浏览器端运行的 WebGPU 图像修复工具,定位很直接:把照片里不想要的部分涂掉,模型自动补全;另外还支持 4 倍超分辨率放大。整个过程不装任何软件,图片也完全不离开本机。我把它拉到本地折腾了一遍,体验比预期要好。
打开就能用:一条命令起本地图像修复服务
不需要任何环境配置,克隆下来跑两条命令就行:
git clone https://gitcode.com/GitHub_Trending/in/inpaint-web cd inpaint-web && npm install && npm run start浏览器访问它输出的地址。界面非常克制:中间一块画布用来预览图片,旁边一排按钮管画笔大小、原图对比、撤销、4 倍放大和下载,旁边还有几张 示例图片目录 里的图可以直接试。
整个界面就是一块画布加几个按钮,用过修图软件的人零学习成本
第一次运行有一件事要有心理准备:页面会从境外存储下载两个 ONNX 模型文件(修复模型约 30MB,放大模型约 70MB),需要能稳定连出去的网络。下过一次之后会缓存在本地 IndexedDB 里,下次打开不再重复下载。
涂一笔,把照片里的人抹掉
🖌️ 我随手挑了一张示例图:一双鞋的产品图。把画笔调到合适的大小,直接在不想要的东西上涂抹,鼠标跟着一个圆形光标,涂多涂少一目了然。涂完等几秒,进度条走完,涂抹区域就按周围纹理补全了,东西干净地消失。
public/examples/ 里的示例图,挑个面积小的跑,几秒出结果
不满意就点「撤销」重来,历史是按次记录的,涂错一笔不会前功尽弃;「原图」按钮可以在当前结果和原图之间切换,方便检查边缘过渡。这套撤销历史是容易被忽略、但实际每次都会用到的细节。
点一下 4 倍放大,把小图变大图
第二个功能是超分放大:点「4 倍放大」后进度条一块一块地走(后面会解释为什么是一块一块的)。完成后输出的图宽高各放大 4 倍,边缘明显更锐,拿来放大老照片或者需要撑大的产品图,基本够用。
左为超分结果,右为原图,边缘清晰度肉眼可见
为什么它能跑在浏览器里
看源码会发现,不神秘,主要是两件事。
第一件是硬件能力自动检测。页面加载时会先检查navigator.gpu能不能申请到适配器:能,就把模型计算交给 WebGPU,让 GPU 并行处理成千上万个像素,像把一堆卡片分给很多人同时整理,而不是一个人排队一张张翻;不能,就自动退回 WASM 路径,并且浏览器支持 SIMD 和共享内存多线程的话就一并打开,跑在 CPU 上——比 GPU 慢,但能用,不会直接罢工。
第二件是预处理和分块。图片进模型前,由 opencv-ts(OpenCV 的 WASM 版)做通道重排、遮罩二值化这些脏活。修复模型可以整图一次跑完,放大模型则不同:它把图切成 64×64 的小块逐块推理再拼回,块与块之间留 6 像素重叠来避免拼缝。这么做的好处是大图也不会把内存撑爆,坏处是进度只能一块一块地报。
适合谁,不适合谁
适合:偶尔需要去水印、去路人、去杂物,或者想把小图放大的场景。不用打开重型修图软件,也不用把图片上传到任何在线服务,本地隐私这块是实打实的安心。
不适合:一次处理几百张图的批处理需求(目前没有队列功能);超大图片反复多轮放大(内存压力明显);以及不支持 WebGPU 的旧浏览器——会回落到 CPU,速度就完全是另一个量级了。
⚠️ 再提醒一次:首次使用的模型文件来自境外存储,网络连不出的话会卡在这一步。
仓库地址就是上面那条 clone 命令里的。如果跑出问题或者有功能想法,欢迎直接去 Issue 里反馈。
【免费下载链接】inpaint-webA free and open-source inpainting & image-upscaling tool powered by webgpu and wasm on the browser。| 基于 Webgpu 技术和 wasm 技术的免费开源 inpainting & image-upscaling 工具, 纯浏览器端实现。项目地址: https://gitcode.com/GitHub_Trending/in/inpaint-web
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考