Как мы обучили более 300 нейросетевых моделей, чтобы автоматизировать сортировку алмазов на производстве

Привет! Меня зовут Ярослав Шмулёв, я датасаентист, выпускник МФТИ и основатель студии R77 — интегратора AI в корпорации. Расскажу, как я учился вручную сортировать алмазы на производстве, чтобы разработать ML-модель, которая будет классифицировать минералы за людей. Изначально задача звучала как «сделаем за 9 месяцев», но всё пошло не по плану.

Как мы обучили более 300 нейросетевых моделей, чтобы автоматизировать сортировку алмазов на производстве

Предыстория

В 2019-2020 годах, когда я ещё работал на другую компанию, к нам обратилось алмазодобывающее предприятие. Хотели автоматизировать сортировку камней по цвету, форме и качеству. Нам повезло — на производстве уже было оборудование для этих целей, правда со старыми алгоритмами и без ML. Сами понимаете, запустить модель, которая распознаёт минералы по фотографиям, и сделать автомат, который сортирует реальные камни — это не одно и то же.

Сортировочные автоматы на алмазодобывающем предприятии. Проект под NDA, поэтому снимок — просто пример из интернета. Реальное оборудованием во время работы нам фотографировать не разрешали. 
Сортировочные автоматы на алмазодобывающем предприятии. Проект под NDA, поэтому снимок — просто пример из интернета. Реальное оборудованием во время работы нам фотографировать не разрешали. 

Оборудование есть, данные и снимки алмазов — тоже. Казалось, что задача простая. Разработать три ML-модели для сортировки по цвету, форме и качеству можно за 9 месяцев. Как всегда, дьявол кроется в деталях: во время работы всплыло огромное количество нюансов, которые растянули проект на 2 года. В итоге вместо трёх задач мы с командой сделали более 300 нейросетевых моделей, каждая из которых обучена на индивидуальном наборе данных и имеет разную архитектуру. Расскажу, как всё происходило.

Суть кейса кратко

Проблема: как я уже сказал, на заводе были сортировочные автоматы. Их первые алгоритмы разработали ещё в 10-х годах на основе классического компьютерного зрения, поэтому они работали с точностью всего 30-40%. Этого недостаточно, чтобы полностью автоматизировать процесс — специалистам компании всё равно приходилось перебирать алмазы вручную. Ручная сортировка занимала много времени, труд сотрудников дорого обходился предприятию. Кроме того, пропускная способность отдела механической сортировки — невысокая.

Задача: нам требовалось разработать систему, которая повысит точность сортировки алмазов автоматами до 95%. Вытащить старый «мозг» оборудования и вставить более современный — нейросетевой, чтобы он мог сортировать 10 камней в секунду.

Результаты проекта

  1. Повысили точность классификации алмазов до 95% по цвету, до 88% по качеству и до 94% по форме.
  2. Автоматизировали более 80% процесса сортировки минералов.
  3. Подняли экономическую эффективность — компания сортирует в два раза больше алмазов за то же время.
  4. Добились масштабирования системы. Разработанную систему легко адаптировать для работы с разными выходными классами и типами готовых продуктов.

А теперь подробно, как шёл проект и почему разработка системы автоматизации заняла 2 года, а не 9 месяцев.

Почему классифицировать алмазы очень сложно

Сразу поправка: в кейсе я говорю про алмазы, а не про бриллианты. Алмазы — это природные минералы, их добывают в реках, пустынях, карьерах и других местах. Они бывают совершенно разных форм, цветов и размеров. Бриллиантами с идеальными гранями алмазы становятся после огранки.

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

Цвет

Примеры алмазов разного цвета — снимки из сортировочного аппарата.
Примеры алмазов разного цвета — снимки из сортировочного аппарата.

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

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

Форма

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

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

По форме мы тоже выделили порядка 10 классов от цельного кристалла до вытянутого ровного обломка.

Снимки разных форм алмазов из сортировочного аппарата.
Снимки разных форм алмазов из сортировочного аппарата.

Качество

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

Примеры алмазов с дефектами. Включения снижают качество минерала, сложнее классифицировать его цвет.
Примеры алмазов с дефектами. Включения снижают качество минерала, сложнее классифицировать его цвет.

Размеры

Мы поделили группы размерности на две: крупные и мелкие. Проблема в том, что если камень мелкий, это может быть не цельный минерал, а просто обломок или фрагмент. Задача системы — отличать целые алмазы от осколков.

Разные места добычи алмазов

У заказчика было четыре локации, на которых добывают минералы. Каждая — со своими особенностями. Например, камни из рек отличаются от тех, что достают из земли. Распределение характеристик алмазов, добытых из разных мест, тоже сильно разнится. То есть, если нейросетевые алгоритмы обучатся на алмазах из реки, они будут плохо распознавать камни из земли.

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

Как мы учились сортировать алмазы на предприятии

Когда я впервые ехал в сортировочный цех, представлял, что там будет что-то вроде фабрики по производству Tesla: биомеханические руки, длинные конвейеры и другие продвинутые технологии.

На деле всё оказалось прозаичнее — центр похож на лабораторию в университете. Много столов с микроскопами и бархатными покрытиями. Все в халатах, тебя тоже просят переодеться. Утром приходит человек, приносит мешок из под сахара, но с алмазами. Специалисты набирают себе в совок камни, как гречку, и начинают руками их перебирать.

Как мы обучили более 300 нейросетевых моделей, чтобы автоматизировать сортировку алмазов на производстве

В кабинете строжайшая слежка: стоят камеры наблюдения, всем присутствующим запрещено пользоваться телефонами. Я всё время боялся, что какой-нибудь алмаз скатится со стола, упадёт на пол, застрянет в моей подошве, и меня повяжут на выходе. Но обошлось без происшествий.

Мы с командой сидели за обучающим микроскопом с двумя парами объективов и крутили камни под разными углами, чтобы научиться отличать их друг от друга.

Кроме того, требовалось понять, как работает сортировочный автомат.

Как выглядит сортировочный аппарат. Пример из интернета.
Как выглядит сортировочный аппарат. Пример из интернета.

Оборудование состоит из экрана, блока питания, вычислительного сервера и пневматической воронки, в которую насыпают алмазы. Через воронку камни попадают в узел регистрации. Торчащие цилиндры на фото — это профессиональные скоростные камеры с высоким разрешением, которые фотографируют алмаз с разных ракурсов, пока он падает. Эти снимки поступают в алгоритм сортировки. Далее компьютер решает, какой класс поставить этому камню по качеству, цвету и форме. В финале алмазы автоматически распределяются по отсекам, сотрудник достаёт их и перепроверяет результаты собственными руками.

Почему было невозможно разработать алгоритм автоматизации за 9 месяцев

С миллионом особенностей минералов, принципами ручной сортировки и работой оборудования разобрались. Теперь представьте, что у вас есть мешок с алмазами: внутри камни разного цвета, размера и качества. Нельзя взять этот мешок, перебрать камни сначала по цвету, потом обратно всё смешать, классифицировать их по качеству, а в финале проделать всё то же самое, чтобы рассортировать их по форме.

Здесь возможны два варианта алгоритма сортировки:

  1. Классификация по всем параметрам одновременно, но тогда нужно иметь универсальный сортировочный автомат (которых на проекте не было) и кучу бункеров (у нас их было всего 10-12 — этого мало).
  2. Последовательная классификация, когда весь массив данных сортируется на 10 классов по цвету, потом каждый из 10 цветовых классов отдельно прогоняется по форме, а в финале — по качеству.

Так как нужного оборудования не было, выход один — последовательная сортировка. Это сложная задача с точки зрения data science.

Другая проблема — много снимков. Было недостаточно просто обучить нейронную сеть классифицировать изображения. Нужно было сделать так, чтобы она различала объекты, а для этого её необходимо обучать на серии снимков.

Для классификации цвета мы получали 2 снимка — этого было достаточно. А вот для определения формы нам требовалось 9 снимков — чтобы увидеть все грани камня, пока он падает.

При этом съёмка граней падающего алмаза происходила рандомно, поэтому, даже если бы один алмаз прошёл через автомат несколько раз, мы бы получили совершенно разные его изображения. То есть у нас всегда сохранялось вероятность, что при каждом новом забросе в автомат камень будет по-разному классифицирован.

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

Всего этого не было видно, когда мы стартовали проект. Оказалось, что нам нужно разработать больше 300 нейросетевых моделей, и чтобы каждая была обучена на своём наборе данных. И даже после того, как модель обучили, и снимки она распознаёт отлично, в реальном автомате на тех же данных качество сортировки может поплыть из-за сбитых настроек калибровки, проблем с освещением и других особенностей.

Как вели работу

После нескольких недель обучения в цехе мы с командой придумали наиболее оптимальную систему сортировки и утвердили дерево принятия решений по классификации.

Пример дерева принятия решений. Сделано нейросетью для нейросетей.
Пример дерева принятия решений. Сделано нейросетью для нейросетей.

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

Мы договорились с командой заказчика и внедрили схему для сбора датасетов. Сотрудники цеха готовили камни и засыпали их в автомат, который работал не в режиме сортировки, а в режиме съёмки. То есть алмазы просто пролетали мимо камер, которые их фотографировали.

Просили сотрудников собрать 300 камней для каждого класса. Обычно классов на каждый параметр у нас было 10. Чтобы вы понимали, белый цвет, ромбовидная форма, наличие трещин — это всё разные классы. Один датасет состоял из 3000 объектов, а каждый объект был представлен разным количеством снимков.

Далее мы принимали фотографии, обрабатывали их и передавали свёрточным нейронным сетям.

Свёрточная нейронная сеть — это deep learning-алгоритм, который способен принимать изображение, анализировать свойства объекта на нём и присваивать изображение к одному из заданных классов (типов объектов).

Архитектура решения следующая: есть алгоритм сортировки с бэкендом, который получает с камер снимки и отправляет их на ML-модуль. ML-модуль присуждает алмазу качество, цвет и форму. Сам модуль устроен достаточно классически: серия снимков — класс. На проекте использовали несколько GPU (графических процессоров), чтобы повысить скорость работы модели, потому что у нас 100 миллисекундный инференс. Пришлось модернизировать сервер, потому что старый работал на классическом компьютерном зрении с CPU-вычислителем. Для алгоритмов на основе нейросетей такой вариант не подходил.

В течение всей работы заказчик шёл нам навстречу, даже когда понял, что проект займёт 2 года вместо 9 месяцев. Был готов на любую модернизацию сервера и трату времени на подготовку снимков. В итоге новое оборудование автоматизировало более 80% всего процесса сортировки.

Состав команды

Над системой работала команда из 6 человек:

  • 1x менеджер проектов;
  • 1x Data Science team lead;
  • 2x ML-инженера;
  • 2x Backend-разработчика.

Цена

Общая стоимость проекта составила более 100k USD.

Пишите в комментариях, насколько вы ошибались с оценкой AI-проектов?

А ещё подписывайтесь на наш телеграм-канал. Мы не публикуем тухлые новости из мира ИИ, зато много рассказываем, как помогаем корпорациям расти с помощью data science, делимся внутрянкой и факапами.

1111
4 комментария

Интересный кейс 🤩

1

Очень интересная история, спасибо!

1

100k USD / 24 мес = 4k+ USD в месяц
На 6 чловек с зарплатой от 1000$ до 5000$ в месяц каждого
Недорого получилось :)
Видимо какая то горсточка алмазов была утилизирована при разметке датасета.

1

Неплохой расчет, но кажется вы не очень внимательно прочитали статью :) Планировался проект на 9 мес (читаем бюджет), а делали 24+ мес)))