W związku z aktualną sytuacją na świecie, zastanawialiśmy się nad tym, jak zapobiegać rozprzestrzenianiu koronawirusa. Aplikacja faceshield dzięki danym z kamerki internetowej lub sensora Kinect wykrywa dotykanie twarzy, oraz informuje o tym użytkownika sygnałem dźwiękowym oraz informacją na ekranie. Celem aplikacji jest oduczenie od ciągłego dotykania twarzy, co powinno znacznie zmniejszyć ryzyko zakażenia.
Główny moduł został napisany w języku javascript, z użyciem Electron, Vue oraz Vuetify.
Aplikacja faceshield może korzystać z dwóch źródeł danych
Proces modułu kamery działa w ukrytym oknie Browser Window, umożliwiając wykorzystanie User Media API i TensorFlow.js. Odpowiada on za wczytywanie obrazu z kamery i znalezienie pozycji dłoni i twarzy. Główny proces aplikacji wykorzystuje te pozycje do wykrycia dotknięcia, poinformowania o nim i zapisania go w bazie danych. Do przesyłu danych między procesami używany jest system komunikacji międzyprocesowej wbudowany w Electron, dzięki czemu operacje uczenia maszynowego nie blokują gównego procesu. Domyślnie do uczenia maszynowego używany jest backend WebGL wykorzystujący kartę graficzną, ale istnieje też możliwość włączenia trybu CPU.
Kinect posiada sensor głębi i nie korzysta ze sztucznej inteligencji, co znacznie zmniejsza użycie zasobów komputera. Sam moduł został napisany w języku C# i komunikuje się z frontendem za pomocą WebSocketów. Aplikacja - ze względu na dostępne materiały - pozwala na tą chwilę jedynie na korzystanie z Sensora Kinect wersji pierwszej (Xbox 360). Planujemy dodanie wsparcia dla Kinecta wersji drugiej (Xbox ONE), gdy będziemy posiadali odpowiedni zestaw deweloperski.
Do działania kinecta z systemem Windows wymagany jest sterownik, którego można pobrać tutaj.