このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
pixelClassificationLayer
セマンティック セグメンテーションのピクセル分類層の作成
説明
ピクセル分類層は、各イメージ ピクセルまたはボクセルのカテゴリカル ラベルを提供します。
作成
説明
は、セマンティック イメージ セグメンテーション ネットワークのピクセル分類出力層を作成します。この層は、CNN によって処理される各イメージ ピクセルまたはボクセルのカテゴリカル ラベルを出力します。学習中、層は未定義のピクセルのラベルを自動的に無視します。layer
= pixelClassificationLayer
は、1 つ以上の名前と値の引数を使用してオプションの layer
= pixelClassificationLayer(Name=Value)Classes
、ClassWeights
、および Name
を設定し、ピクセル分類出力層を返します。たとえば、pixelClassificationLayer(Name="pixclass")
は、pixclass
という名前のピクセル分類層を作成します。
プロパティ
Classes
— 出力層のクラス
"auto"
(既定値) | categorical ベクトル | string 配列 | 文字ベクトルの cell 配列
出力層のクラス。categorical ベクトル、string 配列、文字ベクトルの cell 配列、または "auto"
として指定します。Classes
が "auto"
の場合、学習時にクラスが自動的に設定されます。string 配列または文字ベクトルの cell 配列 str
を指定すると、出力層のクラスが categorical(str,str)
に設定されます。
データ型: char
| categorical
| string
| cell
ClassWeights
— クラスの重み
"none"
(既定値) | 実数スカラーのベクトル
クラスの重み。"none"
または実数スカラーのベクトルとして指定します。ベクトルの要素は Classes
のクラスに対応します。
を指定する場合、ClassWeights
を指定しなければなりません。Classes
少数しか存在しないクラスが学習データに含まれる場合、クラスの重み付けを使用して、クラスのバランスを調整します。
OutputSize
— 出力サイズ
"auto"
(既定値)
この プロパティ は読み取り専用です。
層の出力サイズ。学習前の値は "auto"
で、学習時の値は数値で指定します。
LossFunction
— 損失関数
"crossentropyex"
(既定値)
この プロパティ は読み取り専用です。
学習に使用する損失関数。"crossentropyex"
として指定します。
Name
— 層の名前
""
(既定値) | 文字ベクトル | string スカラー
層の名前。文字ベクトルまたは string スカラーとして指定します。Layer
配列入力の場合、関数 trainnet
(Deep Learning Toolbox)、trainNetwork
(Deep Learning Toolbox)、assembleNetwork
(Deep Learning Toolbox)、layerGraph
(Deep Learning Toolbox)、および dlnetwork
(Deep Learning Toolbox) は、名前が ""
の層に自動的に名前を割り当てます。
pixelClassificationLayer
オブジェクトは、このプロパティを文字ベクトルとして格納します。
データ型: char
| string
NumInputs
— 入力の数
1
(既定値)
この プロパティ は読み取り専用です。
層への入力の数。1
として返されます。この層は単一の入力のみを受け入れます。
データ型: double
InputNames
— 入力名
{'in'}
(既定値)
この プロパティ は読み取り専用です。
入力名。{'in'}
として返されます。この層は単一の入力のみを受け入れます。
データ型: cell
例
ピクセル分類層を使用したセマンティック セグメンテーション ネットワークの作成
入力イメージ内のすべてのピクセルのカテゴリカル ラベルを予測します。
layers = [ imageInputLayer([32 32 3]) convolution2dLayer(3,16,Stride=2,Padding=1) reluLayer transposedConv2dLayer(3,1,Stride=2,Cropping=1) softmaxLayer pixelClassificationLayer ]
layers = 6x1 Layer array with layers: 1 '' Image Input 32x32x3 images with 'zerocenter' normalization 2 '' 2-D Convolution 16 3x3 convolutions with stride [2 2] and padding [1 1 1 1] 3 '' ReLU ReLU 4 '' 2-D Transposed Convolution 1 3x3 transposed convolutions with stride [2 2] and cropping [1 1 1 1] 5 '' Softmax softmax 6 '' Pixel Classification Layer Cross-entropy loss
重み付けを使用した学習データのクラスのバランス調整
一部のクラスが学習データに少数しか存在しない場合、逆クラス頻度重み付けを使用して、クラスのバランスを調整します。最初に、pixelLabelDatastore を使用して学習データ全体のクラスの頻度をカウントします。次に、pixelClassificationLayer の 'ClassWeights' を、計算された逆クラス頻度に設定します。
イメージとピクセル ラベル データの位置を設定します。
dataDir = fullfile(toolboxdir("vision"),"visiondata"); imDir = fullfile(dataDir,"building"); pxDir = fullfile(dataDir,"buildingPixelLabels");
imds
のグラウンド トゥルース イメージと pxds
のピクセル ラベル付きイメージを使用して、ピクセル ラベル イメージ データストアを作成します。
imds = imageDatastore(imDir); classNames = ["sky" "grass" "building" "sidewalk"]; pixelLabelID = [1 2 3 4]; pxds = pixelLabelDatastore(pxDir,classNames,pixelLabelID);
データセット内のクラスの分布を表にします。
tbl = countEachLabel(pxds)
tbl=4×3 table
Name PixelCount ImagePixelCount
____________ __________ _______________
{'sky' } 3.1485e+05 1.536e+06
{'grass' } 1.5979e+05 1.536e+06
{'building'} 1.0312e+06 1.536e+06
{'sidewalk'} 25313 9.216e+05
逆クラス頻度重み付けを計算します。
totalNumberOfPixels = sum(tbl.PixelCount); frequency = tbl.PixelCount / totalNumberOfPixels; inverseFrequency = 1./frequency
inverseFrequency = 4×1
4.8632
9.5827
1.4848
60.4900
'ClassWeights' を逆クラス頻度に設定します。
layer = pixelClassificationLayer(...
Classes=tbl.Name,ClassWeights=inverseFrequency)
layer = PixelClassificationLayer with properties: Name: '' Classes: [sky grass building sidewalk] ClassWeights: [4x1 double] OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
コード ジェネレーターでは、ロケール設定によって決まる 8 ビット ASCII コードセットで文字が表されます。したがって、クラス名、層の名前、層の説明、またはネットワーク名に非 ASCII 文字を使用すると、エラーが発生する可能性があります。詳細については、コード生成での文字のエンコード (MATLAB Coder)を参照してください。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
GPU Coder™ を使用して CUDA® または C++ コードを生成するには、最初に深層ニューラル ネットワークを構築して学習させなければなりません。ネットワークの学習と評価が完了したら、コード ジェネレーターを構成してコードを生成し、NVIDIA® または ARM® GPU プロセッサを使用するプラットフォームに畳み込みニューラル ネットワークを展開できます。詳細については、GPU Coder を使用した深層学習 (GPU Coder) を参照してください。
この層向けに、NVIDIA CUDA 深層ニューラル ネットワーク ライブラリ (cuDNN)、NVIDIA TensorRT™ 高性能推論ライブラリ、または Mali GPU 用 ARM
Compute Library
を利用するコードを生成できます。コード ジェネレーターでは、ロケール設定によって決まる 8 ビット ASCII コードセットで文字が表されます。したがって、クラス名、層の名前、層の説明、またはネットワーク名に非 ASCII 文字を使用すると、エラーが発生する可能性があります。詳細については、コード生成での文字のエンコード (MATLAB Coder)を参照してください。
バージョン履歴
R2017b で導入
参考
オブジェクト
layerGraph
(Deep Learning Toolbox) |DAGNetwork
(Deep Learning Toolbox) |dicePixelClassificationLayer
関数
fcnLayers
|segnetLayers
|unetLayers
|trainNetwork
(Deep Learning Toolbox) |semanticseg
|deeplabv3plusLayers
|evaluateSemanticSegmentation
トピック
- 深層学習を使用したセマンティック セグメンテーション入門
- MATLAB による深層学習 (Deep Learning Toolbox)
- 畳み込みニューラル ネットワークの層の指定 (Deep Learning Toolbox)
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)