Спутниковые изображения становятся все более важным источником информации об изменениях, происходящих во всем мире. Есть несколько спутников, которые предоставляют общедоступные данные с почти полным покрытием Земли и почти еженедельно.

Одна из основных проблем со спутниковыми изображениями - это получение информации из большого набора данных, который постоянно обновляется. В этом сообщении в блоге я хочу продемонстрировать, как можно использовать настраиваемые метки Amazon Rekognition для обучения модели, которая будет генерировать аналитические данные на основе спутниковых снимков Sentinel-2, общедоступных на AWS.

Миссия Sentinel-2 - это группировка двух спутников для наблюдения за землей, которые обеспечивают оптические изображения высокого разрешения. Его частота составляет около 5 дней, а разрешение - 10 метров. В нашем примере мы будем использовать спутниковые изображения для обнаружения и классификации сельскохозяйственных полей.

Как получить доступ к изображениям Sentinel-2

Есть несколько способов получить доступ к спутниковым снимкам:

  • Воспользуйтесь одним из браузеров, указанных на странице https://registry.opendata.aws/sentinel-2/.
  • Загружайте изображения напрямую из корзины Amazon S3. Amazon S3 - это служба хранения, которая обеспечивает масштабируемый и безопасный доступ для загрузки и выгрузки данных.

Браузер - лучший вариант для поиска отдельных изображений для определенных дат и мест. Amazon S3 - лучший вариант, если вы хотите автоматизировать рабочий процесс или разработать приложение с использованием спутниковых снимков. Я хочу продемонстрировать использование хранилища Sentinel-2 Amazon S3, поскольку это лучший способ использовать изображения, если вам нужно организовать конвейер для их обработки.

Найти Sentinel-2 сцена

Один из самых простых способов найти нужную сцену - использовать браузер Sentinel-2. Есть несколько браузеров. В нашем примере мы будем использовать браузер EO, поскольку он предоставляет путь S3 для изображения. По сути, вам просто нужно определить параметры поиска, а затем скопировать поле пути AWS.

Скачать ленты изображений

При работе со спутниковыми изображениями мы работаем с несколькими изображениями разных призраков. Идея здесь в том, что каждая спектральная полоса может дать различное представление. Из-за этого иногда более полезно создавать изображения не с полосами RGB, а с другими полосами, например, NIR, что означает изображения, близкие к инфракрасному. Эта полоса дает отличное представление о растительности. Вот почему популярна комбинация полос NIR-Red-Green, и она называется False Color, поскольку это не настоящее изображение RGB. Получив путь к AWS, мы можем использовать команды интерфейса командной строки AWS для загрузки необходимых диапазонов. В нашем случае мы хотим создать изображение растительности False Color, которое будет иметь более высокий контраст для областей растительности, поэтому нам нужно будет загрузить полосы NIR-Red-Greed (8,4,3 соответственно).

Подготовьте изображение False Color Sentinel-2

После загрузки бэндов мы можем использовать rasterio библиотеку python для компиляции изображения False Color и масштабирования бэндов, поскольку изначально они предоставляются в формате uint16, но их значения фактически лежат в диапазоне 0–2¹². Вот пример кода, который это делает:

Получим следующий результат:

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

Как обучить и запустить модель Amazon Rekognition

Получив изображения, мы можем создать набор данных и обучить нашу модель. Одним из основных преимуществ использования Amazon Rekognition является то, что вам не нужно знать фреймворки глубокого обучения или писать код для обучения глубокому обучению или вывода. Вам также не нужно управлять инфраструктурой глубокого обучения, и вы можете сразу начать использовать модель Amazon Rekognition.

Создать и пометить набор данных

  1. Создать набор данных
  2. Выберите «Загрузить изображения со своего компьютера».
  3. На странице набора данных нажмите «Добавить изображения».
  4. Во всплывающем окне нажмите «Выбрать файлы» и выберите файлы на своем компьютере. Затем нажмите «Загрузить изображения».
  5. Создайте ярлыки «активное поле», «полуактивное поле», «неактивное поле».
  6. Нажмите «Начать маркировку», выберите изображения, а затем нажмите «Нарисовать ограничивающую рамку».
  7. На новой странице теперь вы можете выбирать метки, а затем рисовать прямоугольники для каждой метки. После того, как вы закончили разметку, вы можете переключиться на другое изображение или нажать «Готово».

Обучите и запустите модель

  1. На странице проектов нажмите «Создать проект».
  2. На странице проекта выберите «Обучить новую модель».
  3. Выберите набор данных, который мы только что создали, а затем выберите «Разделить набор обучающих данных» для тестового набора данных. Затем нажмите «Поезд».
  4. Как только модель обучена, вы можете начинать делать прогнозы.

Вы можете оценить модель, используя один из фрагментов изображения, которое мы обработали ранее. Rekognition вернет результаты json с предсказанными регионами, которые мы можем визуализировать.

Визуализируйте результат

Вы можете визуализировать результаты, используя следующий код в записной книжке jupyter. Этот код анализирует ответ модели Amazon Rekognition и рисует на изображении блоки прогнозов. Он также учитывает тип меток и помечает прогнозы разными цветами в зависимости от класса.

Вот как будет выглядеть результат:

Заключение

Мы обучили и развернули модель для поиска сельскохозяйственных полей на спутниковых снимках с помощью Amazon Rekognition. Как видите, настройка была довольно простой, и вы можете использовать этот пример для разработки более сложных моделей для других задач спутниковой съемки, например, для мониторинга лесов и обнаружения зданий.

Не стесняйтесь проверить код в следующем репо:

Https://github.com/ryfeus/amazon-rekognition-custom-labels-s satellite-imagery