Main Content

pointnetplusLayers

(非推奨) PointNet++ セグメンテーション ネットワークを作成する

R2021b 以降

pointnetplusLayers は推奨されません。代わりに関数 pointnetplusNetwork (R2024a 以降) を使用してください。詳細については、バージョン履歴を参照してください。

説明

PointNet++ は、アンオーガナイズド LiDAR 点群の点単位のラベルを予測するニューラル ネットワークです。このネットワークでは、入力点を一連のクラスターに分割してから、多層パーセプトロン (MLP) ネットワークを使用して特徴を抽出します。このネットワークをセマンティック セグメンテーションに使用するには、関数 trainNetwork (Deep Learning Toolbox) を使用して学習させます。

lgraph = pointnetplusLayers(numPoints,pointsDim,numClasses) は、PointNet++ セグメンテーション ネットワークを作成し、それを lgraph (layerGraph (Deep Learning Toolbox) オブジェクト) として返します。

lgraph = pointnetplusLayers(___,Name=Value) は、前述の構文の入力引数に加え、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、pointnetplusLayers(numPoints,pointsDim,numClasses,ClusterSize=32) は、各クラスターに 32 個の点が含まれる PointNet++ ネットワークを作成します。

すべて折りたたむ

カスタムの PointNet++ ネットワークの入力パラメーターを定義します。

numPoints = 10000;
pointsDim = 3;
numClasses = 8;

カスタムの PointNet++ ネットワークを作成します。

lgraph = pointnetplusLayers(numPoints,pointsDim,numClasses, ...
    NormalizationLayer="instance", ...
    NumSetAbstractionModules=3, ...
    NumClusters=2048, ...
    ClusterRadius=0.1, ...
    ClusterSize=32, ...
    PointNetLayerSize=32);

関数analyzeNetwork (Deep Learning Toolbox)を使用して、ネットワークを解析します。

analyzeNetwork(lgraph)

入力引数

すべて折りたたむ

入力点群に含まれる点の数。正の整数として指定します。

入力点群データ行列の次元。3 以上の正の整数として指定します。行列には、xyz 座標と、範囲、マスク、強度などの追加データが含まれている必要があります。

ネットワークの分類用に構成する必要のあるクラス数。1 より大きい正の整数として指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

例: lgraph = pointnetplusLayers(numPoints,pointsDim,numClasses,NumSetAbstractionModules=3);

ネットワークで使用する正規化のタイプ。"batch" または "instance" として指定します。

データ型: string | char

符号化器サブネットワーク用の集合抽象化モジュールの数。正の整数として指定します。復号化器サブネットワークには、同じ数の特徴伝播モジュールが含まれている必要があります。

入力点をグループ分けするクラスターの数。正の整数として指定します。NumClusters の値は、範囲 [ 4N, numPoints] の 2 のべき乗でなければなりません。ここで N は集合抽象化モジュールの数です。

この値は、最初の集合抽象化モジュールのクラスター数を指定します。それ以降の集合抽象化モジュールでは、関数によってクラスター数が K/4 として自動的に計算されます。ここで K は前の集合抽象化モジュールのクラスター数です。

入力点のクラスター半径。範囲 (0, 1] の正のスカラーとして指定します。

この値は、最初の集合抽象化モジュールのクラスター半径を指定します。それ以降の集合抽象化モジュールでは、関数によってクラスター半径が前の集合抽象化モジュールの値の 2 倍として自動的に計算されます。

各クラスターに含まれる点の数。正の整数として指定します。各集合抽象化モジュールの特定のクラスター半径に関して、この値は K/4(N — 2) 未満の 2 のべき乗でなければなりません。K はネットワーク内のクラスターの数、N は集合抽象化モジュールの数です。

この値はすべての集合抽象化モジュールで一定です。

集合抽象化モジュールの MLP ネットワーク内の最初の層のサイズ。正の整数として指定します。各集合抽象化モジュールには、11 列の畳み込みを使用して実装された共有 MLP ネットワークをもつミニ PointNet が含まれています。共有 MLP ネットワークの 1、2、3 番目の層のサイズは S、S、2*S であり、これはそれぞれ 1、2、3 番目の畳み込み層のフィルター数に対応します。

この値は、最初の集合抽象化モジュールの MLP ネットワーク内の最初の層のサイズを指定します。それ以降の各集合抽象化モジュールでは、S の値は、前の集合抽象化モジュールの S の値の 2 倍です。

出力引数

すべて折りたたむ

出力 PointNet++ ネットワーク。layerGraph (Deep Learning Toolbox) オブジェクトとして返されます。

詳細

すべて折りたたむ

PointNet++ ネットワーク

PointNet++ ネットワークには、集合抽象化モジュールを含む符号化器サブネットワークがあり、それに続いて、特徴伝播モジュールを含む対応する復号化器サブネットワークがあります。

  • 集合抽象化モジュールは、最遠点サンプリングを使用して新しいクラスターの中心を特定し、ボール クエリ アルゴリズムを使用して点をクラスターにグループ分けします。特徴伝播モジュールは、k 最近傍法アルゴリズムに基づいて、逆荷重距離を使用して点を内挿します。

  • 関数は、単一スケール グループ化 (SSG) アーキテクチャでネットワークを作成します。

  • 関数は、狭い正規重み初期化法を使用して、ネットワーク内の各畳み込み層の重みを初期化します。

  • 関数は、すべてのバイアス項をゼロに初期化します。

バージョン履歴

R2021b で導入

すべて折りたたむ

R2024a: 非推奨

R2024a 以降、関数 pointnetplusLayers は推奨されません。代わりに関数 pointnetplusNetwork を使用してください。

関数 pointnetplusLayers のサポートを削除する予定はありません。ただし、関数 pointnetplusNetwork が推奨されます。関数 pointnetplusNetworkdlnetwork (Deep Learning Toolbox) オブジェクトを返します。このオブジェクトでは、外部プラットフォームから作成またはインポートできる幅広いネットワーク アーキテクチャがサポートされています。

次の表は、関数 pointnetplusLayers の一般的な使用方法と、代わりに関数 pointnetplusNetwork を使用するようにコードを更新する方法を示しています。

非推奨推奨
lgraph = pointnetplusLayers(numPoints,pointsDim,numClasses)net = pointnetplusNetwork(numPoints,pointsDim,numClasses)