[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93187":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":19,"topics":20,"createdAt":10,"pushedAt":10,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":24,"discoverSource":25},93187,"moebius-web","simonw\u002Fmoebius-web","simonw","Run the Moebius inpainting model in the browser","https:\u002F\u002Fsimonw.github.io\u002Fmoebius-web\u002F",null,"TypeScript",52,2,1,0,38.43,false,"main",true,[],"2026-07-22 04:02:08","# moebius-web\n\nIn-browser image inpainting with the [Moebius](https:\u002F\u002Fgithub.com\u002Fhustvl\u002FMoebius) model\n(0.22B parameters, ECCV'26), running client-side via\n[ONNX Runtime Web](https:\u002F\u002Fonnxruntime.ai\u002Fdocs\u002Ftutorials\u002Fweb\u002F) on the WebGPU backend.\n\n- **Live demo:** https:\u002F\u002Fsimonw.github.io\u002Fmoebius-web\u002F\n- **Model weights (ONNX):** https:\u002F\u002Fhuggingface.co\u002Fsimonw\u002FMoebius-ONNX\n\nPorted to ONNX by Claude Opus 4.8. [Full Claude Code transcript](https:\u002F\u002Fgisthost.github.io\u002F?58039ba5c1ca3ed177e8659168996ee4).\n\nPaint over a region of an image to replace it; the denoising loop runs locally on your GPU.\nThe first run downloads ~1.27 GB of weights from Hugging Face (then browser-cached). A\nWebGPU-capable browser (recent Chrome or Safari) is required.\n\n## How it works\n\nMoebius conditions on a learned embedding table rather than a text encoder, so there is no\ntokenizer or text model. The export is three ONNX graphs — VAE encoder, UNet, VAE decoder —\nand the sampling loop (DDIM with classifier-free guidance, 9-channel latent assembly,\npre\u002Fpost-processing) runs in TypeScript. See [`web\u002Fsrc\u002Fpipeline.ts`](web\u002Fsrc\u002Fpipeline.ts).\n\nNotes:\n- Fixed 512×512 resolution (the model's cross-attention uses a position embedding tied to the\n  trained resolution); non-square inputs are letterboxed.\n- VAE `scaling_factor = 0.13025` (a custom VAE, not the usual SD `0.18215`).\n- The self-attention `pos_conv` is exported as Conv2d rather than Conv3d so the graph compiles\n  on Safari's Metal WebGPU backend.\n\n## Repository layout\n\n| Path | What |\n|------|------|\n| `web\u002F` | Vite + TypeScript app (the demo). |\n| `python\u002F` | Reference inference, ONNX export, fp32↔fp16, full-pipeline parity checks. |\n| `web\u002Ftest\u002Fverify.mjs` | Headless Node check of the TS port vs the validated reference. |\n| `plan.md`, `notes.md` | Working plan and lab log. |\n\n## Develop\n\n```bash\ncd web\nnpm install\n# point the app at local model files, or set VITE_MODEL_BASE to the HF repo:\nnpm run dev\n```\n\nThe model files (`unet.onnx`, `vae_encoder.onnx`, `vae_decoder.onnx`) are not in this repo —\nthey live in the [Hugging Face model repo](https:\u002F\u002Fhuggingface.co\u002Fsimonw\u002FMoebius-ONNX). For\nlocal dev, symlink them into `web\u002Fpublic\u002Fmodels\u002F`, or build with\n`VITE_MODEL_BASE=https:\u002F\u002Fhuggingface.co\u002Fsimonw\u002FMoebius-ONNX\u002Fresolve\u002Fmain`.\n\n## Deploy\n\nPushing to `main` triggers `.github\u002Fworkflows\u002Fdeploy.yml`, which builds `web\u002F` (with the GitHub\nPages base path and the Hugging Face model base) and deploys to GitHub Pages.\n\n## License\n\nApache 2.0, inherited from the upstream [hustvl\u002FMoebius](https:\u002F\u002Fgithub.com\u002Fhustvl\u002FMoebius).\nThe model is by Duan, Xu, et al.; this repository is a browser port and ONNX conversion.\n","moebius-web 是一个在浏览器中本地运行 Moebius 图像修复模型的 Web 应用。它基于 ONNX Runtime Web 和 WebGPU 后端，将 Moebius（ECCV'26 提出的 0.22B 参数无文本编码器图像生成模型）完整部署于客户端 GPU，支持用户涂抹图像区域进行实时局部修复，全部计算在浏览器内完成，无需服务器交互。项目采用 TypeScript 开发，固定输入分辨率为 512×512，使用定制 VAE 缩放因子（0.13025），并针对 Safari Metal 和 Chrome WebGPU 进行了算子适配。适用于隐私敏感、低延迟要求的图像编辑场景，如本地化内容创作、教育演示或轻量级设计辅助。","2026-07-12 02:30:09","CREATED_QUERY"]