RevelAI
Back

Honest limitations

A restoration tool that only advertises its successes is not one you should trust with an album. This page is the full version of what RevelAI gets wrong, and what it does about it.

Face restoration reconstructs faces. It does not reveal them.

On a low-resolution photograph, the face that comes out may not be that person's face. The model produces a plausible face, not the one that was there.

For a family photograph, where the entire value is that it is that specific person, this is a serious defect and not a footnote.

So it is off by default, the tool prints the warning before running, and the restored file never replaces the original. Use --compare-dir and look at both before you keep anything.

Colourisation invents the colour.

The result is a plausible guess about what the scene might have looked like. It is not a record of it.

A dress that comes out blue was not necessarily blue. Off by default, with the same kind of warning.

Detection fails on low-contrast pages.

A print faded to nearly the tone of the paper it is mounted on, on a page with a busy texture, may be missed or cropped short.

That is why interactive review exists, and why it is a normal part of the flow rather than a fallback.

Prints that touch or overlap may come out as one crop.

Two photographs mounted edge to edge are separated only by a shadow line, and where one print is laid over another the union is an L shape whose borders belong to two different rectangles. Locally there is nothing in the image that says which.

Measured across the fixtures, a single photograph's strongest internal line reaches 0.287 of its own border — a horizon, a roofline or the edge of a table all produce one — and a genuine seam between two prints starts at 0.320. A margin of ten per cent is not enough to cut a photograph on.

So RevelAI reports it rather than guessing. The invariant the tests enforce is that no crop is ever both wrong and unflagged.

A vision-language model can be wrong too.

Crop verification reduces the number of crops you have to look at. It does not reduce it to zero.

The invariant behind all of this

Detection will get things wrong. What it must never do is get something wrong quietly, because then a fifty-page batch cannot be trusted at all. The test suite enforces it across every fixture: no crop is ever both wrong and unflagged.

The measurements behind these numbers are in the engine README, and the tests that hold them are in packages/engine/tests.