Parkerr is a open source smart parking browser application that enables you monitor parking spots using a webcam, cellphone camera, or any virtual camera. The tool uses computer vision object detection to operate and all the computation is processed inside browser utilizing TensorFlow.js. Communication between a remote cellphone and the browser is enabled through WebRTC (PeerJS uses PeerServer for session metadata and candidate signaling. as well as Google Stun servers)
Under the MIT License.
- TensorFlow.js
- Tailwind
- NextJS
- PeerJS (WebRTC)
- YOLO7 (Original Model)
- YOLO7-tfjs (Ported Model)
Navigate to the "Vision" page, press the designated remote button, use your mobile device to scan the QR code. Once the page is loaded, locate and press the "Call" button and allow access to your phone's camera when prompted.
- Make sure phone is streaming video in landscape mode
- Change your phone settings that your phone screen doesn't autolock to ensure a continutes video stream.
- You may need to press the call button a few times to establish the connection.
- Open OBS (you can download it from https://obsproject.com/).
- Click on the "+" icon in the "Sources" box and select "Window Capture".
- Choose the camera software window from the list of windows available for capture.
- Click "OK" to confirm your selection.
- Click Start Virtual Camera
You can adjust output resolution in the settings, recommended between 640x480 till 1280x720.
If your iP/CCTV camera is on your local network, you can set your OBS settings to an ip address.
Youtube Guide: https://www.youtube.com/watch?v=0z9Te51rh-4
Open the vision page, press the webcam button, allow webcam access, and point it wherever you desire.
- Processing: Toggle controls if the TFJS engine will process the video input
- Show Boxes: Toggle the bounding boxes
- Vehicle Only: Detect only vehicles; when switched off, bounding boxes can be occupied by any kind of detections
- Detection Threshold: The detection score threshold
- IOU Threshold: Non maximum suppression/Jaccard/IntersectionOverUnion threshold, the higher the more tolerant it is for colliding bboxes
- FPS: Render Rate, the lower the faster the model detects image, fastest is 10 frames per secound, default is 1 frame per secound, max is 1 frame every 2 secound
Yes, it can be processed on a server! Before refactoring the architecture of the entire project, a flask API was built using OpenCV and Yolo7, which worked fine. However, without a very good VPS with a GPU, the CPU can't handle many rendering requests. Functions were created in previous versions of Parkerr that encode the images into blobs to the server. The JSON response might need a bit of tweaking to be compatible, but just switch the process function with an API request. If you do, please make a PR and send a message!
docker pull oxedom/flask_api
docker run -p 5000:5000 flask_api
Dockerhub Image
Yes sure, submit a PR!