ディープ ラーニング モデルのトレーニング (Train Deep Learning Model) (Image Analyst)

Image Analyst ライセンスで利用できます。

概要

[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールからの出力を使用してディープ ラーニング モデルをトレーニングします。

使用法

  • ArcGIS Pro のディープ ラーニング フレームワークを使用するようにコンピューターを設定するには、「ArcGIS 用のディープ ラーニング フレームワークのインストール」をご参照ください。

  • このツールは、PyTorch ディープ ラーニング フレームワークを使用してトレーニングを実施します。このツールを正常に実行するには、PyTorch をコンピューターにインストールしておく必要があります。

  • このツールの入力トレーニング データには、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールから生成された画像フォルダーとラベル フォルダーを含める必要があります。

  • このツールの実行要件および発生する可能性のある問題の詳細については、「ディープ ラーニングに関するよくある質問ディープ ラーニングに関するよくある質問 PDF」をご参照ください。

  • ディープ ラーニングの詳細については、「ArcGIS Pro のディープ ラーニング」をご参照ください。

構文

TrainDeepLearningModel(in_folder, out_folder, {max_epochs}, {model_type}, {batch_size}, {arguments}, {learning_rate}, {backbone_model}, {pretrained_model}, {validation_percentage}, {stop_training}, {freeze})
パラメーター説明データ タイプ
in_folder

モデルのトレーニングに必要な画像チップ、ラベル、統計情報を含むフォルダー。[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data for Deep Learning)] ツールから生成された出力。

モデルのトレーニングにおいて、入力画像は 3 バンドの 8 ビット ラスターである必要があります。

Folder
out_folder

トレーニング済みのモデルを保存する出力フォルダーの場所。

Folder
max_epochs
(オプション)

モデルをトレーニングする場合の対象となるエポックの最大数。最大エポックを 1 に設定すると、データセットがニューラル ネットワークを通って前後に 1 回渡されます。デフォルト値は 20 です。

Long
model_type
(オプション)

ディープ ラーニング モデルのトレーニングに使用するモデル タイプを指定します。

  • SSDSSD (シングル ショット検出器) アプローチがモデルのトレーニングに使用されます。SSD の使用目的はオブジェクト検出です。このモデル タイプの入力トレーニング データは、Pascal Visual Object Classes メタデータ形式を使用します。
  • UNETU-Net アプローチがモデルのトレーニングに使用されます。U-Net の使用目的はピクセル分類です。
  • FEATURE_CLASSIFIER フィーチャ分類器アプローチがモデルのトレーニングに使用されます。フィーチャ分類器の使用目的はオブジェクト分類または画像分類です。
  • PSPNETPSPNET (ピラミッド型解析ネットワーク) アプローチがモデルのトレーニングに使用されます。PSPNET の使用目的はピクセル分類です。
  • RETINANETRetinaNet アプローチがモデルのトレーニングに使用されます。RetinaNet の使用目的はオブジェクト検出です。このモデル タイプの入力トレーニング データは、Pascal Visual Object Classes メタデータ形式を使用します。
  • MASKRCNNMaskRCNN アプローチがモデルのトレーニングに使用されます。MaskRCNN の使用目的はオブジェクト検出です。この手法は、インスタンス セグメンテーション (つまり、画像内のオブジェクトの自動描写) に使用できます。たとえば、建物フットプリントやスイミング プールを検出することができます。トレーニング データを入力データにする場合は、MaskRCNN メタ形式を使用します。入力トレーニング データのクラス値は、1 で始める必要があります。このモデル タイプは、CUDA 対応 GPU を使用する場合にのみトレーニングできます。
String
batch_size
(オプション)

1 回のトレーニングで処理されるトレーニング サンプルの数。デフォルト値は 2 です。

高性能な GPU を使用している場合は、この数を 8、16、32、または 64 に増やすことができます。

Long
arguments
[arguments,...]
(オプション)

Python ラスター関数クラスには、関数の引数が定義されています。ここでは、実験や調整のための追加のディープ ラーニング パラメーターおよび引数 (感度を調整するための信頼性の閾値など) をリストします。引数の名前は、Python モジュールを読み取ることによって入力されます。

[SSD] を [model_type] パラメーターの値として選択すると、[arguments] パラメーターに次の引数が設定されます。

  • grids - 処理中に画像が分割されるグリッドの数です。この引数を [4] に設定すると、画像が 4 x 4、つまり 16 個のグリッド セルに分割されます。デフォルト値は [4, 2, 1] であり、21 個のグリッド セル ([4 x 4] + [2 x 2] + [1 x 1] = 21) に分割されます。
  • zooms - 各グリッド セルが拡大/縮小されるズーム レベルの数です。この引数を [1] に設定すると、すべてのグリッド セルは同じサイズ (同じズーム レベル) を維持します。ズーム レベルが [2] の場合は、すべてのグリッド セルが 2 倍の大きさになります (100 パーセントでズームされる)。ズーム レベルのリストを指定すると、そのリスト内のすべての数値を使用して、すべてのグリッド セルが拡大/縮小されます。デフォルト値は [0.7, 1.0, 1.3] です。
  • ratios - アンカー ボックスで使用する縦横比のリストです。オブジェクト検出を行う場合、アンカー ボックスは予測対象のオブジェクトに最適な位置、形状、サイズを表します。この引数を [[1.0, 1.0], [1.0, 0.5]] に設定すると、アンカー ボックスが正方形 (1:1) になるか、水平側が垂直側の半分の長方形 (1:0.5) になります。デフォルト値は [[1, 1], [1, 0.5], [0.5, 1]] です。

[PSPNET] を [model_type] パラメーターの値として選択すると、[arguments] パラメーターに次の引数が設定されます。

  • USE_UNET_DECODER - U-Net デコーダーを使用して、ピラミッド プーリングが完了した時点でデータ使用を復旧します。デフォルトは、True です。
  • PYRAMID_SIZE - それぞれの小区域に適用される畳み込みレイヤーの数とサイズです。デフォルト値は [1,2,3,6] です。

[RETINANET] を [model_type] パラメーターの値として選択すると、[arguments] パラメーターに次の引数が設定されます。

  • SCALES - 各セルが拡大/縮小される縮尺レベルの数です。デフォルト値は [1, 0.8, 0.63] です。
  • RATIOS - アンカー ボックスの縦横比です。デフォルト値は [0,5,1,2] です。

Value Table
learning_rate
(オプション)

トレーニング処理全体で、既存の情報を新たに取得した情報に上書きする割合。値を指定しないと、トレーニング プロセス中に最適な学習率が学習曲線から抽出されます。

Double
backbone_model
(オプション)

新しいモデルをトレーニングするアーキテクチャとして使用する、事前構成済みのニューラル ネットワークを指定します。この手法は転移学習と呼ばれています。

  • DENSENET121構成済みモデルは、100 万を超える画像が含まれており、深さが 121 個のレイヤーである ImageNET データセット上でトレーニングされた高密度のネットワークになります。加算を使用してレイヤーを結合する RESNET とは異なり、DenseNet は連結を使用してレイヤーを結合します。
  • DENSENET161構成済みモデルは、100 万を超える画像が含まれており、深さが 161 個のレイヤーである ImageNET データセット上でトレーニングされた高密度のネットワークになります。加算を使用してレイヤーを結合する RESNET とは異なり、DenseNet は連結を使用してレイヤーを結合します。
  • DENSENET169構成済みモデルは、100 万を超える画像が含まれており、深さが 169 個のレイヤーである ImageNET データセット上でトレーニングされた高密度のネットワークになります。加算を使用してレイヤーを結合する RESNET とは異なり、DenseNet は連結を使用してレイヤーを結合します。
  • DENSENET201構成済みモデルは、100 万を超える画像が含まれており、深さが 201 個のレイヤーである ImageNET データセット上でトレーニングされた高密度のネットワークになります。加算を使用してレイヤーを結合する RESNET とは異なり、DenseNet は連結を使用してレイヤーを結合します。
  • MOBILENET_V2事前構成済みのモデルは、ImageNet データベースでトレーニングされ、メモリの使用量が少ないため、54 層の深さがあり、エッジ デバイス コンピューティングに適しています。
  • MASKRCNN50_FPN事前構成済みのモデルは、Feature Pyramid Networks を含むバックボーン RESNET50 でオブジェクト検出用にトレーニングされ、さまざまな縮尺でオブジェクトを検出することができます。
  • RESNET18事前構成済みのモデルは、ImageNET データセットでトレーニングされる残留ネットワークです。このネットワークには 100 万以上の画像が含まれ、18 層の深さがあります。
  • RESNET34事前構成済みのモデルは、ImageNET データセットでトレーニングされる残留ネットワークです。このネットワークには 100 万以上の画像が含まれ、34 層の深さがあります。これがデフォルトです。
  • RESNET50事前構成済みのモデルは、ImageNET データセットでトレーニングされる残留ネットワークです。このネットワークには 100 万以上の画像が含まれ、50 層の深さがあります。
  • RESNET101事前構成済みのモデルは、ImageNET データセットでトレーニングされる残留ネットワークです。このネットワークには 100 万以上の画像が含まれ、101 層の深さがあります。
  • RESNET152事前構成済みのモデルは、ImageNET データセットでトレーニングされる残留ネットワークです。このネットワークには 100 万以上の画像が含まれ、152 層の深さがあります。
  • VGG11事前構成済みのモデルは、ImageNET データセットでトレーニングされるたたみ込みニューラル ネットワークです。このネットワークには 100 万以上の画像が含まれ、画像を 1,000 のオブジェクト カテゴリに分類し、11 層の深さがあります。
  • VGG11_BN事前構成済みのモデルは、VGG ネットワークに基づいていますが、バッチ正規化を使用しており、ネットワークの各レイヤーが正規化されています。ImageNet データセットでトレーニングされ、11 層の深さがあります。
  • VGG13事前構成済みのモデルは、ImageNET データセットでトレーニングされるたたみ込みニューラル ネットワークです。このネットワークには 100 万以上の画像が含まれ、画像を 1,000 のオブジェクト カテゴリに分類し、13 層の深さがあります。
  • VGG13_BN事前構成済みのモデルは、VGG ネットワークに基づいていますが、バッチ正規化を使用しており、ネットワークの各レイヤーが正規化されています。ImageNet データセットでトレーニングされ、13 層の深さがあります。
  • VGG16事前構成済みのモデルは、ImageNET データセットでトレーニングされるたたみ込みニューラル ネットワークです。このネットワークには 100 万以上の画像が含まれ、画像を 1,000 のオブジェクト カテゴリに分類し、16 層の深さがあります。
  • VGG16_BN事前構成済みのモデルは、VGG ネットワークに基づいていますが、バッチ正規化を使用しており、ネットワークの各レイヤーが正規化されています。ImageNet データセットでトレーニングされ、16 層の深さがあります。
  • VGG19事前構成済みのモデルは、ImageNET データセットでトレーニングされるたたみ込みニューラル ネットワークです。このネットワークには 100 万以上の画像が含まれ、画像を 1,000 のオブジェクト カテゴリに分類し、19 層の深さがあります。
  • VGG19_BN事前構成済みのモデルは、VGG ネットワークに基づいていますが、バッチ正規化を使用しており、ネットワークの各レイヤーが正規化されています。ImageNet データセットでトレーニングされ、19 層の深さがあります。
String
pretrained_model
(オプション)

新しいモデルの微調整トレーニングに使用する事前トレーニング済みモデル。入力ファイルは Esri モデル定義ファイル (*.emd) です。

類似したクラスを持つ事前トレーニング済みモデルは、新しいモデルに合わせて微調整することができます。たとえば、車に関してトレーニングされた既存のモデルを微調整して、トラックを識別するモデルをトレーニングすることができます。

事前トレーニング済みモデルは、新しいモデルのトレーニングに使用される同じモデル タイプおよびバックボーン モデルでトレーニングされている必要があります。

File
validation_percentage
(オプション)

モデルの検証に使用するトレーニング サンプルの割合。デフォルト値は 10 です。

Double
stop_training
(オプション)

早期停止を実施するかどうかを指定します。

  • STOP_TRAINING指定した max_epochs パラメーター値にかかわらず、モデルの改善がなくなった時点でモデルのトレーニングを停止します。これがデフォルトです。
  • CONTINUE_TRAININGmax_epochs パラメーター値に到達するまで、モデルのトレーニングは続行します。
Boolean
freeze
(オプション)

事前トレーニング済みモデルのバックボーン レイヤーを固定するかどうかを指定します。これにより、ウェイトとバイアスが本来の設計どおりになります。

  • FREEZE_MODEL事前定義済みのウェイトとバイアスを backbone_model で変更しません。これがデフォルトです。
  • UNFREEZE_MODELbackbone_model のウェイトとバイアスを、トレーニング サンプルへの適合度を高めるために変更する場合があります。この処理には時間がかかりますが、通常は優れた結果が得られます。
Boolean

派生した出力

名前説明データ タイプ
out_model_file

出力トレーニング済みモデル ファイル

ファイル

コードのサンプル

TrainDeepLearningModel (ディープ ラーニング モデルのトレーニング) の例 1 (Python ウィンドウ)

この例では、U-Net 手法を使用してツリー分類モデルをトレーニングします。

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
# Execute 
TrainDeepLearningModel(r"C:\DeepLearning\TrainingData\Roads_FC", 
     r"C:\DeepLearning\Models\Fire", 40, "UNET", 16, "# #", None, 
     "RESNET34", None, 10, "STOP_TRAINING", "FREEZE_MODEL")
TrainDeepLearningModel (ディープ ラーニング モデルのトレーニング) の例 2 (スタンドアロン スクリプト)

この例では、SSD 手法を使用してオブジェクト検出モデルをトレーニングします。

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
#Define input parameters
in_folder = "C:\\DeepLearning\\TrainingData\\Cars" 
out_folder = "C:\\Models\\Cars"
max_epochs = 100
model_type = "SSD"
batch_size = 2
arg = "grids '[4, 2, 1]';zooms '[0.7, 1.0, 1.3]';ratios '[[1, 1], [1, 0.5], [0.5, 1]]'"
learning_rate = 0.003
backbone_model = "RESNET34" 
pretrained_model = "C:\\Models\\Pretrained\\vehicles.emd"
validation_percent = 10
stop_training = "STOP_TRAINING"
freeze = "FREEZE_MODEL"


# Execute
TrainDeepLearningModel(in_folder, out_folder, max_epochs, model_type, 
     batch_size, arg, learning_rate, backbone_model, pretrained_model, 
     validation_percent, stop_training, freeze)

ライセンス情報

  • Basic: 次のものが必要 Image Analyst
  • Standard: 次のものが必要 Image Analyst
  • Advanced: 次のものが必要 Image Analyst

関連トピック