Чтобы построить модель, которая может предсказать классификацию входных изображений

Первое заблуждение - Kaggle - это сайт, на котором проводятся соревнования по машинному обучению. И я считаю, что это заблуждение заставляет многих новичков в области науки о данных - включая меня - думать, что Kaggle предназначен только для профессионалов в области данных или экспертов с многолетним опытом. Фактически, Kaggle может предложить гораздо больше, чем просто соревнования!

На Kaggle так много открытых наборов данных, что мы можем просто начать с игры с набором данных по нашему выбору и учиться на этом пути. Если вы новичок с нулевым опытом в области науки о данных и можете подумать о том, чтобы пройти больше онлайн-курсов, прежде чем присоединиться к ним, подумайте еще раз! Kaggle даже предлагает вам несколько фундаментальных, но практических курсов программирования и науки о данных. Кроме того, вы всегда можете задать свои вопросы в обсуждении Kaggle, чтобы получить совет или разъяснения от активного сообщества специалистов по науке о данных по любым проблемам в области науки о данных.

Одна из цитат, которая меня действительно просветляет, была поделена основателем и генеральным директором Facebook Марком Цукербергом в своем вступительном слове в Гарварде.

Вам просто нужно начать.

- Марк Цукерберг

Начать и сделать самый первый шаг всегда было самым сложным, прежде чем что-либо делать, не говоря уже о том, чтобы продвигаться или совершенствоваться.

Существует так много онлайн-ресурсов, которые помогут нам начать работу с Kaggle, и я перечислю здесь несколько ресурсов, которые, на мой взгляд, чрезвычайно полезны:

  1. Используйте Kaggle, чтобы начать (и направить) свой путь ML / Data Science - Почему и как

2. Машинное обучение с нуля

3. Наука о данных от нуля до мастера ядра Kaggle

В следующем разделе я надеюсь поделиться с вами путешествием новичка в его первом соревновании Kaggle (вместе с членами его команды), а также некоторыми ошибками и выводами. Вы можете посмотреть коды здесь. Разделы распределены следующим образом:

  1. Контекст конкурса и данные
  2. Подход
  3. Полученные результаты
  4. Последние мысли

Итак, приступим, и я надеюсь, вам понравится!

1. Контекст конкуренции и данные

В моем самом первом посте на Medium - Мое путешествие от физики к науке о данных я упомянул, что присоединился к моему первому соревнованию по машинному обучению Kaggle, организованному Shopee и Институтом инженерии и технологий (IET) с моими коллегами по команде. - Лоу Вэй Хун, Чонг Кэ Синь, и Лин Вэй Онн. Нам было очень весело на протяжении всего путешествия, и я определенно многому у них научился !!

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

Большой. Теперь, когда у нас есть понимание контекста. Давайте перейдем к нашему подходу к прогнозированию классификации изображений, который является ВЕСЕЛЫМ (то есть самым сложным) частью!

Некоторые изображения для классификации

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

В следующем разделе я расскажу о нашем подходе к решению этой проблемы вплоть до этапа построения нашей индивидуальной модели CNN.

2. Подход

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

Впервые обладая небольшими знаниями и опытом в CNN, Google был моим лучшим учителем, и я не мог не порекомендовать это краткое, но исчерпывающее введение в CNN, написанное Адитом Дешпанде. Объяснение высокого уровня разбило некогда грозную структуру CNN на простые, понятные мне, термины.

Предварительная обработка изображений

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

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

- ПЕРВАЯ ошибка -

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

Мы начали с попытки построить нашу модель CNN с нуля (да, буквально!), чтобы увидеть, как модель CNN работает на основе обучающих и тестовых изображений. Мало ли мы знали, что большинство людей редко тренируют модель CNN с нуля по следующим причинам:

  1. Недостаточный набор данных (обучающие изображения)
  2. Модели CNN сложны и обычно требуют недель или даже месяцев на обучение, несмотря на то, что у нас есть кластеры машин и высокопроизводительные графические процессоры.
  3. Затраты и время не гарантируют и не оправдывают работоспособность модели.

К счастью, нам на помощь пришло трансферное обучение.

Трансферное обучение

Итак ... Что за черт возьми такое трансферное обучение?

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

Большой. Имея такое множество предварительно обученных моделей, доступных в Keras, мы решили попробовать различные предварительно обученные модели отдельно (VGG16, VGG19, ResNet50, InceptionV3, DenseNet и т. Д.) и выбрали лучшую модель.

В итоге мы выбрали Модель InceptionV3 с весами, предварительно обученными на ImageNet, которая имела самую высокую точность.

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

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

  1. Сначала мы создали базовую модель, используя предварительно обученную модель InceptionV3, импортированную ранее. Полностью подключенный последний слой был удален в верхней части нейронной сети для дальнейшей настройки.
  2. Затем мы добавили Уровень объединения глобального пространственного среднего, и причину можно найти здесь.
  3. После этого мы создали новый полностью связанный выходной слой, а затем слой исключения для регуляризации.
  4. Наконец, мы добавили слой softmax для 18 классов (18 категорий изображений) и объединили базовую модель с созданными новыми выходными слоями.

На этом этапе мы заморозили все слои базовой модели и обучили только новый выходной слой.

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

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

После того, как верхние слои были хорошо натренированы, мы настроили часть внутренних слоев.

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

ДА, и готово!

3. Результаты

Окончательная точность составила 78,96%.

Мы пробовали разные способы настройки гиперпараметров, но безуспешно.

Когда после окончания конкурса были раскрыты все результаты и методы, мы обнаружили вторую ошибку…

- ВТОРАЯ ошибка -

Мы не использовали ансамблевые модели с укладкой.

Общей чертой всех топ-команд было то, что все они использовали ансамблевые модели.

Вместо этого мы обучили разные предварительно обученные модели отдельно и выбрали только лучшую модель. Такой подход косвенно сделал нашу модель менее устойчивой к тестированию данных только с одной моделью и склонной к переобучению.

4. Заключительные мысли

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

Процесс был непростым. Кривая обучения была крутой. Путешествие по обучению было сложным, но в то же время плодотворным. И я определенно с нетерпением жду следующего конкурса! 😄

Спасибо за чтение.

Если вам понравилась эта статья, не стесняйтесь нажимать кнопку хлопка 👏, чтобы помочь другим найти ее.

Как всегда, если у вас есть какие-либо вопросы или комментарии, не стесняйтесь оставлять свои отзывы ниже или вы всегда можете связаться со мной в LinkedIn. А пока до встречи в следующем посте! 😄

об авторе

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

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

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

Вы можете связаться с ним в LinkedIn, Medium, Twitter и Facebook.



Эта история опубликована в The Startup, крупнейшем предпринимательском издании Medium, за которым следят + 379 528 человек.

Подпишитесь, чтобы получать наши главные новости здесь.