Авторы Хирен Рупчандани, Абхинав Джангир и Ашиш Лепча
В нашей предыдущей статье мы видели, как предварительно обрабатывать данные изображения, используя несколько различных методов. Теперь пришло время построить модель, используя эти предварительно обработанные данные. Итак, приступим:
Набор данных
Мы собираемся классифицировать надевает ли человек маску или нет на основе входного изображения, которое является лицом человека. Набор данных содержит два типа изображений — Люди в маске и Люди без маски. Давайте взглянем на изображения в обоих классах:
Предварительная обработка данных
Увеличение данных
- Мы делаем увеличение данных, случайным образом применяя различные функции.
- Это увеличивает разнообразие данных, доступных для моделей обучения, без фактического сбора новых данных.
- Вот некоторые из распространенных фильтров Увеличения данных:
- Случайное вращение
- Горизонтальное смещение
- Сдвиг по вертикали
- Случайное отражение
- Сдвиг
- Случайное масштабирование
Построение модели
- Наша модель состоит из 3 сверточных слоев, за которыми следуют максимальное количество объединяемых слоев и отсев.
- Существует полностью связанный слой с 128 единицами после свертки, который активируется функцией активации ReLU.
- Здесь мы используем потери Binary Cross-Entropy с оптимизатором ADAM для нашей задачи бинарной классификации.
- Согласно сводке модели, существует 6 446 369 обучаемых параметров.
- Графики обучения/проверки потери и точности для модели выглядят следующим образом:
Использование трансферного обучения
- Еще одним способом построения модели может быть использование трансферного обучения. Но что это? Это как учиться ездить на велосипеде и использовать этот опыт, чтобы научиться ездить на велосипеде/скутере.
- Трансферное обучение состоит в том, чтобы брать функции, изученные при решении одной задачи, и использовать их для решения новой аналогичной задачи.
- Например, функции модели, которая научилась распознавать енотов, могут быть полезны для запуска модели, предназначенной для идентификации тануки.
- Трансферное обучение обычно используется для задач, в которых в вашем наборе данных слишком мало данных для обучения полномасштабной модели с нуля.
- Наиболее распространенным воплощением трансферного обучения в контексте глубокого обучения является следующий рабочий процесс:
– взять слои из ранее обученной модели.
– Заморозить их, чтобы не уничтожить какую-либо информацию, содержащуюся в них, во время будущих тренировочных раундов.
- Добавьте несколько новых обучаемых слоев поверх замороженных слоев. . Они научатся превращать старые функции в прогнозы для нового набора данных.
- Обучайте новые слои в вашем наборе данных. - Последним необязательным шагом является точная настройка, которая состоит из размораживания всей модели, полученной ранее (или ее части), и повторного обучения. /strong> на новых данных с очень низкой скоростью обучения.
- Это потенциально может привести к значительным улучшениям за счет постепенной адаптации предварительно обученных функций к новым данным.
Мобайлнет
- MobileNet-v2 — это сверточная нейронная сеть, имеющая 53 уровня глубины.
- Вы можете загрузить предварительно обученную версию сети, обученную на более чем миллионе изображений из базы данных ImageNet.
- Предварительно обученная сеть может классифицировать изображения по 1000 категориям объектов, таким как клавиатура, мышь, карандаш и многие животные.
- В результате сеть изучила богатые представления функций для широкого спектра изображений.
- Размер входного изображения сети составляет 224 x 224.
- MobileNets — это небольшие модели с малой задержкой и низким энергопотреблением, параметризованные для соответствия ограничениям ресурсов для различных вариантов использования.
- Архитектура обеспечивает высокие точные результаты, сохраняя при этом параметры и математические операции как можно более низкими для обеспечения глубоких нейронных сетей. на мобильные устройства.
- В MobileNetV2 есть два типа блоков.
- Перевернутый остаточный блок
- Остаточный блок узкого места - Для обоих типов блоков существует 3 слоя.
- Один из них — остаточный блок с шагом 1. Другой — блок с шагом 2 для уменьшения размера.
- В архитектуре MobileNet V2 существует два типа слоев свертки:
- свертка 1 x 1
- свертка по глубине 3 x 3 - Сеть MobileNetV2 выглядит следующим образом:
- Мы подключили выход базовой сети MobileNetV2 к новой модели.
- Эта модель состоит из усредненного объединяющего слоя, за которым следует выравнивающий слой и, наконец, полностью связанная плотная нейронная сеть.
- Выходной слой состоит из сигмоидальной активации для выполнения бинарной классификации.
- При обучении этой сети мы достигли точности 0,99.
- Если бы мы точно настроили модель, переобучив всю модель на наших данных, мы могли бы даже достичь точности теста 1,0.
- Вы можете визуализировать точность и потери обучения и проверки модели, используя это TensorBoard Extension.
- Из графиков видно, что для нашей модели мы получили точность проверки около 88 %, но с помощью трансферного обучения мы достигли точности проверки более 97 %.
- Вот и все — модель готова к развертыванию с большой точностью.
Что дальше?
В следующей статье этой серии мы развернем нашу модель с помощью Flask.
Подпишитесь на нас, чтобы не пропустить новые статьи, посвященные науке о данных, машинному обучению и искусственному интеллекту.
Кроме того, дайте нам аплодисменты👏, если вы находите эту статью полезной, так как ваша поддержка стимулирует вдохновение и помогает создавать еще больше интересных вещей, подобных этой. .