All projects

Visual navigation / 2025

Finding an invisible goal

A Python and Unity pipeline for vision-based reinforcement learning, exploring how Slow Feature Analysis and 32 learned visual features affect navigation.

PythonReinforcement LearningComputer VisionSlow Feature AnalysisUnity 3D

The problem

Imagine trying to find an unmarked spot in a room. You can look around, move, and learn from experience — but there’s no flag pointing you towards the goal.

I explored how an AI agent could solve that challenge using only camera images. Could a compact understanding of the room help it learn where to go?

These are reinforcement-learning agents: they learn movement through trial, error and rewards. They do not use a language model or act as conversational GenAI assistants.

Try the interactive features or follow a recorded exploration.

What I built

My contribution was the experimental pipeline that connected visual data collection, feature learning and navigation — and the comparisons that helped me understand which choices mattered.

  • Connect simulation and learning. I integrated the Unity environment with the learning workflow so agents could observe images, take actions and receive rewards.
  • Improve the visual experience. Early exploration got stuck in corners. I adapted data collection to cover the room more thoroughly before learning its features.
  • Evaluate the trade-offs. I examined navigation behaviour, training progress and total time, comparing pretrained SFA features with a convolutional neural network (CNN) that learned its visual representation during the task.
  • Let one agent reach different destinations. In a separate extension, I added target coordinates so one trained policy could navigate to different goals without retraining for each one.

The idea behind the features

When you turn your head, the image changes quickly while the room’s structure stays the same. Slow Feature Analysis (SFA) learns visual features that change slowly over time. My project uses it to represent each camera image with 32 learned values that a navigation agent can work with.

SFA was introduced by Laurenz Wiskott and Terrence J. Sejnowski in 2002. My contribution is applying and evaluating it in this navigation pipeline.

From seeing the room to finding a way

  1. 01Observe · a first-person image
  2. 02Represent · 32 slow features
  3. 03Act · learn where to move
A conceptual view of the SFA approach. The agent learns through repeated interaction with the environment.

What I learned

Both approaches learned to reach their goals. In my continuous-movement experiments, the SFA-based agents needed fewer interactions with the environment to reach the chosen learning thresholds than the CNN baseline.

That did not automatically make the whole process faster. SFA first needed to learn its features. Once that preparation was counted, the larger SFA model could take longer overall; the smaller variant offered a better total-time trade-off in this comparison.

The engineering lesson: measure the whole learning process. A promising training curve is only part of the story when data collection and preparation also take time.

Scope of the results

These are exploratory results from the 2025 experiments in one static room with one fixed random seed. The comparison above uses PPO agents. SFA received visual pretraining, while the CNN learned through the navigation task, so their visual experience differed. The results do not establish general superiority or demonstrate navigation on a real robot.

Explore the recorded features

These interactive views use real recordings from the newer L-shaped environment. They let you explore how the representation behaves; they are separate from the 2025 performance comparison above.

Try it yourself · Recorded SFA outputs

Same room. A different way of seeing it.

Each feature is one of the 32 values used to describe a camera image. Pick a feature and rotate the view: the map shows its value around the room, while the curve follows one fixed location.

Recorded in the L-shaped environment, May 2026.

Follow the exploration

Before reward-driven learning

First, get to know the room.

Follow the agent as it collects visual experience for SFA. This recording shows exploration before reinforcement learning, not a trained agent finding its goal. Press play or move the timeline.

1,200 recorded observations · May 2026. Playback speed is illustrative.

Where I’m taking it next

I’m developing a shared workflow for comparing different visual representations with repeated runs and consistent evaluation. The next question is how well the advantages hold up beyond the original experiment.

Foundations and credits

Curious about the decisions behind the project? Let’s talk. You can also explore my computer vision project on escape plans.

More questions. More things to build.

Back to projects