Comment j'ai appris à ne pas m'inquiéter et à aimer la vision industrielle

Bonjour, Habr! Je m'appelle Artyom Nagumanov, j'ai plus de 15 ans d'expérience en développement logiciel, gestion de projet, équipes, services informatiques. J'ai toujours été intéressé par le sujet de l'intelligence artificielle et de la vision industrielle. Lors du développement de logiciels, j’ai toujours été invité à penser pourquoi ne pas ajouter au moins une partie de l’intelligence à l’application d’entreprise afin de refuser partiellement ou complètement la participation de l’utilisateur à tout processus qui, à première vue, semble complètement non formalisé.

image

Pour ce faire, chaque fois que je devais recommencer: étudier / rappeler les bibliothèques appropriées, installer sur une machine virtuelle Linux pour tester des outils gratuits pour créer et former des réseaux de neurones, trouver des architectures de réseaux qui sont actuellement la couronne de la création humaine dans le monde intelligence artificielle. Ce processus est assez laborieux et pas très amusant. Une fois, en comprenant l'architecture d'un autre réseau de neurones, j'ai réalisé qu'il était temps d'y mettre fin et de créer un outil universel qui prendrait toute la routine. Et j'ai juste besoin d'appuyer sur quelques gros boutons en verre et d'obtenir le résultat. Dans l'image pour attirer l'attention (dans le premier paragraphe de l'article), un exemple de reconnaissance des jets d'eau d'une machine d'irrigation est montré, mais tout d'abord.

Nous rendons service de reconnaissance


J'ai eu l'idée suivante - pour créer un site Web où l'utilisateur peut télécharger des images, cliquez sur le bouton "Reconnaître" et obtenez le résultat au format json. Mais le fait est qu'il n'y a pas d'algorithme universel ou de réseau neuronal qui puisse trouver des objets dans le monde. En conséquence, j'ai décidé de permettre de former mes propres modèles de réseaux de neurones pour reconnaître les objets dont nous avons besoin, en utilisant uniquement le site et des échantillons d'images qui doivent être reconnus. Avant de commencer le travail, j'ai analysé les développements dans le monde sur ce sujet. Il s'est avéré que de nombreux géants de l'industrie informatique travaillent dans ce sens: Yandex, Mail.ru, Amazon. Le principal inconvénient était que tous ces géants veulent de l'argent pour leurs services. Cela m'a suffi pour démarrer mon propre développement.J'avais déjà des antécédents, et je savais bien trouver et classer les objets sur les images, il ne restait plus qu'à tout assembler et à créer une interface pratique.

Dans la grande majorité des cas, j'utilise des technologies Microsoft dans mes projets, ce qui a considérablement affecté les technologies utilisées dans ce projet:

  • ASP.NET (langage C #)
  • Webpi
  • Javascript jquery
  • Serveur MSSQL
  • Python
  • Tensorflow

Tout d'abord, j'ai décidé de créer un service REST, qui sera le cerveau de tout le système, qui nous permettra d'accepter des commandes via l'API et de faire tout le travail. L'architecture du réseau neuronal, j'ai choisi le Masque R-CNN, ce réseau permet de trouver des objets dans l'image et de les classer.

Tout s'est déroulé plus ou moins régulièrement, jusqu'à ce que j'arrive à réaliser la formation de mes propres modèles. Le processus d'apprentissage était très coûteux et exigeait du matériel. Bien sûr, je le savais avant, mais avant cela, je pouvais me permettre d'attendre la formation du modèle pendant un jour ou deux, en utilisant le CPU pour les calculs. Mais comme l'idée était de créer un outil pratique et rapide, je n'ai pas pu supporter la longue formation du modèle. La question a donc mûri avec l'installation d'un serveur spécial avec une carte vidéo appropriée qui prendra en charge la technologie CUDA ( https://ru.wikipedia.org/wiki/CUDA) et réduira considérablement le temps nécessaire à la formation du modèle. Afin de ne pas gonfler le budget du projet, j'ai choisi une carte graphique NVIDIA GeForce GTX 1050 Ti pas chère. Parallèlement au service, j'ai réalisé un client sur Windows Forms qui permettrait de tester.

Dans la deuxième étape, j'ai réalisé un site Internet, qui est essentiellement un client du service. Je ne me suis pas vraiment soucié de la conception et je n'ai même pas pris le modèle fini, j'ai tout écrit moi-même, en utilisant uniquement ce que Visual Studio donne. Il a fallu encore trois mois pour créer et tester le site.

J'étais incroyablement heureux lorsque j'ai téléchargé l'image, sélectionné un modèle prêt à l'emploi pour la reconnaissance, cliqué sur le bouton "Reconnaître" et obtenu le premier résultat.

image

La vraie tâche de la vision industrielle


Pendant que je travaillais sur le système de reconnaissance, une véritable tâche s'est imposée à moi: déterminer la position de la pelle avant d'une machine spéciale qui nettoie la neige sur la route. Pour résoudre ce problème, je n'ai pas été limité dans le choix d'une approche de la solution et dès le départ j'ai voulu utiliser l'installation de capteurs spéciaux qui déterminent l'angle de la pelle, mais j'ai rapidement abandonné cette idée. Il s'est avéré que ces capteurs doivent être constamment étalonnés en raison du fait que la pelle est périodiquement retirée et qu'une autre est installée, en plus de parler à des collègues qui installent de tels capteurs, j'ai découvert que ces capteurs sont dans la rue et sont disponibles pour le sabotage. L'idée m'est venue à l'esprit d'analyser les commandes de travail de la pelle, mais il s'est avéré qu'en réalité, elles vont jusqu'à retirer la pelle, et sur les organes de travail, elles signalent que la pelle est abaissée,en un mot, encore une fois pas une option fiable. Eh bien, ils ne m'ont laissé d'autre choix que d'utiliser toute la puissance du service de reconnaissance. J'ai placé la caméra dans l'habitacle de la voiture, qui regarde la bêche avant, j'ai collecté plusieurs centaines d'échantillons de la bêche, les ai marqués avec l'outil VGG, que j'ai intégré au site et commencé la formation. Le processus a pris environ deux heures et à la 30e ère, j'ai obtenu un résultat de reconnaissance tout à fait acceptable, la précision de reconnaissance était d'environ 95%.Le processus a pris environ deux heures et à la 30e ère, j'ai obtenu un résultat de reconnaissance tout à fait acceptable, la précision de la reconnaissance était d'environ 95%.Le processus a pris environ deux heures et à la 30e ère, j'ai obtenu un résultat de reconnaissance tout à fait acceptable, la précision de la reconnaissance était d'environ 95%.

image

Pour que le système puisse fonctionner pleinement sur la voiture, j'ai dû le modifier: ajouter la possibilité de télécharger des photos via ftp, et pas seulement via l'API car le caméscope vous a permis de prendre une photo et de l'envoyer au ftp spécifié. Ajout de la possibilité d'enregistrer le résultat dans la base de données, puis via l'API pendant la période spécifiée pour obtenir les résultats, les analyser et écrire dans le système comptable écrit en 1C, qui est d'ailleurs un énorme système de contrôle qui analyse des milliers de voitures en même temps et contrôle de nombreux paramètres, tels que le kilométrage , heures de machine, carburant dans le réservoir, manèges, marche au ralenti, etc., mais c'est une histoire complètement différente. La première version du contrôle de la pelle est prête, mais au combat, elle ne sera testée que lorsque la neige tombera.

Est-ce facile?


L'idée principale du service de reconnaissance est la simplicité de création et de formation de vos propres modèles. Pour comprendre si quelqu'un peut vraiment créer et former son propre modèle, j'ai demandé à mon assistant de créer un modèle pour reconnaître les jets d'eau d'une machine d'irrigation. La seule entrée que je lui ai donnée était une vidéo du fonctionnement de la machine d'irrigation, prise depuis la cabine, et l'adresse du service de reconnaissance, le soir je lui ai confié cette tâche, et le matin, en entrant dans le système, j'ai vu un modèle fini qui fonctionnait vraiment. Ci-dessous, une capture d'écran de la fenêtre dans laquelle le modèle est formé.

image

Au fur et à mesure que vous apprenez, l'ère du modèle est préservée et nous pouvons, sans interrompre le processus d'apprentissage, tester n'importe quelle époque.

DĂ©veloppement et utilisation


Un exemple de la façon dont tout fonctionne en direct peut être vu dans le clip vidéo .

Je pensais depuis longtemps que si quelqu'un pouvait créer son propre modèle, alors pourquoi ne pas permettre de partager ce modèle avec d'autres utilisateurs du système. En conséquence, j'ai ajouté une section où vous pouvez placer un modèle réussi avec un clic de souris et n'importe quel participant peut l'utiliser. Le service est entièrement gratuit.

Maintenant, j'utilise moi-même le service pour résoudre mes tâches d'automatisation des processus dans les entreprises où la vision industrielle peut être utilisée. À l'avenir, je prévois d'ajouter d'autres approches de reconnaissance, pas seulement des réseaux de neurones. Je serai très heureux si quelqu'un d'autre utilisant ce service peut résoudre leurs problèmes.

All Articles