Всем привет! Продолжим погружение в тему, и сегодня я бы хотел поделиться реальными задачами и кейсами из практики в Норникеле по направлениям Industrial AI и Computer Vision. Ни для кого не секрет, что еще несколько лет назад машинное обучение в промышленности уступало в развитии таким прикладным направлениям, как ML в ИТ / телекоме, банковской сфере, ритейле и т.п. Часто при общении с коллегами из других исследовательских институтов, R&D отделов крупных компаний разговоры о промышленных кейсах в машинном обучении напоминали байки о рыбалке. Или, скорее, рассказы авантюристов-золотоискателей, бросивших стабильность и уют хорошо изведанных земель ИТ и машинного обучения и ушедших в дикие пустынные края в поисках скрытого от всех сокровища. Все быстро меняется, и стараниями флагманских отраслевых компаний, крупных исследовательских коллективов работа над кейсами Industrial AI шагнула далеко вперед - от редких и робких хакатонов к полномасштабной разработке, внедрению и эксплуатации моделей в производственные процессы.
Промышленность с ее обилием производственных процессов, датчиков и оборудования легко создает новые задачи для ML и получает большие выгоды от их решения: экономические, экологические, в промышленной безопасности.
В целом все задачи можно разделить на три большие группы. Первая - табличная - связанная с оптимизацией процессов и основанная на больших табличных данных (как правило, с десятками и сотнями признаков и длинными временными отрезками). Вторая - NLP - связанные с обработкой документации, анализом сообщений, работой служб поддержки и чат-ботами. Третья, в которой преимущественно работаю я сам, - CV - множество базовых задач сегментации / детекции и основанных на них более сложных кейсах трекинга, измерения площадей, расстояний, скоростей, объемов, концентраций и прочего. Итак, давайте подробнее остановимся на конкретных кейсах от Норникеля в направлении CV.
1. Визуальное определение содержания металлов и степени влажности руды по цвету и блеску
Говоря простыми словами, мы бы хотели (хотя бы примерно) знать, какая руда сейчас движется по конвейерной ленте, а именно, насколько в ней много воды и насколько она богата нужными нам металлами. “Хотя бы примерно” здесь означает, что регрессия не требуется и нас устроит классификация с 3-7 целевыми метками. Понимание таких свойств руды помогает лучше настраивать процессы дальнейшей ее переработки, меньше тратить и больше получать.
Задача потокового анализа руды традиционно может решаться с помощью довольно дорогой и сложной техники, дающей очень много информации (зачастую избыточной). К таким приборам, например, относится поточный элементный анализатор, в основе которого лежит технология импульсной активации быстрыми и тепловыми нейтронами. Подобные технологии используют нейтроны высокой энергии для определения химического состава материалов и проводят мгновенный анализ. Это достаточно репрезентативная процедура, так как анализируется вся руда на конвейерной ленте в продольном и поперечном направлениях. Использование такого анализатора в производственных процессах позволяет контролировать элементное содержание и влажность руды, что дает возможность оптимизировать технологические процессы.
Подобные анализаторы являются достаточно сложным оборудованием, которое может выходить из строя и требовать значительных затрат времени и денег на восстановление. Конечно же, зная про мощные возможности глубокого обучения, хочется заменить сложную и дорогостоящую процедуру, более простой и достаточно эффективной (желательно, требующей просто хорошей камеры и мощного компьютера).
Чтобы найти тонкие грани различий в цвете и блеске руды на изображении, вызванных разной влажностью и содержанием металлов, мало просто использовать какую-то готовую нейросетевую модель “из коробки”. Нужно проводить мощный анализ данных различными классическими методами обработки изображений - это позволяет лучше выявлять наиболее эффективные способы извлечения признаков, значимые признаки / различия, формат представления признаков, способы предобработки и т.д.
Основная проблема (вызов) в нашей задаче - это плохая (сложная) разделимость классов руды по цвету. Кроме того, на цветность сильно влияет и влажность, и даже освещение. Чтобы максимально задействовать все возможные признаки, связанные с цветом и блеском руды, были проведены различные методы анализа изображений, как пространственного, так и частотного. Таким образом, для такой непростой задачки используется максимум информации о цвете, яркости и частотности изображений (преобразование Фурье, дисперсия лапласиана и т.д.). На графике ниже - пример эксперимента с дисперсией лапласиана для множества изображений с тремя условными классами влажности руды.
2. Гранулометрия руды или определение размеров камней
Понимание того, какого размера камни (руда, уголь) движутся по конвейеру нужно по ряду причин. Первая - это если после дробления камни остались слишком крупными, то нужно что-то сделать с процессом дробления. Вторая - можно визуально определять объемы породы, проходящей по конвейеру. Третья - скорее побочная - это параллельно при сегментации для гранулометрии детектировать разный мусор на конвейере - арматуру, дерево и прочее.
Говоря о гранулометрии, мы не всегда подразумеваем точное определение (регрессию) размеров. Зачастую достаточно классификации объектов по размерам на несколько классов (фракций) и подсчета процентного содержания каждой такой фракции.
Важно отметить, что любые задачи, связанные с определением размеров объектов, расстояний до них опираются на положение камеры относительно сцены и ее калибровку (или калибровок камер, если мы используем пару для стереозрения). Говоря про калибровку, я подразумеваю внутренние и внешние параметры камеры, связывающие физические размеры (координаты) объектов с пиксельными размерами объектов на изображении.
При наличии качественной сегментационной нейросетевой модели и точных параметров камеры можно довольно точно определять процентное содержание фракций. Наличие слишком крупных фрагментов породы будет характеризовать качество процесса дробления, требовать настройки оборудования и т.п.
3. Детектирование остановок конвейера
Это относительно простая и очевидная задача, которая была быстро решена и внедрена в производство. Однако, даже у самых очевидных задач есть свои требования и свои особенности - по устойчивости и надежности работы, по вычислительной эффективности, по адаптируемости. Давайте поговорим обо всем по порядку!
Итак, у нас есть видеопоток данных с движущегося конвейера. Освещенность конвейера и объектов на фото (всех или части) может изменяться в значительном диапазоне. Часто на фото могут появляться дополнительные объекты - люди, инструменты. Независимо от изменений освещенности и появления новых объектов требуется по смежным фото определять движется конвейер или нет. Вот так выглядит кадр видеопотока:
Прежде всего, при решении задачи хотелось по возможности обойтись “легковесными” алгоритмами, без вычислительно затратных решений, таких как создание сегментационных масок фото, сравнения их структуры / освещенности сегментов или трекинга / реидентификации. Самая простая идея - сравнивать текущее фото с предыдущим и определять величину различий. Если различия выше некоторого порога, то конвейер движется. Ниже порога - остановлен.
Для такой простой реализации алгоритма естественным улучшением является добавление адаптивности пороговых значений для разных уровней освещенности - значительное изменение освещенности между соседними фото не должно повлиять на решение алгоритма. Поскольку алгоритм использует смежные кадры для анализа, поэтому постепенное изменение освещенности (связанное, например, со временем суток) не является критичным. Однако, для резких скачков освещенности в области камеры - резкое затемнение, включение / выключение освещения, блики - вопрос устойчивости является актуальным.
Для подстройки в случае скачкообразного изменения освещенности в любую сторону хорошо подошло значение медианы гистограмм яркости изображений. Экспериментальным путем была найдена подходящая формула порога для рабочего диапазона значений яркости пикселей от 60 до 170. В случае слишком темного или светлого изображения используется коррекция изображения, которая перемещает гистограмму яркости и медиану в рабочий диапазон.
Описанная схема построения алгоритма определения состояния конвейера на исходных и модифицированных изображениях показывает достаточно точные результаты, скорость работы (вычислительную эффективность), простоту реализации и возможность интерпретируемых настроек параметров.
4. Улучшение методов сегментации и постобработка масок
Сегментация и детекция - одни из самых распространенных и базовых задач в компьютерном зрении, лежащих в основе других более сложных прикладных задач (гранулометрия, поиск визуальных аномалий, определение объема породы, трекинг различных промышленных объектов, фильтрация объектов, триангуляция / определение взаимного положения людей и технических объектов и другие).
Высокое качество решения данных базовых задач - это ключ к эффективности и результативности в прикладных промышленных задачах. А это снижение затрат ресурсов, времени, денег, повышение безопасности и экологичности производства и другие возможные положительные эффекты. Именно поэтому выгодно постоянно совершенствовать используемые алгоритмы и модели, пробовать новые архитектуры и применять их к разным доменам изображений и прикладным задачам.
Далекие, как звезды, мечты об универсальном искусственном интеллекте будоражат и зовут на подвиги исследователей и инженеров машинного обучения. А еще пугают призраками легендарной модели Т-800 из 90-х даже таких технически грамотных людей, как Илон Маск). Какими бы прекрасными или ужасными ни казались мысли о сильном ИИ, на практике мы все, как минимум, хотим работать с более универсальными моделями машинного обучения. Во-первых, при решении разных прикладных задач, основанных на детекции и сегментации, не хочется перебирать каждый раз целый зоопарк моделей. Во-вторых, у каждого домена данных есть свои особенности и специфика, поэтому учет этих особенностей хочется поместить внутрь какой-то настраиваемой, гибкой и эффективной модели, а не использовать набор костылей. Это не только отказ от поддержки большого числа разнородных моделей и конвейеров, но и более простой, управляемый и прозрачный переход к новым доменам изображений и к новым задачам с меньшими затратами времени, денег и нервов.
Именно поэтому мы стараемся уделять много внимания исследованиям и изучению новых актуальных статей / архитектур / решений. Это и более продвинутые, специфичные варианты архитектуры U-Net, и трансформеры, и графовые нейросети (в том числе графовые сверточные сети), и автокодировщики, и многое другое.
Поиск новых решений касается не только моделей для извлечения признаков, но и генеративных моделей для получения лучшей разметки на обучающих данных. Мы можем получать ground truth маски лучшего качества и в автоматизированном режиме - либо за счет генеративных моделей, либо используя более тяжелые модели (они не годятся для поточной обработки видео, но для медленного процесса расширения обучающего датасета в самый раз).
Кроме того, мы пробуем разные методы - даже классические (неглубокие) методы CV вроде морфологической обработки и прочего. Это позволяет лучше понимать ограничения тех или иных методов, вникать в данные и их особенности, проверять преимущества и недостатки нейросетевых методов. Как я уже говорил, на задачи сегментации и детекции опирается множество других более сложных задач. Так, например, я с интересом поучаствовал и старался быть полезным в задаче коллег по трекингу пены флотационной машины. Участие в таких прикладных задачах помогает лучше понимать специфику домена данных, конкретные потребности кейса и думать над улучшением базовых моделей. Часто приходят мысли о сквозном трекинге нейросетью и прочих вещах).
Заключение
Есть еще огромное множество интересных задач на производстве Норникеля (и куда большее множество интересных решений). Что особенно радует, с одной стороны, это возможность проводить исследования, искать и пробовать новые архитектуры и пайплайны для наборов данных, на которых еще никто в мире толком не работал! И, с другой стороны, что это не просто теоретические изыскания, а решение реальных задач с внедрением и ощутимой пользой для сотрудников, компании, экологии. Такое сочетание творчества и пользы хорошо мотивирует, помогает развиваться и создает удовольствие как от процесса работы, так и от ее результата). А что еще нужно для профессионального счастья?)