Создайте модель машинного обучения сегментации урожая с использованием данных Planet и геопространственных возможностей Amazon SageMaker.

Создание модели машинного обучения для сегментации урожая с использованием данных Planet и геопространственных возможностей Amazon SageMaker

Этот гостевой пост написан Лидией Лихуи Чжанг, разработчиком бизнеса, и Манси Шах, инженером-программистом/дата-сайентистом в Planet Labs. Анализ, вдохновивший этот пост, был изначально написан Дженнифер Райбер Кайл.

Геопространственные возможности Amazon SageMaker в сочетании с спутниковыми данными Planet могут быть использованы для сегментации культурных растений, и существует множество приложений и потенциальных преимуществ данного анализа в области сельского хозяйства и устойчивости. В конце 2023 года Planet объявила партнерство с AWS для предоставления своих геопространственных данных через Amazon SageMaker.

Сегментация культурных растений – это процесс разделения спутникового изображения на области пикселей или сегменты с похожими признаками культурного растения. В этом посте мы покажем, как использовать модель машинного обучения (МО) для сегментации культурных и некультурных регионов на изображении.

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

  • Принятие решений на основе данных – Благодаря лучшему пространственному пониманию культурных растений, фермеры и другие участники сельского хозяйства могут оптимизировать использование ресурсов, от воды до удобрений и химикатов, на протяжении сезона. Это является основой для снижения потерь, улучшения устойчивых сельскохозяйственных практик везде, где это возможно, и увеличения производительности при минимальном воздействии на окружающую среду.
  • Выявление климатических стрессов и тенденций – Поскольку изменение климата продолжает влиять на глобальные температурные условия и осадки, сегментация культурных растений может быть использована для определения уязвимых областей, подверженных климатическому стрессу, с целью стратегий адаптации к изменению климата. Например, архивы спутниковых изображений могут быть использованы для отслеживания изменений в области выращивания культурных растений со временем. Это могут быть физические изменения размера и распределения сельскохозяйственных угодий. Это также могут быть изменения в влажности почвы, температуре почвы и биомассе, полученные из различного спектрального индекса спутниковых данных, для более глубокого анализа здоровья урожая.
  • Оценка и уменьшение ущерба – Наконец, сегментация культурных растений может быть использована для быстрого и точного определения зон повреждения урожая в случае стихийного бедствия, что может помочь в приоритетном распределении помощи. Например, после наводнения можно использовать спутниковые изображения с высокой частотой для определения зон, в которых урожай был затоплен или уничтожен, что позволит организациям помощи более быстро оказать помощь пострадавшим фермерам.

В данном анализе мы используем модель ближайших соседей K-средних (KNN) для проведения сегментации культурных растений, и сравниваем эти результаты с эталонными изображениями сельскохозяйственной местности. Наши результаты показывают, что классификация, полученная с помощью модели KNN, более точно отражает состояние текущего полевого участка в 2017 году, чем данные классификации от 2015 года. Эти результаты свидетельствуют о мощности спутниковых изображений Planet высокой частоты. Сельскохозяйственные поля часто меняются, иногда несколько раз за сезон, и наличие доступных спутниковых изображений высокой частоты для наблюдения и анализа этой земли может предоставить огромное значение для нашего понимания сельскохозяйственных угодий и быстро изменяющейся среды.

Партнерство между Planet и AWS в области геопространственного машинного обучения

Геопространственные возможности SageMaker предоставляют возможность для создания, обучения и развертывания моделей с использованием геопространственных данных для специалистов по данным и инженеров по машинному обучению. Геопространственные возможности SageMaker позволяют эффективно преобразовывать или обогащать масштабные геопространственные наборы данных, ускорять построение моделей с предварительно обученными моделями машинного обучения и исследовать предсказания моделей и геопространственные данные на интерактивной карте с использованием 3D-ускоренной графики и встроенных инструментов визуализации. С помощью геопространственных возможностей SageMaker вы можете обрабатывать большие наборы данных спутниковых изображений и других геопространственных данных для создания точных моделей машинного обучения для различных приложений, включая сегментацию культурных растений, о которой мы говорим в этом посте.

Planet Labs PBC является ведущей компанией по спутниковому обозрению Земли, использующей свой большой флот спутников для получения изображений поверхности Земли ежедневно. Данные Planet являются ценным ресурсом для геопространственного машинного обучения. Его спутниковые изображения высокого разрешения можно использовать для определения различных характеристик культурных растений и их состояния на протяжении времени, где бы они ни находились на Земле.

Партнерство между Planet и SageMaker позволяет клиентам легко получать доступ и анализировать высокочастотные спутниковые данные Planet с использованием мощных инструментов машинного обучения AWS. Ученые-данные могут использовать свои собственные данные или удобно находить и подписываться на данные Planet без переключения сред.

Сегментация культур в карманной книжке Amazon SageMaker Studio с геопространственным изображением

В этом примере работы ML с геопространственной структурой мы рассмотрим, как привести данные Planet вместе с источником данных правды в SageMaker, и как обучать, вычислять и развертывать модель сегментации культур с классификатором KNN. Наконец, мы оценим точность наших результатов и сравним это с классификацией по корневым данным.

Классификатор KNN, используемый, был обучен в карманной книжке Amazon SageMaker Studio с геопространственным изображением и предоставляет гибкое и расширяемое ядро карманной записной книжки для работы с геопространственными данными.

Карманная книжка Amazon SageMaker Studio с геопространственным изображением предварительно установлена с такими часто используемыми геопространственными библиотеками, как GDAL, Fiona, GeoPandas, Shapely и Rasterio, которые позволяют визуализировать и обрабатывать геопространственные данные напрямую в среде Python карманной записной книжки. Обычно используемые библиотеки ML, такие как OpenCV или scikit-learn, также используются для выполнения сегментации культур с использованием классификации KNN, и они также установлены в геопространственном ядре.

Выбор данных

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

Почему Сакраменто? Выбор области и времени для этого типа проблемы в основном определяется наличием данных правды, и такие данные, как тип и ограничения культуры, получить непросто. Набор данных об использовании земель в Сакраменто в 2015 году (2015 Sacramento County Land Use DWR Survey dataset) является открытым набором данных, охватывающим Сакраменто в 2015 году и предоставляющим ручные составные ограничения.

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

Спутники Dove от Planet, которые произвели это изображение, были запущены 14 февраля 2017 года (новостное сообщение), поэтому они не снимали Сакраменто в 2015 году. Однако со времени запуска они снимают область ежедневно. В этом примере мы соглашаемся на неполное двухлетнее расхождение между данными правды и спутниковыми изображениями. Однако в качестве связующего звена между 2015 и 2017 годами могли быть использованы более низкого разрешения изображения Landsat 8.

Доступ к данным Planet

Чтобы помочь пользователям получать точные и действенные данные быстрее, Planet также разработала набор инструментов Planet Software Development Kit (SDK) для Python. Это мощный инструмент для ученых-данных и разработчиков, которые хотят работать с спутниковыми изображениями и другими геопространственными данными. С помощью этого SDK вы можете искать и получать доступ к огромной коллекции высококачественных спутниковых изображений Planet, а также к данным из других источников, таких как OpenStreetMap. SDK предоставляет Python-клиент для API Planet, а также решение без кода командной строки (CLI), что облегчает интеграцию спутниковых изображений и геопространственных данных в среду Python. В этом примере используется клиент Python для идентификации и загрузки необходимых изображений для анализа.

Вы можете установить Planet Python client в книге SageMaker Studio с геопространственным изображением с помощью простой команды:

%pip install planet

Вы можете использовать клиент для запроса соответствующих спутниковых изображений и получения списка доступных результатов на основе интересующей области, временного диапазона и других критериев поиска. В следующем примере мы начинаем с вопроса о том, сколько сцен PlanetScope (ежедневное изображение Planet) охватывают ту же область интереса (AOI), которую мы определяем ранее через базовые данные в Сакраменто, задав определенный временной диапазон между 1 июня и 1 октября 2017 года; а также определенный желаемый максимальный диапазон закрытия облачности 10%:

# создание запроса с помощью SDK из поисковых спецификаций dataitem_type = ['PSScene'] geom_filter_train = data_filter.geometry_filter(aoi_train) date_range_filter = data_filter.date_range_filter("acquired", gt=datetime(month=6, day=1, year=2017), lt=datetime(month=10, day=1, year=2017)) cloud_cover_filter = data_filter.range_filter('cloud_cover', lt=0.10) combined_filter_test = data_filter.and_filter([geom_filter_test, date_range_filter, cloud_cover_filter])    # Выполнить быстрый поиск для наших данных TRAIN async with Session() as sess:    cl = sess.client('data')    results = cl.search(name='temp_search_train',search_filter=combined_filter_train, item_types=item_type)    train_result_list = [i async for i in results]print("Количество результатов обучающей сцены: ", len(train_result_list))

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

После выбора конкретной сцены с указанием ID сцены, типа элемента и пакетов продуктов (документация), вы можете использовать следующий код для загрузки изображения и его метаданных:

train_scene_id = '20170601_180425_0f35' item_type = 'PSScene' bundle_type = 'analytic_sr_udm2'# определение запроса на заказ продуктов = [order_request.product([train_scene_id], bundle_type, item_type)] request = order_request.build_request('train_dataset', products=products)# скачать обучающие данные async with Session() as sess:    cl = sess.client('orders')    # использовать "отчетность" для управления опросом статуса заказа    with reporting.StateBar(state='creating') as bar:        # выполнить заказ с предварительно созданным запросом заказа        order = await cl.create_order(request)        bar.update(state='created', order_id=train_order['id'])        # ждать опросом, пока заказ не будет обработан        await cl.wait(train_order['id'], callback=bar.update_state)    #  загрузить фактический актив        await cl.download_order(order_id=order['id'], directory=download_directory, progress_bar=True, overwrite=True)

Этот код загружает соответствующее спутниковое изображение на том EFS-объеме Amazon Elastic File System (Amazon EFS) для SageMaker Studio.

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

После загрузки данных с помощью клиента Planet Python можно провести обучение модели сегментации. В этом примере используется комбинация методов классификации KNN и сегментации изображений для идентификации площади посевов и создания геопривязанных геоджейсон-функций.

Данные Planet загружаются и предварительно обрабатываются с использованием встроенных геопространственных библиотек и инструментов в SageMaker для подготовки их к обучению классификатора KNN. Для обучения используются данные земли информационного обследования Sacramento County Land Use DWR из 2015 года, а данные Planet из 2017 года используются для тестирования модели.

Преобразование геометрии земельных признаков в контуры

Для обучения классификатора KNN необходимо определить каждый пиксель как crop или non-crop. Класс определяется тем, связан ли пиксель с признаком посева в данных земельных признаков или нет. Чтобы сделать это, сначала геометрию земельных признаков преобразуют в контуры OpenCV, затем используют их для разделения пикселей crop от non-crop. Значения пикселей и их классификация затем используются для обучения классификатора KNN.

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

Для обучения классификатора KNN пиксели посевов и непосевов разделяются с использованием контуров признаков посевов.

Входом классификатора KNN являются два набора данных: X, двумерный массив, который предоставляет признаки для классификации; и y, одномерный массив, который предоставляет классы (пример). Здесь создается отдельная классифицированная полоса из наборов данных по несельскохозяйственным и сельскохозяйственным культурам, где значения полосы указывают класс пикселя. Затем значения полосы и базового пикселя изображения конвертируются во входы X и y для функции fit классификатора.

Обучение классификатора на пикселах сельскохозяйственных и несельскохозяйственных культур

Классификация KNN выполняется с использованием классификатора соседей KNeighborsClassifier библиотеки scikit-learn. Количество соседей, параметр, сильно влияющий на производительность оценщика, настраивается с использованием перекрестной проверки в KNN перекрестной проверке. Затем классификатор обучается с использованием подготовленных наборов данных и настроенного количества соседей. См. следующий код:

def fit_classifier(pl_filename, ground_truth_filename, metadata_filename, n_neighbors):    weights = 'uniform'    clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)    train_class_band = create_contour_classified_band(pl_filename, ground_truth_filename)    X = to_X(load_refl_bands(pl_filename, metadata_filename))    y = to_y(train_class_band)    clf.fit(X, y)    return clfclf = fit_classifier(train_scene_filename,                     train_ground_truth_filename,                     train_metadata_filename,                     n_neighbors)

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

def predict(pl_filename, metadata_filename, clf):    bands = load_refl_bands(pl_filename, metadata_filename)    X = to_X(bands)    y = clf.predict(X)    return classified_band_from_y(bands[0].mask, y)train_predicted_class_band = predict(train_scene_filename, train_metadata_filename, clf)

Оценка прогнозов модели

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

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

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

Впоследствии мы рассматриваем еще одну область, которая была классифицирована по-разному между двумя методами. Эти выделенные области ранее были отмечены как неполезные регионы в данных, верные для 2015 года (вверху справа), но изменились и явно показаны как пашни в 2017 году с помощью снимков Планетоскопа (вверху слева и внизу слева). Они также были классифицированы в основном как пашни с помощью классификатора (внизу справа).

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

Оценка модели

Визуальное сравнение изображений предсказанных классов с фактическими классами может быть субъективным и не может быть обобщено для оценки точности результатов классификации. Чтобы получить количественную оценку, мы получаем метрики классификации, используя функцию classification_report из библиотеки scikit-learn:

# тренировочный набор данныхprint(classification_report(to_y(create_contour_classified_band(train_scene_filename,                                          train_ground_truth_filename)),                            to_y(train_predicted_class_band),                            target_names=['пашня', 'неполезная']))              точность    полнота  F-мера   количество        crop       0.89      0.86      0.87   2641818    non-crop       0.83      0.86      0.84   2093907    accuracy                           0.86   4735725   средневзвешенная       0.86      0.86      0.86   4735725# тестовый набор данныхprint(classification_report(to_y(create_contour_classified_band(test_scene_filename,                                       test_ground_truth_filename)),                            to_y(test_predicted_class_band),                            target_names=['пашня', 'неполезная']))              точность    полнота  F-мера   количество        crop       0.94      0.73      0.82   1959630    non-crop       0.32      0.74      0.44    330938    accuracy                           0.73   2290568   средневзвешенная       0.63      0.74      0.63   2290568

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

Точность является мерой того, насколько точные наши положительные предсказания модели. В данном случае точность 0.94 для пашни указывает на то, что наша модель очень успешно определяет правильные площади, которые действительно являются пашнями, где ложные положительные значения (фактически неполезные регионы, неправильно идентифицированные как пашни) минимизированы. Полнота, с другой стороны, измеряет полноту положительных предсказаний. Другими словами, полнота измеряет долю фактических положительных значений, которые были правильно определены. В нашем случае значение полноты 0.73 для пашни означает, что 73% всех истинных пикселей пашни правильно идентифицированы, минимизируя количество ложных отрицательных значений.

Идеально быть имеющими высокие значения как точности, так и полноты, хотя это может зависеть от приложения конкретного исследования. Например, если мы рассматриваем эти результаты для фермеров, стремящихся определить пашни для сельского хозяйства, мы хотели бы отдать предпочтение более высокой полноте, чем точности, чтобы минимизировать количество ложных отрицательных ответов (области, определенные как неполезные регионы, на самом деле являющиеся пашнями) с целью использования земли наиболее эффективно. F-мера служит в качестве общей метрики точности, объединяя и точность, и полноту, а также измеряет баланс между этими двумя метриками. Высокий показатель F-меры, как в нашем случае для пашни (0.82), указывает на хороший баланс между точностью и полнотой и высокую общую точность классификации. Хотя показатель F-меры снижается между тренировочным и тестовым наборами данных, это ожидаемо, потому что классификатор обучался на тренировочном наборе данных. Общая средневзвешенная F-мера 0.77 является многообещающей и достаточно хорошей для применения сегментационных схем для классифицированных данных.

Создание маски сегментации из классификатора

Создание маски сегментации с использованием предсказаний классификатора KNN на тестовом наборе данных включает очистку предсказанного вывода от маленьких сегментов, вызванных шумом изображения. Для удаления шумов используется фильтр медианного размытия OpenCV median blur filter. Этот фильтр лучше сохраняет разделение на дороги между культурами, чем морфологическая операция открытия.

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

Наконец, фактические сегментированные области культур могут быть вычислены с использованием контуров сегментированных культур.

Сегментированные области культур, полученные с использованием классификатора KNN, позволяют точно определить области культур в тестовом наборе данных. Эти сегментированные области могут использоваться для различных целей, таких как определение границ полей, мониторинг роста культур, оценка урожайности и распределение ресурсов. Достигнутый показатель F1 в 0,77 хорош и предоставляет доказательства того, что классификатор KNN является эффективным инструментом для сегментации культур на снимках с удаленных датчиков. Эти результаты могут быть использованы для дальнейшего совершенствования и улучшения техник сегментации культур, что потенциально приведет к повышению точности и эффективности анализа урожая.

Заключение

В этом посте было показано, как можно использовать комбинацию изображений спутников высокого разрешения и высокой частоты съемки от Planet и геопространственных возможностей SageMaker для проведения анализа сегментации культур, открывая ценные идеи, которые могут улучшить сельскохозяйственную эффективность, экологическую устойчивость и продовольственную безопасность. Точное определение областей культур позволяет проводить дальнейший анализ роста и производительности, мониторинг изменений в использовании земли и обнаружение потенциальных рисков продовольственной безопасности.

Более того, сочетание данных от Planet и SageMaker предлагает широкий спектр возможностей за пределами сегментации культур. Эти идеи позволяют принимать решения на основе данных в области управления культурами, распределения ресурсов и планирования политики в сельском хозяйстве. С дополнительными данными и моделями машинного обучения, комбинированное предложение также может расшириться на другие отрасли и области применения в области цифрового преобразования, устойчивости и безопасности.

Чтобы начать использовать геопространственные возможности SageMaker, посмотрите Руководство по началу работы с геопространственными возможностями Amazon SageMaker.

Чтобы узнать больше о спецификациях изображений от Planet и справочных материалах для разработчиков, посетите Центр разработчиков Planet. Для документации по SDK для Python от Planet, посмотрите SDK для Python от Planet. Для получения дополнительной информации о Planet, включая его существующие продукты и предстоящие релизы, посетите https://www.planet.com/.

Planet Labs PBC Заявления о перспективе

За исключением исторической информации, содержащейся в данном блоге, материалы этого блога являются перспективными заявлениями в соответствии с положениями “спасительного порта” Закона о реформе частного инвестиционного судопроизводства 1995 года, включая, но не ограничиваясь, возможность захвата рыночных возможностей и реализации любых потенциальных выгод от улучшений текущих или будущих продуктов, новых продуктов или стратегических партнерств и сотрудничества с клиентами Planet Labs PBC. Перспективные заявления основаны на убеждениях руководства Planet Labs PBC, а также на предположениях и информации, которая имеется в настоящее время. Поскольку такие заявления основаны на ожиданиях относительно будущих событий и результатов и не являются утверждениями факта, фактические результаты могут существенно отличаться от прогнозируемых. Факторы, которые могут привести к существенным отличиям фактических результатов от текущих ожиданий, включают, но не ограничиваются, риск, связанный с деловыми и другими раскрытиями о Planet Labs PBC и его бизнесе, которые включены в периодические доклады, доверенности и другие материалы, подлежащие раскрытию от времени к времени перед Комиссией по ценным бумагам и биржам (Комиссией), которые можно найти в Интернете на сайте www.sec.gov, а также на сайте Planet Labs PBC по адресу www.planet.com. Все перспективные заявления отражают лишь убеждения и предположения Planet Labs PBC только на дату, когда такие заявления были сделаны. Planet Labs PBC не обязуется обновлять перспективные заявления в связи с будущими событиями или обстоятельствами.