Our approach for satisfying this Machine Learning challenge was to:
- Analyize video streams with facial object detection and apply biometric markers to data (facial recognition).
- Utilize IoT sensors (tempature, humidity) to improve the data collection process (location data).
- Develop a microservice that outputs JSON data so datasets can be collected and used by a Machine Learning API.
Our team is comprised of:
- @loudest - README.md writer, took the "blue pill" in the matrix and spent 3 days at [VR Hackathon - Seattle] (http://vrhackathon.com/seattle.html) coding this
I made use of:
- Flask python RESTful microservice
- OpenCV for video analysis and facial detection
- openbr facial biometrics
- Arduino Uno to obtain temperature and humidity data.
- JS Stats javascript for video frame rate detection and CPU utilization
Flask service listens to the following REST endpoints (no inputs):
- /video_feed - raw video feed as Motion JPEG stream
- /sensor_data - IoT sensor data returned as JSON: {"temperature":string,"humidity":string}
- /facial_data - Facial biometrics returned as JSON: {"data":{"head_cordinates":array[{x,y}],"left_eye_coordinates":array[{x,y}],"right_eye_coordinates":array[{x,y}],"mouth_coordinates":array[{x,y}],"mood":string,"facial_hash_string":string}
- Go into the server/ directory
- Run it via: python main.py
- [Blocking I/O] In camera.py, the function parse_serial_connection() utilizes a COM3 serial connection on an Arduino board. The I/O is polling very 60 seconds.
- [Threading] Update sensor data as a sperate thread with a dynamic endpoint to a Flask route.
Our code is licensed under the MIT License. Pull requests will be accepted to this repo, pending review and approval.