训练深度学习模型 (Image Analyst)

获得 Image Analyst 许可后可用。

摘要

使用导出训练数据进行深度学习工具的输出训练深度学习模型。

使用情况

  • 此工具使用深度学习框架训练深度学习模型。

  • 要设置计算机以在 ArcGIS Pro 中使用深度学习框架,请参阅安装 ArcGIS 的深度学习框架

  • 如果您要在离线环境中训练模型,有关详细信息,请参阅离线环境所需的其他安装

  • 此工具还用于微调现有已训练模型。 例如,可以对已针对汽车进行了训练的现有模型进行微调,以训练用于识别卡车的模型。

  • 要使用 GPU 运行此工具,将处理器类型环境设置为 GPU。 如果您具有多个 GPU,则改为指定 GPU ID 环境。

  • 默认情况下,当模型类型参数设置为以下选项之一时,该工具将使用所有可用 GPU:

    • ConnectNet
    • 要素分类器
    • MaskRCNN
    • 多任务道路提取器
    • 单帧检测器
    • U-Net

    要使用特定的 GPU,使用 GPU ID 环境。

  • 该工具的输入训练数据必须包括从导出训练数据进行深度学习工具生成的图像和标注文件夹。

    例外情况是当训练数据使用 Pascal 可视化对象类或 KITTI 矩形元数据格式时。 对于这两种格式,训练数据可以来自其他来源,但影像片必须在 image 文件夹中,并且相应的标注必须在 labels 文件夹中。

  • 使用 transforms.json 文件为训练和验证数据集的数据增强指定 fastai 转换,该文件位于训练数据所在的文件夹中。 下面是 transforms.json 文件的示例:

    自定义增强参数

    
    {
        "Training": {
            "rotate": {
                "degrees": 30,
                "p": 0.5
            },
            "crop": {
                "size": 224,
                "p": 1,
                "row_pct": "0, 1",
                "col_pct": "0, 1"
            },
            "brightness": {
                "change": "0.4, 0.6"
            },
            "contrast": {
                "scale": "1.0, 1.5"
            },
            "rand_zoom": {
                "scale": "1, 1.2"
            }
        },
        "Validation": {
            "crop": {
                "size": 224,
                "p": 1.0,
                "row_pct": 0.5,
                "col_pct": 0.5
            }
        }
    }

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

  • 有关深度学习的详细信息,请参阅 ArcGIS Image Analyst 扩展模块中的深度学习

参数

标注说明数据类型
输入训练数据

包含训练模型所需的影像片、标注和统计数据的文件夹。 此数据为导出训练数据进行深度学习工具的输出。

满足以下条件时,支持多个输入文件夹:

  • 元数据格式类型必须为已分类切片、已标注切片、多标注切片、PASCAL 可视化对象类或 RCNN 掩膜。
  • 所有训练数据必须具有相同的元数据格式。
  • 所有训练数据必须具有相同的波段数。

Folder
输出文件夹

将存储训练模型的输出文件夹位置。

Folder
最大轮数
(可选)

应用于将训练模型的最大轮数。 最大轮数值为 1 意味着数据集将通过神经网络向前和向后传递一次。 默认值为 20。

Long
模型类型
(可选)

指定要用于训练深度学习模型的模型类型。

  • BDCN 边缘检测器(像素分类)将使用双向级联网络 (BDCN) 架构训练模型。 BDCN 边缘检测器 用于像素分类。 这种方法对于改进不同尺度对象的边缘检测很有帮助。
  • 变化检测器(像素分类)将使用变化检测器 (SSD) 架构训练模型。 变化检测器用于像素分类。 此方法会创建一个模型对象,以使用两个时空图像创建变化的分类栅格。 此模型类型的输入训练数据使用已分类切片元数据格式。
  • ClimaX(像素分类)将使用 ClimaX 架构训练模型。 该模型主要用于天气和气候分析。 ClimaX 用于像素分类。 此方法采用的初始数据为多维数据。
  • ConnectNet(像素分类)将使用 ConnectNet 架构训练模型。 ConnectNet 用于像素分类。 这种方法对于从卫星图像中提取道路网络非常有用。
  • CycleGAN(影像转换)将使用 CycleGAN 架构训练模型。 CycleGAN 用于影像到影像转换。 此方法会创建一个模型对象,用于将一种类型的影像转换为另一种。 此方法的独特之处在于要训练的影像无需重叠。 此模型类型的输入训练数据使用 CycleGAN 元数据格式。
  • DeepLabV3(像素分类)将使用 DeepLabV3 架构训练模型。 DeepLab 用于像素分类。
  • Deep Sort(对象跟踪器)将使用 Deep Sort 架构训练模型。 Deep Sort 用于检测视频中的对象。 使用视频帧进行训练该模型,并检测每个帧中对象的类别和边界框。 此模型类型的输入训练数据使用 Imagenet 元数据格式。 Siam Mask 可用于跟踪对象,而 Deep Sort 可用于将模型训练为跟踪多个对象。
  • DETReg(对象检测)将使用 DETReg 架构训练模型。 DETReg 用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类。 这种模型类型属于 GPU 密集型,需要一个至少有 16 GB 内存的专用 GPU 才能正常运行。
  • FasterRCNN(对象检测)将使用 FasterRCNN 架构训练模型。 FasterRCNN 用于对象检测。
  • 要素分类器(对象分类)将使用要素分类器架构训练模型。 要素分类器用于对象或影像分类。
  • HED 边缘检测器(像素分类)将使用整体嵌套边缘检测 (HED) 架构训练模型。 HED 边缘检测器用于像素分类。 这种方法可用于检测边缘和对象边界。
  • 影像描述生成器(影像转换)将使用影像描述生成器架构训练模型。 影像描述生成器用于影像到文本转换。 此方法会创建了一个模型,用于为图像生成文本说明。
  • MaskRCNN(对象检测)将使用 MaskRCNN 架构训练模型。 MaskRCNN 将用于对象检测。 此方法可用于实例分割,即对影像中的对象进行精确划分。 此模型类型可用于检测建筑物覆盖区。 该类型将 MaskRCNN 元数据格式作为输入用于训练数据。 输入训练数据的类值必须从 1 开始。 只能使用支持 CUDA 的 GPU 来训练此模型类型。
  • MaX-DeepLab(全景分割)将使用 MaX-DeepLab 架构训练模型。 MaX-DeepLab 用于全景分割。 此方法会创建一个模型对象,用于生成影像和要素。 此模型类型的输入训练数据使用全景分割元数据格式。
  • MMDetection(对象检测)将使用 MMDetection 架构训练模型。 MMDetection 用于对象检测。 受支持的元数据格式为 PASCAL 可视化对象类矩形和 KITTI 矩形。
  • MMSegmentation(像素分类)将使用 MMSegmentation 架构训练模型。 MMSegmentation 用于像素分类。 受支持的元数据格式为已分类切片。
  • 多任务道路提取器(像素分类)将使用多任务道路提取器架构训练模型。 多任务道路提取器用于像素分类。 这种方法对于从卫星图像中提取道路网络非常有用。
  • Pix2Pix(影像转换)将使用 Pix2Pix 架构训练模型。 Pix2Pix 用于影像到影像转换。 此方法会创建一个模型对象,用于将一种类型的影像转换为另一种。 此模型类型的输入训练数据使用导出切片元数据格式。
  • Pix2PixHD(影像转换)将使用 Pix2PixHD 架构训练模型。 Pix2PixHD 用于影像到影像转换。 此方法会创建一个模型对象,用于将一种类型的影像转换为另一种。 此模型类型的输入训练数据使用导出切片元数据格式。
  • PSETAE(像素分类)将使用像素集编码器和时间注意力 (PSETAE) 架构针对时间序列分类训练模型。 PSETAE 用于像素分类。 此方法采用的初始数据为多维数据。
  • 金字塔场景解析网络(像素分类)将使用金字塔场景解析网络 (PSPNET) 架构训练模型。 PSPNET 用于像素分类。
  • RetinaNet(对象检测)将使用 RetinaNet 架构训练模型。 RetinaNet 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • RTDetrV2(目标检测)将使用改进的 Real-Time DEtection TRansformer (RTDetrV2) 架构训练模型。 RTDetrV2 以之前的实时检测器 RT-DETR 为基础。 RTDetrV2 用于目标检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类和 KITTI 矩形元数据格式。
  • SAMLoRA(像素分类)具有低秩适应 (LoRA) 的 Segment Anything Model (SAM) 将用于训练模型。 此模型类型使用 SAM 作为基础模型并使用针对计算要求相对较低且数据集较小的特定任务进行微调。
  • Siam Mask(对象跟踪器)将使用 Siam Mask 架构训练模型。 Siam Mask 用于检测视频中的对象。 使用视频帧进行训练该模型,并检测每个帧中对象的类别和边界框。 此模型类型的输入训练数据使用 MaskRCNN 元数据格式。
  • 单帧检测器(对象检测)将使用单帧检测器 (SSD) 架构训练模型。 SSD 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • 超分辨率(影像转换)将使用超分辨率架构训练模型。 超分辨率用于影像到影像转换。 此方法会创建一个模型对象,用于增加分辨率和提高影像质量。 此模型类型的输入训练数据使用导出切片元数据格式。
  • U-Net(像素分类)将使用 U-Net 架构训练模型。 U-Net 用于像素分类。
  • YOLOv3(对象检测)将使用 YOLOv3 架构训练模型。 YOLOv3 用于对象检测。
String
批量大小
(可选)

一次需要处理以便用于训练的训练样本数。

增加批量大小可以提高工具性能;但是随着批量大小增加,所用内存也将随之增加。

如果可用于批量大小集的 GPU 内存不足,则该工具将尝试估计并使用最佳批量大小。 如果出现内存不足错误,则降低批量大小。

Long
模型参数
(可选)

将使用模型类型参数中的信息填充此参数。 这些参数会有所变化,具体取决于模型架构。 下面介绍了在 ArcGIS 中训练的模型支持的模型参数。 ArcGIS 预训练模型和自定义深度学习模型可能具有该工具支持的其他参数。

有关适用于每种模型类型的自变量的详细信息,请参阅深度学习自变量

Value Table
学习率
(可选)

在整个训练过程中,现有信息将被新获取的信息覆盖的比率。 如果未指定任何值,则系统将在训练过程中从学习曲线中提取最佳学习率。

Double
骨干模型
(可选)

指定要用作训练新模型的架构的预配置神经网络。 这种方法称为迁移学习。

此外,从 PyTorch Image Models (timm) 指定受支持卷积神经网络时还可以使用 timm 作为前缀,例如 timm:resnet31、timm:inception_v4、timm:efficientnet_b3 等。

  • 1.40625 度该骨干在每个格网像元的分辨率覆盖 1.40625 度 x 1.40625 度的区域的影像上进行训练。 这用于天气和气候预测。 这是更高分辨率的设置,允许更精确的输出,但需要更多的算力。
  • 5.625 度该骨干在每个格网像元的分辨率覆盖 5.625 度 x 5.625 度的区域的影像上进行训练。 这用于天气和气候预测。 这被视为是低分辨率设置,但需要较少的算力。
  • DenseNet-121预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 121 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DenseNet-161预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 161 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DenseNet-169预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 169 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DenseNet-201预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 201 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • MobileNet 2 版由于预配置模型将基于 Imagenet 数据库进行训练,且深度为 54 个图层,适用于边缘设备计算,因为其所用的内存更少。
  • ResNet-18预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 18 个图层。
  • ResNet-34预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 34 个图层。 这是默认设置。
  • ResNet-50预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 50 个图层。
  • ResNet-101预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 101 个图层。
  • ResNet-152预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 152 个图层。
  • VGG-11预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 11 个图层。
  • 使用批量归一化的 VGG-11预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它基于 Imagenet 数据集进行了训练,具有 11 个图层。
  • VGG-13预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 13 个图层。
  • 使用批量归一化的 VGG-13预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它基于 Imagenet 数据集进行了训练,具有 13 个图层。
  • VGG-16预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 16 个图层。
  • 使用批量归一化的 VGG-16预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 16 个图层。
  • VGG-19预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 19 个图层。
  • 使用批量归一化的 VGG-19预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它基于 Imagenet 数据集进行了训练,具有 19 个图层。
  • DarkNet-53预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含 1 百万个以上的影像,且深度为 53 个图层。
  • Reid_v1预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • Reid_v2预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • ResNeXt-50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 它是同质神经网络,可减少常规 ResNet 所需的超参数的数量。
  • Wide ResNet-50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 其架构与 ResNET 相同,但是通道更多。
  • SR3预配置模型将使用通过重复细化的超分辨率 (SR3) 模型。 SR3 将根据条件图像生成调整去噪扩散概率模型并通过随机去噪过程实现超分辨率。 有关详细信息,请参阅在 arXiv 站点上通过迭代细化实现图像超分辨率
  • SR3 U-ViT该骨干模型是指基于 Vision Transformer (ViT) 的架构的具体实现,专为图像生成和 SR3 任务中的扩散模型而设计。
  • ViT-B预配置的 Segment Anything Model (SAM) 将与基础神经网络大小搭配使用。 这是最小大小。 有关详细信息,请参阅在 arXiv 站点上的 Segment Anything
  • ViT-L预配置的 Segment Anything Model (SAM) 将与较大的神经网络大小搭配使用。 有关详细信息,请参阅在 arXiv 站点上的 Segment Anything
  • ViT-H预配置的 Segment Anything Model (SAM) 将与巨大的神经网络大小搭配使用。 这是最大大小。 有关详细信息,请参阅在 arXiv 站点上的 Segment Anything
String
预训练模型
(可选)

将用于微调新模型的预训练模型。 输入为 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。

可以对具有相似类的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。 仅支持使用 ArcGIS 训练的模型进行微调。

File
验证百分比
(可选)

将用于验证模型的训练样本的百分比。 默认值为 10。

Double
当模型停止改进时停止
(可选)

指定是否将实施提前停止。

  • 选中 - 将实施提前停止,并且当模型不再改进时,无论所指定的最大轮数参数值是什么,模型训练都将停止。 这是默认设置。
  • 未选中 - 不会实施提前停止,并且模型训练将一直持续,直至达到最大轮数参数值为止。
Boolean
冻结模型
(可选)

指定是否冻结预训练模型中的骨干图层,以使权重和偏差保持原始设计。

  • 选中 - 将冻结骨干图层,并且不会在骨干模型参数中更改预定义的权重和偏差。 这是默认设置。
  • 未选中 - 不会冻结骨干图层,可以更改骨干模型参数的权重和偏差以适应训练样本。 这需要更多的处理时间,但通常会产生更好的结果。

Boolean
数据增强
(可选)

指定要使用的数据增强类型。

数据增强方法使用现有数据创建经过修改的数据集副本,实现人为增加训练集合。

  • 默认值将使用默认数据增强方法和值。默认数据增强方法是 cropdihedral_affinebrightnesscontrastzoom。 这些默认值通常适用于卫星影像。
  • 将不会使用数据增强。
  • 自定义数据增强值将使用增强参数参数进行指定。 该方法可直接控制 croprotatebrightnesscontrastzoom 转换。
  • 文件将使用 transforms.json 文件为训练和验证数据集的数据增强指定 fastai 转换,该文件位于训练数据所在的文件夹中。有关不同转换的详细信息,请参阅 fastai 网站中的 vision transforms
String
增强参数
(可选)

在增强参数中指定每个转换对应的值。

  • rotate - 影像将按概率 (p) 随机旋转(以度为单位)。 如果度数是一个范围 (a,b),将在 ab 之间均匀赋值。 默认值为 30.0; 0.5。
  • brightness - 影像亮度将根据变化值随机调整,概率为 (p)。 变化为 0 时会将影像转换为最暗,变化为 1 时会将影像转换为最亮。 变化为 0.5 时不会调整亮度。 如果变化是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.4,0.6); 1.0。
  • contrast - 影像对比度将根据比例值随机调整,概率为 (p)。 比例为 0 时会将影像转换为灰度,比例大于 1 时会将影像转换为超级对比度。 比例为 1 时不会调整对比度。 如果比例是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.75, 1.5); 1.0。
  • zoom - 影像将根据比例值随机放大。 缩放值采用 scale(a,b); p 形式。 默认值为 (1.0, 1.2); 1.0,其中 p 为概率。 仅当比例大于 1.0 时,才会在影像上进行放大。 如果比例是一个范围 (a,b),将在 ab 之间进行均匀赋值。
  • crop - 将随机裁剪影像。 裁剪值采用 size;p;row_pct;col_pct 形式,其中 p 为概率。 位置根据 (col_pct, row_pct), 确定,其中 col_pctrow_pct 在 0 和 1 之间进行归一化。 如果 col_pctrow_pct 是一个范围 (a,b),将在 ab 之间进行均匀赋值。 默认值为 chip_size;1.0; (0, 1); (0, 1),其中 224 为默认影像片大小。

Value Table
影像片大小
(可选)

将用于训练模型的影像大小。 影像将裁剪为指定的影像片大小。

默认影像片大小将为训练数据的切片大小。 如果 x- 和 y- 切片大小不同,则会使用较小的值作为默认影像片大小。 影像片大小应小于输入文件夹中所有影像的最小 x- 或 y- 切片大小。

Long
将大小调整为
(可选)

调整影像片大小。 在调整影像片大小后,将裁剪影像片大小的像素块,以用于训练。 该参数将仅应用于对象检测 (PASCAL VOC)、对象分类(已标注切片)和超分辨率数据。

大小调整值通常为影像片大小值的一半。 如果此大小调整值小于影像片大小值,则将使用大小调整值创建像素块进行训练。

String
权重初始化方案
(可选)

指定要用于为图层初始化权重的方案。

要使用多光谱数据训练模型,模型必须容纳不同类型的可用波段。 为此,需要重新初始化模型中的第一个图层。

仅当在模型中使用多光谱影像时,此参数才适用。

  • 随机随机权重将针对非 RGB 波段进行初始化,而预培训权重将为 RGB 波段保留。 这是默认设置。
  • 红色波段与预训练模型图层中的红色波段对应的权重将针对非 RGB 波段进行克隆,而预训练权重将为 RGB 波段保留。
  • 全部随机随机权重将针对 RGB 波段以及非 RGB 波段进行初始化。 此选项仅适用于多光谱影像。
String
监控指标
(可选)

指定在检查点设置和提前停止时要监控的指标。

  • 验证损失将监控验证损失。 如果验证损失不再发生明显变化,则模型将停止。 这是默认设置。
  • 平均精确率将监控每个阈值处的加权精度均值。 如果此值不再发生明显变化,则模型将停止。
  • 精度将监控正确预测数与预测总数之比。 如果此值不再发生明显变化,则模型将停止。
  • F1 得分将监控模型的精确率和召回率得分组合。 如果此值不再发生明显变化,则模型将停止。
  • MIoU将监控测试数据集的所有影像中已分割对象的交并比平均值。 如果此值不再发生明显变化,则模型将停止。
  • 切分将使用切分指标监控模型性能。 如果此值不再发生明显变化,则模型将停止。该值范围可以介于 0 到 1 之间。 值 1 表示验证数据与训练数据之间像素完全匹配。
  • 精度将监控衡量模型在将样本分类为正样本时的准确性的精确率。 如果此值不再发生明显变化,则模型将停止。精确率为正确分类的正样本数与已分类样本总数(正确或错误)之比。
  • 召回率将监控衡量模型检测正样本的能力的召回率。 如果此值不再发生明显变化,则模型将停止。召回率越高,检测到的正样本越多。 召回率值为正确分类的正样本数与正样本总数之比。
  • Corpus bleu将监控 Corpus blue 分数。 如果此值不再发生明显变化,则模型将停止。此分数用于计算多个句子的准确性,例如段落或文档。
  • 多标注 F-beta将监控精确率和召回率的加权调和均值。 如果此值不再发生明显变化,则模型将停止。这通常称为 F-beta 分数。
String
启用 Tensorboard
(可选)

指定工具训练时是否启用 Tensorboard 指标。 可以使用工具消息中的 URL 访问 Tensorboard。

该参数仅支持以下模型:CycleGAN、DeepLab、Faster RCNN、Feature Classifier、Image Captioner、Mask RCNN、Multi-Task Road Extractor、Pix2Pix、PSPNet Classifier、RetinaNet、Single-Shot Detector、SuperResolution 和 U-Net Classifier。

  • 未选中 - 不启用 Tensorboard 指标。 这是默认设置。
  • 选中 - 启用 Tensorboard 指标。

Boolean

派生输出

标注说明数据类型
输出模型

输出已训练模型文件。

File

TrainDeepLearningModel(in_folder, out_folder, {max_epochs}, {model_type}, {batch_size}, {arguments}, {learning_rate}, {backbone_model}, {pretrained_model}, {validation_percentage}, {stop_training}, {freeze}, {augmentation}, {augmentation_parameters}, {chip_size}, {resize_to}, {weight_init_scheme}, {monitor}, {tensorboard})
名称说明数据类型
in_folder
[in_folder,...]

包含训练模型所需的影像片、标注和统计数据的文件夹。 此数据为导出训练数据进行深度学习工具的输出。

满足以下条件时,支持多个输入文件夹:

  • 元数据格式类型必须为已分类切片、已标注切片、多标注切片、PASCAL 可视化对象类或 RCNN 掩膜。
  • 所有训练数据必须具有相同的元数据格式。
  • 所有训练数据必须具有相同的波段数。

Folder
out_folder

将存储训练模型的输出文件夹位置。

Folder
max_epochs
(可选)

应用于将训练模型的最大轮数。 最大轮数值为 1 意味着数据集将通过神经网络向前和向后传递一次。 默认值为 20。

Long
model_type
(可选)

指定要用于训练深度学习模型的模型类型。

  • BDCN_EDGEDETECTOR将使用双向级联网络 (BDCN) 架构训练模型。 BDCN 边缘检测器 用于像素分类。 这种方法对于改进不同尺度对象的边缘检测很有帮助。
  • CHANGEDETECTOR将使用变化检测器 (SSD) 架构训练模型。 变化检测器用于像素分类。 此方法会创建一个模型对象,以使用两个时空图像创建变化的分类栅格。 此模型类型的输入训练数据使用已分类切片元数据格式。
  • CLIMAX将使用 ClimaX 架构训练模型。 该模型主要用于天气和气候分析。 ClimaX 用于像素分类。 此方法采用的初始数据为多维数据。
  • CONNECTNET将使用 ConnectNet 架构训练模型。 ConnectNet 用于像素分类。 这种方法对于从卫星图像中提取道路网络非常有用。
  • CYCLEGAN将使用 CycleGAN 架构训练模型。 CycleGAN 用于影像到影像转换。 此方法会创建一个模型对象,用于将一种类型的影像转换为另一种。 此方法的独特之处在于要训练的影像无需重叠。 此模型类型的输入训练数据使用 CycleGAN 元数据格式。
  • DEEPLAB将使用 DeepLabV3 架构训练模型。 DeepLab 用于像素分类。
  • DEEPSORT将使用 Deep Sort 架构训练模型。 Deep Sort 用于检测视频中的对象。 使用视频帧进行训练该模型,并检测每个帧中对象的类别和边界框。 此模型类型的输入训练数据使用 Imagenet 元数据格式。 Siam Mask 可用于跟踪对象,而 Deep Sort 可用于将模型训练为跟踪多个对象。
  • DETREG将使用 DETReg 架构训练模型。 DETReg 用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类。 这种模型类型属于 GPU 密集型,需要一个至少有 16 GB 内存的专用 GPU 才能正常运行。
  • FASTERRCNN将使用 FasterRCNN 架构训练模型。 FasterRCNN 用于对象检测。
  • FEATURE_CLASSIFIER将使用要素分类器架构训练模型。 要素分类器用于对象或影像分类。
  • HED_EDGEDETECTOR将使用整体嵌套边缘检测 (HED) 架构训练模型。 HED 边缘检测器用于像素分类。 这种方法可用于检测边缘和对象边界。
  • IMAGECAPTIONER将使用影像描述生成器架构训练模型。 影像描述生成器用于影像到文本转换。 此方法会创建了一个模型,用于为图像生成文本说明。
  • MASKRCNN将使用 MaskRCNN 架构训练模型。 MaskRCNN 将用于对象检测。 此方法可用于实例分割,即对影像中的对象进行精确划分。 此模型类型可用于检测建筑物覆盖区。 该类型将 MaskRCNN 元数据格式作为输入用于训练数据。 输入训练数据的类值必须从 1 开始。 只能使用支持 CUDA 的 GPU 来训练此模型类型。
  • MAXDEEPLAB将使用 MaX-DeepLab 架构训练模型。 MaX-DeepLab 用于全景分割。 此方法会创建一个模型对象,用于生成影像和要素。 此模型类型的输入训练数据使用全景分割元数据格式。
  • MMDETECTION将使用 MMDetection 架构训练模型。 MMDetection 用于对象检测。 受支持的元数据格式为 PASCAL 可视化对象类矩形和 KITTI 矩形。
  • MMSEGMENTATION将使用 MMSegmentation 架构训练模型。 MMSegmentation 用于像素分类。 受支持的元数据格式为已分类切片。
  • MULTITASK_ROADEXTRACTOR将使用多任务道路提取器架构训练模型。 多任务道路提取器用于像素分类。 这种方法对于从卫星图像中提取道路网络非常有用。
  • PIX2PIX将使用 Pix2Pix 架构训练模型。 Pix2Pix 用于影像到影像转换。 此方法会创建一个模型对象,用于将一种类型的影像转换为另一种。 此模型类型的输入训练数据使用导出切片元数据格式。
  • PIX2PIXHD将使用 Pix2PixHD 架构训练模型。 Pix2PixHD 用于影像到影像转换。 此方法会创建一个模型对象,用于将一种类型的影像转换为另一种。 此模型类型的输入训练数据使用导出切片元数据格式。
  • PSETAE将使用像素集编码器和时间注意力 (PSETAE) 架构针对时间序列分类训练模型。 PSETAE 用于像素分类。 此方法采用的初始数据为多维数据。
  • PSPNET将使用金字塔场景解析网络 (PSPNET) 架构训练模型。 PSPNET 用于像素分类。
  • RETINANET将使用 RetinaNet 架构训练模型。 RetinaNet 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • RTDETRV2将使用改进的 Real-Time DEtection TRansformer (RTDetrV2) 架构训练模型。 RTDetrV2 以之前的实时检测器 RT-DETR 为基础。 RTDetrV2 用于目标检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类和 KITTI 矩形元数据格式。
  • SAMLORA具有低秩适应 (LoRA) 的 Segment Anything Model (SAM) 将用于训练模型。 此模型类型使用 SAM 作为基础模型并使用针对计算要求相对较低且数据集较小的特定任务进行微调。
  • SIAMMASK将使用 Siam Mask 架构训练模型。 Siam Mask 用于检测视频中的对象。 使用视频帧进行训练该模型,并检测每个帧中对象的类别和边界框。 此模型类型的输入训练数据使用 MaskRCNN 元数据格式。
  • SSD将使用单帧检测器 (SSD) 架构训练模型。 SSD 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • SUPERRESOLUTION将使用超分辨率架构训练模型。 超分辨率用于影像到影像转换。 此方法会创建一个模型对象,用于增加分辨率和提高影像质量。 此模型类型的输入训练数据使用导出切片元数据格式。
  • UNET将使用 U-Net 架构训练模型。 U-Net 用于像素分类。
  • YOLOV3将使用 YOLOv3 架构训练模型。 YOLOv3 用于对象检测。
String
batch_size
(可选)

一次需要处理以便用于训练的训练样本数。

增加批量大小可以提高工具性能;但是随着批量大小增加,所用内存也将随之增加。

如果可用于批量大小集的 GPU 内存不足,则该工具将尝试估计并使用最佳批量大小。 如果出现内存不足错误,则降低批量大小。

Long
arguments
[arguments,...]
(可选)

model_type 参数中的信息将用于设置此参数的默认值。 这些参数会有所变化,具体取决于模型架构。 下面介绍了在 ArcGIS 中训练的模型支持的模型参数。 ArcGIS 预训练模型和自定义深度学习模型可能具有该工具支持的其他参数。

有关适用于每种模型类型的自变量的详细信息,请参阅深度学习自变量

Value Table
learning_rate
(可选)

在整个训练过程中,现有信息将被新获取的信息覆盖的比率。 如果未指定任何值,则系统将在训练过程中从学习曲线中提取最佳学习率。

Double
backbone_model
(可选)

指定要用作训练新模型的架构的预配置神经网络。 这种方法称为迁移学习。

  • 1.40625deg该骨干在每个格网像元的分辨率覆盖 1.40625 度 x 1.40625 度的区域的影像上进行训练。 这用于天气和气候预测。 这是更高分辨率的设置,允许更精确的输出,但需要更多的算力。
  • 5.625deg该骨干在每个格网像元的分辨率覆盖 5.625 度 x 5.625 度的区域的影像上进行训练。 这用于天气和气候预测。 这被视为是低分辨率设置,但需要较少的算力。
  • DENSENET121预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 121 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DENSENET161预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 161 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DENSENET169预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 169 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DENSENET201预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含 1 百万个以上的影像,且深度为 201 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • MOBILENET_V2由于预配置模型将基于 Imagenet 数据库进行训练,且深度为 54 个图层,适用于边缘设备计算,因为其所用的内存更少。
  • RESNET18预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 18 个图层。
  • RESNET34预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 34 个图层。 这是默认设置。
  • RESNET50预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 50 个图层。
  • RESNET101预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 101 个图层。
  • RESNET152预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含 1 百万个以上的影像,且深度为 152 个图层。
  • VGG11预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 11 个图层。
  • VGG11_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它基于 Imagenet 数据集进行了训练,具有 11 个图层。
  • VGG13预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 13 个图层。
  • VGG13_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它基于 Imagenet 数据集进行了训练,具有 13 个图层。
  • VGG16预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 16 个图层。
  • VGG16_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 16 个图层。
  • VGG19预配置模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 19 个图层。
  • VGG19_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它基于 Imagenet 数据集进行了训练,具有 19 个图层。
  • DARKNET53预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含 1 百万个以上的影像,且深度为 53 个图层。
  • REID_V1预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • REID_V2预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • RESNEXT50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 它是同质神经网络,可减少常规 ResNet 所需的超参数的数量。
  • WIDE_RESNET50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 其架构与 ResNET 相同,但是通道更多。
  • SR3预配置模型将使用通过重复细化的超分辨率 (SR3) 模型。 SR3 将根据条件图像生成调整去噪扩散概率模型并通过随机去噪过程实现超分辨率。 有关详细信息,请参阅在 arXiv 站点上通过迭代细化实现图像超分辨率
  • SR3_UVIT该骨干模型是指基于 Vision Transformer (ViT) 的架构的具体实现,专为图像生成和 SR3 任务中的扩散模型而设计。
  • VIT_B预配置的 Segment Anything Model (SAM) 将与基础神经网络大小搭配使用。 这是最小大小。 有关详细信息,请参阅在 arXiv 站点上的 Segment Anything
  • VIT_L预配置的 Segment Anything Model (SAM) 将与较大的神经网络大小搭配使用。 有关详细信息,请参阅在 arXiv 站点上的 Segment Anything
  • VIT_H预配置的 Segment Anything Model (SAM) 将与巨大的神经网络大小搭配使用。 这是最大大小。 有关详细信息,请参阅在 arXiv 站点上的 Segment Anything

此外,从 PyTorch Image Models (timm) 指定受支持卷积神经网络时还可以使用 timm 作为前缀,例如 timm:resnet31、timm:inception_v4、timm:efficientnet_b3 等。

String
pretrained_model
(可选)

将用于微调新模型的预训练模型。 输入为 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。

可以对具有相似类的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。 仅支持使用 ArcGIS 训练的模型进行微调。

File
validation_percentage
(可选)

将用于验证模型的训练样本的百分比。 默认值为 10。

Double
stop_training
(可选)

指定是否将实施提前停止。

  • STOP_TRAINING将实施提前停止,并且当模型不再改进时,无论所指定的 max_epochs 参数值是什么,模型训练都将停止。 这是默认设置。
  • CONTINUE_TRAINING不会实施提前停止,并且模型训练将一直持续,直至达到 max_epochs 参数值为止。
Boolean
freeze
(可选)

指定是否冻结预训练模型中的骨干图层,以使权重和偏差保持原始设计。

  • FREEZE_MODEL选中 - 将冻结骨干图层,并且不会在 backbone_model 参数中更改预定义的权重和偏差。 这是默认设置。
  • UNFREEZE_MODEL不会冻结骨干图层,可以更改 backbone_model 参数的权重和偏差以适应训练样本。 这需要更多的处理时间,但通常会产生更好的结果。
Boolean
augmentation
(可选)

指定要使用的数据增强类型。

数据增强方法使用现有数据创建经过修改的数据集副本,实现人为增加训练集合。

  • DEFAULT将使用默认数据增强方法和值。默认数据增强方法是 cropdihedral_affinebrightnesscontrastzoom。 这些默认值通常适用于卫星影像。
  • NONE将不会使用数据增强。
  • CUSTOM数据增强值将使用 augmentation_parameters 参数进行指定。 该方法可直接控制 croprotatebrightnesscontrastzoom 转换。
  • FILE将使用 transforms.json 文件为训练和验证数据集的数据增强指定 fastai 转换,该文件位于训练数据所在的文件夹中。有关不同转换的详细信息,请参阅 fastai 网站中的 vision transforms
String
augmentation_parameters
[augmentation_parameters,...]
(可选)

在增强参数中指定每个转换对应的值。

  • rotate - 影像将按概率 (p) 随机旋转(以度为单位)。 如果度数是一个范围 (a,b),将在 ab 之间均匀赋值。 默认值为 30.0; 0.5。
  • brightness - 影像亮度将根据变化值随机调整,概率为 (p)。 变化为 0 时会将影像转换为最暗,变化为 1 时会将影像转换为最亮。 变化为 0.5 时不会调整亮度。 如果变化是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.4,0.6); 1.0。
  • contrast - 影像对比度将根据比例值随机调整,概率为 (p)。 比例为 0 时会将影像转换为灰度,比例大于 1 时会将影像转换为超级对比度。 比例为 1 时不会调整对比度。 如果比例是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.75, 1.5); 1.0。
  • zoom - 影像将根据比例值随机放大。 缩放值采用 scale(a,b); p 形式。 默认值为 (1.0, 1.2); 1.0,其中 p 为概率。 仅当比例大于 1.0 时,才会在影像上进行放大。 如果比例是一个范围 (a,b),将在 ab 之间进行均匀赋值。
  • crop - 将随机裁剪影像。 裁剪值采用 size;p;row_pct;col_pct 形式,其中 p 为概率。 位置根据 (col_pct, row_pct), 确定,其中 col_pctrow_pct 在 0 和 1 之间进行归一化。 如果 col_pctrow_pct 是一个范围 (a,b),将在 ab 之间进行均匀赋值。 默认值为 chip_size;1.0; (0, 1); (0, 1),其中 224 为默认影像片大小。

Value Table
chip_size
(可选)

将用于训练模型的影像大小。 影像将裁剪为指定的影像片大小。

默认影像片大小将为训练数据的切片大小。 如果 x- 和 y- 切片大小不同,则会使用较小的值作为默认影像片大小。 影像片大小应小于输入文件夹中所有影像的最小 x- 或 y- 切片大小。

Long
resize_to
(可选)

调整影像片大小。 在调整影像片大小后,将裁剪影像片大小的像素块,以用于训练。 该参数将仅应用于对象检测 (PASCAL VOC)、对象分类(已标注切片)和超分辨率数据。

大小调整值通常为影像片大小值的一半。 如果此大小调整值小于影像片大小值,则将使用大小调整值创建像素块进行训练。

String
weight_init_scheme
(可选)

指定要用于为图层初始化权重的方案。

要使用多光谱数据训练模型,模型必须容纳不同类型的可用波段。 为此,需要重新初始化模型中的第一个图层。

  • RANDOM随机权重将针对非 RGB 波段进行初始化,而预培训权重将为 RGB 波段保留。 这是默认设置。
  • RED_BAND与预训练模型图层中的红色波段对应的权重将针对非 RGB 波段进行克隆,而预训练权重将为 RGB 波段保留。
  • ALL_RANDOM随机权重将针对 RGB 波段以及非 RGB 波段进行初始化。 此选项仅适用于多光谱影像。

仅当在模型中使用多光谱影像时,此参数才适用。

String
monitor
(可选)

指定在检查点设置和提前停止时要监控的指标。

  • VALID_LOSS将监控验证损失。 如果验证损失不再发生明显变化,则模型将停止。 这是默认设置。
  • AVERAGE_PRECISION将监控每个阈值处的加权精度均值。 如果此值不再发生明显变化,则模型将停止。
  • ACCURACY将监控正确预测数与预测总数之比。 如果此值不再发生明显变化,则模型将停止。
  • F1_SCORE将监控模型的精确率和召回率得分组合。 如果此值不再发生明显变化,则模型将停止。
  • MIOU将监控测试数据集的所有影像中已分割对象的交并比平均值。 如果此值不再发生明显变化,则模型将停止。
  • DICE将使用切分指标监控模型性能。 如果此值不再发生明显变化,则模型将停止。该值范围可以介于 0 到 1 之间。 值 1 表示验证数据与训练数据之间像素完全匹配。
  • PRECISION将监控衡量模型在将样本分类为正样本时的准确性的精确率。 如果此值不再发生明显变化,则模型将停止。精确率为正确分类的正样本数与已分类样本总数(正确或错误)之比。
  • RECALL将监控衡量模型检测正样本的能力的召回率。 如果此值不再发生明显变化,则模型将停止。召回率越高,检测到的正样本越多。 召回率值为正确分类的正样本数与正样本总数之比。
  • CORPUS_BLEU将监控 Corpus blue 分数。 如果此值不再发生明显变化,则模型将停止。此分数用于计算多个句子的准确性,例如段落或文档。
  • MULTI_LABEL_FBETA将监控精确率和召回率的加权调和均值。 如果此值不再发生明显变化,则模型将停止。这通常称为 F-beta 分数。
String
tensorboard
(可选)

指定工具训练时是否启用 Tensorboard 指标。 可以使用工具消息中的 URL 访问 Tensorboard。

该参数仅支持以下模型:CycleGAN、DeepLab、Faster RCNN、Feature Classifier、Image Captioner、Mask RCNN、Multi-Task Road Extractor、Pix2Pix、PSPNet Classifier、RetinaNet、Single-Shot Detector、SuperResolution 和 U-Net Classifier。

  • DISABLE_TENSORBOARD不启用 Tensorboard 指标。 这是默认设置。
  • ENABLE_TENSORBOARD启用 Tensorboard 指标。
Boolean

派生输出

名称说明数据类型
out_model_file

输出已训练模型文件。

File

代码示例

TrainDeepLearningModel 示例 1(Python 窗口)

此示例利用了使用预训练模型的迁移学习。

import arcpy
arcpy.env.workspace = r"C:\Data\DL.gdb"

arcpy.ia.TrainDeepLearningModel("Labeled_RoadImageChips",
    "TransferLearning_UnsurfacedRoads", 500, "", 2, None, None, "", 
    r"C:\data\PreTrainedModels\RoadsExtraction_NorthAmerica.dlpk", 
    10, "STOP_TRAINING", "UNFREEZE_MODEL", "DEFAULT", None, 224, "", 
    "", "VALID_LOSS")
TrainDeepLearningModel 示例 2(独立脚本)

本示例使用 SSD 方法来训练对象检测模型。

# Import system modules and check out ArcGIS Image Analyst extension license
import arcpy
arcpy.CheckOutExtension("ImageAnalyst")
from arcpy.ia import *
 
# Set local variables
in_folder=r"C:\DL_models\training\Trees"
out_folder=r"C:\DL_models\model\Trees_DL1"
max_epochs=20
model_type="SSD"
batch_size=8
arguments="grids #;zooms 1.0;ratios '[1.0, 1.0]';drop 0.3;bias -0.4;focal_loss False;location_loss_factor #;backend pytorch"
learning_rate=None
backbone_model="VGG19"
pretrained_model=None
validation_percent=10
stop_training="STOP_TRAINING"
freeze="FREEZE_MODEL"
augmentation="DEFAULT"
augmentation_parameters=None
chip_size=224
resize_to=""
weight_init_scheme=""
monitor="VALID_LOSS"
tensorboard="ENABLE_TENSORBOARD"


# Execute
arcpy.ia.TrainDeepLearningModel(in_folder, out_folder, max_epochs, 
    model_type, batch_size, arguments, learning_rate, backbone_model, 
    pretrained_model, validation_percent, stop_training, freeze, 
    augmentation, augmentation_parameters, chip_size, resize_to, 
    weight_init_scheme, monitor, tensorboard)

许可信息

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

相关主题