Vissora — Intelligent AI Video Surveillance

Inspiration

Traditional video surveillance systems often require people to monitor multiple camera feeds continuously. When an incident occurs, finding a specific person, vehicle, or event across hours of footage can be time-consuming and inefficient.

We wanted to explore how computer vision could transform ordinary camera feeds into an intelligent surveillance system—one that can analyze video in real time, detect important objects, track their movement, and help operators understand what is happening across multiple cameras.

That idea inspired Vissora, a unified AI-powered video surveillance platform designed to make camera monitoring more intelligent, efficient, and practical.

What It Does

Vissora brings AI-powered video analysis into a unified surveillance workflow.

  • Multi-Camera Monitoring: View and manage multiple camera feeds from a centralized interface.
  • Real-Time Object Detection: Identify objects in video streams using deep-learning-based computer vision models.
  • Object Tracking: Maintain object identities across successive frames to understand movement over time.
  • Face Recognition: Generate facial embeddings and compare them against enrolled identities to assist with identifying known individuals.
  • Visual Detection Results: Display detections and tracking information directly on video frames.
  • Extensible Architecture: Integrate different computer vision models and camera sources as the platform evolves.

The goal is to move beyond simply displaying video and toward extracting useful, actionable information from it.

How We Built It

Vissora combines a camera-monitoring interface with a computer vision pipeline for processing video frames.

Our approach uses several components:

  • C++: For performance-sensitive native video-processing and inference components.
  • NCNN: For running optimized neural network models, including object detection and face-analysis models.
  • SCRFD: For face detection and facial landmark estimation.
  • ArcFace: For generating facial embeddings that can be compared for similarity.
  • YOLO: For general-purpose object detection.
  • ByteTrack: For associating detections across frames and maintaining object tracks.
  • Kotlin and Compose Multiplatform: For building the application interface and integrating native functionality.

The processing pipeline takes video frames, runs detection, associates detections with existing tracks, and presents the resulting information to the user. Face analysis can be incorporated into this workflow when identity matching is required.

We focused on separating the interface, video processing, and model inference so that components can be improved independently.

Challenges We Faced

1. Real-Time Performance

Running multiple computer vision models on video streams introduces significant computational overhead. Processing every frame at full resolution can increase latency and reduce frame rate.

We explored optimized inference using NCNN, native C++ processing, and more efficient frame-processing workflows to balance detection quality and responsiveness.

2. Video Streaming and Frame Quality

Delivering video smoothly while performing AI inference is challenging. Frame encoding, network transfer, image resolution, buffering, and inference time all affect the final experience.

This required us to consider the entire video pipeline rather than optimizing the detection model alone.

3. Integrating Multiple Models

Object detection, tracking, face detection, and face recognition each have different input requirements, output formats, and computational costs.

Integrating these components required careful handling of image preprocessing, tensor outputs, bounding boxes, facial landmarks, embeddings, and object identities.

4. Cross-Platform Native Integration

Connecting native C++ computer vision code with a Kotlin-based application introduced challenges involving native libraries, build configurations, memory handling, and platform-specific dependencies.

We designed the application around modular components to make debugging and future expansion more manageable.

What We Learned

Building Vissora reinforced an important lesson: a real-time AI application is much more than a trained model.

Model accuracy matters, but so do preprocessing, inference latency, tracking stability, video transport, memory usage, and application architecture. A fast model can still produce a poor user experience if the surrounding pipeline is inefficient.

We also gained practical experience integrating multiple computer vision models into a single workflow and balancing performance with the quality of visual results.

What's Next

We plan to continue improving Vissora by exploring:

  • More efficient multi-camera processing and resource allocation.
  • Better frame-rate and latency optimization.
  • Improved tracking across camera feeds.
  • More robust face matching and identity management.
  • Searchable events and detection history.
  • Configurable alerts and privacy-conscious data retention.

Our long-term vision is to make Vissora a flexible, intelligent surveillance platform that helps people understand video activity without requiring constant manual monitoring.

Responsible Use

Vissora's face-recognition capabilities should be deployed with appropriate authorization, access controls, and safeguards for biometric data. Identity matches should be treated as probabilistic results rather than definitive proof, and camera deployments should respect applicable privacy laws.

Built With

Share this project:

Updates

Submission history