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

需要 Spatial Analyst 许可。

获得 Image Analyst 许可后可用。

描述

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

使用方法

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

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

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

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

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

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

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

语法

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_raster

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

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

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; MapServer; 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
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 VOC 矩形、分类切片(类地图)、RCNN 掩膜、标注切片、多标注切片和导出切片。如果输入训练样本数据是诸如建筑物图层等的要素类图层或者标准分类训练样本文件,请使用 KITTI 或 PASCAL VOC 矩形选项。输出元数据是包含训练样本数据的 .txt 文件或 .xml 文件,其中训练样本数据包含在最小外接矩形中。元数据文件的名称与输入源影像名称相匹配。如果输入训练样本数据是类地图,请使用“分类切片”作为输出元数据格式选项。

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

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

以下为 PASCAL VOC 选项示例:

<?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
(可选)

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

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

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

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

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

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

代码示例

ExportTrainingDataForDeepLearning 示例 1(Python 窗口)

本示例将针对深度学习创建训练样本。

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

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

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("ImageAnalyst")
from arcpy.ia 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 = "PIXEL_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: 需要 Image Analyst 或 Spatial Analyst
  • Standard: 需要 Image Analyst 或 Spatial Analyst
  • Advanced: 需要 Image Analyst 或 Spatial Analyst

相关主题