image rotation detection

Open-sourcing RightWayUp to solve camera rotation detection

ORTUS AI needed to know, from a single CCTV frame, whether a camera was installed upside-down.

4 min readMachine Learning

There's a quiet, practical heroism in solving your own problem because nothing else works, and then giving the answer away. That's exactly what ORTUS AI has done with RightWayUp, an open-source image rotation detection model that estimates how far a photo is from upright across all 360 degrees. The team needed to tell from a single CCTV frame whether a camera had been rotated or installed at an angle. The existing models they tried delivered low accuracy, too many false positives, or restrictive licenses. So they built their own. The result outperforms the alternatives they tested, and the weights and code are now released under Apache-2.0. This is the kind of focused, outcome-driven engineering that makes you reconsider what "good enough" means in a field where proprietary models often move slowly. It also reminds us that the most useful tools sometimes emerge from frustration, not from grand R&D roadmaps. If you have ever felt constrained by the limitations of a tool you didn't choose, this story should resonate. It echoes the same principle we saw when Opus 5.5 redefines what a spreadsheet benchmark should look like: that a focused, well-measured approach can expose the gaps in conventional thinking.

What makes RightWayUp worth your attention is not just the accuracy numbers, though they are impressive. On the held-out test set, the Max variant was within 10 degrees on 93 percent of images, compared to 88.4 percent for the Woehrer 2026 model. On the Woehrer benchmark itself, it hit 98.8 percent against 98 percent. It also scores perfectly on RotBench. But the real insight lies in a detail the team uncovered during training: saving images from the COCO-based rotation benchmark as JPEG quality 90 caused Woehrer 2026's accuracy to collapse from 98 percent to 30.2 percent, while RightWayUp barely moved. The rotated JPEG grid of the source photos was leaking the angle. The ORTUS team spotted this early and removed its effect. That is the difference between a model that performs well on a clean benchmark and one that works in the messy, compressed, real-world environment of a CCTV feed. This kind of robustness matters more than a headline accuracy number. It is the same practical discipline we appreciated when we covered how to Save hours by finding deleted rows between two spreadsheet versions: the best tools are the ones that handle the edge cases you did not anticipate.

The six model sizes, from Pico (small enough to run in a browser) to Max, make this immediately useful for a range of deployment scenarios. The team also built in an abstention mechanism: if there is no clear "up" in the image, like a close-up or a sky-only frame, the model says so instead of guessing. That is a design choice that shows respect for the user's time. False positives waste more energy than a correct abstention. The transparency is refreshing too. The engineering was done with Claude and Codex, and the team says so directly. That honesty builds trust rather than eroding it. The open question now is how the community will use this. Camera rotation detection is a narrow problem, but it appears everywhere: security footage, drone imagery, medical scans, even user-uploaded photos that need orientation correction. The model is permissively licensed, so it can be integrated, modified, and embedded without friction. The one detail to watch is how well the abstention logic holds up across domains it was not trained on. That is the kind of test that separates a useful open-source project from a genuinely durable one. If you have a stack of misaligned images or a camera feed that keeps drifting, RightWayUp is worth a look.

From Machine Learning

We are open-sourcing RightWayUp - a new image rotation detection model.

I work at ORTUS AI (we develop video analytics). We needed to tell from a single CCTV frame whether a camera had been rotated or installed at an angle (or upside-down), so we tried different models for that, without much luck (low accuracy, lots of false positives on regular camera-like frames). Some were not permissively licensed. Out of despair, we decided to train our own. We didn't expect it to come out this good.

Read the original at Machine Learning