Vous pouvez automatiser beaucoup, mais pas tous. Mais néanmoins, avec l'aide de l'automatisation, vous pouvez considérablement simplifier votre vie, la rendant plus confortable et, dans certains cas, plus sûre. Je veux dire, protégez-vous des patrons. L'un des développeurs des réseaux de neurones a décidé de créer un système qui, lorsque le patron s'est approché, a immédiatement minimisé les «fenêtres inappropriées», les cachant à l'abri des regards.Pour l'utilisateur, les actions du système semblent assez transparentes, car le réseau neuronal après avoir détecté un boss qui s'approche donne une notification correspondante. Et seulement alors, il minimise les fenêtres, donnant un autre avertissement. Le système lui-même est engagé dans le fait qu'à l'aide d'une webcam régulière de bonne qualité, il capture les visages des personnes s'approchant du bureau, et lorsque les patrons sont identifiés, il supprime rapidement tout de l'écran de l'ordinateur, loin du péché. En cours de développement, la bibliothèque Keras a été utilisée, ce qui a simplifié la tâche. Comment ça marche?Oui, rien de particulièrement compliqué, le développeur n'a rencontré aucun problème particulier lors de la mise en œuvre du système. Soit dit en passant, l'une des conditions lors de la création d'un tel système était d'enseigner au réseau neuronal à reconnaître le visage du patron de 5 à 7 mètres, afin de ne pas s'inquiéter que le patron puisse tout voir de près. Il n'y a pas beaucoup de temps pour l'identification du boss - seulement environ 4-5 secondes.Bien sûr, il n'y a rien de bon à faire du travail extérieur au travail. Cet exemple n'est qu'un système de travail, qui a été fait, plutôt pour le plaisir, qu'en raison de certains problèmes réels des autorités.
Ainsi, le développeur a décidé de photographier constamment tout ce qui se passe autour de lui, afin de remarquer le patron à temps. Le système de détection est appelé Boss Sensor.
Le système est simple:Autrement dit, dans le sens littéral du mot, vous avez besoin: obtenir des images de visage, reconnaître, changer d'écran, ce qui vous permet de masquer les fenêtres ouvertes de l'un des bureaux.Le développeur a décidé de ne pas philosopher malicieusement, mais d'utiliser la caméra standard Buffalo BSW20KM11BK.
Bien sûr, vous pouvez créer vous-même une image à l'aide d'un logiciel. Mais il vaut mieux faire confiance au système - le travail a duré un certain temps, en plus, le système fonctionne assez précisément. En ce qui concerne l'obtention de photos, le développeur propose à chacun de se familiariser avec la source .Quant à la formation, tout est relativement simple ici - des systèmes similaires existent depuis un certain temps. Pour atteindre l'objectif, vous devez effectuer trois étapes:- Collection d'images;
- Prétraitement des photos;
- Création d'un système d'auto-apprentissage.
Mise en œuvre des idées
Collection d'images. Pour que les réseaux de neurones puissent s'entraîner, les créateurs du système ont utilisé des milliers de photos. Ils peuvent être extraits à la fois de collections privées et d'autres packages d'autres utilisateurs. Pour l'auto-étude du système, vous avez besoin d'un grand nombre de photos. Ils ont décidé de prendre:- Google Image
- Collections d'images Facebook
- Fichiers vidéo de base.
Initialement, le développeur a reçu des milliers d'images avec des visages différents, mais son système n'a pas pu s'auto-apprendre sur la base de photos. La bibliothèque ImageMagick a été utilisée pour extraire des visages d'un grand nombre de photographies .Le résultat est une telle base de données des visages des employés et du patron lui-même:
si vous voulez reconnaître le visage d'une personne, il vaut mieux essayer l'API Web, pour une image - un outil comme l' API Computer Vision dans Cognitive Services. Le développeur a décidé de suivre sa propre voie. Le réseau neuronal créé par lui avait une certaine structure:Structure du programme____________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
====================================================================================================
convolution2d_1 (Convolution2D) (None, 32, 64, 64) 896 convolution2d_input_1[0][0]
____________________________________________________________________________________________________
activation_1 (Activation) (None, 32, 64, 64) 0 convolution2d_1[0][0]
____________________________________________________________________________________________________
convolution2d_2 (Convolution2D) (None, 32, 62, 62) 9248 activation_1[0][0]
____________________________________________________________________________________________________
activation_2 (Activation) (None, 32, 62, 62) 0 convolution2d_2[0][0]
____________________________________________________________________________________________________
maxpooling2d_1 (MaxPooling2D) (None, 32, 31, 31) 0 activation_2[0][0]
____________________________________________________________________________________________________
dropout_1 (Dropout) (None, 32, 31, 31) 0 maxpooling2d_1[0][0]
____________________________________________________________________________________________________
convolution2d_3 (Convolution2D) (None, 64, 31, 31) 18496 dropout_1[0][0]
____________________________________________________________________________________________________
activation_3 (Activation) (None, 64, 31, 31) 0 convolution2d_3[0][0]
____________________________________________________________________________________________________
convolution2d_4 (Convolution2D) (None, 64, 29, 29) 36928 activation_3[0][0]
____________________________________________________________________________________________________
activation_4 (Activation) (None, 64, 29, 29) 0 convolution2d_4[0][0]
____________________________________________________________________________________________________
maxpooling2d_2 (MaxPooling2D) (None, 64, 14, 14) 0 activation_4[0][0]
____________________________________________________________________________________________________
dropout_2 (Dropout) (None, 64, 14, 14) 0 maxpooling2d_2[0][0]
____________________________________________________________________________________________________
flatten_1 (Flatten) (None, 12544) 0 dropout_2[0][0]
____________________________________________________________________________________________________
dense_1 (Dense) (None, 512) 6423040 flatten_1[0][0]
____________________________________________________________________________________________________
activation_5 (Activation) (None, 512) 0 dense_1[0][0]
____________________________________________________________________________________________________
dropout_3 (Dropout) (None, 512) 0 activation_5[0][0]
____________________________________________________________________________________________________
dense_2 (Dense) (None, 2) 1026 dropout_3[0][0]
____________________________________________________________________________________________________
activation_6 (Activation) (None, 2) 0 dense_2[0][0]
====================================================================================================
Total params: 6489634
Le code peut être trouvé ici . Le développeur dit que le système a commencé à reconnaître presque sans équivoque le patron lorsqu'il apparaît près de la caméra.Eh bien, maintenant vous devez définir des instructions claires sur ce point, si le chef apparaît ensuite.
Maintenant, tout est prêt et la technologie a été testée à plusieurs reprises. Vous pouvez maintenant démarrer le système et le faire répondre au patron.Après le test, tout s'est avéré réalisable. A quelques mètres de la caméra, le patron est resté ressorts et calme. Le système a pris toutes les photos nécessaires, a effectué une analyse et a pu identifier correctement le patron du développeur. Le test a clairement montré une chose - tout fonctionne.Le code source d'un tel système se trouve sur ce lien .Le système d'identification a d'abord déterminé qu'il y avait vraiment un patron, puis elle a réussi à reconnaître l'image et ... oui, à minimiser toutes les fenêtres. À l'heure actuelle, la détection des visages utilise OpenCV. Peut-être que Dlib améliorera la précision de la reconnaissance.Il y a, bien sûr, des projets plus sérieux, où ils préparent, par exemple, des systèmes de vision industrielle qui enseignent les jeux informatiques . Les réseaux de neurones deviennent de plus en plus populaires - les développeurs automobiles, les scientifiques, les créateurs de systèmes robotiques et d'autres spécialistes travaillent avec eux.