連想埋め込みによる単一画像の区分的平面 3D 再構成详解

マークダウン

モチベーション

画像から平面を抽出する方法を理解します。最新写真の平面抽出です。

論文の順序

3)連想埋め込みによる単一画像の区分的平面 3D 再構成

論文の目的

ここに画像の説明を挿入

なぜ平面を抽出できるのか

これは、意味的に抽出された平面および非平面マスク エンコーダー (典型的なセマンティック セグメンテーション)、平面埋め込みエンコーダー、前述した 3D 平面のパラメーターを直接返すことができる平面パラメーター エンコーダーの 3 つの部分で構成されます。 PLANNET 平面パラメータの表現方法は異なりますが、後で紹介します。

イノベーションへの貢献

1) この論文は 19 年前の論文ですが、以前のネットワークと比較すると、以前の論文 PlaneRCNN: 3D Plane Detection and Reconstruction from a Single Image と同様に、任意の数の平面を抽出できます。ただし、平面の抽出方法は異なります。これは、以前の PlaneRCNN 手法では MASK-RCNN の提案領域インスタンス セグメンテーションの変形手法が使用されており、この論文では提案不要のインスタンス セグメンテーション手法である他の手法が使用されているためです。これは、セマンティックな方法を使用して、インスタンス セグメンテーションによって平面をセグメント化します。詳細については、「識別損失関数を使用したセマンティック インスタンス セグメンテーション」を参照してください。
2) 上記の変更に加えて、埋め込みモデル方式が採用されていますが、埋め込みモデル方式とは何ですか? これは、埋め込み空間を指す高次元空間にピクセルを配置することを指し、この空間内でより適切に分類およびセグメント化できます。以下の図の表現を参照してください。
ここに画像の説明を挿入
上の図からわかるように、** はピクセルを平面埋め込み空間にマッピングし、トレーニングにより同じ平面上のピクセルが平面埋め込み空間内で互いに近づくように強制されます。このようにして、セグメンテーションに適した領域を取得できます。**同時に、埋め込み空間内の同じ平面のピクセルに対応する平面埋め込みが同様の値を持つようにするアルゴリズムが論文で提案されています。
3) モデルを埋め込む方法が提供されており、同じ平面のピクセルは空間内で類似した値を持ち、論文ではこれらの値は同時に移動され、クラスタリングのアイデアを使用して、類似した値が得られます。値は一緒にクラスター化されていますが、異なるものはできるだけ分離します。このようにして、さまざまな平面セグメンテーションを取得できます (セグメンテーションの K 値を壊す)。

全体的なネットワークアーキテクチャ

ここに画像の説明を挿入
これがネットワーク全体のアーキテクチャであり、ネットワークの各部の役割を以下に説明します。

プランセグデコーダ

これは画像内のピクセルの平面抽出ですが、画像上にはいくつかの木や円筒形のオブジェクトなどの非平面ピクセルが多数あり、後続の平面抽出で問題が発生します。同時に、平面と平面の交点にラジアンが存在するという問題があります。このラジアンは、平面の分割に問題を引き起こします。交点がどの平面に属しているかを示すことができないため、マスク操作が必要です。非平面領域を削除するには必要です。そこで、このマスクネットワークを追加しました。
主なネットワーク動作は次のとおりです。
ここに画像の説明を挿入
この論文では、ResNet-101-FPN の拡張バージョンについて言及しています。主にエンコンダーの各種情報です。これは、平面領域と非平面領域のセグメンテーションを区別するために使用されます。
その損失関数は次のとおりです。
LS = − ( 1 − w ) ∑ i ∈ F logpi − w ∑ i ∈ B log ( 1 − pi ) (1) L_S = -(1-w)\sum_{i \in F } logp_i - w\sum_{i \in B}log(1-p_i) \tag{1}LS=( 1i Fログp _ _私はwi Bl o g ( 1p私は)( 1 )
平面マスクや非平面マスクなどを存続させるために使用されます。具体的な損失関数については後述します。

プレーン埋め込みデコーダ

このネットワーク モジュールは、ピクセルを高次元空間にマッピングします。埋め込み空間と呼ばれます。平面的な空間を生成できるため、平面埋め込みと呼ばれます。その機能は、この空間内で平面を区別でき、前の画像も説明できることです。同時に、上記のPlane Segの出力とマージされます。卑劣なネットワークを使用すると、セグメンテーション効果が向上します。主な方法は、平面埋め込み空間内のデータを操作して、同じ平面上のピクセルが平面埋め込み空間内で同様の距離を持つようにし、それらを強制的に同様にすることです。異なる平面上のピクセルは、平面埋め込み空間内ではさらに離れています。書類はプッシュと呼ばれます。これら 2 つの操作ではクラスタリングが使用されます。その主なアーキテクチャは次のとおりです。
ここに画像の説明を挿入
生成された平面埋め込みは最初のステップのマスクで最初にマスクされ、非平面部分が削除され、次に平面埋め込みが上記の平均シフト ネットワークで操作されます。同じ平面上のピクセルを平面埋め込み空間で可能な限り一緒に押し込むと同時に、異なる平面のピクセルを平面埋め込み空間で可能な限り分解すると、次の損失関数が得られます。
LE = L プル + L プッシュ (2) L_E = L_{プル}+L_{プッシュ} \tag{2}LE=L引っ張る_ _ _+Lプッシュ_ _ _(2)
其中 L E L_E LE埋め込み空間内で同じピクセル プレーンが一緒に存在し、異なるプレーンのピクセルが一緒に存在しないことを示します。具体的な損失関数は後で設計します。

プレーンパラメータデコーダ

実際、このステップは各ピクセルの平面座標を計算することです。私の意見では、各ピクセルの法線を計算することです。この前の論文では、画像上の各ピクセルの法線を計算するためのニューラル ネットワークの使用についても言及しました。その後、各ピクセルの法線に直接戻ります。しかし、これは少し異なり、封じ込めの深さを返します。平面の表現には 3 つのパラメータを使用できます。平面上の点をQQと仮定します。Q、その法線はn 0 n^0n0 は元の法線ベクトルを意味します。計算によると、平面の表現は次のようになります:n TQ = 1 n^TQ=1nT Q=1 . この式の導出は次のとおりです。
平面点Q ( x 0 , y 0 , z 0 ) Q(x_0, y_0, z_0) をQ ( ×0y0z0)と上記の点ベクトルQ ( x 0 , x 1 , x 2 ) Q(x_0, x_1, x_2)Q ( ×0バツ1バツ2) (原点から平面上の最も近い点までの、平面に垂直な平面上の距離を表します)。これは次の平面内にあります:
Q ∗ ( PT − QT ) = 0 = > Q ∗ PT = Q ∗ QTQ*(P^TQ^T)=0=>Q*P^T=Q*Q^TQ( PTQ=0=>QPT=QQT
其中Q ∗ QTQ*Q^TQQT は頂点から原点までの距離を表し、d 2 d^2dしたがって、次の式を取得します:
Q ∗ PT / d 2 = 1 Q*P^T/d^2=1QPT /d2=1
ここでQ/d Q/dQ / dは平面の法線値です。もう一度表現すると正常値をQQ点Qから原点までの距離。この場合、次のように表すことができます:NP = 1 N^P=1NP=1 . NNは通過できるNは平面を一意に表します。この N は、正常 / d 正常 / dn or m a l / d、平面上の法線ベクトル、および原点から平面上の最も近い頂点までの距離NNNのパラメータは 3 つで十分です。
論文の回帰平面の 3 つのパラメーター、その損失関数は距離差であり、上で示した平面の距離です。各画素の平面を計算するため、次の損失が得られます。
L pp = 1 N ∑ i = 1 N ∣ ∣ ni − ni ∗ ∣ ∣ (3) L_{pp}=\frac{1}{N}\sum_ {i =1}^N||n_i-n_i^*|| \tag{3}Lpp _=N1i = 1Nn私はn(3)
其中 n i n_i n私は予測平面のパラメータを示します。ni ∗ n_i^*ni 番目のピクセルの実平面パラメータを示します。
論文では、平面をうまく表現できる優れた平面パラメータが見つかり、この特徴を平面抽出に使用できます。適切な面を抽出するには、その面を先ほど分割した面と統合する必要があります。この論文が提案しているのは、ピクセル レベルのパラメータをプレーン レベルのパラメータにグループ化すること、つまり、同様のプレーン レベルのパラメータをグループ化することです。これは非常に重要であり、各ピクセル レベルのプレーン パラメータはマージできます。具体的なネットワーク アーキテクチャは
ここに画像の説明を挿入
次のとおりです。

損失関数の設計

(なぜこのようなデザインができるのでしょうか?)
Plane embed Decoder は直接的にはセグメンテーション ネットワークであり、どれが平面でどれが非平面であるかを直接区別します。
LS = − ( 1 − w ) ∑ i ∈ F logpi − w ∑ i ∈ B log ( 1 − pi ) (1) L_S = -(1-w)\sum_{i \in F}logp_i - w\sum_{ i \in B}log(1-p_i) \tag{1}LS=( 1i Fログp _ _私はwi Bl o g ( 1p私は)( 1 )
これは、2 次元でピクセルにラベルを付ける単純な問題です。こちらもバランスのとれたモデルです。ここで、pi p_ip私は眠っている脳、ピクセル i は前景の問題に属します。ここで、F 、 BF、 BBは前景と背景を意味しますwwwは前景と背景のピクセル比などを表します。詳しくは論文をご覧ください。

Plane embed Decoderの部分は
この論文の革新点でもあり、この革新点を確認することができます。以下の通り:
そのネットワーク設計の損失関数は主に、平面埋め込み空間内で同じ平面のピクセルを可能な限り近づけることです。以下のように操作します。
L pull = 1 C ∑ c = 1 C 1 N c ∑ i = 1 N cmax ( ∣ ∣ μ c − xi ∣ ∣ − δ v , 0 ) (3) L_{pull} =\frac{1}{C} \sum_{c=1}^{C}\frac{1}{N_c}\sum_{i=1}^{N_c}max(||\mu_c-x_i||-\delta_v,0) \tag{3 }L引っ張る_ _ _=C1c = 1CNc1i = 1Ncm a x ( μcバツ私はdv0 )( 3 )

Lpush = 1 C ( C − 1 ) ∑ c A = 1 C ∑ c B = 1 C max ( − ∣ ∣ μ c A − μ c B ∣ ∣ + δ d , 0 ) (4) L_{push} = \frac{1}{C(C-1)}\sum_{c_A=1}^{C}\sum_{c_B=1}^{C}max(-||\mu_{c_A}-\mu_{c_B }||+\delta_d,0) \tag{4}Lプッシュ_ _ _=C ( C1 )1c= 1CcB= 1Cm a x ( μcメートルcB+dd0 )(4) 其中 c A ! = c B c_A != c_B c=cB
ここで、この式は次のようになります: CCC はグラウンドトゥルース プレーンの数を表します、N c N_cNcクラスター内でcc が設定されていることを示しますcの要素の数μ c A 、μ c B \mu_{c_A},\mu_{c_B}メートルcメートルcB各クラスターc A 、 c B c_A、c_Bを表すccB平均値。同時にδ v 、δ d \delta_v,\delta_ddvddPullとPushのロスマージンを示します。これがクラスタリングの考え方です。その表現により、ピクセル( xi x_i)の中にピクセルが埋め込まれていることがわかります。バツ私は)、クラスタリングでは、同じ平面上にあります (それらの差がδ v \delta_v未満であることを示します)dv)、損失にはペナルティ項目はありませんが、このしきい値より大きい場合は、同じ平面上にないことを意味し、ペナルティが開始されます。このようにして、同様のピクセル埋め込みをまとめることができます。同時に、2 つのクラスターが近づくほど、ペナルティは大きくなります。同時にδ d \delta_dより大きいときddペナルティ項目はありません。これがクラスタリングの考え方です。そうすれば、お互いに近い人たちが一緒にいることができます。これらは平面としてクラスター化する必要があるため、平均シフト クラスター アルゴリズムを使用します。2 つのピクセルごとのピクセル埋め込み間の距離を計算する必要があります。このアルゴリズムの時間計算量は高すぎるため、アンカーのアイデアが必要です。アンカーを 1 つずつ設定し、各ピクセルを最も近いアンカーにマッピングします。このうち、k と d は各次元のアンカー数と埋め込みの次元を表します。このようにして、 kkが生成される限り、K個のアンカーで十分です。その次元は埋め込み次元であり、アンカー スペースはKKK._ _ このように埋め込みベクトルxi x_iバツ私はそしてアンカーaj a_jあるj対応するポテンシャルは次のように表すことができます:
pi , j = 1 2 π exp ( − mij 2 2 b 2 ) (5) p_{i,j}=\frac{1}{\sqrt{2\pi}}exp { (-\frac{m_{ij}^2}{2b^2})} \tag{5}p j=午後2時 1e x p ( 2b _2メートル2)( 5 )
ここでbbb はクラスター上の帯域幅を表します。mi , j = ∣ ∣ aj − xi ∣ ∣ m_{i,j}=||a_j-x_i||メートル j=ajバツ私は∣ はaj a_jを意味しますあるj x i x_i バツ私はajt = 1 Z jt ∑ i = 1 N pijt ∗ xi (6) a_j^t=\frac{1}{Z_j^t} \
sum_{i=1}^Np_{ij}^t*x_i \タグ{6}あるj=Zj1i = 1Npバツ私は( 6 )
これは t 回目の反復後です。C C^~ の
ここに画像の説明を挿入
最終計算がわかります。C クラスター。最後に、マージはマスク マップを S で割ったものです。

Plane Param Decoder
各ピクセルの平面パラメータモジュールを計算するために設計された損失関数です. 論文では平面の式を与える必要があり, 損失関数は次のように与えられます: L pp = 1 N ∑ i
= 1 N ∣ ∣ ni − ni ∗ ∣ ∣ (3) L_{pp}=\frac{1}{N}\sum_{i=1}^N||n_i-n_i^*|| \tag{3}Lpp _=N1i = 1Nn私はn( 3 )
ピクセルレベルのプレーンパラメータと以前に生成されたセグメントマスクを組み合わせるプール操作があります。式は次のとおりです。
nj = 1 Z j ∑ i = 1 NS ij ∗ ni n_j=\frac{1}{Z_j}\sum_{i=1}^NS_{ij}*n_inj=Zj1i = 1NSn私は
これはグローバル平均プーリング操作ですが、注意操作があるため、異なるプレーン ( S ij S_ijS私はj ) ピクセルレベルで平面パラメータをフィルタリングします。マスク操作がわかります。なぜなら、この論文ではグローバルな幾何学的情報も考慮しているため、元の深度マップと一致している必要があることを意味します。LIP
= 1 NC ∑ j = 1 C ∑ i = 1 NS ij ∗ ∣ ∣ nj TQ i − 1 ∣ ∣ L_IP=\frac{1}{NC}\sum_{j=1}^{C} \ sum_{i=1}^NS_{ij}*||n_j^TQ_i-1||LP=NC _1j = 1Ci = 1NSnjTQ私は1∣∣
見えます生成された深度値が元の深度値と一致していることが望まれます。
これらの損失の設計は、遭遇したさまざまな問題が達成されたためであり、将来の自分のネットワーク設計の指針などにそれらを模倣する必要があるためです。

ネットワーク設計の詳細(コードレベル)

フォローアップは補足されており、最近は planecnn のコードを見て、コードを実行してテストしています。

感想

1) この論文の考え方は以前の論文とは異なり、以前の論文では最初に平面のパラメータを返すか、点群の法線と深さを計算し、次に各平面を計算してからセグメテーションを調整します。各面の平坦部を確保します。この論文では、平面パラメータを直接返し、平面内の法線と深度をスキップして、ピクセル レベルで平面パラメータを計算します。フラットな表現力が得られます。前回の論文でも触れましたが、本論文ではこの面を直接的に表現しています。

2) この論文では、非常に重要な概念も追加しています。これは、最新の論文で提案されている埋め込みモデルの概念でもあり、エッジの分割を容易にすることができます。このペーパーでは、このトリックを使用して、インスタンス化された分割プレーンをより適切に分割します。ニューラル ネットワークに関する論文はほとんど読んだことがありません。この手法が適用できるかどうかはわかりません。データは知っているだけですが、使い方がわかりません。または、比較的簡単です。今後、ネットワークを改善するためには、論文を積極的に読んでさまざまなテクノロジーを理解する必要があります。

3) 論文ではまだコーナー点情報が追加されておらず、平面表現は極座標で表現できる。

4) 同時に、CRF 表現は実際にシーンの情報を追加できます。ネットワーク アーキテクチャがこの情報をどのように使用するかを検討する必要があります。

おすすめ

転載: blog.csdn.net/weixin_43851636/article/details/112912244