Crie seu próprio conjunto de dados alienígenas


A segmentação de pessoas que usam redes neurais não surpreenderá ninguém. Existem muitos aplicativos, como o Ai pegajoso , o Teleport Live , o Instagram , que permitem executar uma tarefa tão difícil em um telefone móvel em tempo real.


Então, suponha que o planeta Terra esteja enfrentando civilizações extraterrestres. E dos alienígenas do sistema estelar de Alpha Centauri, um pedido é recebido para desenvolver um novo produto. Eles realmente gostaram do aplicativo Sticky Ai , que permite que você corte pessoas e faça adesivos, então eles querem transportar o aplicativo para o mercado intergalático.


Infelizmente, nossa rede neural, usada na aplicação de segmentação, é treinada apenas em imagens da raça humana; portanto, funciona mal em alienígenas. Há uma necessidade urgente de expandir nosso conjunto de dados por alienígenas.


Depois de pedir aos alienígenas milhares de imagens, passamos a marcar.


Desafio:
Existem imagens alienígenas. Para cada imagem, é necessário criar uma máscara em preto e branco, na qual o alienígena será destacado em branco e o fundo em preto.



Solução:
Primeiro de tudo, você precisa criar um ToR para freelancers que irão organizar as imagens. Como precisamos de uma qualidade muito alta, marcaremos as imagens no Photoshop.


Spoiler

Se não precisarmos de muito boa qualidade, ou se o objeto selecionado for muito simples, essa marcação poderá ser feita usando vértices poligonais. Esse tipo de marcação está disponível no Amazon Mechanical Turk e Yandex.Toloke , onde a mão-de-obra é muito barata.


É possível compor um TOR na forma de um documento PDF de 10 páginas, mas:


  1. Os freelancers geralmente não lêem TK, mas percorrem.
  2. No documento, é difícil descrever em detalhes o algoritmo de como marcar corretamente e rapidamente.
  3. Demora muito tempo para compilar o próprio documento.

Portanto, agora abandonamos completamente o TK na forma de um documento PDF e fornecemos a tarefa em
tipo de vídeo de treinamento. Após essa inovação:


  • A produtividade dos freelancers dobrou (já que o vídeo mostra a maneira mais rápida e ideal de marcação).
  • As perguntas feitas pelos freelancers foram reduzidas em 3 vezes (já que o vídeo mostra cada etapa).
  • Acabou por reduzir o custo da marcação em 2 vezes (uma vez que o preço de uma hora de trabalho não mudou, mas os freelancers aumentam duas vezes mais rápido).

Atenção especial deve ser dada ao método de marcação no Photoshop. O Photoshop é um programa muito flexível, no qual a marcação pode ser feita de diferentes maneiras. Portanto, é aconselhável determinar com antecedência qual a qualidade da marcação necessária, estudar diferentes ferramentas de seleção, compará-las entre si e escolher aquela com a qual o processamento de imagem é o mais rápido.


Um exemplo:
Existem duas maneiras de destacar:
O método A leva 5 minutos por imagem.
O método B leva 10 minutos por imagem.


Com o método A, o freelancer marca 12 imagens por hora; portanto, o preço por imagem será 150/12 = 12,5 rublos.
Com o método B, o freelancer marca 6 imagens por hora; portanto, o preço por imagem será 150/6 = 25 rublos.


Então, encontramos a melhor maneira de destacar e gravar as instruções em vídeo, o que vem a seguir?



Resta encontrar freelancers. Existem muitas trocas de freelancers, como Fl.ru , Weblancer , Freelans.ru .
Mas, recentemente, usamos o serviço freelancer WORK-ZILLA porque:


  1. Existe uma mão-de-obra bastante barata.
  2. Muitos artistas.
  3. Interface amigável para criar tarefas.

Para criar uma tarefa:
Registramos, reabastecemos a balança, clique em "Enviar uma tarefa", selecione "Design" -> "Processamento de fotos".



Preencha o título e a descrição, determine o tempo para concluir a tarefa. Depois de processar vários alienígenas, notei que leva em média 4 minutos por imagem. I.e. Como 15 imagens são exibidas por hora, definimos o preço de uma imagem 150/15 = 10 rublos.



Imediatamente após a publicação da tarefa, os artistas começam a oferecer seus serviços.



Selecionamos o mais bonito pela foto do perfil experimentada por críticas e afirmamos como artista, emitir imagens. Como você pode ver, levamos menos de 15 minutos para encontrar um freelancer.



Na manhã seguinte, o artista enviou um emprego.




Como verificá-lo agora?


Claro, você pode abrir cada imagem no Photoshop e ver como tudo está destacado, mas e se 20 pessoas trabalharem para você ao mesmo tempo e todo mundo enviar 40 imagens por dia?


Automatize! Para facilitar a verificação, implementei o seguinte script em 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)) 

O script pega a imagem original, a máscara, e faz uma colagem delas, consistindo na imagem original, cortando fundo e cortando alienígena.


Execute o script e obtenha essas colagens:











Depois de revisar as imagens, notamos que o artista não selecionou uma imagem muito bem.



Corrija a imagem.



Depois que o freelancer corrigiu todos os nossos comentários, confirmamos o trabalho e enviamos um feedback agradecido ao freelancer.



O resultado:
Suponha que você precise de 2.000 imagens alienígenas para treinar uma rede neural.
Então, para coletar esse conjunto de dados, você precisará gastar apenas 2000 x 10 = 20.000 rublos, e se você levar em conta que, em média, um freelancer processa 40 imagens por dia e 10 pessoas trabalham na marcação, a criação de um conjunto de dados levará 2000 / (10 x 40) = 5 dias.


PS
Obviamente, ainda não encontramos alienígenas, nenhuma equipe da Prisma AI segmentará alienígenas, mas com este exemplo, eu queria mostrar como é simples e econômico você criar seu próprio conjunto de dados para qualquer tarefa, seja a detecção de pedestres para um veículo não tripulado ou determinação de florestas em imagens de satélite.

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


All Articles