Je m'appelle Alexandra Tsareva. Mes collègues et moi travaillons sur des projets dans le domaine de la vision par ordinateur au Machine Learning Center de Jet Infosystems. Je souhaite partager notre expérience dans le développement et la mise en œuvre de projets dans le domaine de la vision par ordinateur.
Dans cet article, je vais parler de la façon dont le processus de travail d'un dataetist sur un projet ressemble non pas d'un point de vue "spirituel" et, en fait, Datasignist, mais plus d'un point de vue organisationnel. Et j'espère que ce post sera suivi de quelques autres et pourra écrire une petite série.
Je vais tout de suite faire deux remarques importantes:
- Ces étapes s'appliquent à presque tous les projets d'ensemble de données. Mais certains moments sont causés par l'effet de battage médiatique autour du CV, une certaine gloire de la «balle d'argent» en vision par ordinateur et le désir du client «de l'avoir avec le réseau neuronal».
- , , — , - . , , ( , ..) , — - .
: ?
Lorsqu'un client décide qu'il a besoin d'ensembles de données et d'une sorte d'intelligence artificielle qui l'aidera, tout d'abord, il doit comprendre quel problème il va résoudre. A ce stade, un dataigner agit comme un «psychanalyste» de données et interroge en détail sur les données, les contraintes externes du point de vue de l'entreprise et les problèmes que l'on aimerait résoudre dans un monde idéal. Le client sait souvent déjà tout sur la tâche future - il suffit de l'aider à comprendre et à formaliser ces connaissances (comprendre son monde de données internes, et parfois - et accepter ses particularités).
Bien sûr, la vision par ordinateur est un domaine très intéressant, il y a toujours quelque chose à compter et à faire avec vos mains. Mais tout cela est assez coûteux - à la fois en termes d'heures de développement, de coût des spécialistes et de l'équipement dont ils ont besoin. On ne peut s'empêcher de se demander si la solution optimale au problème nécessite vraiment CV. Peut-être existe-t-il d'autres outils d'apprentissage automatique qui conviennent mieux et peuvent mieux résoudre le problème avec un temps de développement plus court et une précision plus élevée?
Je vais vous montrer l'idée avec un exemple simple. Un détaillant souhaitait mettre en œuvre la reconnaissance d'image CCTV pour suivre le nombre de personnes faisant la queue à la caisse. Cela semblerait une tâche évidente - il y a une archive vidéo, il y a même des réseaux de neurones pré-entraînés - des «compteurs». Signez le calendrier, faites-le.
Mais à partir d'une conversation avec le détaillant, l'interpréteur de données apprend que la tâche n'est pas liée à la charge sur le caissier à un moment donné. La tâche globale n'est pas d'appeler des employés inutiles à remplacer, mais en même temps d'éviter les files d'attente. Le détaillant a une grande base de données qui montre le nombre de clients qui ont visité le magasin (si vous avez vu les vendeurs se pencher sur les cadres à la sortie du magasin, vous avez vu la mise en œuvre la plus simple d'un tel compteur), des données sur les achats à la caisse ... Et en fait, la tâche n'est pas compter les personnes en file d'attente, prévoir la charge de travail des caissiers et optimiser leur horaire de travail.
Vous pouvez bien sûr le résoudre en comptant les personnes dans les vidéos archivées. Mais les données tabulaires sont généralement stockées plus profondément et plus facilement à traiter. Il est juste d'offrir une alternative - peut-être que le client n'a entendu que le fait que CV est wow.
Ainsi, dans un premier temps, nous nous assurons que le problème que le client souhaite résoudre est bien un problème de vision industrielle et que cette technologie est la mieux adaptée pour le résoudre.
Deuxième étape: comment allons-nous résoudre le problème du CV et évaluer le succès de la solution?
La deuxième étape est la formulation d'un problème mathématique, le choix des métriques.
Existe-t-il des solutions connues, des réseaux de neurones, qui peuvent résoudre ce problème? Peut-être même un produit en boîte? Si la tâche est nouvelle - peut-être y a-t-il des publications sur lesquelles nous pouvons compter et évaluer au préalable la qualité réalisable?
À ce stade, nous discutons des métriques pour résoudre le problème du point de vue de notre travail, en tant que datascientists, et du point de vue du client, dans le cadre de la résolution d'un problème commercial.
Travailler avec des données commence parfois en même temps que s'entendre sur la solution et les métriques, mais pour plus de commodité, nous allons le séparer en une étape distincte.
Troisième étape: explorer et comprendre nos données
Il est très important d'évaluer si nous disposons de suffisamment de données pour résoudre la tâche à accomplir. De toute évidence, les petits ensembles de données seront rejetés même au stade de la définition, mais lors du processus d'apprentissage d'un problème commercial, de nouvelles nuances peuvent apparaître. Les situations sont différentes: nous pouvons avoir 1000 images, dont seulement 10 appartiennent à la classe requise, et aucune technologie de vision industrielle secrète ne nous aidera.
Peut-être que nous comprendrons immédiatement qu'il n'est pas difficile d'améliorer l'ensemble de données existant - de demander aux employés de photographier plus d'objets que ce qui est régulièrement filmé, de collecter des données supplémentaires par l'externalisation ou d'ouvrir des ensembles de données.
Au même stade, des inconvénients sont notés en termes d'apprentissage futur des modèles, et nombre d'entre eux peuvent nous ramener à l'étape où nous re-discuterons de la solvabilité fondamentale du problème. L'exemple le plus courant est la faible diversité des données ou la sous-représentation de l'une des classes. Il est possible de rivaliser pour augmenter la diversité en utilisant diverses techniques d'augmentation, mais cela ne nous permet pas toujours de préparer un modèle pour le monde réel. Cependant, s'il nous semble que nous pouvons faire face aux difficultés des données, la quatrième étape vient à la rescousse.
Étape 4: développer un modèle prototype
À ce stade, nous ne parlons pas d'un modèle prêt à être implémenté, mais d'un prototype qui nous répondra, nous et le client, à la question de savoir s'il vaut la peine de continuer à travailler dans ce sens, si le résultat possible répond aux attentes (les nôtres et, surtout, celles du client). Après avoir travaillé avec les données, nous commençons à développer un modèle pilote et évaluons sa qualité. Quelques évidences: à ce stade, le modèle est validé par rapport à un jeu de données différé. Les deux options principales sont les images que nous avons mises de côté, ou les images que notre client a tapées pendant que nous travaillions sur le projet.
La durée des travaux sur le projet au stade pilote pour le développement d'un prototype est d'au moins un mois. Pendant ce temps, dans la plupart des cas, le client peut accumuler des données à des fins de test. C'est un bon test pour les datasetists pour voir à quel point ils sont sérieux pour résoudre le problème: si nous prenons des données que nous n'avons jamais vues, nous vérifions comment notre modèle peut se généraliser et s'il correspond aux réponses à l'ensemble de données de validation (qui, bien sûr, est également différé. mais il est trop tard pour découvrir que tout a changé dans le monde réel depuis, ce serait bien dommage).
Par contre, au moment de la réception du jeu de données différé, on peut savoir dans quelle mesure les objets tombant dans la sphère d'intérêts du client du projet (et cela vaut également pour les clients internes) sont stables et correspondent à l'échantillon utilisé pour la formation et la validation du modèle. Après tout, une telle situation est tout à fait possible: la vision par ordinateur est mise en œuvre comme un grand projet pour numériser tout et tout le monde, et au même stade des changements importants ont lieu dans la source de données (par exemple, le convoyeur principal a été complètement reconstruit et les images qui en découlent ont fondamentalement changé).
L'analyse des résultats du pilote permet de décider du sort futur du projet. Il peut s'avérer que le client a des exigences très élevées en matière de niveau de précision: par exemple, 99% des réponses doivent être correctes, et dans les étapes précédentes, il nous a semblé que cela était fondamentalement réalisable. Mais sur le pilote, nous avons atteint une précision de 93% et, bien sûr, nous ne pouvons pas promettre un gain garanti de 6%. Il est logique de discuter des options pour le développement du projet avec les résultats du pilote disponibles avec le client - sur la collecte de données supplémentaires, la réduction de la métrique requise, ou même le gel du projet jusqu'à de nouvelles percées dans la sphère CV.
Les quatre premières étapes peuvent être illustrées avec le diagramme suivant:
Ils prennent beaucoup moins de temps que le développement réel. Néanmoins, le succès futur du projet est déterminé - dans quelle mesure il répondra aux attentes du client et résoudra vraiment son problème.
Cinquième étape: faites le reste;)
L'ensemble du projet, de la confirmation du concept à la solution mise en œuvre, ressemblera à ceci:
Le plan et les conditions de développement du projet sont approximatifs Dans les projets réels, différentes nuances apparaissent toujours, car les données sont différentes pour chacun, elles sont collectées à des vitesses différentes, et le stade d'introduction de la vision par ordinateur au sein de l'entreprise elle-même peut être très différent selon ce avec quoi l'intégration est prévue, qui la conduit, etc. .P. Après tout, c'est une chose lorsqu'il s'agit d'installer un système d'identification des employés entrant dans le bureau sur la base d'enregistrements de caméras de surveillance pendant une longue période: nous pouvons immédiatement commencer à travailler avec eux. C'est une autre question si nous avons un nombre insignifiant d'images d'exemple avec lesquelles nous ferons une preuve de concept - nous vérifierons si le problème peut être résolu en principe, et combien de temps il faudra pour collecter un ensemble de données à part entière, nous ne le savons pas.
Ainsi, la diapositive montre des délais très approximatifs pour un projet abstrait dans le vide, mais je pense qu'il est utile de savoir que le cycle complet de la preuve de concept à la mise en œuvre et à la mise en œuvre prend environ un an. Ces termes peuvent à la fois augmenter pour des tâches complexes et diminuer au cas où la solution «prête à l'emploi» est préférable ou si le problème est bien connu et ne nécessite pas de travaux de recherche.