Nous transformons un robot aspirateur en soldat universel

Tout a commencé avec une passion pour l'apprentissage en profondeur, les réseaux de neurones et plus loin dans la liste. J'ai regardé quelques cours, participé à un concours sur Kaggle ... "que faire d'autre?". Puis un robot aspirateur (Xiaomi Vacuum Cleaner V1) a rampé par sa propre entreprise et a lancé une idée intéressante ...



Introduction longue


Cet article est un résumé provisoire d'une période de vie spécifique. J'espère que cela sera utile aux personnes qui souhaitent s'engager dans l'apprentissage automatique, mais qui n'ont pas encore décidé quelle direction développer. Il y a près d'un an, j'ai à nouveau changé d'emploi et de domicile. Dans un nouvel endroit, ils ont beaucoup parlé de machine learning, mais surtout des managers qui souhaitent promouvoir un sujet de battage médiatique. Le reste, a rencontré le sujet sans beaucoup d'enthousiasme (encore, pour travailler pour eux).


Je me demandais en quoi consistait l'apprentissage automatique. Un an plus tard, je peux dire que le sujet est incroyablement volumineux. Voyons quels aspects spécifiques sont disponibles pour une utilisation dans la vie et les affaires.


  1. Apprentissage automatique classique.
    En bref: tout ce qui était avant l'apparition hypa apprentissage en profondeur (apprentissage en profondeur). Si vous avez des données tabulaires sur les ventes, les clients, les transactions et que vous souhaitez augmenter les ventes, attirer des clients, reconnaître les fraudes, vous êtes ici. Voici quelques bonnes conférences pour vous aider à comprendre comment analyser les données et utiliser des méthodes comme la forêt aléatoire, K-means ou XGBoost. J'ai aussi aimé les microcours de Kaggle et la compétition de prédiction des prix des maisons qui l'accompagne. Peut-être que toute entreprise qui a de vrais clients (et donc une base de données) peut appliquer ces méthodes. Il y a beaucoup de choses intéressantes.
  2. Apprentissage profond
    Voitures sans pilote, voitures sans pilote et remplacement de la tête de Jack Nicholson par la tête de Jim Carrey . Mais si vous plongez plus profondément, n'importe quelle tête tournera. Voici la reconnaissance des visages, des émotions, de la position du corps, tirant la sémantique de la vidéo et toutes sortes de transformations de flux vidéo. Auto-transcription et auto-traduction, définition des maladies et des mauvaises herbes, enfin, vous comprenez, presque tout. En plus de la vision par ordinateur, il existe également le traitement du langage naturel (NLP), le traitement et la simulation du flux audio, les réseaux de neurones de jeu GAN. Quel que soit l'aspect de l'apprentissage profond que vous choisissez, vous pouvez passer du temps sur:

  • Approfondissement des dĂ©tails de l'architecture des rĂ©seaux de neurones.
    Ce domaine, à mon avis, est le plus proche de la science et nécessite un corpus de connaissances correspondant en mathématiques et en informatique. Si vous êtes impatient d'expérimenter avec une nouvelle fonction d'activation de tueur, de tordre des couches personnalisées, et que le taux d'apprentissage ne diminue pas simplement banal, mais se transforme en tube, alors ce domaine de l'apprentissage profond est pour vous. Ouvrez les derniers articles scientifiques et commencez à expérimenter. D'un point de vue commercial, ce sont les choses que les entreprises peuvent faire et qui sont disposées à investir spécifiquement dans la discussion. Il y a des conférences de l'Université de Stanford pour la connaissance de YouTube sur YouTube .


  • Approfondissement des dĂ©tails de l'infrastructure.
    La formation des images du réseau neuronal pour la reconnaissance des images nécessite des ressources machine. Le choix du fer est large et limité uniquement par la taille du portefeuille. Je pense que la GTX 1070 Ti peut être considérée comme un bon début, mais n'oubliez pas qu'une carte vidéo seule ne résout pas tous les problèmes, car les données doivent encore être préparées et transmises aux réseaux de neurones. Un processeur faible ou un disque dur lent peut devenir le goulot d'étranglement de votre système. Par conséquent, achetez un processeur i5 supplémentaire, 16 Go de RAM et un disque dur à semi-conducteurs. Le clavier, qu'il en soit ainsi, sortira du moins cher. Une autre option, Google Cloud, Azure, AWS, Kaggle à nouveau. Les services cloud offrent des dizaines, voire des centaines d'options, avec un prix de départ d'environ 50 cents l'heure pour le K80 (à peu près le même que le GTX 1070 Ti). Google vous donne un dépôt de 300 $ pour vous entraîner. Azure donne 200 $, avec Amazon n'a pas eu à traiter. J'ai aimé l'option Google car vous pouvez changer rapidement les cartes vidéo ("Ah, marchez comme une promenade. Aujourd'hui ce sera le V100"). Bien sûr, par rapport aux salaires de la date rock-star des tests de site de votre bureau d'études, ces dépenses seront de vraies sous. Un petit piratage à vie, lors de la connexion à une machine dans le cloud, utilisez la redirection de port: you_user@your_host -L 8888:127.0.0.1:8888 . Cela vous permettra d'exécuter Jupyter à distance sur l'ordinateur local. Je voudrais également parler des TPU Google. Ils peuvent être utilisés entièrement gratuitement directement à partir de Google Colab, mais si vous pouvez les utiliser, c'est la question. Lorsque vous travaillez avec des modèles plus ou moins standard, tout est beau, mais les modèles personnalisés se comportent de façon imprévisible s'ils démarrent.


  • Approfondissement de l'implĂ©mentation en production.
    Les expériences d'architecture et la participation à des concours sont des choses très utiles, mais en réalité ce n'est pas si important, votre modèle donne une précision de 85% ou 87%. Pour les voitures sans pilote ou les applications mobiles dans ce cas, la vitesse de prise de décision sera plus importante, et pour les besoins médicaux, très probablement un faible niveau d'erreurs du deuxième type ("Healthy! Come on, goodbye!"). Autrement dit, l'identification des priorités vient au premier plan. De plus, un tas de questions techniques: comment déployer et assurer un fonctionnement continu dans l'environnement du produit, comment former le modèle sur de nouvelles données, comment surveiller et évaluer les résultats du travail, comment détecter et corriger les bogues, enfin. Nous avons déjà tous ces problèmes avec les logiciels normaux, mais maintenant ils vont à un niveau différent. Il existe déjà des outils de contrôle de version (Git-LFS, Saturn Cloud), spécialement conçus pour l'apprentissage automatique, mais les normes généralement acceptées n'existent pas encore, qui ont certainement leur propre romance. Un autre piratage de la vie: si vous conservez des hyperparamètres dans des fichiers de configuration séparés, vous pouvez facilement restaurer des expériences réussies.


  • Utiliser des modèles prĂŞts Ă  l'emploi et transfĂ©rer l'apprentissage.
    La partie la plus simple et la plus attrayante de l'apprentissage automatique, pour ceux qui veulent voir comment tout cela fonctionne dans la réalité. Il y a suffisamment de modèles prêts à l'emploi, quelques dizaines de lignes de code et le tour est joué: des carrés multicolores parcourent l'écran. Pas besoin de consacrer du temps et des ressources à la formation du modèle à partir de zéro. Il existe même des solutions prêtes à l'emploi en matière de matériel si vous souhaitez une reconnaissance sur site (soit dit en passant, une excellente vue d'ensemble) . Il semble, prenez-le et utilisez-le, mais il y a quelques nuances. Les modèles prêts à l'emploi sont formés sur des ensembles de données standard. Par conséquent, pour savoir qui vole de la crème sure à votre entreprise: chat Vaska ou chat Semyon, vous devez encore régler le modèle (transfert d'apprentissage). Peut-être que Baba Masha avec un balai coûtera beaucoup moins cher à l'entreprise.



Corps principal


Nous revenons ici au début de l'article. Au moment où l'aspirateur robot est passé, je voulais créer une application ou un appareil fonctionnant simplement en utilisant la vision industrielle. L'idée est alors venue de donner à l'aspirateur un autre canal de communication avec le monde extérieur.
Si vous y vissez une petite caméra, vous pouvez utiliser des modèles prêts à l'emploi ou entraîner les vôtres. Les possibilités d'application sont complètes. Du nettoyage des taches à la traque du chien. Vous pouvez créer une sorte de jeu dans l'espace physique en utilisant GAN ou jouer avec des modèles PNL et lui apprendre à parler à la manière d'un assistant vocal. En bref, le temps de former votre propre robot domestique.


Bien sûr, vous devez commencer par des choses simples. Par exemple, pour rechercher sur Habré qui nous est déjà fait. Il s'avère être "à l'intérieur d'elle" Ubuntu 14.04, ce qui signifie que si vous avez une racine, vous pouvez, par exemple, la contrôler depuis le joystick . Si vous tirez les données du lidar, vous ne trouverez pas moins à portée de main, un prototype de voiture sans pilote.
Le choix commence déjà à ce stade. Prenez un appareil photo fini avec Wi-Fi et une batterie ou une carte pour l'inférence comme Jetson Nano? Et puis-je assembler un appareil photo, une connexion Wi-Fi et une batterie sur le Raspberry Pi? Chaque approche est intéressante à sa manière, mais j'ai essayé de m'en tenir à l'objectif principal: créer un appareil fonctionnant simplement en utilisant l'apprentissage automatique, j'ai donc choisi la première option.


Pendant que l'appareil photo était en route, l'aspirateur s'est abîmé et est monté dessus. Cela fonctionne parfaitement, il est encore temps de rêver. Disons que Hector a tiré un bâton de la rue et l'a tiré, allongé sur son tapis préféré. La caméra, suspendue assez haut, capture la pollution (ici, je me souviens du défi de la vaisselle sale ) et envoie les coordonnées à l'aspirateur. La chasse à un chien est encore plus facile. Il suffit de placer l'appareil photo sur l'aspirateur lui-même et de commencer à avancer lorsque le chien est détecté, puis de faire un cercle complet et de revenir à la base.


Mais ce sont des plans pour l'avenir. Faisons maintenant quelque chose de très simple. Laissez l'aspirateur émettre des sons différents en fonction de l'objet qui est apparu à la caméra. Pour cela, nous avons besoin de deux threads connectés par une file d'attente commune.


  • Le modèle (j'ai utilisĂ© l'un des modèles prĂŞts Ă  l'emploi TensorFlow model zoo) reconnaĂ®t l'objet et met son nom dans la file d'attente.
  • Un autre thread prend le nom de l'objet de la file d'attente et gĂ©nère l'URL du fichier son.
  • Le chemin est transmis Ă  l'aspirateur et il frappe l'adresse reçue pour le fichier via ftp ou http.
  • Dans le dossier de chaque objet, il y a plusieurs fichiers Ă  modifier. Le fichier est sĂ©lectionnĂ© au hasard. De plus, il existe un paramètre pour la probabilitĂ© de reproduction du son, de sorte que l'aspirateur, fixant Hector Ă  une vitesse de 10 ips, ne vibre pas comme un fou, mais communique quelque chose de manière convaincante et avec dignitĂ©.

Le diagramme ressemble Ă  ceci:



Voici comment cela fonctionne:



Sous-total


Le but est atteint: l'aspirateur parle. Je suis content de ne pas avoir fait trop de choses à la fois. L'étape suivante consiste à associer la reconnaissance des formes au flux qui régule le mouvement et à essayer également l'apprentissage par transfert.


Intelligence artificielle, le sujet est si volumineux qu'il est difficile de déterminer quoi entreprendre en premier lieu. À mon avis, il n'y a pas de point d'entrée unique. Il n'est pas du tout nécessaire de commencer par le calcul de dérivés complexes ou de cours de programmation Python (bien que les deux soient certainement utiles). Choisissez ce qui vous intéresse personnellement et que la force soit avec vous pour terminer ce que vous avez commencé.


Les détails de l'implémentation PS se trouvent dans le référentiel . Les commentaires et demandes de tirage sont les bienvenus.

Source: https://habr.com/ru/post/fr474024/


All Articles