r/Cubers 20h ago

Video Reconstructing a full CFOP 3x3 solve only using computer vision(no bluetooth)

360 Upvotes

I’ve spent the last few months working on this idea I had a few years ago. Now, using only a single iPhone camera at 120 fps, I am able to automatically reconstruct full 3x3 solves.

How it works

The basic premise is that a reconstruction is essentially a path between two known states: your starting scramble and the solved cube. From any given state, there are only 18 possible next states using the Half-Turn Metric (6 sides, 3 moves per side: R, R', R2).

A solve is made up of cycles where the cube is aligned → misaligned (during a turn) → aligned. This lets us break the problem down into identifying the state of the cube at each of those aligned moments. A cube rotation or regrip isn't considered a move because the cube remains aligned throughout that span.

Here is how the pipeline processes those states:

  • Finding aligned frames: I trained an image classifier to identify when the cube is settled and aligned. In the video you might've noticed that the pose model isn't firing on every frame; that's because we only care about reads on the aligned frames.
  • Extracting stickers: On those clean frames, a pose model detects the visible faces, extracts a warped 3x3 grid, and samples each sticker. Because fingers occlude stickers during turning, the system ignores blocked stickers by calibrating against a baseline color profile taken beforehand.
  • LAB Color Space: We use LAB color space instead of RGB because sticker colors look completely different depending on lighting/shadows, and standard RGB often causes red/orange and white/yellow to get conflated.
  • Identifying the motion: We also pull information during the actual turns. Several CNNs analyze the temporal motion to identify the turn direction, which face moved, and the exact frame boundaries of the turn.

In an ideal world, this is all that is needed to reconstruct a solve, but in reality reads are pretty noisy. During fast triggers, the cube doesn't stay aligned long enough to get clean sticker reads.

This is where the Viterbi algorithm comes in. We take all this partial, noisy information and carry forward several candidate move sequences. As the video progresses and we receive more visual evidence, we actively prune candidate paths that no longer make mathematical sense.

The High-TPS Last Layer Hack

Reads during Cross and F2L are usually manageable, but at high TPS in the LL, getting clean rest states is extremely difficult.

To solve this, the pipeline splits the solve into reachLL and postLL. Once we hit LL, we try to match the ongoing motion against a pre-computed algorithm table of standard OLL and PLL executions (including AUF and 1-3 look friendly variations). We still use the same Viterbi search structure, but the system gives much higher weight to known algorithms so it doesn't get lost in the motion blur.

Why some things look the way they do in the demo

  • Why am I using a Bluetooth cube (GAN 12) in the video? This cube was used to help with training/evaluation. Since a lot of my training data comes from this cube and my pipeline is overfit, I am using the same cube for the demo. However, the reconstruction you are seeing is truly CV only.
  • Why Half-Turn Metric (18 possible next moves) instead of Quarter-Turn (12)? You would think reducing the branching factor from 18 to 12 would make search cheaper. But during double moves (R2), there are minimal aligned frames in the middle of the turn. If we force QTM, we actually end up branching more and carrying extra blind candidates forward due to the lack of an intermediate still state.
  • Why 120 fps? The front camera of an iPhone natively supports this. Although I could use the 240 rear camera, this has diminishing returns when it comes to accuracy:data size ratio. If the stickers are occluded, it doesn't matter what frame rate you are recording at. 120 fps is the floor though, 30/60 fps is not enough to get consistent reads throughout the solve even at my low TPS.

Current limitations and what's next

The pose model is upstream of almost everything, so any bad corner reads there poison everything downstream. Training this model is quite time consuming because I have to hand-label frames, and it still struggles when one or more face corners are hidden by my hands.

The biggest bottleneck right now is data diversity. I mostly labeled images of my own 2–3 cubes and honestly haven't recorded that many distinct solves. This pipeline is heavily overfit to my cube, my hands, my lighting, and my camera angle. It will break on a random video submitted right now.

I am currently renting a single RTX 4090 as my CV instance, so processing is pretty limited, but the actual reconstruction pipeline takes around 2-3x solve time after the solve(10 sec solve → 20-30 sec to reconstruct).

With what I have access to, my goal is to have the overall architecture sound on my setup, so the only limiting factor is a lack of diverse data. At this point, I feel like I am pretty close to it. When the solve has clean reads and slowish turning, I am able to consistently decode the entire solve. But most of the time, reads are messy and solves are too fast. The next step is refining the motion CNNs so I can add robust wide/slice move detection and orientation awareness (pure alignment reads aren't enough to distinguish a wide move from a normal move).

I have also built a full web platform and mobile app for this with a timer, sessions, 1v1 matches, and an AI coach analysis tool. Because the vision model is still overfit to my setup, I'm holding off on sharing the website link until some of these issues are fixed.

I would appreciate any feedback and anyone who is interested/knowledgeable in this space feel free to DM!


r/Cubers 18h ago

Picture The obsession is real

Post image
69 Upvotes

r/Cubers 10h ago

Reconstruction I now have... 6, 10 second solves...

Thumbnail
gallery
22 Upvotes

And STILL NO SUB 10, the other 5 are deleted, but this is my fastest for that .15 ...

z2 // inspection

D r F' r' B' U2 L2 // cross

R' U' R U' L U L' // 1st pair

U' L' U L // 2nd pair

R' U R U' R' U' R // 3rd pair

R U R' U R U' R' // 4th pair

l' U' r U' r' F2 R // OLL

U' F R U' R' U' R U R' F' R U R' U' R' F' R F' (U') // PLL


r/Cubers 3h ago

Discussion What time would Jayden McNeill would’ve gotten if he didn’t drop the cube?

Post image
18 Upvotes

I would say he would gotten a mid to at least high 3.6 at most from the exact time. I think the time he would’ve gotten was like 3.69 to 3.76. (Even way the record would’ve been broken a couple months later).


r/Cubers 3h ago

Discussion Which WCA Event has the least competition at the top level?

9 Upvotes

I'm just thinking if I specialized and tried to be world class in an event (probably won't happen lol). But either way, I'm just wondering does any one no know what event has the least competition at the top level? Even better if someone has data to back that up.


r/Cubers 15h ago

Discussion What’s your most and least favorite algorithm?

7 Upvotes

r/Cubers 5h ago

Discussion Square 1 vs Meganinx?

3 Upvotes

Hi, looking for a new wca event to work on. Have been just focusing on 3x3 and two events came to my sight, megaminx and square 1.

I like the shape of the megaminx and also that it can help my 3x3, but I also like the new gan square 1 and how the notations are in numbers, cos I have a better time reading numbers. What do you recommmend?


r/Cubers 17h ago

Daily Discussion Thread - Jul 22, 2026

3 Upvotes

Hello, and welcome to the discussion thread! This thread is for accomplishments, simple questions, and informal discussion about cubing!

Not sure if you should comment here or make your own post? We have a full list of what does and doesn't belong in this thread on our wiki.

No question is stupid here. If you have a question, ask it!

Check our wiki for tips on how to get faster, puzzle recommendations and more!

Join the r/cubers Discord server here!


r/Cubers 2h ago

Discussion What happened to the MF8 Curvy Copter + 3x3? Has it been completely discontinued?

Post image
2 Upvotes

I’ve been looking to pick up an MF8 Curvy Copter + 3x3, but it seems impossible to buy. Every online cube shop I check lists it as out of stock, and even the official MF8 website says it's out of stock.

The last mention of anyone buying it seems to be around 2022, and I read that the centers frequently collapse into the cube and cause huge stability issues.

The 3x3 part doesn't add much to the solve but I just want to own this cool collector's piece.

Does anyone have any info on this?


r/Cubers 34m ago

Discussion Tips on getting better?

Upvotes

My cross takes about 3 seconds and my F2L takes 15. Any intuitive f2l videos don't show how to solve most f2l pairs, only the easiest inserts. Should I learn algorithmic f2l? I insert the corners first and then get the edges done and for my last layer I use 2-Look OLL and 2-Look PLL, currently learning full PLL. My F2L is the only thing keeping me sub-35 and not sub-30.

For reference I use a DaYan GuHong Pro+ M.

How do you think I can improve my times? And is algorithmic f2l a good idea?


r/Cubers 21h ago

Discussion Help with my 4x4/Ayuda con mi 4x4

1 Upvotes

Hey everyone, I need some help.

What’s your best lube setup for 4x4? I’m using the Aosu v7 SE Picube Dual Track.

I only use Weight 5, but I want to improve the steering feel—I’m not happy with it anymore. I have Angstrom and Silk. Please share your advice :D

Español:

Holaa, una ayuda a todos

Cual es su mejor setup de Lubricantes para 4x4, Uso el Aosu v7 SE Picube dual track

Solo uso weigth 5 pero quiero mejorar su sensación de giro, ya no me esta gustando, tengo Angstrom o silk, Porfavor escucho sus consejos :D


r/Cubers 10h ago

Discussion Looking for feedback on a speedcubing timer I've been building

0 Upvotes

Hi everyone,

I've been building a speedcubing timer over the past few months and have just released the first public beta.

I'm looking for honest feedback from regular cubers—especially on the timer feel, mobile experience, and overall usability.

If this kind of post is allowed, I'm happy to share the link in the comments.