Первоначально опубликовано на https://www.ideas2it.com

Обзор
В отчетах Всемирной организации здравоохранения (ВОЗ) предполагается, что двумя основными путями передачи вируса COVID-19 являются капельно-капельным путем и физически контактным путем. .

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

Капли могут также попасть на поверхности, где вирус может оставаться жизнеспособным; таким образом, непосредственное окружение инфицированного человека может служить источником передачи (контактная передача). Ношение медицинской маски является одной из профилактических мер, которые могут ограничить распространение некоторых респираторных вирусных заболеваний, включая COVID-19.

В этом исследовании медицинские маски определяются как плоские хирургические или процедурные маски. или со складками (некоторые имеют форму чашек); они крепятся к голове ремнями. Они тестируются на сбалансированную высокую фильтрацию, достаточную воздухопроницаемость и, опционально, на устойчивость к проникновению жидкости. В исследовании анализируется набор видеопотоков/изображений для выявления людей, которые соблюдают правительственное правило ношения медицинских масок. Это может помочь правительству принять соответствующие меры против людей, которые не соблюдают требования.

Цель
Идентифицировать человека на изображении/видео в маске с с помощью компьютерного зрения и алгоритма глубокого обучения с использованием библиотеки PyTorch.

Подход
1. Обучение модели глубокого обучения (MobileNetV2)
2. Применение детектора маски к изображениям/живому видеопотоку

Блок-схема

Данные в источнике
Необработанные изображения, используемые для текущего исследования, были загружены из статьи PyImageSearch, и большинство изображений были дополнены OpenCV. Набор изображений уже был помечен как маска и без маски. Присутствующие изображения были разного размера и разрешения, вероятно, извлеченные из разных источников или с машин (камер) с разным разрешением.

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

Структуры глубокого обучения
Для реализации этой сети глубокого обучения у нас есть следующие варианты.

Мы используем PyTorch, потому что он работает на Python, а это означает, что любой, у кого есть базовое понимание Python, может приступить к созданию своих моделей глубокого обучения. Кроме того, он имеет следующее преимущество по сравнению с TensorFlow 1. Параллелизм данных 2. Похоже, a Framework.

В PyTorch я использовал следующий модуль для разработки алгоритма:

  • PyTorch DataLoader — используется для загрузки данных из папки изображений.
  • PyTorch DataSets ImageFolder — используется для поиска источников изображений, а также имеет предопределенный модуль для маркировки целевой переменной.
  • Преобразования Pytorch — помогли применить шаги предварительной обработки к исходному изображению при чтении из исходной папки.
  • Устройство PyTorch — определяет возможности работающей системы, такие как мощность процессора или графического процессора, для обучения модели. Это поможет нам переключить использование системы.
  • Pytorch TorchVision — это поможет нам загрузить ранее созданные библиотеки. Например, предварительно обученные модели, источники изображений и так далее. Это один из основных в PyTorch
  • PyTorch nn — это один из основных модулей. Этот модуль помогает нам создавать собственные модели глубокой нейронной сети (DNN). В нем есть все библиотеки, необходимые для построения модели. Например, линейный слой, слой свертки с 1D, conv2d, conv3d, последовательность, CrossEntropy Loss (функция потерь), Softmax, ReLu и так далее.
  • PyTorch Optim — помогите нам определить оптимизатор модели. это поможет модели хорошо изучить данные. Например, Адам, SDG и так далее.
  • Pytorch PIL — помогает загрузить изображение из источника.
  • PyTorch AutoGrad — еще один важный модуль, он обеспечивает автоматическую дифференциацию всех операций с тензорами. Например, одна строка кода .backward() для автоматического расчета градиентов. Это очень полезно при реализации обратного распространения в DNN.

Алгоритм классификации изображений от PyTorch
CNN (Сверточная нейронная сеть) имеет множество версий предварительно обученных и хорошо спроектированных сетей, например AlexNet, ResNet, Inception, LeNet, MobileNet и так далее. В нашем случае я выбрал MobileNetV2 из-за его легкой и очень эффективной модели, ориентированной на мобильные устройства.

MobileNetV2
MobileNetV2 основывается на идеях MobileNetV1 [1]. , используя отделимую по глубине свертку в качестве эффективных строительных блоков. Однако в версии 2 в архитектуре появились две новые функции: 1) линейные узкие места между слоями и 2) короткие соединения между узкими местами1. Базовая структура показана ниже.

Архитектура MobileNetV2
Типичная архитектура MobilenetV2 имеет столько уровней, сколько указано ниже. В Pytorch мы можем использовать библиотеку моделей в TorchVision для создания модели MobileNetV2 вместо определения/создания собственной модели.

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

Почему стоит выбрать MobileNetV2?
На основе набора данных ImageNet MobileNetV2 превосходит MobileNetV1 и ShuffleNet (1.5) с сопоставимым размером модели и вычислительной стоимостью. А также он будет хорошо работать для меньшего набора данных.

Детектор маски для лица

Тренировка с маской для лица

Как описано выше, я использовал расширенные данные, которые представляют собой меньший набор данных. Я также применил все необходимые реквизиты предварительной обработки поверх исходных изображений, используя преобразования PyTorch, PIL и наборы данных.

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

Изображение 1: Пример тренировочного набора

Модель перезаписана

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

Функция softmax последнего слоя дает результат двух вероятностей, каждая из которых представляет собой классификацию «маскировать» или «не маскировать».

Обзор точности

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

Изображение 2: Обучение и точность проверки

Проба

Для справки я прикрепил результат прогнозирования одного изображения.

Изображение 3: Тестовый образец

Обнаружение маски лица в потоке с веб-камеры

Поток для определения человека в веб-камере в маске или без. Процесс состоит из двух частей.

1. Чтобы идентифицировать лица в веб-камере
2. Классифицировать лица на основе маски

Определите лицо в веб-камере

Для идентификации лиц использовалась предварительно обученная модель, предоставленная фреймворком OpenCV. Предварительно обученная модель основана на детекторе Single-Shot-Multibox Detector (SSD) и использует архитектуру ResNet-10 в качестве основы. Модель обучалась на веб-изображениях. OpenCV предоставляет 2 модели для этого детектора лиц:

1. Версия с плавающей запятой 16 исходной реализации Caffe.
2,8-битная квантованная версия с использованием Tensorflow
В этом примере я использовал модель Caffe. в этом детекторе маски для лица.

Базовая архитектура SSD

Single-shot MultiBox Detector — это одноэтапный алгоритм обнаружения объектов. Это означает, что, в отличие от двухэтапных моделей, для твердотельных накопителей не требуется этап генерации начальных объектных предложений. Это делает его, как правило, быстрее и эффективнее. Эта модель вернет массив лиц, обнаруженных на видеокадре.

Классификатор лицевых масок

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

Идентификация лицевой маски в потоке

Видео тестирования прикреплено здесь.

Случаи применения

Вот несколько вариантов использования этой технологии обнаружения масок.

Аэропорты
Систему обнаружения лиц в масках можно использовать в аэропортах для обнаружения путешественников без масок. Данные о лицах путешественников могут быть зафиксированы в системе на входе. Если обнаруживается, что у путешественника нет маски для лица, его фотография отправляется властям аэропорта, чтобы они могли быстро принять меры.

Больницы
Использование лица Система обнаружения масок. Больницы могут отслеживать, делают ли это люди, находящиеся на карантине, которые должны носить маску, или нет. То же самое относится и к наблюдению за дежурным персоналом.

Офисы и рабочие места
Систему обнаружения лицевых масок можно использовать в офисных помещениях, чтобы убедиться, что сотрудники соблюдение норм безопасности на производстве. Он отслеживает сотрудников без масок и отправляет им напоминание о необходимости носить маску.

Правительство
Чтобы ограничить распространение коронавируса, полиция может развернуть детектор лицевых масок. на своем парке камер наблюдения, чтобы обеспечить обязательное ношение масок в общественных местах.

Вывод

В текущем исследовании использовались OpenCV, Pytorch и CNN, чтобы определить, носили ли люди маски для лица или нет. Модели тестировались с изображениями и видеопотоками в реальном времени. Несмотря на то, что точность модели составляет около 60%, оптимизация модели — это непрерывный процесс, и мы строим высокоточное решение, настраивая гиперпараметры. MobileNetV2 использовался для создания его мобильной версии. Эту конкретную модель можно использовать в качестве варианта использования периферийной аналитики.