Créez votre propre jeu de données extraterrestre


La segmentation des personnes utilisant des réseaux de neurones ne surprendra personne. Il existe de nombreuses applications, telles que Sticky Ai , Teleport Live , Instagram , qui vous permettent d'effectuer une tâche aussi difficile sur un téléphone mobile en temps réel.


Supposons donc que la planète Terre soit confrontée à des civilisations extraterrestres. Et des extraterrestres du système stellaire d'Alpha Centauri, une demande est reçue pour développer un nouveau produit. Ils ont vraiment aimé l'application Sticky Ai , qui vous permet de découper des gens et de faire des autocollants, alors ils veulent porter l'application sur leur marché intergalactique.


Malheureusement, notre réseau de neurones, qui est utilisé dans l'application de segmentation, n'est formé que sur des images de la race humaine, par conséquent, il fonctionne mal sur les extraterrestres. Il est urgent d'élargir notre ensemble de données par des extraterrestres.


Après avoir demandé aux extraterrestres plusieurs milliers de leurs images, nous procédons au balisage.


Défi:
Il existe des images extraterrestres, pour chaque image, vous devez créer un masque noir et blanc dans lequel l'extraterrestre sera mis en évidence en blanc et l'arrière-plan en noir.



Solution:
Tout d'abord, vous devez créer un mandat pour les pigistes qui disposeront les images. Comme nous avons besoin d'une qualité très élevée, nous annotons les images dans Photoshop.


Spoiler

Si nous n'avons pas besoin d'une très bonne qualité, ou si l'objet sélectionné est très simple, un tel balisage peut être effectué en utilisant des sommets de polygone. Ce type de balisage est disponible sur Amazon Mechanical Turk et Yandex.Toloke , où la main-d'œuvre est très bon marché.


Il est possible de composer un mandat sous la forme d'un document PDF de 10 pages, mais:


  1. Les pigistes ne lisent généralement pas les savoirs traditionnels, mais défilent.
  2. Dans le document, il est difficile de décrire en détail l'algorithme de la manière de baliser correctement et rapidement.
  3. Il faut beaucoup de temps pour compiler le document lui-mĂŞme.

Par conséquent, maintenant nous avons complètement abandonné les savoirs traditionnels sous la forme d'un document PDF, et nous fournissons la tâche en
type de vidéo de formation. Après une telle innovation:


  • La productivitĂ© des pigistes a doublĂ© (puisque la vidĂ©o montre le moyen le plus rapide et le plus optimal de baliser).
  • Les questions posĂ©es par les pigistes ont Ă©tĂ© rĂ©duites de 3 fois (puisque la vidĂ©o montre chaque Ă©tape).
  • Il s'est avĂ©rĂ© rĂ©duire le coĂ»t de la majoration de 2 fois (puisque le prix d'une heure de travail n'a pas changĂ©, mais les pigistes augmentent deux fois plus vite).

Une attention particulière doit être accordée à la méthode de balisage dans Photoshop. Photoshop est un programme très flexible dans lequel le balisage peut être effectué de différentes manières. Par conséquent, il est conseillé de déterminer à l'avance la qualité de balisage dont vous avez besoin, d'étudier les différents outils de sélection, de les comparer et de choisir celui avec lequel le traitement d'image est le plus rapide.


Un exemple:
Il existe deux façons de mettre en évidence:
La méthode A prend 5 minutes par image.
La méthode B prend 10 minutes par image.


Avec la méthode A, le pigiste marque 12 images par heure, donc le prix par image sera 150/12 = 12,5 roubles.
Avec la méthode B, le pigiste marque 6 images par heure, donc le prix par image sera de 150/6 = 25 roubles.


Nous avons donc trouvé le meilleur moyen de mettre en évidence et d'enregistrer l'instruction vidéo, quelle est la prochaine étape?



Reste à trouver des freelances. Il existe de nombreux échanges d'indépendants tels que Fl.ru , Weblancer , Freelans.ru .
Mais récemment, nous utilisons le service indépendant WORK-ZILLA parce que:


  1. Il y a une main-d'œuvre assez bon marché.
  2. Beaucoup d'artistes.
  3. Interface conviviale pour créer des tâches.

Pour créer une tâche:
Nous nous inscrivons, reconstituons le solde, cliquez sur "Soumettre une tâche", sélectionnez "Conception" -> "Traitement photo".



Remplissez le titre et la description, déterminez le temps pour terminer la tâche. Ayant traité plusieurs extraterrestres, j'ai remarqué que cela prend 4 minutes en moyenne par image. C'est-à-dire 15 images sortent par heure, nous avons donc fixé le prix d'une image 150/15 = 10 roubles.



Immédiatement après la publication de la mission, les interprètes commencent à offrir leurs services.



Nous sélectionnons la plus belle par l'image de profil vécue par les critiques et affirmons en tant qu'interprète, émettons des images. Comme vous pouvez le voir, il nous a fallu moins de 15 minutes pour trouver un pigiste.



Le lendemain matin, l'artiste a envoyé un travail.




Comment le vérifier maintenant?


Bien sûr, vous pouvez ouvrir chaque image dans Photoshop et voir à quel point tout est mis en évidence, mais que se passe-t-il si 20 personnes travaillent pour vous en même temps et que tout le monde envoie 40 images par jour?


Automatisez! Pour faciliter la vérification, j'ai implémenté le script suivant sur python:


import cv2 import numpy as np import os import shutil from __future__ import print_function from tqdm import tqdm_notebook as tqdm #,       def generate_checkerboard(shape, size): res = np.ones(shape, dtype=np.float32) for i in range(0, shape[0] // size + 1): for j in range(0, shape[1] // size + 1): if (i + j) % 2 == 0: res[i * size:i * size + size, j * size:j * size + size] = 0.7 return np.stack([res] * 3, axis=2) path = '01_ ̆_13' files_im = filter(lambda x: x[-4:] == '.jpg', os.listdir(path + '/images')) files_masks = filter(lambda x: x[-4:] == '.png', os.listdir(path + '/masks')) print('- : %s' % len(files_im)) print('- : %s' % len(files_masks)) if len(files_im) != len(files_masks): print('-     ') raise Exception('bad count') #  res,      os.makedirs(path + '/res') for idd in tqdm(map(lambda x: x[:-4], files_im)): print(idd) mask = cv2.imread(path + '/masks/' + idd + ".png") / 255. im = cv2.imread(path + '/images/' + idd + ".jpg") checkerboard = generate_checkerboard(im.shape[:2], 40) * 255 cv2.imwrite(path + '/res/' + idd + ".jpg", np.concatenate([im, im * (1 - mask), im * mask + (1 - mask) * checkerboard],axis=1)) 

Le script prend l'image originale, le masque, et en fait un collage, composé de l'image originale, découpé l'arrière-plan et découpé extraterrestre.


Exécutez le script et obtenez ces collages:











Après avoir examiné les images, nous remarquons que l'artiste n'a pas très bien sélectionné une image.



Veuillez corriger l'image.



Une fois que le pigiste a corrigé tous nos commentaires, nous confirmons le travail et adressons un feedback reconnaissant au pigiste.



Le résultat:
Supposons que vous ayez besoin de 2000 images extraterrestres pour former un réseau neuronal.
Ensuite, pour collecter un tel ensemble de données, vous devrez dépenser seulement 2000 x 10 = 20 000 roubles, et si vous prenez en compte qu'en moyenne, un pigiste traite 40 images par jour et 10 personnes travaillent sur le balisage, puis la création d'un ensemble de données prendra 2000 / (10 x 40) = 5 jours.


PS
Bien sûr, nous n'avons pas encore rencontré d'extraterrestres, aucune équipe de Prisma AI ne segmentera les extraterrestres, mais avec cet exemple, je voulais vous montrer à quel point vous pouvez créer votre propre jeu de données pour n'importe quelle tâche, que ce soit la détection des piétons pour un véhicule sans pilote ou détermination des forêts en imagerie satellite.

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


All Articles