As a Senior IT Consultant, I have begun to run workshops for Cognizant Softvision colleagues. In late 2019 I led a short course about neuron networks for a group of developers. The group participated in brainstorming sessions and workshops, leading to a project aimed at creating a tangible solution using neuron networks and IoT.
In the Lviv Studio, employees use access cards to enter the building, and at times the cards do not work properly. The group engaged in several design thinking circles in an effort to find the solution to these access card issues.
The simplest option the team came up with was to create a solution to open the door remotely via an internal web portal and unlock the door using a smartphone. The second idea was to use an IP camera and AI to recognize a visitor and unlock the door automatically.
Creating the system
The group set out to work on both options. For person recognition, the team used an OpenCV framework with CAFFE and OpenFace pre-trained models.
General structure of the system:
The system was used separately from the main access control so the integration point is a simple dry contact. For hardware, the team used ESP 01 CPU module with relay connected. The ESP 01 consists of ESP 32 CPU with 1Mb of flash memory and onboard WiFi.
Development and sources
The team performed extra development for the existing internal portal to use existing user accounts, developed software for ESP module, face detection, and recognition apps. OpenCV library was used to process images, FFmpeg to process video, and Emgu.CV library as a wrapper. The group did not train our own models in this iteration and chose proper pre-trained. OpenFace models were used for face recognition and OpenCV code for face detection tasks.
Sources, software, and libraries:
- The source code is on C# .NET and C++
The sources are available for download from GitHub:
- MS Visual Studio 2019
- OpenCV: https://github.com/opencv/opencv
- EmguCV: https://github.com/emgucv
- FFmpeg: https://github.com/FFmpeg/FFmpeg
- OpenFace models from https://cmusatyalab.github.io/openface/models-and-accuracies/ for face recognition
- haarcascade_frontalface_default model from https://github.com/opencv/opencv/tree/master/data/haarcascades for face detection tasks
- Arduino IDE with ESP8266 boards integration
- JSON: https://github.com/bblanchon/ArduinoJson
- HTTPS Server: https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer/src
- NetBios: https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266NetBIOS
- OTA Update via HTTP: https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266HTTPUpdateServer/src
- MulticastDns: https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266mDNS
- Face detection neuron network MobileNetV2: https://github.com/espressif/esp-face
- Face recognition model with ArcFace algorithm: https://github.com/espressif/esp-face/blob/master/face_recognition/README.md
Neuron networks have become a kind of art now, so it is necessary to do research and development every time and the results are often unpredictable. It is important to investigate existing successful projects to understand a connection between the structure of neuron networks and the kind of problem you’re trying to solve.
During this workshop, the team gained valuable experience in usage AI for person recognition and integration of IoT devices in the corporate environment. As the project is still ongoing, the group looks forward to completing their work together and learning more along the way.
In September 2019, Cognizant Softvision celebrated the 5th edition of Programmers’ Week, a global event where more than 140 speakers delivered technical-talks from Argentina, US, Canada, India, Ukraine, and Romania. Mykola Gashevskyi, Senior IT Consultant from our Lviv Studio, delivered a presentation about neuron networks during the event.