Добро пожаловать в руководство по созданию модели обнаружения медицинских масок, его также можно использовать для обнаружения объектов любых типов
Используемый набор данных : Обнаружение маски лица (набор данных можно взять отсюда -> Kaggle )
Используемая среда запуска приложений : Google Colaboratory
Структуры моделей : RetinaNet, Faster R-CNN
Содержание :
- введение в обнаружение объектов
- анализ данных для нейронной сети
- предварительная обработка данных
- нейронная сеть на основе модели RetinaNet
- нейронная сеть на основе Faster R-CNN
Поддельный научно-исследовательский институт преследует ценность открытости. Обратная связь всегда приветствуется, и вы можете оставить комментарий на каждой странице.
1. Введение в обнаружение объектов
Обнаружение объектов — это одно из направлений технологии компьютерного зрения, которое обнаруживает интересующий пользователя объект на заданном изображении.
Если модель искусственного интеллекта (ИИ) определяет, что изображение собаки слева на рис. 1-1 является собакой, то такая модель является моделью классификации изображений. Однако, если, как на картинке справа, определяется местоположение объекта и объект классифицируется как собака, модель является моделью обнаружения объекта.
Модели обнаружения объектов можно использовать во многих областях. Наиболее типичный вариант использования — без экипажные транспортные средства. Чтобы создать без экипажный автомобиль, компьютеры должны уметь распознавать объекты вокруг себя. Технология обнаружения объектов используется в автономных транспортных средствах, которым необходимо взаимодействовать с окружающей средой, например, замедляться при наличии знака «стоп» и перезапускаться при включении зеленого сигнала светофора.
Технология обнаружения объектов также используется для эффективного управления ресурсами в сфере безопасности. В общем, CCTV требует большого объема памяти, потому что ведет непрерывную запись. Однако в сочетании с технологией обнаружения объектов можно эффективно использовать память, начиная запись только при обнаружении определенного объекта.
В этой главе мы построим модель обнаружения объектов, которая будет распознавать маску на лице человека. Мы построим модель, которая определяет положение лица при вводе данного изображения и проверяет, наличие маски на нем.
1.1. Ограничивающая рамка
Прежде чем создавать модель обнаружения объектов, первым делом необходимо создать ограничивающую рамку. Поскольку размер данных, используемых в модели обнаружения объектов, огромен, объект правильно обнаруживается через ограничивающую рамку, и в процессе глубокого обучения нацелена только область ограничивающей рамки, поэтому глубокое обучение может выполняться более эффективно.
Ограничивающая рамка — это метод, который помогает эффективно обучать модель, обнаруживая определенные объекты. В моделях обнаружения объектов ограничивающие рамки используются для указания целевых местоположений. Целевое положение выражается в виде прямоугольника с использованием осей X и Y. Например, значение ограничивающей рамки выражается как (X мин., Y мин., X макс., Y макс.).
Как показано на рисунке 1-2, область между минимальным и максимальным значениями X и Y принимается за площадь ограничивающей рамки. Однако приведенные выше значения X и Y являются значениями пикселей, и для эффективной работы их необходимо преобразовать в максимальное значение 1.
Значения X и Y на рисунке 1-3 — это значения, полученные путем деления максимального значения X 971 и максимального значения Y 547 соответственно. Минимальное значение X равно 640, деленному на 971, чтобы получить 0,66. Дробление можно рассматривать как процесс эффективных вычислений, но это не обязательный процесс.
В зависимости от набора данных значение ограничивающей рамки может быть отдельно включено в качестве метаданных, а если метаданных нет, ограничивающая рамка может быть указана посредством реализации кода отдельно. Набор данных Face Mask Detection , используемый в этом руководстве , поставляется с ограничивающей рамкой, В главе 2 мы нарисуем ограничивающую рамку.
1.2. Формы моделей нейронных сетей
На рис. 1-4 показано дерево модели обнаружения объектов. Модели обнаружения объектов на основе глубокого обучения, появившиеся с 2012 года, можно разделить на одноэтапный детектор и двухэтапный детектор. Чтобы понять двухэтапный детектор, вам необходимо понять концепции классификации и поиска региона. Классификация заключается в том, чтобы классифицировать объект находящийся на изображении, а поиск региона — это алгоритм, который быстро находит регион, в котором находится объект.
Двухэтапный детектор показал хорошие результаты с точки зрения точности обнаружения объектов, но был ограничен в обнаружении в реальном времени из-за низкой скорости прогнозирования. Чтобы решить эту проблему скорости, был предложен одноэтапный детектор, который одновременно выполняет и классификацию, и региональное предложение. В следующем разделе мы проверим структурную схему однокаскадного детектора и двухкаскадного детектора.
1.2.1. Однокаскадный детектор
1.2.2. Двухступенчатый детектор
Двухэтапный детектор — это метод получения результатов путем последовательного выполнения классификации и регионального предложения. Как показано на рисунке 1-6, вы можете видеть, что предложение региона и классификация выполняются последовательно.
В результате одноэтапный детектор является относительно быстрым, но с низкой точностью, а двухэтапный детектор относительно медленным, но с высокой точностью.
1.3. Cтруктуры моделей нейронных сетей
Существует несколько структур для каждого одноэтапного детектора и двухэтапного детектора. R-CNN, Fast R-CNN, Faster R-CNN — двухэтапный детектор, а YOLO, SSD, RetinaNet — одноэтапный детектор. Давайте взглянем на характеристики каждой структуры модели.
1.3.1. R -CNN
R-CNN создает предложение региона для изображения с помощью выборочного поиска. Каждая сгенерированная область-кандидат оборачивается фиксированным размером и используется в качестве входных данных для CNN. Классифицируйте с помощью SVM с картой функций из CNN и настройте ограничивающую рамку с помощью регрессора. При обертывание для принудительного сопоставления размера, происходит деформация или потеря изображения, и CNN должна отработать столько же раз, сколько и областей-кандидатов, поэтому она требует большого места для хранения данных и работает медленно.
1.3.2. Fast R -CNN
В отличие от R-CNN, который применяет CNN к каждой области-кандидату, в этой модели области-кандидаты генерируются из карты признаков, созданной путем применения CNN ко всему изображению. Сгенерированная область-кандидат извлекается как вектор признаков фиксированного размера посредством объединения области интереса. После перехода через слой FC к вектору признаков мы классифицируем его через Softmax и корректируем Bounding-box через Regressor.
1.3.3. Faster R-CNN
Здесь используется региональная сеть предложений (RPN), которая заменила часть выборочного поиска на глубокое обучение. RPN предсказывает регионы-кандидаты с привязкой в каждой точке, взятой скользящим окном во время работы CNN на карте объектов. Anchor-box — это Bounding-box с несколькими пропорциями и размерами, указанными заранее. Области-кандидаты, полученные из RPN, сортируются в порядке IoU, чтобы выбрать окончательные области-кандидаты с помощью алгоритма немаксимального подавления (NMS). Пул RoI выполняется для соответствия размеру выбранной области-кандидата, а затем выполняется так же, как Fast R-CNN.
1.3.4. Yolo
Рассматривая ограничивающую рамку и вероятность класса как одну задачу, предсказать тип и местоположение объекта одновременно, разделить изображение на сетки определенного размера и предсказать ограничивающую рамку для каждой сетки. Обучение выполняется с использованием оценки достоверности ограничивающей рамки и оценки класса ячейки сетки. Это очень быстро с простым процессом, но имеет относительно низкую точность для небольших объектов.
1.3.5. SSD
Для каждой карты объектов после каждого коволюционного слоя получают оценку класса и смещение (координаты местоположения) ограничительной рамки, а окончательную ограничительную рамку определяют с помощью алгоритма NMS. Преимущество этого заключается в том, что можно обнаруживать как маленькие, так и большие объекты, поскольку масштаб каждой карты объектов разный.
1.3.6. RetinaNet
RetinaNet улучшает низкую производительность существующих одноэтапных детекторов, изменяя функцию потерь, рассчитанную во время обучения модели. One-Stage Detector обучается, представляя до 100 000 кандидатов. Среди них фактических объектов обычно меньше 10, и большое количество кандидатов фиксируется как фоновый класс. За счет уменьшения значения потерь для фоновых кандидатов, которые относительно легко классифицировать, коэффициент потерь реальных объектов, которые трудно классифицировать, увеличивается, и, соответственно, он фокусируется на изучении реальных объектов. RetinaNet работает быстро и имеет производительность, аналогичную двухэтапному детектору.