Обнаружение отсутствующих СИЗ: обучение Ultralytics YOLO на Construction-PPE
Посмотри, как в Construction-PPE размечены отсутствующие каски, жилеты и перчатки, а затем обучи Ultralytics YOLO обнаруживать отсутствие СИЗ на камерах твоего объекта.
Paula Derrenger11 мин. чтения
Чтобы надежно обнаруживать отсутствие СИЗ, размечай только то, что видно камере. В новом датасете Ultralytics Construction-PPE голова, скрытая за стальной балкой, не считается головой без каски. Метку no_helmet получает только видимая голова без каски, а скрытая или выходящая за границы кадра голова вообще не получает метку отсутствующего средства защиты.
Мы выпустили датасет 3 ноября 2026 года в Ultralytics 8.4.200: 1 000 изображений, 12 классов и 14 863 проверенных ограничивающих рамки для людей, погрузчиков, защитного оборудования и видимого отсутствия средств защиты; изображения и аннотации распространяются по лицензии CC BY 4.0. Среди классов есть отдельные no_vest и forklift, а аннотации проверила команда Ultralytics. В этом руководстве рассказывается, что входит в датасет, как работают правила разметки отсутствующих СИЗ и как обучить, проверить и развернуть на нем модель Ultralytics YOLO26.
Construction-PPE — проверенный датасет для обнаружения СИЗ с 12 классами#
Construction-PPE — оригинальный датасет для обнаружения объектов на строительных и промышленных площадках, созданный и опубликованный в открытом доступе командой Ultralytics в ноябре 2026 года. На изображениях представлены стройплощадки, мастерские, склады, зоны погрузки и ремонтные работы; различаются ракурсы, освещение, расположение работников и активность погрузчиков. Датасет учит детектор распознавать как защитное оборудование, так и его видимое отсутствие.
Перед обучением ознакомься с важными сведениями из документации по датасету Construction-PPE:
- Размер: 1 000 изображений и 14 863 ограничивающие рамки в 12 классах
- Разбиение: фиксированное разбиение на 800 изображений для обучения и 200 для валидации, без отдельной тестовой выборки
- Формат: ограничивающие рамки в формате Ultralytics YOLO, готовые к обучению без преобразования
- Изображения: собранные людьми и сгенерированные изображения в альбомной, портретной и квадратной ориентации с разными разрешениями
- Аннотации: экспертная ручная разметка в сочетании с автоматической разметкой с помощью ИИ; выполнена командой Ultralytics в ноябре 2026 года
- Лицензия: изображения и аннотации распространяются по лицензии Creative Commons «С указанием авторства» 4.0 Международная, которая разрешает коммерческое использование с указанием авторства
Сгенерированные изображения не являются фотографиями реальных событий, поэтому окончательную проверку любой обученной здесь модели нужно проводить на записях с твоих камер.
Ты можешь просмотреть все изображения и аннотации на Ultralytics Platform, скопировать датасет в свою рабочую область или сразу обучить на нем модель.

Для каждого класса оборудования предусмотрен соответствующий класс его отсутствия#
12 классов делятся на три группы: пять классов оборудования, пять классов отсутствующего оборудования и два класса людей и транспортных средств на площадке. Идентификаторы ниже соответствуют аннотациям и construction-ppe.yaml:
| Идентификатор | Класс | Что размечается рамкой |
|---|---|---|
| 0 | helmet | Защитная каска |
| 1 | gloves | Рабочие перчатки |
| 2 | vest | Сигнальный жилет, куртка или рубашка повышенной видимости |
| 3 | boots | Защитные рабочие ботинки или обувь |
| 4 | goggles | Защитные очки |
| 5 | Person | Человек |
| 6 | no_helmet | Видимая голова без каски |
| 7 | no_goggle | Видимая область глаз без защитных очков |
| 8 | no_gloves | Видимая кисть без перчатки |
| 9 | no_boots | Видимая стопа или обувь без защитной рабочей обуви |
| 10 | forklift | Погрузчик |
| 11 | no_vest | Видимый торс без сигнальной одежды повышенной видимости |
Для каждого класса оборудования есть соответствующий класс с пометкой "отсутствует". Благодаря этому модель получает прямые примеры отсутствующего оборудования и может сама отметить непокрытую голову или торс без жилета, а не заставляет твой код определять отсутствие по отсутствующей рамке.

Метки отсутствующих СИЗ указывают на видимые части тела, а не на предположения#
Для классов отсутствующего оборудования нужно точное определение. Если бы аннотаторы обводили рамками каждую голову, на которой не видна каска, включая головы за балками или обрезанные краем кадра, модель усвоила бы, что сама окклюзия означает нарушение.
В Construction-PPE действует единое правило для всех пяти классов отсутствующего оборудования: рамка отсутствующего оборудования охватывает видимую область тела, где должно находиться это оборудование; скрытая или выходящая за границы кадра часть тела сама по себе не служит основанием считать оборудование отсутствующим. На практике:
- Рамка
no_helmetставится на видимую голову без каски. - Рамка
no_glovesставится на видимую голую кисть, а не на кисть, спрятанную за ящиком с инструментами. - Рамка
no_vestставится на видимый торс без сигнальной одежды повышенной видимости. - Рамка
no_bootsставится на видимую стопу или обувь, не относящуюся к защитной рабочей обуви. - Рамка
no_goggleставится на видимую область глаз без защитных очков. - Рамки классов оборудования охватывают сам видимый предмет: жилет получает одну рамку, а человек, который его носит, — другую.

Слева голова работника скрыта листом фанеры, который он несет, поэтому по меткам нельзя сказать, есть ли на нем каска. Справа видимая голова без каски и видимый торс без сигнальной одежды повышенной видимости получают рамки отсутствующего оборудования.
Это важно и для разметки данных за пределами этого датасета. Если ты дополнишь Construction-PPE изображениями со своих камер, размечай их по тому же правилу, иначе модель получит два противоречивых ответа на один вопрос. Урок Ultralytics Academy о рекомендациях по разметке показывает, как включить такое правило в руководство по разметке и почему проверка с участием человека позволяет выявить случаи, которые пропускает автоматизация.
Классы forklift и no_vest помогают учитывать зоны движения транспорта в той же модели#
Многие правила безопасности на площадке касаются совместного нахождения людей и транспорта, а не только отсутствующего оборудования. Класс forklift позволяет обнаруживать транспортные средства и работников одной моделью, поэтому одна модель YOLO26 за один проход может распознать погрузчик, людей рядом с ним и видимые торсы без сигнальной одежды повышенной видимости.
Благодаря отдельному классу no_vest модель, обученная на Construction-PPE, может за один проход выдать рамки классов forklift, Person и no_vest для зоны погрузки.

Связать эти рамки в одно событие — задача логики приложения: сопоставить каждую рамку no_vest с нужным человеком, определить, что считать "рядом" с погрузчиком, и задать длительность сохранения условия. Если тебе нужно измерить близость, руководство по расчету расстояния описывает вычисление расстояния в пикселях между центрами выбранных рамок; для расстояний в реальном мире нужна калибровка камеры.
Обучи YOLO26 на Construction-PPE всего за несколько строк#
Начни с пакета Ultralytics для Python. При первом запуске YOLO скачает и распакует архив датасета.
from ultralytics import YOLO
# Начни с нано-модели YOLO26, предварительно обученной на COCO
model = YOLO("yolo26n.pt")
# Обучи модель на архиве Construction-PPE
model.train(
data="https://github.com/ultralytics/assets/releases/download/v0.0.0/construction-ppe.zip",
epochs=100,
imgsz=640,
)Эквивалентная команда CLI состоит из одной строки:
yolo detect train model=yolo26n.pt data=https://github.com/ultralytics/assets/releases/download/v0.0.0/construction-ppe.zip epochs=100 imgsz=640Модель YOLO26n — хороший вариант для первого запуска и проверки процесса. Перчатки, очки и ботинки на расстоянии, характерном для камер на площадке, выглядят мелкими объектами, поэтому перед окончательным выбором сравни результат с более крупной моделью, например YOLO26s или YOLO26m; в документации по обучению описаны размер изображения, размер пакета и все остальные аргументы. Ultralytics также публикует блокнот Colab для Construction-PPE, если ты предпочитаешь бесплатно использовать GPU в браузере.
Не хочешь писать код? Обучи модель на Ultralytics Platform#
На Ultralytics Platform открой датасет Construction-PPE и запусти обучение в облаке с моделью YOLO26, выбрав в браузере число эпох, размер изображения и GPU. Platform отслеживает кривые потерь, точность, полноту и mAP для каждой эпохи, а также позволяет сравнивать запуски бок о бок. Чтобы добавить изображения со своих камер, скопируй датасет из раздела Explore (см. руководство по разделу Explore на Ultralytics Platform), загрузи изображения и разметь их в редакторе аннотаций, где Smart Annotation подготовит рамки для проверки.
Оценивай модель по каждому классу, а не по одному среднему показателю#
Одно значение mAP не дает специалистам по безопасности нужной информации. Модель может показать хороший общий результат, надежно обнаруживая людей, каски и жилеты, но пропускать большинство случаев no_gloves или no_goggle. Проверяй метрики отдельно для каждого класса:
from ultralytics import YOLO
model = YOLO("runs/detect/train/weights/best.pt")
metrics = model.val() # uses the dataset's 200-image validation split
print(f"mAP50: {metrics.box.map50:.3f} mAP50-95: {metrics.box.map:.3f}")
for c in metrics.box.ap_class_index:
print(f"{model.names[c]:>10} mAP50-95: {metrics.box.maps[c]:.3f}")Сначала изучи строки с отсутствующим оборудованием и открой матрицу ошибок, сохраненную при валидации. Если классы helmet и no_helmet путаются или класс отсутствующего оборудования обнаруживается редко, изучи пропущенные изображения и проверь, сколько экземпляров этого класса попало в обучающую выборку, прежде чем менять что-либо еще. В руководстве по метрикам производительности YOLO объясняется, как читать каждый график.
200 валидационных изображений взяты из той же коллекции, что и обучающая выборка. Перед развертыванием собери независимую выборку с камер, на которых модель действительно будет работать, проверь ее и используй для оценки качества на своей площадке.
Преврати обнаружения отсутствующих СИЗ в события, удобные для проверки#
Поскольку отсутствие оборудования представлено отдельным классом, первое правило проверки можно сформулировать кратко: отмечай каждый кадр, где обнаружена рамка отсутствующего СИЗ с уверенностью выше заданного порога.
from ultralytics import YOLO
MISSING = {"no_helmet", "no_goggle", "no_gloves", "no_boots", "no_vest"}
model = YOLO("runs/detect/train/weights/best.pt")
for r in model.predict("site_camera_frame.jpg", conf=0.4):
for cls, conf in zip(r.boxes.cls.int().tolist(), r.boxes.conf.tolist()):
if r.names[cls] in MISSING:
print(f"Review: {r.names[cls]} ({conf:.2f})")Для видео замени predict на track. Отслеживание объектов присваивает обнаруженным объектам идентификаторы в разных кадрах. Затем приложение сопоставляет каждую рамку отсутствующего СИЗ с дорожкой человека, например проверяя, какая рамка Person ее содержит, и применяет правила длительности и формирования событий, чтобы проверяющие видели одно событие, а не серию кадров:
Начиная с Ultralytics 8.4.202, сохраненные предсказания для потоков RTSP и веб-камер используют частоту кадров соответствующего потока, поэтому записанные клипы воспроизводятся с правильной скоростью. Когда модель будет готова, экспортируй модель в ONNX, TensorRT, OpenVINO или другой формат для граничного устройства либо разверни ее через Platform на выделенной конечной точке.
Детектор сообщает, что видит камера. Он не может оценить, сертифицирована ли каска и поврежден ли жилет, поэтому направляй обнаруженные события на проверку человеку.
Кому подойдет Construction-PPE#
Используй Construction-PPE как отправную точку для обнаружения пяти типов СИЗ и их отсутствия на стройплощадках, в мастерских, на складах и в зонах погрузки. Датасет подойдет тебе, если нужно:
- Обнаруживать отсутствующее оборудование, а не только имеющееся. Пять отдельных классов отсутствующего оборудования, размеченных по единому правилу видимости частей тела, дают модели прямые примеры отсутствующих средств защиты.
- Распознавать транспорт и пешеходов одной моделью. Классы
forklift,Personиno_vestвместе охватывают сценарий в зоне погрузки. - Понятные условия лицензирования датасета и готовая к обучению разметка. Изображения и аннотации распространяются по лицензии CC BY 4.0, разрешающей коммерческое использование с указанием авторства, а метки в формате YOLO можно использовать для обучения YOLO26 без преобразования. Модели YOLO, которые ты обучишь на этом датасете, лицензируются отдельно; см. вопрос о лицензии ниже.
Если для твоего проекта достаточно массового обнаружения касок и жилетов, на Ultralytics Platform также доступен датасет Safety Helmet and Reflective Jacket с 10 138 изображениями и 2 классами. Для обнаружения только касок подойдет Safety Helmet Detection: в нем 5 000 изображений с метками head, helmet и person. Чтобы ознакомиться с полным процессом работы на объекте — от определения первого правила до мониторинга развернутой модели, — прочитай наше руководство по обнаружению СИЗ и безопасности на рабочем месте с Ultralytics.
Часто задаваемые вопросы
Обучай модель на отдельных классах отсутствующего оборудования, например
no_helmetиno_vest, размечай их только там, где видна соответствующая часть тела, и проверяй метрики каждого класса на изображениях со своих камер, прежде чем полагаться на оповещения. В Construction-PPE представлены пять таких классов с единым правилом видимости.Это зависит от нужных тебе классов. Датасет Ultralytics Construction-PPE охватывает 12 классов, включая пять классов отсутствующего оборудования,
forkliftиPerson, на 1 000 проверенных изображениях по лицензии CC BY 4.0. Если нужны только каски и жилеты, Safety Helmet and Reflective Jacket на Ultralytics Platform предлагает больше изображений, а Safety Helmet Detection подходит для обнаружения только касок; для развертывания на объекте в любом случае добавь изображения со своих камер.В версии, выпущенной в ноябре 2026 года, 1 000 изображений, 14 863 ограничивающие рамки и 12 классов; выборка разделена на 800 изображений для обучения и 200 для валидации. Классы: helmet, gloves, vest, boots, goggles, Person, no_helmet, no_goggle, no_gloves, no_boots, forklift и no_vest.
Установи или обнови пакет
ultralytics, загрузиyolo26n.ptи вызовиmodel.train(), передав URL архива Construction-PPE в качествеdata, например, с помощьюepochs=100иimgsz=640. Также можно обучить модель без кода, используя облачное обучение на Ultralytics Platform.Отдельные классы отсутствующего оборудования дают модели прямые примеры отсутствия, поэтому она может обнаружить видимую голову без каски как самостоятельный объект. Простое правило «нет рамки каски внутри рамки человека» может принять скрытую голову за голову без каски, если дополнительно не проверять видимость. В Construction-PPE отсутствующее оборудование размечается только там, где видна соответствующая часть тела, что поддерживает первый подход.
Да. Изображения и аннотации распространяются по лицензии Creative Commons «С указанием авторства» 4.0 Международная, которая разрешает распространение и адаптацию, в том числе коммерческое использование, при условии указания авторства. Укажи команду Ultralytics, добавь ссылки на датасет и лицензию и отметь внесенные изменения. Это относится только к датасету: модели Ultralytics YOLO, которые ты на нем обучишь, лицензируются отдельно (см. следующий вопрос).
По умолчанию все обученные модели Ultralytics YOLO распространяются по лицензии AGPL-3.0, в том числе модели, обученные на Construction-PPE. Чтобы использовать код или модели Ultralytics YOLO, нужно либо опубликовать исходный код всего проекта по лицензии AGPL-3.0, либо получить коммерческую лицензию Ultralytics. Это также относится к внутреннему использованию и исследованиям и разработкам. Если ты хочешь сохранить проект закрытым, тебе нужна коммерческая лицензия.
Автор
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.










