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

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

У меня возникает вопрос — не думали выделять только движущиеся объекты?


Камеры стационарные, картинка меняется не слишком быстро в большинстве случаев, если объединить с детектором движения и скармливать сетке только движущиеся объекты — можно было бы понизить частоту ложных срабатываний за счет предварительной обработки.

Пробовали, возникали проблемы с точностью, когда люди стояли друг за другом. НС с этим достойно справлялась.

совпадает ли количество распознанных людей и касок в кадре
А что будет, если положить пару касок «в кадр»? =)

Каска — внутри прямоугольника с распознаванием человека. Можно было бы распознавать человеков, если распознано хорошо (98% и выше?), то передавать прямоугольничек (а не весь кадр) в сеть, распознающую каски и если сеть не найдет (0 %), да еще и несколько кадров подряд (и еще можно с разных камер, зависит от покрытия) — только тогда генерировать событие «человек без каски», включать сирену, вызывать копов и тд.

Человек может снять каску ненадолго, чтобы почесаться, отойдя в безопасную зону и поглядывая вверх. Это можно автоматизировать, но наверное не надо. Лучше просто слать кусок видео (10 сек до и 10 сек после) вместе с событием. Злой вахтер (или кто там контролирует безопасность) разберется.

Да, также каска может висеть на поясе, мы тоже об этом сразу подумали :)
Можно скармливать обоим сеткам целый кадр, а затем лишь проверять, что detection boxes накладываются друг на друга (при этом каска должна находиться в "верхней части" человека). К сожалению, я занимался этим проектом ограниченное время и не успел это реализовать.

я правильно понял, что для определения касок Вы разбиваете картинку на квадраты размером примерно в каску и затем ищете каску в каждой картинке? Координаты каски в этом случае — это координаты квадрата?
примерно как вот тут github.com/JustinHeaton/Vehicle-Detection
В случае с OpenCV используется скользящее окно, которое сканирует всё изображение на предмет срабатываний классификатора, изменение размеров окна при этом можно контролировать с помощью соответствующих гиперпараметров.

R-CNN использует более сложный механизм: сначала нейросеть выделяет ряд регионов, которые предположительно соответствуют искомым объектам, а затем проверяет принадлежность региона какому-либо классу объектов.
Заметил, что спецодежда (на фотках из статьи) имеет хорошо заметную белую полосу в центре.
Можно ли упростить распознание человека, если искать не человека, а эту полосу?
Подобные ad-hoc решения как раз свойственны классическим CV-методам (к примеру, на самых начальных этапах разработки мы экспериментировали с поиском каски по ее оранжевому цвету), однако в южных регионах форма спецовок несколько отличается и данная фича будет неприменима. В случае же с нейросетями эффективнее будет просто увеличить и разнообразить используемый для обучения датасет (то есть следовать end-to-end подходу).
Если ходить с шариком, то это будет каска? Поохоже на определение наличия сферической области на diff между кадрами.
В случае с использованием каскадного классификатора отчасти так и есть, в очень редких случаях вместо каски распознавался округлый силуэт плеча (это проявлялось лишь с одним видом спецовок особой расцветки, не представленных на кадрах из статьи). За нейросетью подобных ошибок замечено не было, однако подобную проблему можно было бы решить за счет добавления в датасет проблемных кадров в качестве негативного примера.
А если каски будут массово выглядеть как-то вот так:
image
(встречал конторы, где один себе расписал — и все начали кто во что горазд себе каску красить — в т.ч. очень-очень прилично.
Это является нарушением ГОСТа, регламентирующего цвет каски в зависимости от должности работника, и на площадках работодателя ни разу не встречалось :)
Для тех, кто заинтересуется цветовой дифференциацией касок
ГОСТ 12.4.087-84 ССБТ. Строительство. Каски строительные. Технические условия», пункт 2.3:
Белый цвет каски = Руководящий состав, начальники участков и цехов, инспекторы по ТБ;
Красный цвет = мастера, прорабы, ИТР, Главный механик, Главный энергетик
Желтый и Оранжевый цвет касок = рабочие
Бывал на многих стройках и не видел чтобы ГОСТ соблюдали. Вместо красного часто используют синий, ИТР почти всегда в белых касках. Если задерживают зарплату, то очень часто оранжевые каски начинают носить абсолютна все.
Повторюсь: датасет изображений касок был собран с камер наблюдения на площадках работодателя, каски нестандартных цветов нам не встречались. Однако даже если бы рабочий вдруг появился в кадре в синей каске и если бы НС не смогла её распознать, кадр был бы сохранён как подозрительный (человек есть, каски нет) и добавлен в датасет, таким образом проблема будет решена.

Наконец, наличие каски неправильного цвета можно тоже считать нарушением, если так посчитает нужным руководство, таким образом проблема распознавания нестандартных касок отпадает сама собой :)
ну вот вам красные каски:
image
image
image
я вообще-то вам задал вопрос про возможности вашей системы, а не про юридические тонкости толкования в ГОСТе понятия «цвет». Не проверяли на таких наборах — ок, не попалось, просто имейте в виду, что такое бывает.
Помимо слов про ГОСТ я ответил вам, что это
на площадках работодателя ни разу не встречалось
В комментарии другому пользователю я пояснил, что если бы подобная каска попалась нейросети, но не распозналась, кадр с ней был бы автоматически сохранен для дальнейшего анализа, что позволило бы добавить его в датасет для дообучения.
Кхм, кусок трубы подвешенный на цепях в дверном проёме чуть выше уровня глаз — гораздо эффективнее мотивирует ношение каски. Но к сожалению этот приём запрещён профсоюзами.
А так весь цех в курсе — зашёл новичок, и теперь за его действиями нужно следить — чтоб его куда не намотало.
На одной из фабрик оценил каску :), труба поперек прохода, довольно низко, приходилось сильно наклоняться, сразу за трубой естественно выпрямляешься и с громким стуком (каски) бьешься о следующую трубу, которая находится чуть дальше и выше первой, и ее не видно
Ну так что — тест пройден :)!

Я по работе довольно много в каске ходил и таки она много раз выручала…
Если хочешь быть на коне ))) Нужна нейросеть сортировки бытовых отходов, это становится очень актуально, но распознать какое говно куда нейросетью будет очень сложно при управлении манипуляторами.
Насколько мне известно, опыт европейских стран показывает, что раздельная переработка мусора окупается лишь в том случае, когда его сортировка производится ещё на этапе выбрасывания, а не утилизации. Оттуда и такое внимание к тому, чтобы граждане выбрасывали мусор раздельно — в противном случае его проще обрабатывать по старинке.
Там и «окупается» она лишь за счёт того, что этот труд сортировщиков-граждан не учитывается и не оплачивается. В Германии давно идёт вялотекущая общественная дискуссия, что по-хорошему этот труд надо бы как-то участь-посчитать — даже не столько с целью оплатить, сколько что бы просто самим себе честно понимать-представлять, во сколько человеко-часов стране/нации это дело реально обходится.
А в чём конечная цель проекта? Штрафики собирать с работников, за то что каску не надели?

В том, что если кому-то прилетит кирпич в голую голову, то накажут работодателя.

Спасибо за статью.
Интересная задача, хотел бы тоже поиграть с ней.
А данные какие-нибудь есть? В особенности интересуют размеченные каски

Не уверен, что вправе их предоставить, извините.
Статья интересная, только вопрос такой: каков должен быть размер изображения, чтобы распознать каску? Нередко на всю стройплощадку висит 2-3 камеры, а по площадке гуляют рабочие.
Вообще, насколько реально довести до ума такую систему?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории