Свиноматка кормит поросят до 26-го дня. За это время она может на них прилечь, что приведёт к тому, что поросят станет чуть меньше, чем было в самом начале. Чтобы этого избежать, используются вот такие станки, как на фото, которые исключают её повороты и хождение по загону. У одной свиноматки — от 10 до 15 поросят. На первой неделе поросята ещё не понимают, что эта туша опасна, и могут не уйти из опасной области, когда она ложится. Когда это происходит, поросёнок громко визжит примерно в половине случаев. Часть поросят можно спасти, если вовремя поднять свинью. Задача — детектировать такие случаи и вызывать сотрудника.
Как видите, этот вариант решения распознаёт поросят на видео и считает их.
Ещё были задачи оптимизации вентиляции в шахте (сэкономить на электричестве, но не убить при этом шахтёров); моделирование растекания жидкости; матмодель расплава; определение каски и очков на сотруднике перед входом в опасную зону и поиск брака на шоколадных батончиках.
Когда представитель MARS сказал, что принесёт обучающую выборку, мы не думали, что это будет четыре коробки шоколадок Twix Minis.
Что это было?
Промышленность принесла задачи, которые решались дорого, долго или вообще непонятно, можно ли их решить. Мы, КРОК, совместно с СИБУРом сделали промышленный хакатон ProHack 4.0 в конце ноября. Основная часть задач поступила от металлургических, нефтегазовых, химических и продовольственных заказчиков. На этот же хакатон мы обеспечили инфраструктуру (в частности, паяльные станции), привели вендоров (датчики газа Пергам, блокчейн-платформа Exonum, Cisco с их кучей решений, BellSoft предоставил решение для сбора, анализа и управления данными на базе Nvidia Jetson Nano и RaspberryPi 4, на которых была предустановлена cреда разработки и запуска Java-приложений, — Liberica JDK). Создавать и тестировать прототипы решений участники могли в гибкой и масштабируемой «песочнице» на основе платформы «КРОК Облачные сервисы». Для нескольких задач были оборудованы технологические зоны, которые соединили сразу всех. Когда в одном месте разработчики, заказчики (причём принимающие решения, а не просто представители), вендоры нужных технологий и эксперты по решению подобных задач — можно за два-три дня сделать то, на что обычно у крупной компании уходит несколько месяцев, причём большая часть этого времени — на согласования.
Собственно по трём из десяти задач так и получилось: прямо на хакатоне удалось их «взять», и заказчик решил внедрять решения команд. Получается, что кто-то пришёл тренироваться и пробовать технологии, кто-то — за призом, а кто-то получил большой контракт.
- 350 заявок на участие, 70 решений на этапе отбора.
- Задачи — вот здесь.
- Самые выбираемые задачи — управление вентиляцией (17 решений), спасение поросят и контроль ношения СИЗ сотрудником.
Что происходило?
Кто-то готовился заранее и на хакатон пришёл уже с чем-то, что надо было дособирать по требованиям заказчика и продемонстрировать. Кто-то писал с нуля. Например, в случае задачи про контроль брака шоколадных батончиков на производственной линии одна из команд пошла в магазин и купила конфет, а потом испортила их, стала фотографировать и учить нейросеть на них, а другая команда подготовила все модули и дождалась реальной обучающей выборки (той самой в коробках на хакатоне с надписями вроде «волосяные трещины» или «раковины») и уже на месте снимала батончики.
Во многих задачах важно было не только написать код, но и объяснить заказчику, как работает решение. Заказчик, как правило, отлично разбирается в своей специфике, но не до конца понимает современное ИТ и потенциал технологии. Поэтому, если речь идёт про поросят, то нужно прямо на видео из загона показать момент тревоги, если речь идёт про вентиляцию — команды собирали модели шахт или же ставили датчики и вентиляторы в разные комнаты нашего офиса.
Из 80 заявленных команд прошло отбор около 50, до физического хакатона доехало 38, а из них 28 дошло до демонстрации решения. 12 команд вошло в шорт-лист, и дальше жюри из заказчиков, представителей вендора и экспертов выбирало победителей. Также свои решения показали две команды КРОК.
Были команды, которые просто отваливались посреди процесса, так как понимали, что не смогут взять задачу. Обычно на хакатонах такого плана бывает негатив в сторону организаторов: мол, что-то не обеспечили, и поэтому мы зря сходили. У нас (как мне кажется) такого не было, потому что мы постарались именно в техническом плане предоставить всё возможное. Отдельное спасибо — заказчикам, которые не просто поставили задачи и ушли, а отвечали на все вопросы. В том числе в чате в два часа ночи. Серьёзно ошиблись мы с едой: было много сладкой газировки, фастфуда и выпечки, но почти не было здоровой еды. Подумали, что молодёжи нужны пицца с колой. Зато вот:
Это потому, что наши инженеры часто спят на объектах во время долгих работ, и в этой-то части они хорошо понимают, что нужно.
Краткий разбор задач и решений
ПАО «Газпром нефть», задача структурирования датасета
Компания закупает очень много разной арматуры и получает сотни прайс-листов в XLS-формате. Задача — распарсить их, понять, где какие наименования одинаковы по функционалу (один и тот же металлический прут может называться по-разному, и два похожих разных прута, например, из разных марок стали могут выполнять одну и ту же задачу для данной закупки, то есть быть прямыми аналогами), и собрать из этого потом механизм оптимизации закупки. Но сначала — просто привести всё к одному более-менее сравнимому виду.
Решение типовое — нейросети, это классическая задача уровня Kaggle. Особенность в том, что обучающая выборка представлена заказчиком. Тестовой не было, фактически её нужно было выделять из обучающей, спрашивая заказчика, что, как и почему. Позже заказчик взял прототип тестировать на новых выборках.
Логистика — согласование с контрагентами
Нужно было показать прототип системы, где контрагенты компании могут согласовывать документы.
За сутки вкрячили подпись, которая валидируется на Waves. Очень интересная часть решения — гибкая структура хранения данных, поскольку у каждого из контрагентов — свои форматы хранения. Так вот, хранится именно в них, и у базы данных есть условное API, которое может преобразовывать данные к формату любого из контрагентов. Это в перспективе очень удобно для data-lake.
Умная вентиляция в шахте
Два финалиста в этой задаче. Команда из Казани привезла свои железки, и они во многом решали задачу за счёт своего хардового превосходства. Из 17 заявок только Казань ушла с блютуз-маячков или их аналогов на прослушивание эфира (поиск маяков на человеке в зоне доступа фактически), а в качестве канала связи предложила LoRa. У них была правильная матмодель распространения газа. В отличие от остальных команд они понимали особенности скорости дегазирования и необходимость делать многие вещи заранее до входа людей в зону. Понимали, что есть проталкивающие вентиляторы и вытягивающие (наверху). В прототипе был даже светодиод-канарейка на базе датчика Пергама.
Вторая команда, наоборот, очень серьёзно заморочилась софтверной частью и предиктивными моделями. Пошли от экономики, начали учитывать предсказание движения людей (если рабочий идёт в тупик, то нужно сильно заранее начать вентилировать), рассмотрели кучу кейсов — от простого планировщика управления вентиляцией и заканчивая стационарными газоанализаторами, потом насытили шахту носимой электроникой. То есть сделали пошаговый план внедрения без остановки процессов. Сделали прототип, склеили и скрепили изолентой.
На демонстрации отправили «шахтёра» гулять по офису, который насытили дымом кальяна.
Поросята
В целом решение для агрокомплекса вы уже знаете. Важно отметить то, что снимали тестовое видео с рук на телефон и не с самого удачного ракурса. Заказчик не представлял возможности современной видеоаналитики и не верил поначалу, что можно взять решение так, скорее рассчитывал на детекцию визга или датчики под свиньёй. В этой задаче (как и в части других) вне зачёта участвовали наши команды (всё же в КРОК — две тысячи человек, и многие тоже хотели на хакатон, но мы решили, что наши команды не должны идти в общем зачёте). Наша команда смогла хорошо детектировать ситуации, но при этом почти не заморачивалась на интерфейс. Лидеры в общем зачёте сделали очень качественный интерфейс оповещения, но при этом страдала точность детекции.
Твикс
Обе команды вышли в финал, но место не взяли. Сильные решения: одна заранее готовилась, синтетически нагенерила датасет из издевательств над конфетами из магазинов. Продемонстрировали на ленте конвейера в конце. Вторые на месте снимали батончики из обучающей выборки, размечали данные. Заказчик был очень рад второму решению и сказал, что хочет пилот на производстве.
Средства индивидуальной защиты
Две команды дошли до финала. Одна команда схитрила и добила вводную задачи тем, что АХО должен был сделать цветные наклейки на очки (на дужки) для детекции ещё более высокой точности. Вторая команда взяла промышленную библиотеку с очень хорошей обучающей выборкой по очкам и добилась распознавания без маркировки. В финале на контрольных рабочих оно сработало. Второе место хакатона.
Победители: задача на поиск аномалий в породе на конвейере
Первое место — поиск агломератов. Победили CVisioners, команда студентов. Им нужно было вовремя отправлять людей на производство, чтобы убирать с конвейера «слипшиеся» участки пород и другие помехи. На самом деле всё чуть сложнее, но общее представление это даёт. Суть задачи — поиск помех до того, как произойдёт забивка и всё высыпется наружу.
Датасет размечен, но сформирован на фото с другого ракурса, не как на тестовом видео. Студенты получили реальное видео производственной линии, написали админку, выделили в модели участки, где могут появляться агломераты. Дальше сегментировали, считали каждый отдельный твёрдый фрагмент и сумму радиусов фрагментов. Всё работало на контрольном видео с нормальным допуском. Очень сильно подошли с бизнес-презентацией. Проблематика, архитектура, развитие, внедрение — и при этом всё неинвазивно, без остановки процессов. Заказчик очень доволен.
Команда CVisioners — студенты МФТИ Клим Киреев, Эдгар Казиахмедов, Елизавета Киселева, Кежик Кызыл-оол и Григорий Мельников. Они предложили СИБУРу лучший концепт решения на основе компьютерного зрения для предотвращения случаев забивки оборудования при производстве синтетических каучуков. Когда эта линия встаёт, то отчищать от неё каучук занимает восемь часов. А первый час простоя линии стоит три миллиона рублей.
Второе место заняла команда «1984» из Новосибирска, которая решила задачу ФосАгро, одного из ведущих производителей минеральных удобрений. Система ищет очки и другие СИЗы на работнике. Команда EmptySet из СПбГУ победила в номинации «Лучшая студенческая команда», решив задачу компании «Газпром нефть» по созданию программы определения аналогов запорно-регулирующей арматуры.
Вне основного зачета в хакатоне участвовали команды из офисов разработки ПО КРОК в Москве, Санкт-Петербурге, Краснодаре и Иркутске.
Победителем в отдельной спецноминации для команд из офисов разработки КРОК победила команда SaveStahanov, которая решила задачу института «Уралмеханобр» про умную вентиляцию в шахтах (входит в состав «Уральской горно-металлургической компании», УГМК).
- Задача №1. Газпром нефть. Создание программного комплекса для определения аналогов запорно-регулирующей арматуры. Отрасль: нефтегаз
- Задача №3. ФосАгро. Создание системы видеораспознавания наличия средств индивидуальной защиты (СИЗ) на сотруднике. Отрасль: химическая промышленность
- Задача №4. Уралмеханобр (УГМК). Создание системы умного вентилирования для снижения затрат на электроэнергию. Отрасль: металлургия
- Задача №5. Норникель. Автоматизация взаиморасчётов компаний металлургического холдинга с использованием технологии блокчейн. Отрасль: металлургия
- Задача №6. СИБУР. Задача детектирования растекания жидкости с помощью видеоаналитики. Отрасль:нефтехимия
- Задача №7. СИБУР. Задача детектирования забивки оборудования с помощью видеоаналитики. Отрасль: нефтехимия
- Задача №8. Русагро. Детектирование/устранение случаев придавливания поросят свиноматкой. Отрасль: сельское хозяйство, продовольственная промышленность
- Задача №9. MARS. Контроль качества готовой продукции Twix Minis. Отрасль: продовольственная промышленность
- Задача №10. Группа ЧТПЗ (от Челябинский трубопрокатный завод). Прогнозирование параметров расплавленного металла в дуговой сталеплавильной печи. Отрасль: металлургия
- Задача №12. FM logistic. Разработка системы смарт-контрактов для процесса согласования списка оказанных услуг. Отрасль: логистика
1. Соответствие реализованной функциональности требованиям задачи — 0…5.
2. Трудоёмкость работ, необходимых для доработки MVP с целью пилотирования — 0…5.
3. Проработанность архитектуры и применения технологических решений — 0…5.
4. Соответствие критериям оценки автора отобранной задачи — 0…5.
5. Оценка проведения презентации — 0…5.
6. Оценка проведения демонстрации решения — 0…5.
7. При равенстве баллов по другим критериям оценивается использование инструментов из технологического стека — 0…5.
Итоги
Получилось очень и очень хорошо. Не без сложностей и ошибок, но самое главное — удалось показать заказчикам, что с помощью ИТ можно быстро собирать прототипы по важным для них проблемам.
Приехали люди со всей страны (профессионалы и студенты приезжали из Москвы, Новосибирска, Санкт-Петербурга, Казани, Ижевска и других городов), заказчики кто откуда. СИБУР вот звал одну из команд в штат, из «Газпрома» пришёл отзыв, что студенты за сутки сделали прототип, который внешники не могли полгода сделать за огромные деньги. Заказчики вообще пообщались между собой, поняли проблемы отраслей, а потом живо болели за команды и обсуждали решения. Кажется, у них появился блеск в глазах, когда они поняли, что самые разные проблемы, с которыми люди бьются годами, можно просто взять и решить.
Участники отмечали роль менторов, которые иногда реально спасали ситуацию.
Мы будем делать ещё такие хакатоны: оказалось, что у заказчиков нет доступа к техпартнёрам, инфраструктуре и людям, у молодых разработчиков нет доступа к заказчикам и вендорам, а у всех вместе нет возможности быстро меняться данными (ночной чат в виде официальных писем занял бы два месяца). В итоге все счастливы.
Ссылки
- Сайт хакатона.
- Ещё раз задачи хакатона.
- Видео с мероприятия.
- Моя почта для вопросов (или если вы хотите участвовать в следующем — тоже пишите) —sstrelkov@croc.ru.
Автор: Сергей Стрелков