Main Content

fcnLayers

(削除予定) セマンティック セグメンテーション用の完全畳み込みネットワーク層グラフの作成

fcnLayers は将来のリリースで削除される予定です。代わりに、dlnetwork (Deep Learning Toolbox) オブジェクトを使用して FCN ネットワークを作成します。詳細については、互換性の考慮事項を参照してください。

説明

lgraph = fcnLayers(imageSize,numClasses) は、FCN 8s として構成された、セマンティック セグメンテーション用の完全畳み込みネットワーク (FCN) を返します。FCN は、VGG-16 ネットワークの層と重みで事前に初期化されています。

fcnLayers は、入力イメージ内のすべてのピクセルのカテゴリカル ラベルを予測するための pixelClassificationLayer を含んでいます。ピクセル分類層は、RGB イメージのみをサポートします。

この関数には、Deep Learning Toolbox™ Model for VGG-16 Network サポート パッケージが必要です。このサポート パッケージがインストールされていない場合、関数 vgg16 (Deep Learning Toolbox) によってダウンロード用リンクが表示されます。

lgraph = fcnLayers(imageSize,numClasses,'Type',type) は、type で指定されたタイプとして構成された FCN を返します。

すべて折りたたむ

イメージ サイズとクラス数を定義した後、ネットワークを作成します。

imageSize = [480 640];
numClasses = 5;
lgraph = fcnLayers(imageSize,numClasses)

ネットワークを表示します。

plot(lgraph)

FCN 16s を作成します。

imageSize = [480 640];
numClasses = 5;
lgraph = fcnLayers(imageSize,numClasses,'Type','16s')

ネットワークを表示します。

plot(lgraph)

入力引数

すべて折りたたむ

ネットワーク入力のイメージ サイズ。[height, width] という形式で、2 要素のベクトルとして指定します。FCN は VGG-16 ネットワークをベースにしているため、最小イメージ サイズは [224 224] です。

セマンティック セグメンテーションのクラス数。1 より大きい整数で指定します。

FCN モデルのタイプ。次のいずれかを指定します。

FCN モデル説明
'32s'

係数 32 で最終特徴マップをアップサンプリングします。このオプションは、計算コストの低い大まかなセグメンテーションを提供します。

'16s'

4 番目のプーリング層から特徴マップを結合した後、係数 16 で最終特徴マップをアップサンプリングします。以前の層からのこの追加情報は、計算コストを追加しますが、中粒度のセグメンテーションを提供します。

'8s'

3 番目と 4 番目の最大プーリング層から特徴マップを結合した後、係数 8 で最終特徴マップをアップサンプリングします。以前の層からのこの追加情報は、計算コストを追加しますが、より細粒度のセグメンテーションを提供します。

出力引数

すべて折りたたむ

FCN ネットワーク アーキテクチャを表す層。layerGraph (Deep Learning Toolbox) オブジェクトとして返されます。

すべての転置畳み込み層は双一次内挿の重みを使用して初期化されます。すべての転置畳み込み層のバイアス項はゼロに固定されます。

ヒント

  • fcnLayers によって生成されたネットワークは、trainNetwork (Deep Learning Toolbox) で学習を行った後、深層学習用の GPU コード生成をサポートします。詳細と例についてはコード生成 (Deep Learning Toolbox)を参照してください。

参照

[1] Long, J., E. Shelhamer, and T. Darrell. "Fully Convolutional Networks for Semantic Segmentation." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2015, pp. 3431–3440.

バージョン履歴

R2017b で導入

すべて折りたたむ

R2024a: fcnLayers は削除予定

関数 fcnLayers は将来のリリースで削除される予定です。コードを更新するには、代わりに dlnetwork (Deep Learning Toolbox) を作成してください。addLayers (Deep Learning Toolbox)connectLayers (Deep Learning Toolbox) などの関数を使用してネットワークを構築できます。

ネットワークに出力層を含めないでください。代わりに、損失関数を定義します。ピクセル分類に適した損失関数のサンプルを次に示します。

function loss = modelLoss(Y,T)
  z = generalizedDice(Y,T); 
  loss = 1 - mean(z,"all"); 
end 

function loss = modelLoss(Y,T) 
  mask = ~isnan(T);
  targets(isnan(T)) = 0;
  loss = crossentropy(Y,T,Mask=mask); 
end

関数 trainnet (Deep Learning Toolbox) を使用してネットワークに学習させるときに損失関数を指定します。たとえば、次のコードは、学習データ images と損失関数 modelLoss を使用して、dlnetwork ネットワーク net に学習させます。

netTrained = trainnet(images,net,@modelLoss,options);