Создаем датасет для распознавания счетчиков на Яндекс.Толоке |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-10-11 14:01 Как-то два года назад, случайно включив телевизор, я увидел интересный сюжет в программе "Вести". В нём рассказывали о том, что департамент информационных технологий Москвы создает нейросеть, которая будет считывать показания счетчиков воды по фотографиям. В сюжете телеведущий попросил горожан помочь проекту и прислать снимки своих счетчиков на портал mos.ru, чтобы на них обучить нейронную сеть. Если Вы — департамент Москвы, то выпустить ролик на федеральном канале и попросить людей прислать изображения счетчиков — не очень большая проблема. Но что делать, если Вы — маленький стартап, и сделать рекламу на телеканале не можете? Как получить 50000 изображений счетчиков в таком случае? На помощь приходит Яндекс.Толока! Яндекс.Толока — краудсорсинговая платформа, на которой люди со всего мира выполняют несложные задания, получая за это деньги. Например, толокеры могут находить пешеходов на изображении, обучать голосовых помощников и многое другое. При этом разместить задания на Толоке могут не только сотрудники Яндекса, но и любой желающий. Постановка задачи Итак, мы хотим создать нейронную сеть, которая по фотографии будет определять показания счетчиков. С чего начать, какие данные нам нужны? Посовещавшись с коллегами, мы приходим к выводу, что для создания MVP нам нужно 1000 изображений счетчиков. При этом для каждого счетчика мы хотим знать текущие показания, а также координаты окна с цифрами. Если Вы еще никогда не работали с Толокой, то советую прочитать статью, которую я писал год назад. Так как текущая статья будет технически более сложная, то некоторые моменты, подробно описанные в прошлой статье, я буду опускать. Благодарности Прошлая статья стала ТОП-2 в рейтинге статей от сообщества ODS. Спасибо, что комментируете и ставите плюсы!) Часть 1. Получение изображений Что может быть проще? Всего лишь нужно попросить человека открыть приложение Яндекс.Толока на своем телефоне и сфотографировать свой счетчик. Если бы я не работал несколько лет с Толокой, то моя инструкция звучала бы так: "Вам нужно сфотографировать свой счетчик воды (горячей либо холодной) и прислать нам изображение". К сожалению, при такой постановке задачи хороший датасет собрать не получится. Все дело в том, что данное ТЗ люди могут интерпретировать по-разному, так как в инструкции нет четких критериев правильно выполненного задания. Толокеры могут прислать:
В блоге Толоки есть отличный туториал, посвященный написанию инструкций. Следуя ему, у меня получилась такая инструкция: В качестве входных параметров мы передаем id задания, а на выходе получаем файл img, в котором будет находиться изображение счетчика.Интерфейс задания пишется всего в 2 строки! При создании пула указываем время на выполнение задания, отложенную приемку и цену за задание 0.01$. А чтобы люди по несколько раз не выполняли задание и не отправляли одинаковые фотографии, в блоке контроля качества запрещаем повторное выполнение задания. Укажем, что нам нужны русскоговорящие пользователи, которые выполняют задание через мобильное приложение Яндекс.Толока. Загружаем задания в пул. Запускаем пул, радуемся и ждем ответов пользователей! Вот так выглядит наше задание со стороны толокера:
Часть 2. Приемка заданий Подождав пару часов, видим, что толокеры выполнили задание. Так как при отложенной приемке награждение выплачивается исполнителю не сразу, а замораживается на балансе у заказчика, то теперь мы должны проверить все присланные изображения. У добросовестных исполнителей принять задания, а исполнителям, которые прислали неподходящие под критерии изображения, отказать и написать причину отказа. Если бы изображений было не очень много, то мы бы могли сами просмотреть и проверить все присланные изображения. Но мы же хотим получить тысячи и десятки тысяч изображений! Проверка такого объема заданий потребует существенного количества времени. Плюс данный процесс требует непосредственно нашего участия. На помощь снова приходит Толока! Мы можем создать новое задание "Проверка изображений счетчиков" и просить других толокеров отвечать, подходит ли изображение под наши критерии или нет. Настроив один раз процесс, мы получим полностью автоматический сбор и валидацию данных! При этом сбор данных легко масштабируется, и, если нам нужно будет увеличить размер датасета в несколько раз, достаточно лишь нажать пару кнопок. Звучит потрясающе и грандиозно, не правда ли? Первым делом определим критерии, по которым будем считать фотографию хорошей.
В иных случаях фотографию считаем плохой. С критериями разобрались, теперь пишем инструкцию! В качестве входных параметров передаем ссылку на изображение. На выходе будет два флага:
В переменную value будут записываться показания счетчика. Интерфейс этого задания занимает уже 14 строк. Для повышения точности одно изображение будут проверять независимо друг от друга 5 толокеров, для этого поставим перекрытие 5. После этого мы будем смотреть как ответили 5 людей и считать, что верный вариант ответа тот, за который проголосовало большинство. Данное задание уже не будет иметь отложенную приемку. Допустим к заданию 50% лучших исполнителей. В заданиях без отложенной приемки выплату получают все, вне зависимости от того, выполняют они задание правильно или нет. Но мы же хотим, чтобы толокеры внимательно читали инструкцию, старались и выполняли задание верно. Каким образом можно этого добиться? В Толоке есть два основных инструмента, которые позволяют поддерживать хорошее качество:
С пулом обучения все просто: достаточно добавить задания, разметить их в интерфейсе Яндекс.Толоки и указать порог прохождения, начиная с которого мы допускаем людей к основному заданию. С блоками контроля качества все интереснее: их довольно много, но я остановлюсь на двух самых важных. Мнение большинства Контрольные задания Ура, задание создано! Вот так выглядит интерфейс со стороны исполнителя: Часть 3. Объединение заданий Отлично, задания готовы! Но возникает вопрос, как соединить задания между собой? Как сделать так, чтобы после первого задания запускалось второе? Конечно, можно пошаманить с бубном и сделать это вручную через интерфейс Толоки, но есть способ проще и быстрее! В Яндекс.Толоке есть API, воспользуемся им и напишем скрипт на питоне! Я знаю, многие из вас не любят читать код, поэтому спрятал его под спойлер Запускаем код и вот долгожданный результат: датасет из 871 изображений счетчиков готов. Цена Давайте оценим экономическую составляющую проекта.
За проверку 10 изображений счетчиков мы платим 0.01$. При этом одно изображение проверяют 5 раз независимые люди. Итого, за проверку одного изображения мы отдаем: (0.01 x 5 / 10) x 1.2 x 1.5 = 0.009$. Из 1000 присланных заданий было принято 871 изображение, а 129 было отклонено. Значит, чтобы получить датасет из 871 изображений, мы заплатили: Но и данную цифру реально уменьшить в несколько раз. Можно:
Так как материала оказалось уж очень много, то мною было принято решение разбить статью на две части. В следующий раз мы поговорим с вами о том, как с помощью Толоки выделять объекты на изображениях и создавать датасеты для задач в области Computer Vision. А чтобы не пропустить, подписывайтесь и ставьте лайки! P.S. Источник: habr.com Комментарии: |
|