导出训练数据进行深度学习 (Spatial Analyst)

需要 Spatial Analyst 许可。

获得 Image Analyst 许可后可用。

摘要

使用遥感影像将标注的矢量或栅格数据转换为深度学习训练数据集。 输出将是影像芯片文件夹和指定格式的元数据文件文件夹。

使用情况

  • 该工具将创建训练数据集以支持第三方深度学习应用程序,如 Google TensorFlow、Keras、PyTorch 和 Microsoft CNTK。

  • 深度学习类训练样本基于包含感兴趣的要素或类的小型子影像,该子影像被称为影像片。

  • 使用现有的分类训练样本数据或 GIS 要素类数据(如建筑物覆盖区图层)生成包含来自源影像的类样本的影像片。 影像片通常有 256 个像素行和 256 个像素列,除非训练样本大小更大。 每个影像片可以包含一个或多个对象。 如果使用标注切片参数元数据格式,则每个影像片只能有一个对象。

  • 通过指定参考系统参数值,可以将训练数据导出到地图空间、影像空间或像素空间(原始影像空间)中,以便将其用于深度学习模型训练。

  • 该工具支持从影像集合中导出训练数据。 您可以将影像文件夹添加为输入栅格值。 如果输入栅格值为镶嵌数据集或影像服务,则您也可以将处理模式参数指定为将镶嵌作为一个输入进行处理或每个栅格项目分别处理。

  • 可以使用地理处理环境设置来调整像元大小和范围。

  • 有关运行此工具的要求以及您可能遇到的问题的信息,请参阅深度学习常见问题

参数

标注说明数据类型
输入栅格

输入源影像,通常是多光谱影像。

输入源影像类型的示例包括多光谱卫星影像、无人机影像、航空影像和国家农业影像计划 (NAIP)。 输入可以是影像的文件夹。

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder
输出文件夹

将存储输出影像片和元数据的文件夹。

该文件夹还可以是使用云存储连接文件 (*.acs) 的文件夹 URL。

Folder
输入要素类或分类栅格或表

矢量或栅格形式的训练样本数据。

矢量输入应当遵循使用训练样本管理器窗格生成的训练样本格式。 栅格输入应当遵循分类栅格工具生成的分类栅格格式。 栅格输入也可以来自分类栅格的文件夹。 输入表应当遵循通过训练样本管理器窗格中的深度学习标注对象工具生成的训练样本格式。 可以使用统计信息并遵循正确的训练样本格式生成最佳结果;但输入也可以是没有类值字段的点要素类,或不具有任何类信息的整型栅格。

Feature Class; Feature Layer; Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Table; Folder
图像格式

指定将用于影像片输出的栅格格式。

PNG 和 JPEG 格式最多支持 3 个波段。

  • TIFF 格式将使用 TIFF 格式。
  • PNG 格式将使用 PNG 格式。
  • JPEG 格式将使用 JPEG 格式。
  • MRF(元栅格格式)将使用元栅格格式 (MRF)。
String
切片大小 X
(可选)

影像片的大小,针对 x 维度。

Long
切片大小 Y
(可选)

影像片的大小,针对 y 维度。

Long
步幅 X
(可选)

在创建下一个影像片时 x 方向上移动的距离。

当步幅等于切片大小时,将不会发生重叠。 当步幅等于切片大小的一半时,将有 50% 的重叠。

Long
步幅 Y
(可选)

在创建下一个影像片时 y 方向上移动的距离。

当步幅等于切片大小时,将不会发生重叠。 当步幅等于切片大小的一半时,将有 50% 的重叠。

Long
输出无要素切片
(可选)

指定是否将导出不捕获训练样本的影像片。

  • 选中 - 将导出所有影像片,包括不捕获训练样本的影像片。
  • 未选中 - 仅会导出捕获训练样本的影像片。 这是默认设置。

如果选中,不捕获标注数据的影像片也会被导出;如果未选中,它们将不会被导出。

Boolean
元数据格式
(可选)

指定输出元数据标注使用的格式。

如果输入训练样本数据是诸如建筑物图层等的要素类图层或者标准分类训练样本文件,请使用 KITTI 标注PASCAL Visual 对象类选项(Python 中的 KITTI_rectanglesPASCAL_VOC_rectangles)。 输出元数据是包含训练样本数据的 .txt 文件或 .xml 文件,其中训练样本数据包含在最小外接矩形中。 元数据文件的名称与输入源影像名称相匹配。 如果输入训练样本数据是类地图,请使用分类切片选项(Python 中的 Classified_Tiles)作为输出元数据格式。

对于 KITTI 元数据格式,将创建 15 个列,但此工具中仅使用其中 5 个列。 第一个列是类值。 然后,跳过之后 3 个列。 5 至 8 列用于定义最小外接矩形,该矩形将由以下 4 个影像坐标位置构成:左、上、右和下像素。 最小外接矩形包含用于深度学习分类器中的训练片。 系统将不会使用其他列。

  • KITTI 标注元数据将遵循与卡尔斯鲁厄理工学院和丰田工业大学 (KITTI) 对象检测评估数据集相同的格式。 KITTI 数据集是一款视觉基准套件。 标注文件是纯文本文件。 所有的值(数值和字符串)均由空格分隔开,每行对应一个对象。此格式将用于对象检测。
  • PASCAL 可视化对象类元数据将遵循与模式分析、统计建模和计算学习、可视化对象类 (PASCAL_VOC) 数据集相同的格式。 PASCAL VOC 数据集是用于对象类识别的标准化影像数据集。 标注文件为 XML 格式,包含有关影像名称、类值和边界框的信息。此格式将用于对象检测。 这是默认设置。
  • 已分类切片每有一个输入影像片,就将输出一个分类影像片。 对于每个影像片,未使用其他元数据。 只有统计数据输出具有更多关于类的信息,如类名称、类值和输出统计数据。此格式主要用于像素分类。 当输出是来自两影像片中的一个分类影像片时,此格式也用于更改检测。
  • RCNN 掩膜输出将为在样本所在的区域上具有掩膜的影像片。 该模型将为影像中对象的每个实例生成边界框和分割掩膜。 此格式基于特征金字塔网络 (FPN) 和深度学习框架模型中的 ResNet101 核心支柱。此格式用于对象检测,但是,在训练期间使用 Siam Mask 模型类型时,也可用于对象追踪。
  • 已标注切片每个输出切片都将使用特定类进行标注。此格式将用于对象分类。
  • 多标注切片每个输出切片都将使用一个或多个类进行标注。 例如,可将切片标注为“农业”,也可将其标注为“多云”。此格式将用于对象分类。
  • 导出切片输出将为不带标注的影像片。此格式用于影像转换技术,例如 Pix2Pix 和超分辨率。
  • CycleGAN输出将为不带标注的影像片。此格式用于影像转换技术 CycleGAN,该技术用于训练不重叠的影像。
  • Imagenet每个输出切片都将使用特定类进行标注。此格式用于对象分类,但是,在训练期间使用 Deep Sort 模型类型时,也可用于对象追踪。
String
起始索引
(可选)

旧版本:

此参数已弃用。

Long
类值字段
(可选)

包含类值的字段。 如果未指定任何字段,则系统将搜索 valueclassvalue 字段。 如果该要素不包含类字段,则系统将确定所有记录均属于一个类。

Field
缓冲半径
(可选)

用于描绘训练样本区域的每个训练样本周围的缓冲区半径。 您可以借此从点创建圆形面训练样本。

系统将使用输入要素类或分类栅格或表参数值空间参考的线性单位。

Double
输入掩膜面
(可选)

此面要素类用于描绘将创建影像片的区域。

系统仅会创建完全位于面内的影像片。

Feature Layer
旋转角度
(可选)

将用于生成其他影像片的旋转角度。

影像片将在旋转角度为 0 的情况下生成,这意味着无旋转。 随后系统将以指定的角度旋转该片,以创建其他影像片。 系统将在多个影像片中以多个角度捕获相同的训练样本,以便用于数据增强。

默认旋转角度为 0。

Double
参考系统
(可选)

指定将用于解释输入影像的参考系类型。 指定的参考系必须与训练深度学习模型所使用的参考系相匹配。

  • 地图空间将使用基于地图的坐标系。 这是默认设置。
  • 像素空间将使用图像空间,没有旋转且没有失真。
String
处理模式
(可选)

指定处理镶嵌数据集或影像服务中的所有栅格项目的方式。 当输入栅格是镶嵌数据集或影像服务时,将应用此参数。

  • 以镶嵌影像方式处理将镶嵌在一起并处理镶嵌数据集或影像服务中的所有栅格项目。 这是默认设置。
  • 单独处理所有栅格项目将作为独立影像处理镶嵌数据集或影像服务中的所有栅格项目。
String
将周围要素变黑
(可选)

指定是否对每个影像切片中的每个对象或要素周围的像素进行掩膜。

仅当元数据格式参数设置为标注切片且已指定输入要素类或分类栅格时,此参数才适用。

  • 未选中 - 将不会对对象或要素周围的像素进行掩膜。 这是默认设置。
  • 选中 - 将对对象或要素周围的像素进行掩膜。
Boolean
裁剪模式
(可选)

指定是否将裁剪导出的切片,从而使其大小均相同。

仅当元数据格式参数设置为标注切片Imagenet 且已指定输入要素类或分类栅格时,此参数才适用。

  • 固定大小导出的切片将被裁剪为相同的大小,并将以要素为中心。 这是默认设置。
  • 边界框将对导出的切片进行裁剪,以使边界几何仅围绕切片中的要素。
String
附加输入栅格
(可选)

将用于影像转换方法的附加输入影像源。

元数据格式参数设置为分类切片导出切片CycleGAN 时,此参数有效。

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

ExportTrainingDataForDeepLearning(in_raster, out_folder, in_class_data, image_chip_format, {tile_size_x}, {tile_size_y}, {stride_x}, {stride_y}, {output_nofeature_tiles}, {metadata_format}, {start_index}, {class_value_field}, {buffer_radius}, {in_mask_polygons}, {rotation_angle}, {reference_system}, {processing_mode}, {blacken_around_feature}, {crop_mode}, {in_raster2})
名称说明数据类型
in_raster

输入源影像,通常是多光谱影像。

输入源影像类型的示例包括多光谱卫星影像、无人机影像、航空影像和国家农业影像计划 (NAIP)。 输入可以是影像的文件夹。

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder
out_folder

将存储输出影像片和元数据的文件夹。

该文件夹还可以是使用云存储连接文件 (*.acs) 的文件夹 URL。

Folder
in_class_data

矢量或栅格形式的训练样本数据。

矢量输入应当遵循使用训练样本管理器窗格生成的训练样本格式。 栅格输入应当遵循分类栅格工具生成的分类栅格格式。 栅格输入也可以来自分类栅格的文件夹。 输入表应当遵循通过训练样本管理器窗格中的深度学习标注对象工具生成的训练样本格式。 可以使用统计信息并遵循正确的训练样本格式生成最佳结果;但输入也可以是没有类值字段的点要素类,或不具有任何类信息的整型栅格。

Feature Class; Feature Layer; Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Table; Folder
image_chip_format

指定将用于影像片输出的栅格格式。

PNG 和 JPEG 格式最多支持 3 个波段。

  • TIFF将使用 TIFF 格式。
  • PNG将使用 PNG 格式。
  • JPEG将使用 JPEG 格式。
  • MRF将使用元栅格格式 (MRF)。
String
tile_size_x
(可选)

影像片的大小,针对 x 维度。

Long
tile_size_y
(可选)

影像片的大小,针对 y 维度。

Long
stride_x
(可选)

在创建下一个影像片时 x 方向上移动的距离。

当步幅等于切片大小时,将不会发生重叠。 当步幅等于切片大小的一半时,将有 50% 的重叠。

Long
stride_y
(可选)

在创建下一个影像片时 y 方向上移动的距离。

当步幅等于切片大小时,将不会发生重叠。 当步幅等于切片大小的一半时,将有 50% 的重叠。

Long
output_nofeature_tiles
(可选)

指定是否将导出不捕获训练样本的影像片。

  • ALL_TILES将导出所有影像片,包括不捕获训练样本的影像片。
  • ONLY_TILES_WITH_FEATURES仅会导出捕获训练样本的影像片。 这是默认设置。
Boolean
metadata_format
(可选)

指定输出元数据标注使用的格式。

如果输入训练样本数据是诸如建筑物图层等的要素类图层或者标准分类训练样本文件,请使用 KITTI 标注PASCAL Visual 对象类选项(Python 中的 KITTI_rectanglesPASCAL_VOC_rectangles)。 输出元数据是包含训练样本数据的 .txt 文件或 .xml 文件,其中训练样本数据包含在最小外接矩形中。 元数据文件的名称与输入源影像名称相匹配。 如果输入训练样本数据是类地图,请使用分类切片选项(Python 中的 Classified_Tiles)作为输出元数据格式。

  • KITTI_rectangles元数据将遵循与卡尔斯鲁厄理工学院和丰田工业大学 (KITTI) 对象检测评估数据集相同的格式。 KITTI 数据集是一款视觉基准套件。 标注文件是纯文本文件。 所有的值(数值和字符串)均由空格分隔开,每行对应一个对象。此格式将用于对象检测。
  • PASCAL_VOC_rectangles元数据将遵循与模式分析、统计建模和计算学习、可视化对象类 (PASCAL_VOC) 数据集相同的格式。 PASCAL VOC 数据集是用于对象类识别的标准化影像数据集。 标注文件为 XML 格式,包含有关影像名称、类值和边界框的信息。此格式将用于对象检测。 这是默认设置。
  • Classified_Tiles每有一个输入影像片,就将输出一个分类影像片。 对于每个影像片,未使用其他元数据。 只有统计数据输出具有更多关于类的信息,如类名称、类值和输出统计数据。此格式主要用于像素分类。 当输出是来自两影像片中的一个分类影像片时,此格式也用于更改检测。
  • RCNN_Masks输出将为在样本所在的区域上具有掩膜的影像片。 该模型将为影像中对象的每个实例生成边界框和分割掩膜。 此格式基于特征金字塔网络 (FPN) 和深度学习框架模型中的 ResNet101 核心支柱。此格式用于对象检测,但是,在训练期间使用 Siam Mask 模型类型时,也可用于对象追踪。
  • Labeled_Tiles每个输出切片都将使用特定类进行标注。此格式将用于对象分类。
  • MultiLabeled_Tiles每个输出切片都将使用一个或多个类进行标注。 例如,可将切片标注为“农业”,也可将其标注为“多云”。此格式将用于对象分类。
  • Export_Tiles输出将为不带标注的影像片。此格式用于影像转换技术,例如 Pix2Pix 和超分辨率。
  • CycleGAN输出将为不带标注的影像片。此格式用于影像转换技术 CycleGAN,该技术用于训练不重叠的影像。
  • Imagenet每个输出切片都将使用特定类进行标注。此格式用于对象分类,但是,在训练期间使用 Deep Sort 模型类型时,也可用于对象追踪。

对于 KITTI 元数据格式,将创建 15 个列,但此工具中仅使用其中 5 个列。 第一个列是类值。 然后,跳过之后 3 个列。 5 至 8 列用于定义最小外接矩形,该矩形将由以下 4 个影像坐标位置构成:左、上、右和下像素。 最小外接矩形包含用于深度学习分类器中的训练片。 系统将不会使用其他列。

以下为 PASCAL_VOC_rectangles 选项示例:

<?xml version=”1.0”?>
- <layout>
      <image>000000000</image>
      <object>1</object>
    - <part>
         <class>1</class>
       - <bndbox>
            <xmin>31.85</xmin>
            <ymin>101.52</ymin>
            <xmax>256.00</xmax>
            <ymax>256.00</ymax>
         </bndbox>
      </part>
  </layout>

有关详细信息,请参阅 PASCAL 可视化对象类 PASCAL 可视化对象类

String
start_index
(可选)

旧版本:

此参数已弃用。 在 Python 中使用 0# 的值。

Long
class_value_field
(可选)

包含类值的字段。 如果未指定任何字段,则系统将搜索 valueclassvalue 字段。 如果该要素不包含类字段,则系统将确定所有记录均属于一个类。

Field
buffer_radius
(可选)

用于描绘训练样本区域的每个训练样本周围的缓冲区半径。 您可以借此从点创建圆形面训练样本。

系统将使用 in_class_data 参数值空间参考的线性单位。

Double
in_mask_polygons
(可选)

此面要素类用于描绘将创建影像片的区域。

系统仅会创建完全位于面内的影像片。

Feature Layer
rotation_angle
(可选)

将用于生成其他影像片的旋转角度。

影像片将在旋转角度为 0 的情况下生成,这意味着无旋转。 随后系统将以指定的角度旋转该片,以创建其他影像片。 系统将在多个影像片中以多个角度捕获相同的训练样本,以便用于数据增强。

默认旋转角度为 0。

Double
reference_system
(可选)

指定将用于解释输入影像的参考系类型。 指定的参考系必须与训练深度学习模型所使用的参考系相匹配。

  • MAP_SPACE将使用基于地图的坐标系。 这是默认设置。
  • PIXEL_SPACE将使用图像空间,没有旋转且没有失真。
String
processing_mode
(可选)

指定处理镶嵌数据集或影像服务中的所有栅格项目的方式。 当输入栅格是镶嵌数据集或影像服务时,将应用此参数。

  • PROCESS_AS_MOSAICKED_IMAGE将镶嵌在一起并处理镶嵌数据集或影像服务中的所有栅格项目。 这是默认设置。
  • PROCESS_ITEMS_SEPARATELY将作为独立影像处理镶嵌数据集或影像服务中的所有栅格项目。
String
blacken_around_feature
(可选)

指定是否对每个影像切片中的每个对象或要素周围的像素进行掩膜。

仅当 metadata_format 参数设置为 Labeled_Tiles 且已指定输入要素类或分类栅格时,此参数才适用。

  • NO_BLACKEN将不会对对象或要素周围的像素进行掩膜。 这是默认设置。
  • BLACKEN_AROUND_FEATURE将对对象或要素周围的像素进行掩膜。
Boolean
crop_mode
(可选)

指定是否将裁剪导出的切片,从而使其大小均相同。

仅当 metadata_format 参数设置为 Labeled_TilesImagenet 且已指定输入要素类或分类栅格时,此参数才适用。

  • FIXED_SIZE导出的切片将被裁剪为相同的大小,并将以要素为中心。 这是默认设置。
  • BOUNDING_BOX将对导出的切片进行裁剪,以使边界几何仅围绕切片中的要素。
String
in_raster2
(可选)

将用于影像转换方法的附加输入影像源。

此参数仅在 metadata_format 参数设置为 Classified_TilesExport_TilesCycleGAN 时有效。

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

代码示例

ExportTrainingDataForDeepLearning 示例 1(Python 窗口)

该示例为深度学习创建了训练样本。

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

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

ExportTrainingDataForDeepLearning("c:/test/image.tif", "c:/test/outfolder",
             "c:/test/training.shp", "TIFF", "256", "256", "128", "128", 
             "ONLY_TILES_WITH_FEATURES", "Labeled_Tiles", 0, "Classvalue", 0, 
			 None, 0,  "MAP_SPACE", "PROCESS_AS_MOSAICKED_IMAGE", "NO_BLACKEN", 
			 "FIXED_SIZE")
ExportTrainingDataForDeepLearning 示例 2(独立脚本)

该示例为深度学习创建了训练样本。

# Import system modules and check out ArcGIS Image Analyst extension license
import arcpy
arcpy.CheckOutExtension("SpatialAnalyst")
from arcpy.sa import *

# Set local variables
inRaster = "C:/test/InputRaster.tif"
out_folder = "c:/test/OutputFolder"
in_training = "c:/test/TrainingData.shp"
image_chip_format = "TIFF"
tile_size_x = "256"
tile_size_y = "256"
stride_x="128"
stride_y="128"
output_nofeature_tiles="ONLY_TILES_WITH_FEATURES"
metadata_format="Labeled_Tiles"
start_index = 0
classvalue_field = "Classvalue"
buffer_radius = 0
in_mask_polygons = "MaskPolygon"
rotation_angle = 0
reference_system = "MAP_SPACE"
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"
blacken_around_feature = "NO_BLACKEN"
crop_mode = "FIXED_SIZE"

# Execute 
ExportTrainingDataForDeepLearning(inRaster, out_folder, in_training, 
             image_chip_format,tile_size_x, tile_size_y, stride_x, 
             stride_y,output_nofeature_tiles, metadata_format, start_index, 
			 classvalue_field, buffer_radius, in_mask_polygons, rotation_angle, 
			 reference_system, processing_mode, blacken_around_feature, crop_mode)

许可信息

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

相关主题