Как стать автором
Обновить

Комментарии 14

Здесь мы видим изображение с камеры (в данном случае камеры тестового стенда, под которую мы подкладываем черно-белую распечатку фото детали), результат обработки детали моделью сегментации и топ 16 предсказаний модели (если вдруг модель ошибется с топ 1 предсказанием, то все-равно с вероятностью более 99.9% ее можно отыскать в топ 16). Для найденной детали мы видим ее наименование и позицию на карте склада с указанием номера полки.

Обучение с подкреплением не делали?
Если да, то каким способом?

Например можно пользователя заставлять «ткнуть» на верную деталь. Если она не на первом месте — записывать данное изображение в обучающую выборку для дообучения модели.

Дообучать можно сразу (если данных мало) или раз в сутки.

Таким образом через год эксплуатации можно выйти на 99.9999%.

Или не прав?
Обучение с подкреплением не делали?
Нет. Здесь все «классически» сделано.

Например можно пользователя заставлять «ткнуть» на верную деталь. Если она не на первом месте — записывать данное изображение в обучающую выборку для дообучения модели.

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

Таким образом через год эксплуатации можно выйти на 99.9999%.
99.9999% это вряд ли. Всегда будут кейсы, когда распознавание будет сильно хуже среднего. У нас цель — ускорить работу кладовщика. Целевая метрика — 98% правильно распознанных деталей. Все что выше, это хорошо, но экономия, к примеру, 0.1% времени свыше 98% уже незаметна с точки зрения бизнеса. Поэтому экономически нецелесообразно тратить усилия на такие улучшения (хотя с точки зрения дата-саенса улучшить результат можно).
А разве детали, поступающие на склад партиями не имеют артикула на упаковке или сопровождающих документах?
Часто бывает, что детали одной формы имеют разные характеристики.

Вероятнее всего, это склад при производстве, т.е. завод сам их и производит.

Так и есть. Кладовщик как раз и клеит наклейки.
Если кладовщик клеит наклейки — это штучное производство, а ни как не (десятки тысяч наименований).
Честно говоря, я лично ни разу не был на самом складе и не видел что они приклеивают. Возможно, номер партии прикладывают. А так в день поступает ~600 деталей.
судя по деталям, должно быть большое количество похожих деталей, только разного физического размера(разного диаметра фланцы либо разной длины пластины). Есть ли такая проблема и как её решить, если маски по сути получаются идентичными?
На самом деле так и есть. И мы ее решаем. Только ввиду формата блог-поста я не описал всех деталей.
В нашем случае, мы во время трейна снизу изображения добавляем масштабную шкалу (черные и белые чередующиеся полоски) в 50% случаев (чтобы модель работала как со шкалой, так и без).
Во время инференса, если расстояние от камеры до детали статично (как в случае камеры на входе склада), то мы также добавляем шкалу.
Если же инференс будет с камеры телефона (пока не реализовано), то шкала не добавляется.
Со шкалой модель не путает разные размеры.
Можете рассказать в двух словах каким образом у вас организована поставка деталей на склад? Раз это производство, то по идее детали должны изготавливаться по заказ-нарядам (или как там называется документ?) в которых, среди прочего, должен быть указан код основного документа (чертежа или CAD файла), номер, ID, «имя» или что-то еще уникальное для детали. И на склад изготовленная партия, в теории, должна приходить с какой-никакой сопроводительной документацией (опять же код детали, кто ее изготовил и т.п.). Или на склад их приносят со словами «нате вам железо», а дальше это ваши проблемы?

P.S. Ваше решение классное, все дела. Просто хочется понять почему реальная проблема на производстве нуждается именно в таком, весьма сложном, решении.
Да, конечно.
Склад промежуточный и используется между операциями (после того как деталь вырезана, но до покраски/сборки узлов). Заказ-наряд есть, но он не отражает полного списка произведенного. Чтобы отходов производства было меньше, в остающиеся свободные места на металлическом листе добавляют детали, которых нет в заказ-наряде, но они повышают коэффициент использования материала.
А для деталей, которые есть в списке, новый кладовщик, даже видя наименования, не всегда может соотнести их с тем что видит. Поэтому, даже имея наименования деталей, ему приходится рыться в каталогах, чтобы понять как деталь выглядит. С опытом они, наверняка, и в полной темноте могут детали отличать и место хранения находить, но из-за текучки опыт постоянно обнуляется. Изо дня в день заказы меняются по наименованиям (мелкая серия). А т.к. перечень деталей больше 10000 наименований, то постоянно попадаются детали, которых кладовщик раньше не видел.
Через пару месяцев кладовщик меняется и все начинается по новой.
Весьма интересный материал!
Какой софт (скорее фреймворк) был использован для написания моделей классификации/сегментации?

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

Фон, как пример — коврик для резки.
Весьма интересный материал!
Спасибо.

Какой софт (скорее фреймворк) был использован для написания моделей классификации/сегментации?
На pytorch делалось.
Классификация на «голом» ResNet-50.
Сегментация на github.com/qubvel/segmentation_models.pytorch
Аугментация на github.com/albumentations-team/albumentations

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

Если правильно понимаю, фон вносит коррективы в распознавание деталей. Так можно использовать определённую или наиболее подходящую подложку (с контрастным фоном, точками привязки, линейкой и т.д.).
Фон, как пример — коврик для резки.
Это тоже используется. Несмотря на то, что модель неплохо работает с широким спектром фоновых материалов при разных уровнях освещения, на однотонном контрастном фоне результат становится еще лучше. В продакшне под камерой располагается стол, который «на всякий случай» окрашен в зеленый цвет и сверху есть доп. подсветка.
Благодарю за развёрнутый ответ.
Не воспринимайте слишком серьёзно, но если деталь протирать перед съёмкой чистящей салфеткой или каким-либо составом для обработки металла — контрастность должна быть еще выше.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий