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:
- Capture frame from webcam
- Detect faces using MTCNN
- Generate 512-dimension face embeddings
- Compare embeddings against stored vectors using cosine similarity
- 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.
Log in or sign up for Devpost to join the conversation.