
Steve Jobs und Steve Wozniak haben sich einmal in einer Garage eingesperrt und ihren ersten Mac herausgebracht. Es wäre cool, wenn Sie die Programmierer in der Garage immer schließen und MVP mit großem Potenzial erhalten könnten. Wenn Sie den Programmierern jedoch einige Personen hinzufügen, die bereit sind, die Benutzererfahrung zu bewerten und nach etwas Innovativem zu suchen, steigen die Erfolgschancen.
Unser 5-köpfiges Team hatte eine bestimmte Idee, für die wir uns leichtfertig entschieden haben die Welt übernehmen kacken.
MVP Beschreibung
Eine Anwendung für Personalmanager, mit der Sie den Psychotyp des Bewerbers und die Verhaltensmuster bestimmen können.
Obligatorische Komponenten:
- Eine Datenbank mit Fragen, Arten von Reaktionen und ein System, um diese Dinge zu einem Psychotyp zu bringen
- Die Definition menschlicher Emotionen basiert auf den Manifestationen von AU - bestimmten Bewegungen der Gesichtsmuskeln.
- Kontaktlose Herzfrequenz
- Bestimmung der Blickrichtung
- Blinkratenerkennung
- Ein System zum Aggregieren der oben genannten wiederherstellbaren Daten in einem Stressdiagramm und anderen nützlichen Metadaten.
MVP ist für uns eine Insel der Sicherheit zwischen der Idee selbst und dem großen Anne-Projekt, zu dem wir unterwegs sind.
Wie war es
Um Ablenkungen während der Entwicklung zu vermeiden, wurde beschlossen, eine Wohnung in der nächstgelegenen Kurstadt mit Lebensmitteln zu mieten. Als wir am Sonntag dort ankamen und unsere Jobs arrangierten, setzten wir uns sofort zu einer Diskussion zusammen. In der ersten Nacht wurden die Steine bestimmt, die definitiv im endgültigen MVP sein sollten. Und während die Jungs die Idee aufpolierten und zu Konsultationen mit Personalmanagern in die Stadt reisten, bereiteten die Entwickler (einschließlich mir) bereits die Gründung vor.
Technischer Teil
Es wurde beschlossen, die Bestimmung von Emotionen ausschließlich über FACS durchzuführen , da diese Methode im Vergleich zu beispielsweise einem derart groben Ansatz eine ausreichende wissenschaftliche Rechtfertigung aufweist. Dementsprechend wurde die Aufgabe unterteilt in
- Trainingsnetzwerk, das 68 Gesichtspunkte vorhersagt
- Gesichtsbilder normalisieren / filtern
- Der Algorithmus, der Gesichtsbewegungen in der Dynamik erkennt
Das Training wurde übrigens auf der Radeon RX580 mit PlaidML durchgeführt, worüber ich bereits in meinem vorherigen Artikel gesprochen habe . Vielen Dank hier, ich muss sagen, imgaug Bibliothek, mit der Sie affine Transformationen gleichzeitig auf Bilder und Punkte darauf anwenden können (in unserem Fall auf Orientierungspunkte).
Einige erweiterte Bilder:

Um die Blickrichtung zu bestimmen, wurde der Algorithmus ursprünglich für das klassische Computer-Sehen verwendet, um auf HOGs nach einer Pupille im Augenbereich zu suchen. Aber bald wurde klar, dass die Pupille oft nicht sichtbar ist und die Richtung des Blicks nicht nur dadurch, sondern auch durch die Position der Augenlider beschrieben werden kann. Aufgrund dieser Schwierigkeiten wurde die Lösung auf den Ansatz des neuronalen Netzwerks übertragen. Wir haben das Datum selbst ausgeschnitten und markiert, den ersten Algorithmus durchlaufen und dann die Fehlerstellen manuell korrigiert.
Die ersten Entwicklungen begannen im Sommer und existierten als schmutziges Python-Skript:

Die Bestimmung der Häufigkeit des Blinkens ergab sich aus der Aggregation von Teilen der beiden oben beschriebenen Algorithmen - der Konvergenz der Landmarke der Augenlider und der Blickrichtung nach unten.
Die Bestimmung des Pulses durch den Videostream basierte auf der Idee , die grüne Komponente des Lichts durch Blutpartikel zu absorbieren, und wurde durch Algorithmen zum Verfolgen und Extrahieren von interessierenden Bereichen (Haut) ergänzt.
Eine gruselige Maske kommt natürlich heraus:

Tatsächlich war die Erstellung der oben beschriebenen Bausteine auf die Implementierung von State-of-the-Art-Algorithmen mit Verbesserungen zurückzuführen, um die Genauigkeit in unserem speziellen Fall zu verbessern. Zum Glück gibt es arxiv.org .
Bei der Erstellung der Logik zur Normalisierung von Gesichtsbildern und Algorithmen zur Auswertung der empfangenen Daten traten Schwierigkeiten auf. Wenn Sie beispielsweise Gesichter erkennen, wird das Modell für das aktive Erscheinungsbild aktiv verwendet. Das Gesicht wird von den gefundenen Punkten auf der allgemeinen Textur des Gesichts gezogen. Aber die gegenseitige Anordnung der Punkte ist uns wichtig! Optional - filtern Sie zu gedrehte Gesichter oder ziehen Sie nur an den "Ankern" an der Textur, Schlüsselpunkten, die nicht die Bewegung der Muskeln widerspiegeln (z. B. einen Punkt auf dem Nasenrücken und den Rändern des Gesichts). Dieses Problem ist jetzt eines der Hauptprobleme und ermöglicht es nicht, zuverlässige Daten zu erhalten, wenn das Gesicht zu gedreht ist (wir können auch den Drehwinkel zählen!). Der für heute akzeptable Bereich beträgt + -20 ° auf beiden Achsen. Andernfalls wird das Gesicht einfach nicht bearbeitet.
Natürlich gibt es noch andere Probleme:
- Definition von Orientierungspunkten, wenn eine Person mit Brille
- Extrahieren der Grundlinie, wenn eine Person verzieht das Gesicht
- Herzfrequenzerkennung bei flackerndem Licht
Oh ja, und was ist die Basislinie ? Grundlegendes Konzept zur Verarbeitung von Emotionen mit FACS-Methoden. Der Baseline-Extraktionsalgorithmus ist wahrscheinlich eines der wichtigsten Know-how, basierend auf den Ergebnissen unseres Hackathons.
Neben den Algorithmen gibt es noch einen weiteren wichtigen Punkt, den wir nicht vergessen dürfen - die Leistung. Darüber hinaus ist die Leistungsgrenze nicht einmal ein PC, sondern ein gewöhnlicher Laptop. Infolgedessen wurden alle Algorithmen so leicht wie möglich gemacht, und die Netzwerke wurden iterativ verkleinert, während eine akzeptable Genauigkeit beibehalten wurde.
Das Ergebnis ist 30-40% auf Intel i5 bei 15-20 fps. Es ist klar, dass es einen bestimmten Spielraum gibt, der verschwindet, wenn zusätzliche Module hinzugefügt werden.
Die Pläne bestimmen:
- Halsschmerzen
- Veränderung der Hautfarbe
- Atemfrequenz
- Intensität der Körperbewegung
- Menschliche Posenmuster
- Zitternde Stimme
Was können wir noch tun?
Als Fan von Computer Vision und ML habe ich Ihnen ein wenig über die in unserer Software verwendeten Algorithmen erzählt. Aufgrund seiner Unvollständigkeit sind die obigen Merkmale für diese Anwendung jedoch eher eine angenehme Ergänzung. Der wichtigste Teil ist das entwickelte System zur Bestimmung des Psychotyps einer Person. Was ist der Punkt? Leider wurde dies von meinen Kollegen (Freunden!) Gemacht. Und ich kann nicht erklären, was und woher. Für ein Mindestverständnis können Sie jedoch das Verfahren für die Arbeit mit der resultierenden Software in Betracht ziehen:
HR legt die Qualitäten fest, die für die betreffende Stelle besonders notwendig sind:

HR führt ein Interview durch und stellt einen Teil der Fragen der vorbereiteten Datenbank (während des Interviews hat HR zusätzliche Informationen über die Emotionen und das Stressniveau vor sich).
Während oder nach dem Interview gibt die Personalabteilung Antworten auf Fragen und Verhaltensmuster:

Durch entwickelte Matrizen erstellt die Software Infografiken, die das Zusammentreffen gegebener und spezifischer Eigenschaften anzeigen:

Nach dem Interview gibt es eine Aufzeichnung, mit der Sie jederzeit zum Interview zurückkehren und diesen oder jenen Moment bewerten können
Insgesamt

14 Tage x 12 Stunden + 3 Entwickler + 2 Experten auf dem Gebiet der Ermittlung der Lüge = Ready MVP. Das Eintauchen war maximal - bis zu dem Punkt, an dem wir zur Mittagszeit die Serie Deceive Me sahen - ich kann es nur empfehlen.
Um nicht unbegründet zu sein, füge ich ein Beispiel bei, wie die Anwendung jetzt funktioniert:
Neben dem Werbevideo für die große Anne-Lösung bewegen wir uns in Richtung.
