![](https://habrastorage.org/webt/sc/-c/ma/sc-cmaskrnhswd-xh_o8prvsuws.jpeg)
Меня зовут Александра Царева. Я и мои коллеги работаем над проектами в сфере компьютерного зрения в Центре машинного обучения компании «Инфосистемы Джет». Мне хочется поделиться нашим опытом разработки и внедрения проектов в сфере компьютерного зрения. Сегодня речь пойдет о преимуществах и недостатках кастомных и коробочных решений, и я расскажу о нашем опыте применения инструмента от IBM Maximo Visual Inspection.
Распознавание изображений и вообще нейросети — одна из наиболее громких тем в машинном обучении. В кулуарах дата-сайнтистских встреч раз за разом передаются истории, как было проще согласиться с заказчиком, что у него будет нейросеть, чем убедить, что есть более подходящие для задачи алгоритмы. С другой стороны, подчас обученной искусственной нейросетью стремятся заменить нейросеть естественную — человека, в тех случаях, когда человек еще долго будет дешевле разработки собственного решения (и часто эффективнее).
Это порождает ужасающие истории о гигантских бюджетах и малой выгоде после их освоения. Отрасль кажется дорогой и пугающей. Получается так, что по-настоящему хорошее решение доступно исключительно за большие деньги и может быть создано только лично для вас. А если что-то типовое — то это будет таким тривиальным, что не стоит усилий на внедрение.
Так ли совершенны кастомные решения и тривиальны готовые? Давайте попробуем разобраться.
Кастомные решения
Естественно, у разработки «под задачу» есть масса преимуществ. Прежде всего, когда мы обучаем нейросеть под конкретную задачу, мы точно уверены, что наша нейросеть становится квалифицированным специалистом в решении именно этой задачи, что у нее нет артефактов, связанных с обучением на неподходящем датасете. Потенциально использование такой нейросети дает большую точность в ее работе по сравнению с коробочным решением и моделью более общего характера. Более того, если у бизнеса есть группа задач, которые нужно решать, однажды обученную под конкретную задачу нейросеть можно дообучать, чтобы работать со смежными к оригинальной задаче сферами.
Например, возьмем абстрактную нейросеть, которая оценивает характеристики выбросов над сталеплавильным конвертером. Скорее всего, на этом же заводе есть другие места, где можно дообучить уже определяющую особенности химии расплава в ковше нейросеть, чтобы она применила полученные «знания» о связи химии и цвета пламени или структуре пара. Может быть, будет близкая задача по экологическому контролю — и модель, изначально заточенная для помощи металлургам, поможет соблюдать и обязательства по охране окружающей среды.
Теперь перейдем к недостаткам кастомного решения. Как ни грустно это признавать, они тоже есть.
Итак, какие проблемы возникают, когда кто-то решает, что для его бизнеса необходимо разработать компьютерное зрение?
- Первые проблемы касаются данных. Дата-сайнтист, участвующий в проекте, сначала выступает в качестве data-«психоаналитика» и подробно расспрашивает о данных. Люди понимают, что у имеющихся в их распоряжении данных есть специфика и ограничения. Две стороны одной проблемы: слишком много неструктурированных данных, или слишком мало данных в принципе. На то, чтобы получить полезную информацию из таких данных, как, например, большого числа фотографий без разметки, потребуется много сил и времени. Если речь идет о специфических данных (например, требуется оценивать качество изделий из редких металлов или драгоценных камней), потребуется труд довольно дорогих экспертов. Их невозможно заменить crowd-sourcing’ом, к тому же нередко их опыт не поддается формализации. С другой стороны, данных может быть очень мало: их сбор может происходить медленно. Например, разрабатываемая модель должна определять, верно ли установлены детали в двигатель на видеоконтроле конвейера, а работники все достаточно квалифицированы, и ошибки у них происходят единично.
- Второй нюанс касается непосредственно дата-сайнтистов, которые будут работать над проектом компьютерного зрения для конкретной задачи. Во-первых, профессиональный рынок перегрет от спроса: специалистов меньше, чем компании готовы нанять. В целом, обычные для всех ИТ-профессий проблемы, помноженные на то, что постоянно появляются новые задачи, решаемые наукой о данных. Во-вторых, даже если в бизнесе уже есть дата-сайнтисты — может быть, «это не те дата-сайнтисты, которых вы ищете». Наметился тренд на все более сильную специализацию в рамках профессии. В-третьих, то, что сделают дата-сайнисты, нужно будет внедрять и поддерживать (и, может быть, даже развивать, если вам понравится эффект!). А если имеется относительно обширный парк устройств, на которых это надо использовать, то еще и адаптировать. Бизнес, не имеющий тяги к стартапам, на этом этапе часто решает, что ему не так уж и нужно компьютерное зрение.
Не спешите грустить вместе с этими ребятами. Теперь, когда стал рассеиваться туман сакрального знания вокруг компьютерного зрения, есть альтернативы прежних двум вариантам — «вкладываем много денег и сил» vs «не делаем ничего, компьютерное зрение не для нас».
Нейросети «из коробки»
У бизнеса самого по себе есть тайная сила, не (всегда) доступная специалистам в математике.
Во-первых, никто не знает задачу так хорошо, как заказчик.
Во-вторых, бизнес обычно хорошо понимает, какие данные у него реально есть и какие он может собрать в течение реального для проекта времени.
Вопросы, в которых бизнесу нужна помощь, более прикладные. Какой инструмент подойдет для решения задачи? Эта задача, она в принципе решаема? Как мы будем обновлять решение после разработки? Как встроить его в имеющуюся инфраструктуру?
С этой точки зрения IBM Maximo Visual Inspection решает множество проблем, поскольку сильно занижает «порог вхождения». Можно сказать, это вариация AutoML, автоматизированного машинного обучения, теперь — для работы с изображениями и видео. Самое главное, решение Maximo Visual Inspection изначально разработано для использования людьми без обширных познаний в области глубокого обучения нейросетей. Для тех, кому хочется узнать больше о приемах работы и терминах, которые используют дата-сайнтисты, когда говорят о компьютерном зрении, решение снабжено подробной документацией (документация пока только на английском, но вряд ли это станет препятствием для пытливого ума).
В Maximo Visual Inspection есть очень простой инструмент для разметки данных (я не проводила экспериментов, но он кажется достаточно легким даже для свежих выпускников курсов компьютерной грамотности), а также встроенный функционал для развертывания моделей, интегрирования результатов работы в Maximo Visual Inspection с чем-то еще. В частности, Maximo Visual Inspection хорошо подходит для принятия решений о целесообразности поиска команды датасайнтистов и закупке дорогих мощностей для обучения нейросетей.
Есть три продукта в этой линейке: IBM Maximo Visual Inspection для обучения нейросетевых моделей, IBM Maximo Visual Inspection Edge для применения обученных моделей на различных устройствах с GPU или CPU, и IBM Visual Inspection Mobile (Visual Inspector) для применения обученных моделей с использованием мобильных устройств для различных инспекций. Дополнительно следует отметить, что IBM Maximo Visual Inspection сейчас включает интеграцию с продуктом IBM Maximo Asset Monitor. Таким образом Maximo Visual Inspection может автоматически отправлять результаты распознаваний в Maximo Asset Monitor для дальнейшей обработки.
Кроме того, обученные в Maximo Visual Inspection модели можно использовать в продукте IBM Video Analytics, который позволяет подключать сотни и тысячи камер любых производителей, осуществлять трекинг объектов, имеет специальный интерфейс администратора, который позволяет настраивать правила поведения или состояния объектов, которые необходимо отслеживать, генерировать мгновенные оповещения в интерфейс оператора или как сигналы другим системам, а также индексировать видеопотоки описывая все происходящее в виде. метаданных, по которым в последствии оператор может выполнять поиск интересующих объектов или событий.
Пайплайн работы решения достаточно стандартный: загружаем в необходимые видео или изображения, которые становятся новым датасетом, размечаем его с помощью удобного функционала (в том числе доступны функции аугментации данных и авторазметки), выбираем требуемый тип сети для обучения в зависимости от задачи (нужна ли нам модель поточнее или побыстрее, распознавание прямоугольниками или по контуру и т.д., сделать правильный выбор легко), после этого, в один клик, запускаем процесс обучения и наблюдаем в реальном времени за графиком с основными параметрами качества обучения. В зависимости от выбранного типа сети обучение занимает ориентировочно от 2 до 30 минут. По завершении процесса обучения создается экземпляр модели, который может быть уже связан с существующей инфраструктурой, например, использован для распознавания на каком-либо Edge устройстве с помощью второй версии продукта Maximo Visual Inspection Edge.
Задачи, поддерживаемые решением, всем хорошо знакомы и являются наиболее типовыми для компьютерного зрения: классификация изображений, поиск объекта на изображении (как в варианте сегментации, то есть попиксельного выделения нужной области, так и поиска места на изображении с объектом), также есть инструмент для детекции действий на видео.
Во второй части моего поста (вы сможете прочитать ее завтра) я расскажу подробно об инструментах IBM Maximo VisualInspection и о том, как с их помощью можно решать конкретные задачи.
Царева Александра, ведущий специалист по машинному обучению «Инфосистемы Джет»