Real-ESRGAN runs inside this page. The model is downloaded once, then every image is processed by your own GPU or CPU β no server, no upload, no account, no wallet. This is the free tier of the OMC compute network: the same class of work the paid network settles on chain.
The model is 64 MB and is fetched once, then cached by the browser. Nothing runs until you ask it to.
No black box β here is the whole pipeline, in order.
A 64 MB Real-ESRGAN export is fetched once and handed to ONNX Runtime compiled to WebAssembly. It is then cached, so a second visit does not download it again.
The file is drawn to a canvas, sliced into overlapping tiles and normalised to the float range the network expects. This all happens in memory inside the page.
Each tile is upscaled 4Γ, the overlap is cropped off, and neighbouring tiles are averaged so the seams do not show. Then you get a download button.
The same model runs on a phone and on a desktop GPU, and the difference is large. These are measured reference points, not promises about your machine.
| Input | Output | Reference time |
|---|---|---|
| 320 Γ 200 | 1280 Γ 800 | ~2 s |
| 640 Γ 400 | 2560 Γ 1600 | ~8 s |
| 1024 Γ 640 | 4096 Γ 2560 | ~23 s |
Two different things, deliberately kept apart.
A convenience tool. Your device pays the compute cost in electricity and time. There is no job record and nothing to settle.
When you need a guaranteed run on someone else's GPU with verifiable output and a refund if it fails, that is a job on the Compute Station, settled in tOMC on BNB Smart Chain Testnet.
The tool above spends your own device. This block spends tOMC: the escrow, the provider assignment, the delivery hash and the settlement are all recorded on BNB Smart Chain Testnet and can be checked in the explorer without trusting this page.
On chain: the escrow, which provider was assigned, the keccak256 of the result, the settlement and any slashing β all readable with one getJob(jobId) call. Not on chain: the image itself. No EVM can hold a megabyte of pixels, so the bytes travel out of band and the chain carries only their hash. Right now no provider process is serving testnet jobs, so a job you create will be escrowed and stay in ESCROWED until one is. The escrow is real and refundable through cancelJob; the transport is the piece still being built.
There is no upload endpoint. The runtime and the model file are the only things fetched from the network, and both are static assets. You can watch the network tab and see for yourself.
Speed is a property of your device, not of the page. If you are on integrated graphics, start with a small image and expect to wait. There is no server-side fallback here by design.
No wallet, no token, no fake job counter. It is a tool, labelled as a tool. The chain-backed service is a separate page with its own escrow, verification and penalties.