Рассказываем, как rdl by red_mad_robot помогли «Полиметаллу» решить проблему с анализом гранулометрического состава руды и определением негабарита при производстве золота. Крупный бизнес и металлургическая промышленность давно оценили преимущества цифровизации. Ведь в этой сфере каждое улучшение производительности на 1-2% может принести бизнесу миллионы рублей в год. За эти доли и бьются нейросети, тщательно пропуская через свои нейроны каждый кусочек руды. В нашем случае — каждый снимок. Особенно важны доли процента, когда это не просто руда, а полиметаллическая — содержащая золото и медь. Например, для золотой руды применяются мельницы самоизмельчения, где она частично дробится сама за счёт крупных кусков, а частично — с помощью стальных шаров, но при этом возрастают требования к грансоставу. Соотношение различных фракций должно быть оптимальным, чтобы руда перемалывалась быстрее. Всё, что крупнее нужного размера, — это негабарит. Его значение выставляет оператор в зависимости от размера руды на конвейере. Негабарит может заблокировать прохождение руды между конвейерами или подачу руды в мельницу. Это значит, что около 11 тыс. тонн руды обработано не будет. В каждой тонне — 1,7 грамма драгоценных металлов. Можно грубо оценить, во сколько каждый негабарит обходится предприятию. Его детектирование и было основной задачей заказчика, с которой он обратился к нам. «Полиметалл» — один из лидеров по добыче драгоценных металлов. с активами в России и Казахстане. Его первым месторождением в Казахстане стало «Варваринское», которое местные называют Варварой. Производительность обслуживающей месторождение фабрики — 4,2 млн тонн в год. Из этой цифры мы и посчитали выработку за день. Первым на месторождении отлили слиток стандартного веса — 12 кг. Относительно небольшой брусок золота обманывает мозг: кажется, можно взять и поднять его одной рукой, хотя сделать это не так просто. В сети полно видео с подобными аттракционами: если удается вытащить — получаешь приз. Но мы отвлеклись. Нас интересует оптимизация мельниц. Если слишком большой кусок руды попадает на конвейер, то он в любом случае удаляется вручную, поэтому небольшие остановки конвейера неизбежны. Но это не проблема, если изымать негабариты до перетечек. Самая большая проблема, если негабарит заблокирует выход загрузочной телеги мельницы. Здесь придётся её полностью разгружать, чтобы изъять негабарит, и это останавливает подачу руды в мельницу на длительный срок.  Загвоздка ещё и в том, что руда постоянно разная, например, из-за плотности породы, качества взрыва. Если вчера у нас шла более крупная фракция, то сегодня мельница будет перемалывать руду дольше, и наоборот. В мельницу попадают камни разной фракции, и чтобы та работала производительнее, нужно постоянно корректировать параметры мельницы и подаваемых в неё материалов.  Нам нужно было оптимизировать ресурсы, затрачиваемые на работу мельниц, и минимизировать простои из-за попадания на конвейер крупных камней, поэтому мы и решили обратиться к rdl by red_mad_robot. Алексей Лапшин, начальник управления автоматизации и цифровизации компании «Полиметалл» Итак, нам нужно анализировать гранулометрический состав руды и находить негабарит. Проблема негабарита стоит особняком, потому что здесь только одно решение: следить за конвейером. Это может делать оператор, но человек имеет свойство уставать. А можно отслеживать камерой — именно этот способ мы и выбрали по соотношению цены и качества. Вместо камеры могут быть и другие датчики, но сути это не меняет. С грансоставом руды сложнее. Во-первых, нужно анализировать скрытый слой, а во-вторых — разделять камни по классам крупности, чтобы с учётом процентного соотношения оператор выставлял оптимальный режим мельницы. Тут есть вариации, в основном они отличаются актуальностью информации, которую получает оператор: Лабораторный анализ. Технолог с помощью проботборника собирает руду с конвейера и просеивает через сито или решётку. За максимальный размер грансостава принимается величина отверстий сита, на котором осталось 50% руды по массе. Между сбором и документированием результатов проходит несколько часов; мельница продолжает работать в прежнем режиме, хотя грансостав уже поменялся. Кроме того, оценивается только небольшой объем собранной руды. Автоматизированный ситовой анализ. Проба грансостава разделяется на две части, одна из которых попадает на сито, а вторая — в бункер, на взвешивание. Пропущенная через сито часть также взвешивается, и результат в процентном соотношении фракций попадает в систему. Это позволяет проводить анализ больших объемов руды и получать актуальную информацию, но такие решения достаточно сложны. Компьютерное зрение даёт картину в реальном времени, а алгоритмы машинного обучения предсказывают скрытый слой. При этом лаборатория и технологи по-прежнему работают, просто делают анализ реже и занимаются другими задачами. Представьте их результаты как эталонные замеры, с помощью которых можно корректировать веса, или коэффициенты, в нейросетях. Это помогает сделать предсказания точнее. Мы уже разрабатывали подобные решения два раза — для компаний ERG и НЛМК. Так что у нас была накоплена экспертиза и опыт. Во-первых, мы знали, какой минимальный размер камней и какие классы фракции грансостава можем определять с помощью компьютерного зрения. Те данные, которые мы показали в презентации, мы показали и на этапе финальной сдачи проекта. Во-вторых, у нас были готовые интерфейсы, их не приходилось разрабатывать с нуля. Хотя они выступали скорее как референсы, потому что интерфейс был полностью кастомизирован под заказчика. В-третьих, мы знали процесс внедрения и проблемные точки, которые затягивают работы. Например, закупка и доставка оборудования могут занимать несколько месяцев, поэтому мы сразу предложили варианты, как это можно ускорить. Разница в том, что раньше стояла задача искать только мелкие камни. В этом кейсе впервые в нашей практике к ним добавился негабарит. У обоих решений в арсенале компьютерное зрение. Отличие только в используемых моделях. К каждому из решений выставляются свои требования. При анализе негабарита нельзя пропустить ни одного кадра, поэтому нужны лёгкие и быстрые модели, причём форма большого камня должна быть точной. Для определения грансостава на кадрах нужно найти как можно больше камней. Здесь нужны мощные и трудозатратные модели. Мы могли бы использовать модели грансостава при определении негабарита, но это привело бы к увеличению стоимости аппаратной части. Чтобы иметь возможность масштабироваться на соседние конвейеры, мы и взяли разные инструменты для этих задач. Иван Тимофеев, руководитель практики разработки Перед мельницами устанавливают камеры Basler. Снимки передаются на сервер, который также подключен к контроллеру. Оператор выставляет пороговое значение негабарита — камни более 700 мм по большей стороне. Если машинное зрение находит их, то сервер отправляет сигнал на контроллер об автоматической остановке конвейера. Оператор устраняет кусок руды и снова запускает конвейер. Модель сжимает исходное изображение с камеры, потом определяет контуры всех камней и переводит размер из пикселей в миллиметры. Дальше отсекает все камни больше определенной длины. Длина считается по большей стороне камня, и предобработанное изображение попадает в веб-интерфейс. Веб-приложение показывает снимки с разметкой в реальном времени и формирует отчёт по найденным негабаритам. Изображение также подаётся с камеры Basler и размечается по классам фракции: 0–10 мм, 10–20 мм, 20–40 мм, 40–80 мм, 80–150 мм, 150–200 мм, 200–250 мм, +250 мм. Система предсказывает состав внутреннего слоя, который не попадает на снимок, и строит гистограмму текущего распределения грансостава по классам. На основе этих данных оператор может корректировать режим работы мельниц, а руководитель — оценивать качество буровзрывных работ. На это последовательно работают две модели. Первая предсказывает камни на фотографии. Её основная метрика — средняя точность распознавания по всем классам крупности. Вторая модель преобразовывает данные из первой. Она выдает распределение грансостава во всём объёме породы на ленте, результаты работы модели можно проверить с помощью рассевов. Сейчас очень остро стоит вопрос инвестиций в производство. Насколько это целесообразно? Как риски соотносятся с возможным возвратом от инвестиций? Возможно ли довести новый цифровой проект до успешной реализации и развивать его дальше, когда и без того хватает работы? Мы попросили ответить на эти вопросы CEO rdl by red_mad_robot Алексея Соколова. Большинство простых «низко висящих плодов» на промышленных производствах уже сорваны, из имеющегося оборудования выжимают эффективность по максимуму. Чтобы увеличивать производительность, зачастую необходимо модернизировать оборудование или расширять производство за счёт дополнительных линий. Это очень дорогостоящие инвестиционные проекты.  Инновационные цифровые решения позволяют получить дополнительные проценты производительности без капитальных затрат. Да, зачастую эти решения направлены на проверку гипотез, которые могут не подтвердиться, — и это нормально для R&D проектов. Успешные проекты будут покрывать затраты на гипотезы, которые не взлетели.  Кроме того, реализация любых цифровых решений приводит к улучшению IT-гигиены предприятия: появляются новые интеграции между различными системами, начинают аккуратно собираться, обрабатываться и храниться данные. За счёт пилотных проектов, которые пусть даже не показали эффективность по каким-то причинам, улучшается общая цифровая экосистема и рождаются новые возможности по созданию более сложных систем.  Лидеры рынка давно осознали, что прекратить инвестиции в развитие и стараться выжать максимум прибыли — это тупиковый путь. Он даст краткосрочный эффект, но в итоге приведёт к деградации производства и потере позиций на рынке. Поэтому ведущие компании в металлургическом сегменте делают высокую ставку на технологии и движение в сторону Индустрии 4.0. Алексей Соколов, CEO rdl by red_mad_robot Всего в проекте можно выделить семь этапов: предпроектное исследование, заказ и установка оборудования, 3D-моделирование (синтетика), сбор первых данных и разработка моделей, разработка сервиса, калибровка моделей и повышение базовой точности, испытания и верификация результатов. Этап включал в себя разработку технического задания, подбор оборудования, составление монтажной документации. Примечательно, что за весь проект мы так ни разу и не побывали на производстве. По чертежам и документации изучили конвейерные ленты, получили снимки, чтобы потом смоделировать положение камеры. В итоге пришли к выводу, что одной камеры на конвейер будет достаточно, и сформировали требования к оборудованию и серверу. Обычно мы уделяем много внимания гигиене проекта, много взаимодействуем с заказчиком и стараемся регулярно ездить на объект. Пандемия внесла свои коррективы, поэтому мы переместили фокус на выстраивание прозрачной коммуникации: как общаться, через какие каналы, с какой частотой. Проговорили роли и зоны ответственности: заказчик своевременно предоставлял данные, чтобы работа шла без сбоев, а мы отвечали за техническую реализацию и погружали заказчика в нюансы нашей работы в терминах бизнес-цели. Отдельно донастроили внутренние коммуникации и уделили особое внимание чёткой постановке задач и проговариванию ожидаемых результатов. Полина Рядинская, руководитель практики менеджеров rdl by red_mad_robot Это уникальный проект, потому что он целиком проходил дистанционно. Нам присылали фото- и видеосъёмки мест монтажа оборудования, техрегламент, замеры расстояний, сетевые схемы. Чтобы синхронизировать ожидания, мы составили максимально подробное ТЗ и подключались на этапе установки оборудования практически в реальном времени. Организовали еженедельные спринты, составили план встреч и работ — это позволяло держать темп. Каждую неделю обсуждали статус, получали комментарии и уходили делать, на следующей неделе всё повторялось. Обе команды — наша и заказчика — работали слаженно. Артём Терновых, руководитель отдела развития промышленного сектора rdl by red_mad_robot Подготовка к развертыванию системы на производстве — довольно сложный процесс. Чтобы получать качественные изображения, мы выбрали мощную промышленную камеру Basler. Её нужно было закрепить так, чтобы температура на линии не влияла на качество съёмки. При температуре +72–77 °C возможно замедление камеры, появление битых пикселей и шумов. Если освещение будет выставлено неправильно, тоже будут артефакты. При заказе оборудования требовалось учесть все производственные условия. Для ускорения закупки мы обычно предлагаем организовать её самостоятельно, но в этом случае за неё отвечала команда «Полиметалла». Нам нужно было понять, как выставлять свет и где расположить камеры. Чтобы помочь монтажной бригаде установить оборудование, мы создали цифровой двойник места установки камеры. Мы могли подбирать конфигурацию освещения и место крепления камеры, не выезжая на производство. Когда оборудование было доставлено, монтажная бригада уже знала наилучшее расположение камер и прожекторов. Разработку цифрового двойника мы вели при помощи популярного инструмента 3D-моделирования — Blender. В процессе работы мы пошли на компромиссы. С одной стороны, нужно было передать точные размеры и характеристики реального объекта по чертежам в виртуальный мир, с другой — не сильно углубляться в детализацию и вовремя остановиться. В итоге задача была выполнена успешно и результат работы помог оперативно проверять конструкционные задумки сразу на 3D-модели. Михаил Мартьянов, графический дизайнер, специалист 3D-моделирования Пока ехало оборудование и не было доступа к реальным данным с камеры, мы начали генерировать синтетические данные. Зачем нужны синтетические данные, мы подробно описывали в кейсах ERG и НЛМК. Если коротко: они значительно ускоряют обучение моделей, особенно на первых этапах, когда исторических данных ещё нет или их недостаточно. В этом проекте с компанией «Полиметалл» пайплайн создания синтетических данных стал сложнее. В первую очередь это касается негабарита: если грансоставу можно простить низкую детализацию из-за относительно небольшого размера руды, то с большими камнями такой трюк не пройдет. Пришлось дорабатывать алгоритмы и автоматизировать процесс — теперь синтетические данные более похожи на реальные и генерируются практически без нашего участия. Вместо нас потеют роботы. Всё как мы любим. Процесс выглядел так: генерация, например, 500 камней с различной формой при помощи алгоритма; расположение камней на виртуальной сцене (ленте) с помощью физического движка, который также используется, к примеру, в разработке игр; трассировка и рендеринг результатов, которые идентичны реальным. Всё это позволяло воссоздать форму, рельефы, текстуры камней и ленты, текстуру и карту глубины песка. А также внешнее освещение, тени и дополнительные шумы на изображении. Потом синтетические данные были дополнены реальными, по ним и проводилось дообучение моделей. Пока мы дожидались оборудования, команда запустила разработку сервиса: настроила тестовую инфраструктуру; развернула облачные серверы и настроила инструменты для разметки данных; собрала обучающие, тестовые и валидационные выборки для старта разметки. Нейросеть находит камни и позволяет определить их размер в пикселях, но цель системы — определять их физический размер. Для этого нужно подготовить алгоритм приведения пикселей в миллиметры. Разработка такого алгоритма — одна из важнейших задач после установки камеры. Если выполнить её плохо, это скажется на качестве предсказаний. В самом простом варианте алгоритм представляет одно число, или коэффициент. Тогда размер камней в пикселях просто умножаем на этот коэффициент — и получаем размер в миллиметрах. Но правильнее иметь набор коэффициентов. Каждому пикселю или группе пикселей — свой коэффициент. Это позволяет точнее определять размер каждого объекта, особенно в случаях, когда камера повешена не строго перпендикулярно относительно ленты. Но и получить такой алгоритм сложнее. Потом в ходе калибровки модели этот набор коэффициентов мы привели к оптимальному виду. Важно сказать, что у этого алгоритма есть принципиально неустранимая погрешность. Она возникает из-за того, что руда под камерой постоянно меняет высоту в одних и тех же местах конвейера, а также из-за неоднородности камней. После установки камер на конвейеры мы собрали с камеры объёмные наборы фотоматериалов за разные промежутки времени. Данные отбирались случайно, чтобы внешние условия обучения не создавали ненужных зависимостей. Мы старались отбирать снимки без повторов для усиления выборки. Важно использовать в обучении моделей снимки с пустым и полупустым конвейером. В первых моделях дефицит таких снимков вёл к тому, что модель принимала ленту конвейера за один большой негабарит. Для негабарита и грансостава были разработаны разные модели. Каждая из них прошла четыре доработки алгоритма. Для негабарита изображение сжималось до 800 пикселей, потом определялись контуры с помощью модели распознавания, отсекались камни ниже заданного порога по большей стороне и выводились в интерфейс. Для грансостава изображение резалось на фиксированные ячейки, потом определялись контуры для каждого камня с учётом границ ячейки. После этого изображение склеивалось, ограничиваясь размерами ленты конвейера, и вместе с контурами и классами крупности выводилось в интерфейс. Для разметки данных и работы с моделями мы собрали конфигурацию сервера с хранилищем данных (на MongoDB), функциями запуска и остановки работы системы (Docker-compose) и предиктивными алгоритмами для двух сервисов. Также мы разработали API для взаимодействия с внешними системами. При детектировании негабарита сигнал подаётся на контроллер — и конвейер останавливается. Также API в будущем может использоваться в BI-аналитике (есть возможность выгрузки данных в Excel) или при внедрении так называемого цифрового советника — рекомендательной системы для автоматизации режима работы мельниц. Команда «Полиметалла» активно давала фидбэк при разработке интерфейса, поэтому у нас получилось полностью кастомизированное рабочее место оператора. Важно, чтобы оператору было удобно с ним работать и оперативно принимать решения, — и благодаря усилиям клиента у нас это вышло. В двух интерфейсах есть схожие функции для переключения и активации месторождения, отображения температуры видеокамеры, онлайн-трансляции разметки и общей информации о времени, месторождении и т. д. Но есть и отличия. Рассмотрим их подробнее. Для грансостава показывается среднескользящее распределение — это усредненное интегральное значение распределения фракции за какой-то период. Также настраивается текущее распределение: какой состав руды в процентах сейчас идёт по конвейеру и какая у него динамика. Период настраивает оператор. Для негабарита показывается последний найденный негабарит и статистика по ним за выбранный оператором период. В течение десяти секунд подаётся звуковой сигнал, чтобы привлечь внимание оператора. В ходе работ мы выяснили, что нужно сменить конфигурацию освещения и камеры. Мы перевесили прожекторы и обучили модель заново. Для обогащения данных синтетическими изображениями мы также изменили положение света и камеры, использовали их вместе с новыми размеченными фото. Когда мы вышли на прежние показатели и улучшили их, занялись калибровкой моделей и приведением их в соответствие с реальными данными рассевов. Для оценки качества нейросетей мы использовали стандартный способ: брали отношение площади пересечения двух рамок к площади их объединения — так называемое пересечение, делённое на объединение (intersection over union). Значения — от нуля, полного несовпадения, до единицы, полного совпадения. После этого мы отобрали все блоки со значением IoU выше определенного порога. Обычно это 0,75 или 0,5, в зависимости от задачи. Из отобранных блоков мы посчитали, сколько их в итоге нашлось относительно общего количества камней с ручной разметкой. Это и было нашей метрикой для оценки качества нейросетевой модели. Команда «Полиметалла» активно участвовала в обсуждении и предлагала идеи. Например, они предложили подбрасывать камни, чтобы откалибровать алгоритмы для приведения пикселей в миллиметры. Мы взяли эту идею на вооружение. Для калибровки негабарита мы раскрашивали камни и маркировали их цифрами, чтобы сравнить результаты работы моделей и реальные размеры камней. Для негабарита точность распознавания составила более 90% с показателем уверенности 97%. Только 2 из 30 негабаритов не показываются оператору. Для калибровки грансостава мы подкладывали под камерой линейку в разные места остановленного конвейера, — чтобы проверить и откорректировать пиксели на миллиметр. Для проверки качества определения грансостава мы отбирали погонный метр породы ровно в области видимости камеры, а клиент делал его рассев. И так несколько раз. На полученных данных рассевов мы откалибровали формулу приведения видимого слоя к информации с невидимого. Средняя точность определения камней — более 75% с показателем пересечения более 50%. Испытания проходили две недели. Внутри нашей команды они считаются образцовым примером сдачи-приёмки работ. Нам понадобилась всего одна серия испытаний, которую мы завершили в запланированный срок, — две недели. Всё благодаря хорошей подготовке и калибровке моделей. Для испытаний применялись те же методы оценки, что и при калибровке. Средняя абсолютная ошибка по грансоставу за все дни испытания — менее 5%. MVP показало себя успешно, а высокие показатели работы нейронных сетей говорят о том, что система готова к запуску в промышленную эксплуатацию. Решение можно масштабировать на другие месторождения (мы внедряли систему только для двух точек) и конвейеры. Главным достижением проекта можно считать устранение проблемы с негабаритами. Одно только это окупило все вложения.Второе — сокращение времени на получение информации о гранулометрическом составе руды — с двух часов до десяти секунд. Это позволяет более точно регулировать оптимальную нагрузку на мельницу в реальном времени. Алексей Лапшин, начальник управления автоматизации и цифровизации компании «Полиметалл»