Классифицировать объекты при помощи глубокого обучения (Image Analyst)

Доступно с лицензией Image Analyst.

Краткая информация

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

Для этого инструмента требуется файл определения модели, содержащий обученную информацию о модели. Модели могут быть обучены с помощью инструмента Тренировать модель глубокого обучения или с помощью сторонних программных средств обучения, таких как TensorFlow, PyTorch или Keras. Файл определения модели может быть файлом JSON определения модели Esri (.emd) или пакетом модели глубокого обучения, и он должен содержать путь к растровой функции Python, вызываемой для обработки каждого объекта, и путь к обученному двоичному файлу модели глубокого обучения.

Использование

  • Необходимо установить соответствующую среду глубокого обучения Python API (PyTorch или Keras) в среду ArcGIS Pro Python; в противном случае при добавлении файла определения модели Esri в инструмент появится сообщение об ошибке. Соответствующую информацию о нужной среде должен предоставить автор файла определения модели Esri.

    Чтобы настроить компьютер на работу в среде глубокого обучения в ArcGIS Pro, см. раздел Установка сред глубокого обучения для ArcGIS.

  • Этот инструмент вызывает сторонний API для глубокого обучения Python (такой, как PyTorch или Keras) и использует указанную функцию растра Python для обработки каждого объекта.

  • Вы можете посмотреть примеры использования этого инструмента на странице GitHub Растровые функции Esri PythonАнатомия растровой функции Python. Вы также можете написать пользовательские модули Python, следуя примерам и инструкциям.

  • Значением параметра Определение модели Esri может быть JSON файл определения модели Esri (.emd), строка JSON или пакет модели глубокого обучения (.dlpk). Строка JSON полезна при использовании инструмента на сервере, чтобы вы могли вставить необходимую строку JSON, вместо загрузки файла .emd. Файл .dlpk должен быть сохранен локально.

  • Следующий пример предназначен для файла .emd:

    {
        "Framework": "Keras",
        "ModelConfiguration":"KerasClassifier",
        "ModelFile":"C:\\DeepLearning\\Damage_Classification_Model_V7.h5",
        "ModelType":"ObjectClassification",
        "ImageHeight":256,
        "ImageWidth":256,
        "ExtractBands":[0,1,2],
        "CropSizeFixed": 1,
        "BlackenAroundFeature": 1,
        "ImageSpaceUsed": "MAP_SPACE", 
        "Classes": [
        {
           "Value": 0,
           "Name": "Damaged",
           "Color": [255, 0, 0]
        },
        {
           "Value": 1,
           "Name": "Undamaged",
           "Color": [76, 230, 0]
        }
        ]
    }
  • Свойство CropSizeFixed задает режим кадрирования растрового листа вокруг каждого объекта. Значение 1 означает использование фиксированного растрового листа, заданного свойствами ImageHeight и ImageWidth в файле .emd. Объект центрируется внутри листа фиксированного размера. Значение 0 означает использование переменного размера листов, где лист растра кадрируется с помощью минимального ограничивающего прямоугольника вокруг объекта.

  • Свойство BlackenAroundFeature определяет, будут ли маскироваться пикселы вне каждого объекта. Значение 0 определяет, что пикселы вне каждого объекта не будут маскироваться. Значение 1 определяет, что пикселы вне каждого объекта будут маскироваться.

  • Инструмент может обрабатывать входные изображения, которые находятся в пространстве карты или в пространстве пикселов. Изображения в пространстве карты находятся в картографической системе координат. Изображения в пиксельном пространстве находятся в необработанном пространстве изображений без вращения и искажений. Система привязки может быть задана при формировании обучающих данных в инструменте Экспорт обучающих данных для глубокого обучения в параметре Система привязки. Если модель обучается в стороннем обучающем программном обеспечении, система привязки должна быть указана в файле .emd с помощью параметра ImageSpaceUsed, который может задан как MAP_SPACE или PIXEL_SPACE.

  • Входной растр может быть одним растром, несколькими растрами или классом пространственных объектов с прикрепленными изображениями. Дополнительные сведения о вложениях см. в разделе Добавление и удаление вложений файлов.

  • Увеличение размера пакета может улучшить производительность инструмента, но при этом увеличение размера пакета приводит к расходованию большего объема памяти. Если возникает ошибка нехватки памяти, используйте меньший размер пакета. Значение batch_size может быть выровнено с использованием параметра Аргумент.

  • Размерами пакета являются результаты возведения в квадрат, например 1, 4, 9, 16, 25, 64 и т.д. Если входное значение не четкий квадрат, используется максимально возможный квадрат. Например, если указано значение 6, размер пакета будет равен 4.

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

  • Дополнительную информацию о глубоком обучении см. в разделе Глубокое обучение в ArcGIS Image Analyst.

Параметры

ПодписьОписаниеТип данных
Входной растр

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

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
Выходной класс классифицированных объектов

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

Feature Class
Определение модели

Значением параметра Определение модели Esri может быть JSON файл определения модели Esri (.emd), строка JSON или пакет модели глубокого обучения (.dlpk). Строка JSON полезна при использовании инструмента на сервере, чтобы вы могли вставить необходимую строку JSON, вместо загрузки файла .emd. Файл .dlpk должен быть сохранен локально.

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

File; String
Входные объекты
(Дополнительный)

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

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

Feature Class; Feature Layer
Поле метки класса
(Дополнительный)

Имя поля, которое будет содержать метку класса или категории в выходном классе пространственных объектов.

Если имя поля не указано, то в выходном классе объектов будет сгенерировано поле ClassLabel.

String
Режим обработки
(Дополнительный)

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

  • Обработка как мозаики изображенийВсе растровые элементы в наборе данных мозаики или сервисе изображений будут объединены в мозаику и обработаны. Это значение по умолчанию
  • Обработка всех растровых элементов отдельноВсе растровые элементы в наборе данных мозаики или сервисе изображений будут обработаны как отдельные изображения.
String
Аргументы модели
(Дополнительный)

Аргументы функции, определенные в классе функции растра Python. Там перечисляются дополнительные параметры глубокого обучения и аргументы для экспериментов и улучшения, например, порог достоверности для настройки чувствительности. Названия аргументов заполняются из модуля Python.

Value Table
Заголовок
(Дополнительный)

Имя поля, содержащего текст или заголовок в выходном классе объектов. Этот параметр поддерживается, только если используется модель Image Captioner.

Если имя поля не указано, то в выходном классе объектов будет сгенерировано поле Caption.

Примечание:

Этот параметр не отображается на панели Геообработка. Чтобы изменить имя поля по умолчанию, используйте параметр Поле метки класса.

String

ClassifyObjectsUsingDeepLearning(in_raster, out_feature_class, in_model_definition, {in_features}, {class_label_field}, {processing_mode}, {model_arguments}, {caption_field})
ИмяОписаниеТип данных
in_raster

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

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
out_feature_class

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

Feature Class
in_model_definition

Значением параметра in_model_definition может быть JSON файл определения модели Esri (.emd), строка JSON или пакет модели глубокого обучения (.dlpk). Строка JSON полезна при использовании инструмента на сервере, чтобы вы могли вставить необходимую строку JSON, вместо загрузки файла .emd. Файл .dlpk должен быть сохранен локально.

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

File; String
in_features
(Дополнительный)

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

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

Feature Class; Feature Layer
class_label_field
(Дополнительный)

Имя поля, которое будет содержать метку класса или категории в выходном классе пространственных объектов.

Если имя поля не указано, то в выходном классе объектов будет сгенерировано поле ClassLabel.

String
processing_mode
(Дополнительный)

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

  • PROCESS_AS_MOSAICKED_IMAGEВсе растровые элементы в наборе данных мозаики или сервисе изображений будут объединены в мозаику и обработаны. Это значение по умолчанию
  • PROCESS_ITEMS_SEPARATELYВсе растровые элементы в наборе данных мозаики или сервисе изображений будут обработаны как отдельные изображения.
String
model_arguments
[model_arguments,...]
(Дополнительный)

Аргументы функции, определенные в классе функции растра Python. Там перечисляются дополнительные параметры глубокого обучения и аргументы для экспериментов и улучшения, например, порог достоверности для настройки чувствительности. Названия аргументов заполняются из модуля Python.

Value Table
caption_field
(Дополнительный)

Имя поля, содержащего текст или заголовок в выходном классе объектов. Этот параметр поддерживается, только если используется модель Image Captioner.

Если имя поля не указано, то в выходном классе объектов будет сгенерировано поле Caption.

String

Пример кода

ClassifyObjectsUsingDeepLearning, пример 1 (окно Python)

В этом примере создается новый класс объектов с полем меток для классификации поврежденных и неповрежденных домов на изображении.

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
# Execute 
ClassifyObjectsUsingDeepLearning("C:/Data/Input_Image.tif", 
	"C:/Data/MyProject.gdb/Classified_Results", "C:/Data/BuildingDamageClassifier.emd", 
	"C:/Data/building_footprints.shp","Class_Label", 
	"PROCESS_AS_MOSAICKED_IMAGE", "padding 0;batch_size 4")
ClassifyObjectsUsingDeepLearning, пример 2 (автономный скрипт)

В этом примере создается новый класс объектов с полем меток для классификации поврежденных и неповрежденных домов на изображении.

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
# Define input parameters
in_raster = "C:/Classify_Objects/input_image.tif" 
out_feature_class = "C:/Classify_Objects/MyProject.gdb/classified_results" 
in_model_definition = "C:/Classify_Objects/BuildingDanmageClassifier.emd" 
in_features = "C:/Classify_Objects/building_footprints.shp" 
class_label_field = "Damaged_or_Undamaged"
model_arguments = "padding 0;batch_size 4"
process_all_raster_items = "PROCESS_AS_MOSAICKED_IMAGE"

# Execute 
ClassifyObjectsUsingDeepLearning(in_raster, out_feature_class, in_model_definition,
	in_features, class_label_field,  
	process_all_raster_items, model_arguments)

Информация о лицензиях

  • Basic: Обязательно Image Analyst
  • Standard: Обязательно Image Analyst
  • Advanced: Обязательно Image Analyst

Связанные разделы