Inspiration

As technology becomes part of almost everything we do, concerns about privacy and personal security naturally come with it. The reality is, you are most vulenerable in your daily life. Whether you're doing work in cafes, studying in libraries, or living in shared spaces, simple moments like these can become opportunities for data leaks. This is especially apparent with things like shoulder surfing.

That's why we built a security app designed for real-time protection. We combined computer vision and automation to create an app that detects potential risk and protects your screen.

What it does

Percepta is a real-time computer vision security system that:

  • Detects faces using a live webcam feed
  • Recognizes registered users using deep learning embeddings
  • Automatically locks the system when no authorized face is detected
  • Supports a Public Mode where temporary users can register and have their data wiped after their session
  • Logs security events for monitoring and auditing

It turns a normal webcam into an adaptive identity-aware security layer.

How we built it

Percepta was built using:

  • Python for system orchestration
  • OpenCV for real-time video capture
  • facenet-pytorch (MTCNN + InceptionResnetV1) for face detection and embedding extraction
  • NumPy for vector comparison and similarity calculations
  • Multiprocessing for managing overlays and system responsiveness
  • Tkinter for a lightweight status interface
  • Smalltalk for a clean web ui for logs

Small Talk

Web-Based Event Logger

We have also developed a Smalltalk web user interface that show detailed logs on the application. We used Smalltalk (Pharo) to build a HTTP server that receives structured event data from our Python backend. Smalltalks will store those events in memory and maintain a rolling log live time. This will be documented on a personal file as well as showing the logs live in the local web interface. This allows us to monitor our app behavior without interrupting any core functions.

Our app general procedure works like this:

  1. Capture frame from webcam
  2. Detect faces using MTCNN
  3. Generate 512-dimension face embeddings
  4. Compare embeddings against stored vectors using cosine similarity
  5. Trigger security logic (unlock, standby, auto-lock, wipe session data)

Challenges we ran into

  • Real-time performance tuning : balancing detection accuracy with low latency
  • State management : properly handling transitions between known, unknown, and no-face states
  • Public mode data wiping : ensuring temporary users are fully removed without corrupting the database
  • Concurrency issues : managing multiprocessing without race conditions
  • User experience design : making feedback clear without cluttering the screen

Accomplishments that we're proud of

  • Successfully built a fully functional real-time face recognition system
  • Implemented a clean auto-lock mechanism tied to presence detection
  • Designed a unique Public Mode that treats users as temporary sessions
  • Created a modular architecture that can scale into larger automation systems
  • Achieved stable real-time inference performance

What we learned

  • Threshold tuning and edge-case handling matter more than model choice
  • Clean architecture prevents chaos when adding features
  • State machines are critical in security logic

What's next for Percepta

Percepta is just the beginning. Next steps include:

  • Integration to publicly shared computers (e.g libraries computers, banks, etc.)
  • Encrypted face embedding storage
  • Cross-platform system integration
  • Cloud dashboard for remote monitoring
  • Hardware integration (Raspberry Pi / edge device deployment)

Long term, we imagine Percepta growing into a broader adaptive privacy and automation platform where your environment intelligently responds to presence and context.

Built With

Share this project:

Updates