Введение:

CNN (Convolutional Neuron Network) — нейронная сеть с глубоким обучением. Он особенно эффективен для поиска шаблонов на изображениях для выполнения различных задач, таких как классификация изображений, обнаружение объектов и сегментация. Структурно CNN состоит из сверточного слоя, слоя пула и полносвязного слоя. Эти слои выполняют операции фильтрации для изучения и извлечения пространственных иерархий объектов из необработанных входных данных и выполнения различных функций компьютерного зрения. Более того, при работе с CNN у пользователей также есть возможность использовать предварительно обученные модели, которые были успешно разработаны другими экспертами, чтобы ускорить процесс обучения или оптимизировать точность модели. Было доказано, что предварительно обученные модели, такие как GoogLeNet и AlexNet, являются хорошей отправной точкой для решения связанных приложений глубокого обучения.

В последнем семестровом проекте в моем классе ИИ я хочу использовать CNN и трансферное обучение, чтобы изучить концепцию глубокого обучения. В частности, я хочу разработать модель ИИ для обнаружения масок в наборе данных, состоящем из 12 000 различных изображений. Цель состоит не только в том, чтобы успешно выполнить классификацию всего изображения в пикселях, чтобы выделить 2 группы: изображения людей в масках и изображения людей без масок; но также, чтобы определить, может ли CNN, разработанная самостоятельно, улучшить предварительно обученные модели, которые существуют и легко доступны для использования людьми. Все создается и модифицируется с помощью Keras, высокоуровневого API нейронных сетей, написанного на Python.

Набор данных:

Источник данных получен с общедоступного веб-сайта Kaggle. Набор данных содержит около 12 000 изображений. И изображения людей в масках удаляются из поиска Google, а изображения людей без масок компилируются и повторно обрабатываются из набора данных CelebFace, созданного Джессикой Ли. Источники:

  1. https://www.kaggle.com/datasets/ashishjangra27/face-mask-12k-images-dataset — полный набор данных.
  2. https://www.kaggle.com/jessicali9530 — набор данных Джессики Ли.

Кроме того, изображения разделены на 3 папки, включая данные испытаний, данные обучения и данные проверки. На этих изображениях люди изображены с различными выражениями лица и эмоциями. Они оба мужчины / женщины и из разных культур. Кстати, небольшое количество изображений — это мультфильмы, а не реальные люди.

  1. Данные поезда: 5000 — изображения с масками | 5000 — изображения без масок
  2. Тестовые данные: 483 — изображения с масками | 509 — изображения без масок
  3. Валидационные данные: 400 изображений с масками
    400 изображений без масок.

Будут разработаны две CNN для сравнения и сопоставления с другими предварительно обученными моделями. Первая CNN будет действительно простой и не будет иметь поддерживающих гиперпараметров. С другой стороны, вторая CNN будет включать различные вспомогательные параметры, такие как шаг, нормализация пакетов, объединение и т. Д. Что касается предварительно обученных моделей, InceptionV3, MobileNet_V2 и VGG16 будут использоваться, обучаться и оцениваться.

Цели и методы:

›› Цель состоит в том, чтобы создать интеллектуальные модели, которые определят, когда на фотографиях надеты маски должным образом.​

›› Каким образом власти могут воспользоваться аналогичными исследованиями для получения статистических данных, которые помогут контролировать инфекционные заболевания?​

›› Какие модели лучше всего подходят для этих данных?​

›› Чем наша модель отличается от моделей трансферного обучения?​

›› Какие улучшения можно внести для получения лучших результатов и точности?​

Процессы и статистика:

И. CNN без поддержки гиперпараметров

Во-первых, мне нужно импортировать необходимые пакеты для успешной работы модели. Они керасные, последовательные, сюжетные. После этого я определяю модель с количеством классов, равным 2, поскольку необходимо сегментировать две группы изображений. Для сверточных слоев в качестве функции активации используется сигмоида, а входная форма сохраняется неизменной на уровне (200, 200 и 3). На более глубоких слоях я пытаюсь улучшить модель, постепенно уменьшая размер фильтра и увеличивая количество фильтров. На самом последнем слое я не мог не добавить flatten и SoftMax, которые позволяют модели выполнять задачу классификации.

Результаты возвращаются после 2 часов тренировки. В среднем потери составляют почти 70%, а точность — 48%. Потери при проверке также составляют в среднем почти 70%, а точность проверки составляет 50%. Я также строю CFM для этой модели с классом 0 и классом 1, которые имеют очень разные значения. Для класса 0 (изображения людей без масок) полнота составляет 100%, а для класса 1 (изображения людей в масках) — 0. То же самое происходит и со значением F1. Судя по этим цифрам, это не очень хорошая модель, и я настоятельно рекомендую держаться от нее подальше.

II. CNN со вспомогательными параметрами

Для второй модели CNN слои свертки будут сильно отличаться от предыдущего. Это связано с тем, что для точной настройки сети и повышения ее эффективности будут использоваться различные гиперпараметры. Здесь упоминаются гиперпараметры Dense, Dropout, Maxpooling2D, Batch Normalization и Conv2D. На этот раз я использую relu в качестве функции активации, но сохраняю форму ввода (200, 200 и 3). Я также постепенно уменьшаю размер фильтра и увеличиваю количество фильтров на более глубоких слоях. При переходе к последнему слою снова вводятся flatten и SoftMax. Полные слои свертки следующие:

Как и ожидалось, результаты этой модели намного лучше, чем у предыдущей. С поддержкой гиперпараметров процесс обучения занимает всего 30 минут, а средняя точность составляет около 98%; в то время как средняя потеря составляет всего около 25% за 10 эпох. Глядя на его CFM, точность, полнота и оценка F1 для обоих классов остаются на уровне 98–99%. Это помогает показать, что модель успешно и эффективно классифицировала изображения на группы изображений в маске и без маски.

III. Перенос моделей обучения с помощью InceptionV3, MobileNetV2 и VGG16

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

Процесс обучения всех моделей занимает около 20 минут, и их точность значительно выше. В частности, MobileNetV2 достигает точности до 99,4%; тогда как значения точности InceptionV3 и VGG16 составляют 99,80% и 99,50% соответственно. Эти модели действительно продемонстрировали способность классифицировать изображения людей в маске и людей без маски. Ниже приведены графики их точности и потерь. Из их CFM все сходится к 1 для обоих классов, что позволяет предположить, что трансферное обучение выполнено успешно.

Заключение и заключительные мысли:

Стратегия построения и проектирования моей собственной сети CNN с нуля требует больше усилий и вычислительной мощности, чем повторное использование переобученной сети. Для этого набора данных изображений подход Transfer Learning является предпочтительным решением, поскольку все предварительно обученные сети, которые я использую, в конечном итоге обеспечивают лучшую точность, чем моя собственная модель CNN, с поддержкой гиперпараметров или без них. Более того, трансферное обучение требует меньше времени для обучения, потому что для него не требуется высокопроизводительный процессор, как это делает самостоятельная разработка CNN. В целом, MobileNetV2 — лучшая модель с точностью 99,89%; тогда как CNN, в которой отсутствуют важные гиперпараметры, является худшим решением с точностью всего 48,69%. Что касается этих результатов, можно сказать, что трансферное обучение является лучшим и более мощным методом в области обнаружения закономерностей и классификации изображений. Однако я не хочу просто полагаться на один проект, чтобы отбить у других желание разрабатывать и обучать свои собственные CNN. Потому что в ряде проведенных эмпирических исследований более высокая точность достигается при успешном построении пользовательской CNN.

Спасибо за прочтение и, пожалуйста, дайте мне знать, что вы думаете о том, лучше ли трансферное обучение, чем разработка CNN !!!