使用 AutoDL 进行训练 (GeoAI)

获得 Image Analyst 许可后可用。

摘要

通过构建训练管道和自动执行大部分训练过程来训练深度学习模型。 其中包括数据增强、模型选择、超参数调整和批次大小推导。 它的输出包括最佳模型在训练数据上的性能指标,以及经过训练的深度学习模型包(.dlpk 文件),可用作使用 AI 模型提取要素工具的输入,以对新影像进行预测。

了解有关 AutoDL 工作原理的详细信息

使用情况

  • 必须为 ArcGIS AllSource 中的 Python 安装适当的深度学习框架。

    了解如何安装 ArcGIS 深度学习框架

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

  • 工具生成训练模型所需的时间取决于以下因素:

    • 提供的训练数据量
    • AutoDL 模式参数值
    • 总时间限制(小时)参数值

    默认情况下,所有模式的计时器设置为 2 小时。 基本模式将在给定时间内在默认骨干网络上训练所选的网络。 高级模式将总时间分为两部分,第一部分进行模型评估,第二部分在其他骨干网络上评估表现最好的两个模型。 如果训练的数据量很大,在 2 小时内可能无法评估所有选定的模型。 在这种情况下,在 2 小时内确定的表现最佳模型将被视为最佳模型。 然后,您可以选择使用此模型或使用更高的总时间限制(小时)参数值重新运行工具。

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

  • 要运行此工具,需要一台配备 GPU 的计算机。 如果您拥有多个 GPU,则使用 GPU ID 环境。

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

  • 该工具的潜在用途包括训练对象检测和像素分类模型,以提取建筑物轮廓、游泳池、太阳能电池板、土地覆盖分类等要素。

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

参数

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

包含训练模型所需的影像片、标注和统计数据的文件夹。 此数据为导出训练数据进行深度学习工具的输出。 导出数据的元数据格式必须是 Classified_Tiles、PASCAL_VOC_rectangles 或 KITTI_rectangles。

Folder
输出模型

输出的训练模型将作为深度学习包(.dlpk 文件)保存。

File
预训练模型
(可选)

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

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

File
总时间限制(小时)参数
(可选)

AutoDL 模型训练所需的总时间限制(小时)。 默认值为 2 小时。

Double
AutoDL 模式
(可选)

指定将使用的 AutoDL 模式以及 AutoDL 搜索的强度。

  • Basic将使用基本模式。 该模式用于训练所有选定的网络,但不进行超参数调整。
  • Advanced将使用高级模式。 该模式用于对表现最佳的两个模型进行超参数调整。
String
神经网络
(可选)

指定要用于训练模型的架构。

默认情况下,将使用所有网络。

  • SingleShotDetector将使用 SingleShotDetector 架构训练模型。 SingleShotDetector 用于对象检测。
  • RetinaNet将使用 RetinaNet 架构训练模型。 RetinaNet 将用于对象检测。
  • FasterRCNN将使用 FasterRCNN 架构训练模型。 FasterRCNN 用于对象检测。
  • YOLOv3将使用 YOLOv3 架构训练模型。 YOLOv3 用于对象检测。
  • HRNet将使用 HRNet 架构训练模型。 HRNet 用于像素分类。
  • ATSS将使用 ATSS 架构训练模型。 ATSS 将用于对象检测。
  • CARAFE将使用 CARAFE 架构训练模型。 CARAFE 将用于对象检测。
  • CascadeRCNN将使用 CascadeRCNN 架构训练模型。 CascadeRCNN 用于对象检测。
  • CascadeRPN将使用 CascadeRPN 架构训练模型。 CascadeRPN 将用于对象检测。
  • DCN将使用 DCN 架构训练模型。 DCN 将用于对象检测。
  • DeepLab将使用 DeepLab 架构训练模型。 DeepLab 用于像素分类。
  • UnetClassifier将使用 UnetClassifier 架构训练模型。 UnetClassifier 用于像素分类。
  • DeepLabV3Plus将使用 DeepLabV3Plus 架构训练模型。 DeepLabV3Plus 用于像素分类。
  • PSPNetClassifier将使用 PSPNetClassifier 架构训练模型。 PSPNetClassifier 用于像素分类。
  • ANN将使用 ANN 架构训练模型。 ANN 用于像素分类。
  • APCNet将使用 APCNet 架构训练模型。 APCNet 用于像素分类。
  • CCNet将使用 CCNet 架构训练模型。 CCNet 用于像素分类。
  • CGNet将使用 CGNet 架构训练模型。 CGNet 用于像素分类。
  • DETReg将使用 DETReg 架构训练模型。 DETReg 用于对象检测。
  • DynamicRCNN将使用 DynamicRCNN 架构训练模型。 DynamicRCNN 将用于对象检测。
  • EmpiricalAttention将使用 EmpiricalAttention 架构训练模型。 EmpiricalAttention 将用于对象检测。
  • FCOS将使用 FCOS 架构训练模型。 FCOS 将用于对象检测。
  • FoveaBox将使用 FoveaBox 架构训练模型。 FoveaBox 用于对象检测。
  • FSAF将使用 FSAF 架构训练模型。 FSAF 将用于对象检测。
  • GHM将使用 GHM 架构训练模型。 GHM 将用于对象检测。
  • LibraRCNN将使用 LibraRCNN 架构训练模型。 LibraRCNN 将用于对象检测。
  • PaFPN将使用 PaFPN 架构训练模型。 PaFPN 将用于对象检测。
  • Res2Net将使用 Res2Net 架构训练模型。 Res2Net 将用于对象检测。
  • SABL将使用 SABL 架构训练模型。 SABL 将用于对象检测。
  • VFNet将使用 VFNet 架构训练模型。 VFNet 将用于对象检测。
  • DMNet将使用 DMNet 架构训练模型。 DMNet 用于像素分类。
  • DNLNet将使用 DNLNet 架构训练模型。 DNLNet 用于像素分类。
  • FastSCNN将使用 FastSCNN 架构训练模型。 FastSCNN 用于像素分类。
  • FCN将使用 FCN 架构训练模型。 FCN 用于像素分类。
  • GCNet将使用 GCNet 架构训练模型。 GCNet 用于像素分类。
  • MobileNetV2将使用 MobileNetV2 架构训练模型。 MobileNetV2 用于像素分类。
  • NonLocalNet将使用 NonLocalNet 架构训练模型。 NonLocalNet 用于像素分类。
  • OCRNet将使用 OCRNet 架构训练模型。 OCRNet 用于像素分类。
  • PSANet将使用 PSANet 架构训练模型。 PSANet 用于像素分类。
  • SemFPN将使用 SemFPN 架构训练模型。 SemFPN 用于像素分类。
  • UperNet将使用 UperNet 架构训练模型。 UperNet 用于像素分类。
  • MaskRCNN将使用 MaskRCNN 架构训练模型。 MaskRCNN 将用于对象检测。
String
保存评估的模型
(可选)

指定是否保存所有评估的模型。

  • 选中 - 将保存所有评估的模型。
  • 未选中 - 仅保存性能最佳的模型。 这是默认设置。
Boolean

派生输出

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

输出模型文件。

File

arcpy.geoai.TrainUsingAutoDL(in_data, out_model, {pretrained_model}, {total_time_limit}, {autodl_mode}, {networks}, {save_evaluated_models})
名称说明数据类型
in_data

包含训练模型所需的影像片、标注和统计数据的文件夹。 此数据为导出训练数据进行深度学习工具的输出。 导出数据的元数据格式必须是 Classified_Tiles、PASCAL_VOC_rectangles 或 KITTI_rectangles。

Folder
out_model

输出的训练模型将作为深度学习包(.dlpk 文件)保存。

File
pretrained_model
(可选)

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

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

File
total_time_limit
(可选)

AutoDL 模型训练所需的总时间限制(小时)。 默认值为 2 小时。

Double
autodl_mode
(可选)

指定将使用的 AutoDL 模式以及 AutoDL 搜索的强度。

  • BASIC将使用基本模式。 该模式用于训练所有选定的网络,但不进行超参数调整。
  • ADVANCED将使用高级模式。 该模式用于对表现最佳的两个模型进行超参数调整。
String
networks
[networks,...]
(可选)

指定要用于训练模型的架构。

  • SingleShotDetector将使用 SingleShotDetector 架构训练模型。 SingleShotDetector 用于对象检测。
  • RetinaNet将使用 RetinaNet 架构训练模型。 RetinaNet 将用于对象检测。
  • FasterRCNN将使用 FasterRCNN 架构训练模型。 FasterRCNN 用于对象检测。
  • YOLOv3将使用 YOLOv3 架构训练模型。 YOLOv3 用于对象检测。
  • HRNet将使用 HRNet 架构训练模型。 HRNet 用于像素分类。
  • ATSS将使用 ATSS 架构训练模型。 ATSS 将用于对象检测。
  • CARAFE将使用 CARAFE 架构训练模型。 CARAFE 将用于对象检测。
  • CascadeRCNN将使用 CascadeRCNN 架构训练模型。 CascadeRCNN 用于对象检测。
  • CascadeRPN将使用 CascadeRPN 架构训练模型。 CascadeRPN 将用于对象检测。
  • DCN将使用 DCN 架构训练模型。 DCN 将用于对象检测。
  • DeepLab将使用 DeepLab 架构训练模型。 DeepLab 用于像素分类。
  • UnetClassifier将使用 UnetClassifier 架构训练模型。 UnetClassifier 用于像素分类。
  • DeepLabV3Plus将使用 DeepLabV3Plus 架构训练模型。 DeepLabV3Plus 用于像素分类。
  • PSPNetClassifier将使用 PSPNetClassifier 架构训练模型。 PSPNetClassifier 用于像素分类。
  • ANN将使用 ANN 架构训练模型。 ANN 用于像素分类。
  • APCNet将使用 APCNet 架构训练模型。 APCNet 用于像素分类。
  • CCNet将使用 CCNet 架构训练模型。 CCNet 用于像素分类。
  • CGNet将使用 CGNet 架构训练模型。 CGNet 用于像素分类。
  • DETReg将使用 DETReg 架构训练模型。 DETReg 用于对象检测。
  • DynamicRCNN将使用 DynamicRCNN 架构训练模型。 DynamicRCNN 将用于对象检测。
  • EmpiricalAttention将使用 EmpiricalAttention 架构训练模型。 EmpiricalAttention 将用于对象检测。
  • FCOS将使用 FCOS 架构训练模型。 FCOS 将用于对象检测。
  • FoveaBox将使用 FoveaBox 架构训练模型。 FoveaBox 用于对象检测。
  • FSAF将使用 FSAF 架构训练模型。 FSAF 将用于对象检测。
  • GHM将使用 GHM 架构训练模型。 GHM 将用于对象检测。
  • LibraRCNN将使用 LibraRCNN 架构训练模型。 LibraRCNN 将用于对象检测。
  • PaFPN将使用 PaFPN 架构训练模型。 PaFPN 将用于对象检测。
  • Res2Net将使用 Res2Net 架构训练模型。 Res2Net 将用于对象检测。
  • SABL将使用 SABL 架构训练模型。 SABL 将用于对象检测。
  • VFNet将使用 VFNet 架构训练模型。 VFNet 将用于对象检测。
  • DMNet将使用 DMNet 架构训练模型。 DMNet 用于像素分类。
  • DNLNet将使用 DNLNet 架构训练模型。 DNLNet 用于像素分类。
  • FastSCNN将使用 FastSCNN 架构训练模型。 FastSCNN 用于像素分类。
  • FCN将使用 FCN 架构训练模型。 FCN 用于像素分类。
  • GCNet将使用 GCNet 架构训练模型。 GCNet 用于像素分类。
  • MobileNetV2将使用 MobileNetV2 架构训练模型。 MobileNetV2 用于像素分类。
  • NonLocalNet将使用 NonLocalNet 架构训练模型。 NonLocalNet 用于像素分类。
  • OCRNet将使用 OCRNet 架构训练模型。 OCRNet 用于像素分类。
  • PSANet将使用 PSANet 架构训练模型。 PSANet 用于像素分类。
  • SemFPN将使用 SemFPN 架构训练模型。 SemFPN 用于像素分类。
  • UperNet将使用 UperNet 架构训练模型。 UperNet 用于像素分类。
  • MaskRCNN将使用 MaskRCNN 架构训练模型。 MaskRCNN 将用于对象检测。

默认情况下,将使用所有网络。

String
save_evaluated_models
(可选)

指定是否保存所有评估的模型。

  • SAVE_ALL_MODELS将保存所有评估的模型。
  • SAVE_BEST_MODEL仅保存性能最佳的模型。 这是默认设置。
Boolean

派生输出

名称说明数据类型
output_model_file

输出模型文件。

File

代码示例

TrainUsingAutoDL(Python 窗口)

此示例展示了如何使用 TrainUsingAutoDL 函数。

# Name: TrainUsingAutoDL.py
# Description: Train a deep learning model on imagery data with
# automatic hyperparameter selection.
  
# Import system modules
import arcpy
import os

# Set local variables

datapath = "path_to_training_data" 
out_path = "path_to_trained_model"

out_model = os.path.join(out_path, "mymodel")

# Run Train Using AutoML Model
arcpy.geoai.TrainUsingAutoDL(
    datapath, out_model, None, 2, "BASIC", 
    ["ATSS", "DCN", "FasterRCNN", "RetinaNet", "SingleShotDetector", "YOLOv3"], 
    "SAVE_BEST_MODEL")

环境