训练随机树分类器 (Image Analyst)

需要 Spatial Analyst 许可。

获得 Image Analyst 许可后可用。

描述

使用随机树分类方法生成 Esri 分类器定义文件 (.ecd)。

随机树分类器是一种图像分类技术,可防止过度拟合,并可处理分割影像及其他辅助栅格数据集。对于标准影像输入,该工具接受具有任意位深度的多波段影像,它还会基于输入训练要素文件对各像素或分割影像执行随机树分类。

使用方法

  • 随机树分类方法是各个决策树的集合,其中每个树都生成自训练数据的不同样本和子集。将其称为决策树的理念是:对于每一个被分类的像素,均会按重要性的等级顺序作出许多决策。而针对每个像素决策所绘制的图的外观将如同树枝一样。因此,对整个数据集进行分类后,这些树枝将形成树。此方法称为随机树,因为您实际上会根据训练像素的随机子选择对数据集进行多次分类,从而生成许多决策树。要做最终决策,每个树都可参与其中。此流程可用于削弱过度拟合。随机树分类方法是一种机器学习分类器,它基于大量决策树的执行,每个树变量子集的随机选择,以及将最常用的树输出用作整体分类。随机树分类方法将针对决策树与其训练样本数据的过度拟合倾向进行更正。使用此方法,将按类、森林生长出多个树,这些树之间的差异通过将训练数据映射到在拟合各个树之前随机选择的子空间引入。每个节点上的决策将通过随机程序进行优化。

  • 对于关键属性设置为分割的分割栅格,此工具将计算 RGB 分割栅格中的索引影像及相关的分割影像属性。计算的属性将用于生成要在独立分类工具中使用的分类器定义文件。可根据任意 Esri 支持的影像计算每个分割影像的属性。

  • 任何 Esri 支持的栅格都可用作输入,包括栅格产品、分割栅格、镶嵌、影像服务和通用栅格数据集。分割栅格必须为 8 位 3 波段栅格。

  • 要创建训练样本文件,请使用分类工具下拉菜单中的训练样本管理器窗格。

  • 仅在其中一个栅格图层输入为分割影像的情况下启用分割属性参数。

  • 要使用连续变化检测和分类 (CCDC) 算法对时间序列栅格数据进行分类,请首先运行使用 CCDC 分析变化工具,并使用输出变化分析栅格作为此训练工具的输入栅格。

    训练样本数据必须已使用 训练样本管理器进行多次采集。每个样本的尺寸值将在训练样本要素类的一个字段中列出,而该值是在维度值字段参数中指定。

语法

TrainRandomTreesClassifier(in_raster, in_training_features, out_classifier_definition, {in_additional_raster}, {max_num_trees}, {max_tree_depth}, {max_samples_per_class}, {used_attributes}, {dimension_value_field})
参数说明数据类型
in_raster

待分类的栅格数据集。

使用任何 Esri 支持的栅格数据集。一个选项为 8 位 3 波段分割栅格数据集,其中所有位于同一分割的像素都具有相同的颜色。输入也可以是 8 位单波段灰度分割栅格。

Raster Layer; Mosaic Layer; Image Service; String
in_training_features

用于描绘训练场的训练样本文件或图层。

它们可以是包含训练样本的 shapefile 或要素类。训练样本文件中需要以下字段名称:

  • classname - 指示类类别名称的文本字段。
  • classvalue - 包含每个类类别的整数值的长整型字段。

Feature Layer
out_classifier_definition

包含属性信息、统计数据和分类器的其他信息的 JSON 文件。将创建一个 .ecd 文件。

File
in_additional_raster
(可选)

将整合辅助栅格数据集(如多光谱影像或 DEM),从而为分类生成属性和其他所需信息。设置此参数属于可选操作。

Raster Layer; Mosaic Layer; Image Service; String
max_num_trees
(可选)

森林中的最多树数。增加树的数量将提高精确度,尽管此改进最终会逐渐减缓。树的数量将线性增加处理时间。

Long
max_tree_depth
(可选)

森林中的每个树的最大深度。深度是指每个树为制定决策而允许创建的规则数。树的深度不会超过此设置。

Long
max_samples_per_class
(可选)

用于定义每个类的样本的最大数量。

如果输入为非分割栅格,建议使用默认值 1000。值小于或等于 0 表示系统将使用训练场中的所有样本来训练分类器。

Long
used_attributes
[used_attributes;used_attributes,...]
(可选)

指定要包括在与输出栅格相关联的属性表中的属性。

  • COLORRGB 颜色值可基于每个分割从输入栅格获取。
  • MEAN基于每个分割,从可选像素图像中获取的平均数字值 (DN)。
  • STD基于每个分割,从可选像素图像中获取的标准差。
  • COUNT基于每个分割,构成分割的像素数。
  • COMPACTNESS基于每个分割,决定分隔为紧凑型还是圆形的度数。值的范围从 0 到 1,1 表示圆形。
  • RECTANGULARITY基于每个分割,决定分隔为矩形的度数。值的范围从 0 到 1,1 表示矩形。

如果在输入栅格上将分割关键属性设置为 true 时,则仅启用此参数。如果仅对此工具输入分割影像,则默认属性为 COLORCOUNTCOMPACTNESSRECTANGULARITY。如果将 in_additional_raster 作为输入与分割影像一起添加进来,则还可以使用 MEANSTD 属性。

String
dimension_value_field
(可选)

在输入训练样本要素类中包含尺寸值。

需要使用此参数以通过来自使用 CCDC 分析变化工具的变化分析栅格输出对栅格数据的时间序列进行分类。

Field

代码示例

TrainRandomTreesClassifier 示例 1(Python 窗口)

这是 TrainRandomTreesClassifier 工具的 Python 示例。

import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

TrainRandomTreesClassifier("c:/test/moncton_seg.tif",
                           "c:/test/train.gdb/train_features",
                           "c:/output/moncton_sig_SVM.ecd",
                           "c:/test/moncton.tif", "50", "30", "1000",
                           "COLOR;MEAN;STD;COUNT;COMPACTNESS;RECTANGULARITY")
TrainRandomTreesClassifier 示例 2(独立脚本)

这是 TrainRandomTreesClassifier 工具的 Python 脚本示例。

# Import system modules
import arcpy
from arcpy.ia import *

# Set local variables
inSegRaster = "c:/test/cities_seg.tif"
train_features = "c:/test/train.gdb/train_features"
out_definition = "c:/output/cities_sig.ecd"
in_additional_raster = "c:/cities.tif"
maxNumTrees = "50"
maxTreeDepth = "30"
maxSampleClass = "1000"
attributes = "COLOR;MEAN;STD;COUNT;COMPACTNESS;RECTANGULARITY"

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute
TrainRandomTreesClassifier(inSegRaster, train_features,
                           out_definition, in_additional_raster, maxNumTrees,
                           maxTreeDepth, maxSampleClass, attributes)
TrainRandomTreesClassifier 示例 3(独立脚本)

本示例演示如何使用来自使用 CCDC 分析变化工具的变化分析栅格训练随机树分类器。

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")


# Define input parameters
in_changeAnalysisRaster = "c:/test/LandsatCCDC.crf"
train_features = "c:/test/train.gdb/train_features"
out_definition = "c:/output/change_detection.ecd"
in_additional_raster = ""
maxNumTrees = 50
maxTreeDepth = 30
maxSampleClass = 1000
attributes = None
dimension_field = "DateTime"

# Execute
arcpy.ia.TrainRandomTreesClassifier(
	in_changeAnalysisRaster, train_features, out_definition, 
	in_additional_raster, maxNumTrees, maxTreeDepth, maxSampleClass, 
	attributes, dimension_field)

许可信息

  • Basic: 需要 Image Analyst 或 Spatial Analyst
  • Standard: 需要 Image Analyst 或 Spatial Analyst
  • Advanced: 需要 Image Analyst 或 Spatial Analyst

相关主题