Real-Time People Counting in C++20

Job ID: 37934961

Budget: €30 – €250 EUR

For this project, I require a proficient C++ developer who is familiar with OpenCV and has the skill to implement a people counting system, similar to the one in the provided demo.

https://github.com/saimj7/People-Counting-in-Real-Time?tab=readme-ov-file#ssd-detector

Key Project Requirements:
- The system needs to be developed using the most recent C++20 standards.
- It should be able to operate efficiently under unspecified environmental conditions, both inside and outside.
- The project needs to be completed as soon as possible.

https://github.com/saimj7/People-Counting-in-Real-Time?tab=readme-ov-file#ssd-detector

Ideal Skills and Experience:
- Proficiency in C++ programming, especially C++20.
- Extensive experience with the latest version of OpenCV.
- Experience in developing people counting systems or related projects is a plus.
- Fast and efficient coding abilities to meet the urgent deadline.

This project is a combination of advanced programming and real-time object detection and counting, which will be a substantial addition to your professional development portfolio.

Simple Theory
SSD detector
We are using a SSD Single Shot Detector with a MobileNet architecture. In general, it only takes a single shot to detect whatever is in an image. That is, one for generating region proposals, one for detecting the object of each proposal.
Compared to other two shot detectors like R-CNN, SSD is quite fast.
MobileNet, as the name implies, is a DNN designed to run on resource constrained devices. For e.g., mobiles, ip cameras, scanners etc.
Thus, SSD seasoned with a MobileNet should theoretically result in a faster, more efficient object detector.
Centroid tracker
Centroid tracker is one of the most reliable trackers out there.
To be straightforward, the centroid tracker computes the centroid of the bounding boxes.
That is, the bounding boxes are (x, y) co-ordinates of the objects in an image.
Once the co-ordinates are obtained by our SSD, the tracker computes the centroid (center) of the box. In other words, the center of an object.
Then an unique ID is assigned to every particular object deteced, for tracking over the sequence of frames.
Related categories: C Programming Algorithm C++ Programming