Глубокое обучение может быть использовано для автоматизации задачи извлечения объектов вручную из изображений. Используя предварительно обученные модели ArcGIS, вы можете сократить потребность в больших наборах данных, значительной вычислительной мощности, а также знаниях или опыте в области глубокого обучения. Эти модели были обучены на разнообразных географических данных и хорошо работают в разных регионах. Предварительно обученные модели ArcGIS доступны для каждого пользователя, имеющего учетную запись ArcGIS в ArcGIS Living Atlas of the World. В следующем рабочем процессе используется модель Car Detection-USA для идентификации автомобилей на снимках с высоким разрешением, полученных с помощью БПЛА, и аэрофотоснимках.
Требования
Для выполнения этого рабочего процесса необходимо выполнить следующие требования:
- Аэрофотоснимки для запуска модели.
Примечание:
Вы можете загрузить аэрофотоснимки, содержащие машины, с OpenAerialMap.
- Глубокое обучение требует больших вычислительных ресурсов, поэтому для обработки больших наборов данных рекомендуется использовать мощный графический процессор.
Извлечение объектов с помощью предварительно обученных моделей
В следующих разделах описываются процессы, используемые при извлечении объектов с помощью предварительно обученной модели ArcGIS.
Импортировать библиотеки Python
Импортируйте следующие библиотеки Python:from arcgis.gis import GIS
from arcgis.learn import detect_objects
from arcgis.raster.analytics import copy_raster
gis = GIS("home")
Добавить данные и модель для анализа
Существует два метода, которые можно использовать для добавления набора данных в ваш блокнот.
Первый метод заключается в загрузке аэрофотоснимков в рабочую область вашего блокнота, добавлении их в ячейку кода и запуске функции copy_raster() для извлечения данных.dataset = "/arcgis/home/Aerial imagery.tif"
imagery = copy_raster(input_raster=dataset, output_name="Aerial_imagery", raster_type_name="Raster Dataset")
Второй метод заключается в добавлении аэрофотоснимка в качестве размещенного слоя изображений на ваш портал и добавлении слоя изображений в ваш блокнот с использованием его itemID.imagery = gis.content.get("<imagery-layer-item-id>")
Добавить пакет глубокого обучения
Вы можете загрузить предварительно обученную модель Car Detection - USA из ArcGIS Living Atlas. После загрузки модели добавьте ее в качестве элемента на свой портал и получите к ней доступ в своем блокноте, используя ее itemID.model = gis.content.get("<deep-learning-package-item-id>")
Запуск модели
Чтобы запустить предварительно обученную модель в своем блокноте, используйте модуль detect_objects из arcgis.learn. Модуль примет ваши изображения в качестве входных данных, обнаружит и подсчитает количество автомобилей, присутствующих на них.
Примечание:
Вы можете потенциально увеличить производительность модели, дополняя ее аргументы различными значениями до тех пор, пока не будет достигнут желаемый результат.
model_arguments = {
"padding": "100", # The number of pixels at the border of image tiles from which predictions are blended for adjacent tiles. To smooth the output while reducing artifacts, increase the value
"batch_size": "16", # Change batch size as per GPU specifications
"threshold": "0.5", # Get detections greater than 50% confidence
"tile_size": "224", # The width and height of image tiles into which the imagery is split for prediction
}
Примечание:
Если графический процессор настроен, вы можете задать контекст внутри метода detect_object(), чтобы установить его для параметра среды графического процессора:context = { "processorType": "GPU" }
num_cars = {}
detected_cars = detect_objects(
input_raster=imagery,
model = model,
output_name = "detected_cars",
)
num_cars[imagery.name] = len(detected_cars.query(as_df=True))
Результаты модели
Наконец, после запуска модели вы можете отобразить выходные данные num_cars.print(f"Number of cars is {num_cars}.")