Палеонтология 21 века с машинным обучением

Разблокируйте своего внутреннего поклонника Парка Юрского периода и научитесь охотиться на динозавров с помощью компьютерного зрения

Давайте создадим инструмент искусственного интеллекта для поиска ископаемых на основе PyTorch и набора инструментов Intel AI Analytics. Этот учебник поможет вам понять, как разложить задачу классификации изображений, например, охоту за окаменелостями динозавров, на несколько ключевых компонентов: построение контекста из данных, правильное представление данных в нашей модели, определение/обучение модели и получение практических выводов из прогнозов модели. Пожалуйста, посетите репозиторий Jurassic, чтобы запустить блокноты Jupyter, обсуждаемые в этой статье.

Создание контекста из данных

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

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

Правильное представление данных в нашей модели

Как упоминалось ранее, мы будем работать с аэрофотоснимками для создания данных для обучения и тестирования. Мы будем использовать SDK Google Earth Engine для извлечения изображений в определенных местах и ​​на определенных высотах. Блокнот Jupyter можно найти здесь. После получения аэрофотоснимков нам нужно обработать изображения в формате, ожидаемом нашей моделью (рис. 3).

Затем изображения маркируются вручную на основе следующих критериев и классов (рис. 4):

  • Класс 0 — Места без костей в пределах нескольких миль от костей (без костей)
  • Класс 1 — любой регион с аналогичными условиями осадконакопления, для которого кости не были точно идентифицированы (кости возможны, но не были найдены).
  • Класс 2 — местонахождение костей было определено с помощью местоположений GPS и сопоставлено с координатами изображения (подтвержденные места окаменелостей).

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

Давайте посмотрим на наши распределения данных. Эти гистограммы показывают общее количество образцов на метку в наших обучающих (рис. 5а) и проверочных (рис. 5б) наборах данных.

Теперь давайте выборочно проверим некоторые изображения (рис. 6а и 6б). У расширенных выборок в нашем обучающем наборе данных, похоже, есть отрицательное пространство по краям. Это нормально для нашей модели, но в будущем мы могли бы попробовать вращать пиксели, а не вращать все изображение, чтобы избежать этого отрицательного пространства. Из этих образцов изображений, игнорируя растительность, мы можем начать видеть, как появляются узоры текстур и цветов. На рисунке 6а мы видим, что этикетки 1 и 2 имеют отчетливые светлые полосы, смешанные с более темными оттенками, в то время как образцы на рисунке 6б этикетки 0 имеют более однородную окраску.

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

Определение модели и обучение

Используя наш помеченный набор данных об охоте на динозавров, мы перенесем обучение предварительно обученной модели ResNet через процесс, называемый «адаптация домена». Трансферное обучение позволяет нам использовать предварительно обученные веса в существующей модели для новых задач (рис. 6).

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

  • Обучение с нуля — это ваша традиционная схема глубокого обучения, в которой вы инициализируете веса вашей сети нулями, случайным образом или с некоторым предопределенным значением. Затем модель использует обратное распространение для обновления весов вашей модели на основе некоторой целевой функции и оптимизатора. Этот тип обучения, как правило, требует больших вычислительных ресурсов, требует ускорителей, таких как GPU и HPU, и может занять часы, дни или недели.
  • Domain Adaptive Transfer Learning — это когда мы начинаем с модели, предварительно обученной на исходном наборе данных, вводим совершенно другой набор данных и используем его для повторного обучения модели. Это адаптирует нашу модель к новой проблеме и передает знания из предыдущего набора данных. В этом руководстве мы начнем с предварительно обученной модели ResNet и адаптируем ее для задачи классификации правдоподобия окаменелостей.
  • Тонкая настройка – это еще одна подкатегория трансферного обучения, которая не переключает домены, а обновляет существующую модель новыми данными. Например, мы могли бы получить новые данные из ископаемого места, чтобы обновить нашу модель охоты на динозавров после первоначального обучения. Чтобы это имело смысл, наш исходный набор данных должен быть значительно больше, чем новые данные, чтобы мы могли оправдать сохранение некоторых весов с помощью методов трансферного обучения, таких как замораживание слоев или снижение скорости обучения. Если наборы данных похожи, возможно, стоит обучить новую модель с нуля.

Отказ от «обучения с нуля» дает нам больше гибкости при выборе типа оборудования, которое нам нужно. В этом случае трансферное обучение позволит нам выполнять глубокое обучение и логические выводы непосредственно на ЦП, что устраняет необходимость в дополнительном аппаратном ускорении.

Мы будем использовать расширение Intel для PyTorch (IPEX) для ускорения обучения и логического вывода. IPEX позволяет нам применять каналы последними, оптимизацию графиков, оптимизацию операторов и точность автоматического микширования, и все это с помощью простого в использовании Python API. Если вы хотите узнать больше о внедрении IPEX, посетите IPEX GitHub или IPEX PyTorch Documentation.

Добавив две строки кода ниже, мы можем сразу разблокировать последние аппаратные оптимизации Intel для PyTorch:

model = self.model.to(memory_format=torch.channels_last)
model, self.optimizer = ipex.optimize(
            self.model, optimizer=self.optimizer,dtype=torch.float32

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

Получение действенной информации из предсказаний модели

Теперь, когда мы успешно изучили нашу модель, мы можем предсказать метки невидимых данных (рис. 9a и 9b) и сшить воедино карту вероятности окаменелостей динозавров.

Давайте объединим наши изображения и применим наложение градиентного цвета, представляющее предсказанные метки нашей модели (рис. 10). Зеленые градиенты указывают на более высокую вероятность обнаружения окаменелостей в этом месте. Теперь мы можем надеть ботинки и начать наше приключение по охоте на динозавров, начиная с областей с более высокой вероятностью окаменелостей, предсказанных нашей моделью.

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

Мы исследовали увлекательное применение компьютерного зрения в дисциплине палеонтологии. Важно подчеркнуть, что рабочий процесс, описанный в этой статье, и лежащие в его основе блокноты Jupyter можно применять к любому сценарию, в котором аэрофотоснимки используются для определения свойств региона. Некоторые будущие примеры, которые мы могли бы изучить, включают вероятность лесных пожаров, обнаружение обесцвечивания коралловых рифов и урожайность сельскохозяйственных культур. Если вы заинтересованы в оценке расширенной работы, выполненной с помощью Intel Distribution of OpenVINO Toolkit, ознакомьтесь с блокнотами по выводам CPU и iGPU.