Колонки

Computer vision: инструкция по применению для тех, кто хочет быстрый результат

Колонки
Антон Мальцев
Антон Мальцев

основатель CVML, ML Team Lead в CherryLabs

Ольга Лисина

Сегодня машинное зрение пришло в состояние, когда при создании MVP нужны минимальные знания о программировании, а иногда даже и их не надо. На рынке появились миллионы продуктов, которые помогут за несколько дней проверить гипотезу, и масса открытых исходников, на базе которых собрать прототип можно за неделю.

Антон Мальцев, основатель CVML, ML Team Lead в CherryLabs, делится общими принципами быстрого прототипирования, которые неоднократно проверены на практике.

Computer vision: инструкция по применению для тех, кто хочет быстрый результат

Старайтесь не создавать то, чего нет

Не планируйте что-то принципиально новое. Скорее всего, если вы придумали какую то принципиально новую технологию, которую нигде не видели, — вы делаете что-то не так. Чем дальше от существующих экземпляров, тем дольше и дороже будет разработка, и тем меньше вероятность того что это вообще можно создать.

  • До сих пор нет полностью автономных автомобилей, несмотря на десятки прототипов от крупнейших компаний. 
  • Распознать возраст точнее, чем с погрешностью в 5–10 лет, нельзя. 
  • Все стартапы, которые пробовали распознать ложь по видео, развалились, переориентировались или продают нерабочую систему. 
  • Распознать лица всех посетителей большого магазина без ошибок — нельзя. Все либо используют лица в дополнение к картам лояльности, либо как статистику.

Не факт, что нельзя сделать что-то принципиально новое, но это должен быть очень мощный стоп-фактор. 

Shutterstock / vchal


Используйте готовое

Старайтесь создать прототип из того, что есть под рукой. 

  • Вам нужно распознавание надписей на этикетках? Возьмите Google OCR — его точность не будет такой же высокой, как у специализированного решения, но позволит вам откатать весь пайплайн и его проблемы. 

Одни наши партнеры достаточно долго использовали Google OCR для распознавания информации на этикетках. Потом, когда убедились, что обучение своей модели даст профит, заказали разработку аналогичной сетки. Исчезли косты на использование Google, повысилась точность в несколько раз, что снизило время работы операторов.

  • Нужно получить трек машины? Возьмите готовый детектор машин у Amazon, склейте ближайшие друг с другом. Это будет хуже специального алгоритма трекинга, но задаст вам неплохую точку отсчета.

В одном из проектов, где был большой стек моделей, обученных нами под специальную аппаратуру, нужно было проверить, насколько повысится точность, если не будет ограничений на производительность и размер сети. Включили распознавание через Amazon на сервере — день работы программиста и $14 в месяц. Настроить и развернуть OpenSource на проде — три дня. Обучить свою модель — месяц.

Оцените максимальную точность 

  • Если это возможно, возьмите лучшее решение на рынке

Четыре года назад, если создать решение с нуля за пару месяцев, можно было бы сравниться с лидерами рынка. Сейчас уже не так. Сделать распознавание лиц как у NTech или VisionLabs? Это может занять несколько лет большой команды. 

Имея же на руках лучшее решение, вы сможете оценить качество, на котором все перестает работать. Даже лучшего решения по распознаванию лиц не хватит, чтобы распознавать лица всех посетителей крупного магазина. Но его с запасом хватит для распознавания водителей таксопарка. 

Используя максимум, оцените запас — это поможет вам оценить качество которое хватит для вашей системы. Может быть, вам будет не нужен NTech — достаточно OpenSource решения или распознавания лиц от какого-нибудь Amazon. А может, будет достаточно какого-нибудь производителя решений второго дивизиона.

В течении нескольких лет мы предоставляли онлайн-распознавание автомобильных номеров. За это время двое из наших клиентов разработали свои решения. Нашим сервисом они решили разметку датасета, быстрое прототипирование, оценку максимального качества. Решения, которые они разработали, были хуже по точности, но для их целей этого хватало. 

  • Нет решений на рынке, но задача вам кажется простой? Проверьте гипотезу на людях

Главный враг машинного зрения — низкое качество изображения и неправильные условия съемки.

Для абсолютного большинства задач то качество, которое показывает человек, — максимальное. Даже оператор не распознает больше 80% ценников, если фотографировать большой стеллаж в «Ашане» с рук. 

Попробуйте использовать камеру лучше, снимать частями. Это позволит очень быстро и динамично создать несколько итераций вашего продукта. Стоимость эксплуатации будет дороже машинного зрения, но разработка и модификация будет копеечная. Вы сможете собрать датасет и оценить лучшие сценарии.

Еще до массового появления нейронных сетей существовали фирмы, которые распознавали товары и ценники на полках супермаркетов по фотографиям (проверка выкладки). Мне известно минимум про три такие фирмы, что все распознавание делалось операторами в штате. Появление нейронных сетей лишь позволило понизить косты. При этом продукт на базе операторов существовал и окупался и без них.

Еще один проимер: один знакомый производитель продукта запускает акцию формата «всем, кто купил три наших товара, — бесплатный бублик». Предлагает присылать фотографии чеков с покупками. Чеки сфотографированы в разных условиях, под разными углами. Напечатаны на разных машинах в разных магазинах.

При этом решить задачу уровня «найдите в чеке товары из списка» силами оператора сильно проще, чем написать алгоритм их распознавания. По задачам такого плана оператор может обрабатывать 5–6 чеков в минуту (около 300 в час). Пусть объем всей акции 20 тысяч чеков — это будет 10 тысяч рублей.


Shutterstock / MONOPOLY919

Cделайте демо

Зачастую нейронные сети могут не давать хорошего результата. Если вы все же не смогли найти подходящего решения для прототипирования, постарайтесь сделать демо из подручных OpenSource-проектов, прежде чем начинать полномасштабную разработку. 

На таком решении зачастую можно будет оценить возможность дальнейшего улучшения. Или понять, что оно невозможно.

Один стартап из тех, которым мы сейчас помогаем, на стадии получения инвестиций собрали свой первый прототип на базе OpenSource из TensorFlow (потратили примерно две недели). Это помогло проверить основной эффект и получить первый раунд. При дальнейшей разработке точность и скорость работы продукта увеличилась в десятки раз.

Я видел примерно четыре фирмы, которые решали вопрос занятых парковок через прототипирование OpenSource (детекция автомобилей есть в OpenVino, TensorFlow и PyTorch уже готовая). Написание такого прототипа отнимало 2–3 недели.

Из всех таких гипотез выжила только одна. В остальных создатели поняли, что продукт нерентабелен. Та фирма, гипотеза которой сработала, переобучила OpenSource и получила качество в несколько раз выше.

Помните про ошибки

Все машинное зрение статистическое. Нет точных алгоритмов. Всегда есть пропуски, всегда есть ложные детекции, всегда есть ошибки распознавания. Подумайте, как ваша система будет реагировать на них.

Нужно распознавать номера вагонов на станции? Предположим, хорошая система даст 95% правильных распознаваний. Что вы будете делать с 4% пропущенных и 1% неправильно распознанных?

Прежде чем начать, распишите дерево исходов. 

Цена ошибки при распознавании автомобильных номеров для штрафов многократно выше, чем цена ошибки распознавания речи звонящего в техподдержку.

Как достичь максимума

  • Не стремитесь создать что-то принципиально новое — скорее всего, это невозможно или потребует слишком больших затрат времени и финансов.
  • Для создания прототипа используйте готовые решения, которые есть под рукой. 
  • Оцените максимальную точность, которую обеспечивают лучшие решения на рынке, и запас относительно нужного вам качества. Возможно, вам будет достаточно OpenSource-решения. 
  • Если готового решения нет, проверьте гипотезу на людях. Для абсолютного большинства задач нейросеть не сможет дать результат лучше, чем человек.
  • Прежде чем начинать полномасштабную разработку, сделайте демо из подручных OpenSource-проектов.
  • Помните о возможных ошибках — продумайте, что с ними делать и насколько дорого они вам обойдутся. 

Фото на обложке: Shutterstock / MONOPOLY919

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1 Computer vision: как его применять и в чем сложность для разработчиков и заказчиков
  2. 2 Как мы разрабатывали систему для распознавания 700 тысяч человек — кейс российской компании
  3. 3 Как мы научили нейронку распознавать пол и возраст

Актуальные материалы —
в Telegram-канале @Rusbase