3.8K Views
March 06, 24
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2023年度論文読み会#7(3Dデータ論文読み会#1) 点群ベースの3D物体認識モデル「PointNet」 京都大学理学部 3回生 松田拓巳 0
■3D論文読み会について ⚫ 週1回ペースで3D×機械学習に関連する論文読み会を実施 ⚫ 全7回を予定し、3回分は認識系、4回分は生成系を読む ⚫ 発表予定の1週間前までに発表する旨を#generalで告知 ⚫ • 発表する日時(基本は火曜19時~ですが都合により変更も可) • 論文名とそのリンク • 認識系 or 生成系 発表希望者がいない回は松田が発表します 1
■論文の探し方(例) ⚫ Google Scholar や X,arXiv,CVPR,Microsoft Academicなど で検索して探す ⚫ • “3D deep learning” • “3D recognition” • 興味のある分野のwordを入れても良いかも(ex. 自動運転) Paper with codeのBrowse State-of-the-Artで性能の良い モデルの論文を探す 2
点群ベースの3D物体認識モデル「PointNet」 目次 1. 3D物体の表現方法 2. 論文の概要 3. 先行研究 4. PointNetのアーキテクチャ 5. 性能検証 3
1. 3D物体の表現方法 4
1. 3D物体の表現方法 1.1 3Dで物体を表現する方法はさまざま 点群 メッシュ ボクセル センサーの生データ に近い表現形式 三角形の 貼り合わせ “ピクセル”の3D版 出典:https://stanford.edu/~rqi/pointnet/docs/cvpr17_pointnet_slides.pdf RGBD RGBに奥行き (Depth,Distance)成分 が入ったもの 5
1. 3D物体の表現方法 1.2 その他 多視点画像から物体認識(multi-view) 出典:https://arxiv.org/abs/1505.00880 6
2. 論文の概要 7
2. 論文の概要 2.1 ポイント ⚫ 点群データを入力とする深層学習モデル PointNet を提案 ⚫ 3D物体のクラス分類、セグメンテーションで高精度を達成 ⚫ SoTAモデルよりも軽量で、計算コストが低い 8
3. 先行研究 9
3. 先行研究 3.1 点群特徴量作成の従来手法 ⚫ ⚫ 手作り特徴量を使った手法がほとんどだった タスクに応じた最適な特徴量の作り方を模索する必要あり ↓特徴量の例 出典:https://github.com/PointCloudLibrary/pcl/wiki/Overview-and-Comparison-of-Features 10
3. 先行研究 3.2 3D物体認識の従来手法 Volumetric CNN FPNN ボクセル化した物体に 3次元畳み込みの 3次元畳み込みを適用 問題点を緩和 問題点 解像度を上げると、 問題点 ・計算量が3乗オーダーで増加 効率的にはなったものの、 ・多くのボクセルが0になる 大規模3Dデータになると対処しきれない (スパースになる) 出典:https://openaccess.thecvf.com/content_cvpr_2015/papers/Wu_3D_ShapeNets_A_2015_CVPR_paper.pdf 出典:https://arxiv.org/abs/1605.06240 11
3. 先行研究 3.2 3D物体認識の従来手法 Multiview CNN Spectral CNN メッシュベースの手法 問題点 滑らかで連続的な表面を持つ形状にしか 使えない 問題点 他タスク(セグメンテーション等)への拡張が困難 Feature-based DNN 手作り特徴量をDNNに入力 問題点 性能は特徴量の作り方に大きく依存する 出典:https://arxiv.org/abs/1505.00880 12
4. PointNetのアーキテクチャ 13
4. PointNetのアーキテクチャ 4.1 全体像 ⚫ Max pooling ✓ 点の順序が変わっても出力が変わらないようにする ⚫ global featureと隠れ層出力を組み合わせる ✓ 大域的構造を表すglobal featureと局所的構造を表す隠れ層出力を使ってsegmentation ⚫ Transform Network ✓ 回転などの変換をされても出力がなるべく変わらないようにする 14
4. PointNetのアーキテクチャ 4.2 ポイント①:Max pooling ⚫ 点群を扱う難しさ [ [1,2], [ [2,3], [2,3], [3,1], [3,1], or [1,2], or … [4,4]] [4,4]] 点群データ ⚫ どんな順番で入力しても 出力は同じであってほしい 順序に任意性 3つの解決案 ✓ あるルールで並び替える ✓ 順番を”系列データ”とみなしRNN系モデルで学習させる ✓ 対称関数(=変数の順番を変えても出力が変わらない関数)を使う 15
4. PointNetのアーキテクチャ 4.2 ポイント①:Max pooling ⚫ 解決案①:あるルールで点群を並び替える 𝑥座標の小さい順 𝑥座標の小さい順 ⚫ [ [0.9, 1.0], [1.0, 0.4], [1.1, 1.2], [1.2, 1.3]] [ [0.9, 1.0], [1.0, 1.3], [1.1, 0.4], [1.2, 1.2]] 点が微小に動いただけで 点の順序が変わってしまう (=不安定な順序付け) 点の微小な摂動に対して安定な順序付けをするルールは一般に不可能* ⇒ 入力が一貫しないので学習が困難になりやすい * そのような順序付けが存在すると仮定するとℝ𝑛 𝑛 ≥ 2 から ℝ への全単射が存在してしまうため。詳しくは論文4.2節を参照 16
4. PointNetのアーキテクチャ 4.2 ポイント①:Max pooling ⚫ 解決案②:系列データとみなしてRNN系のモデルで学習する 𝑥1 , 𝑦1 , 𝑧1 (𝑥1 , 𝑦1 , 𝑧1 ) 𝑥2 , 𝑦2 , 𝑧2 (𝑥2 , 𝑦2 , 𝑧2 ) (𝑥3 , 𝑦3 , 𝑧3 ) (𝑥3 , 𝑦3 , 𝑧3 ) ⚫ 𝑥2 , 𝑦2 , 𝑧2 (𝑥3 , 𝑦3 , 𝑧3 ) 𝑥1 , 𝑦1 , 𝑧1 (𝑥3 , 𝑦3 , 𝑧3 ) (𝑥1 , 𝑦1 , 𝑧1 ) (𝑥2 , 𝑦2 , 𝑧2 ) 𝑥3 , 𝑦3 , 𝑧3 (𝑥2 , 𝑦2 , 𝑧2 ) 𝑥3 , 𝑦3 , 𝑧3 (𝑥1 , 𝑦1 , 𝑧1 ) (𝑥2 , 𝑦2 , 𝑧2 ) (𝑥1 , 𝑦1 , 𝑧1 ) 順序を変えたものを学習データに入れれば、 順序付けによらない出力を期待できる?? 数十個程度なら順序付けに頑健な出力が得られるが、数千個になると だった 17
■補足|Transformerなら問題ないのでは?(仮説) ⚫ 論文が発表されたのは、Transformerが出る前だった(本論文:2016/12,Transformer:2017/06) セグメンテーションタスク 各点がどの物体に属するかの確率 𝐚1 𝐚2 クラス分類タスク 物体がどのクラスに属するかの確率 𝐚3 𝐚CLS Transformer ブロック (Encoder部分) 𝑥1 𝑦1 𝑧1 𝑥2 𝑦2 𝑧2 𝑥3 𝑦3 𝑧3 点① 点② 点③ 𝐚1 𝐚2 𝐚3 Transformer ブロック (Encoder部分) Positional Encoding は入れない −1 −1 −1 CLS 𝑥1 𝑦1 𝑧1 𝑥2 𝑦2 𝑧2 𝑥3 𝑦3 𝑧3 点① 点② 点③ 18
4. PointNetのアーキテクチャ 4.2 ポイント①:Max pooling ⚫ 解決案③:対称関数を使う 𝑓 𝑥1 , 𝑥2 = 𝑓(𝑥2 , 𝑥1 ) (1) (1) (2) (2) (3) (3) 𝑥1 , 𝑦1 , 𝑧1 MLP3×1024 ℎ1 , ⋯ , ℎ1024 𝑥2 , 𝑦2 , 𝑧2 MLP3×1024 ℎ1 , ⋯ , ℎ1024 MLP3×1024 ℎ1 , ⋯ , ℎ1024 (𝑥3 , 𝑦3 , 𝑧3 ) MaxPool ℎ1 , ⋯ , ℎ1024 点群の順序が変わっても MaxPoolの結果は変わらない! 重みは共有 (図ではMLP1層だが実際には何層かある) ⚫ 色々模索したが、Max poolingが一番良かった → 19
4. PointNetのアーキテクチャ 4.3 ポイント②:global featureと隠れ層出力の組み合わせ ⚫ セグメンテーションタスクでは各点の特徴だけでなく全体の特徴も考慮 する必要がある 隠れ層の出力 各点の特徴を表すベクトル global feature 全体的な”感じ”を表すベクトル 各点の特徴にglobal featureを concatする 20
4. PointNetのアーキテクチャ 4.4 ポイント③:T-Net ⚫ ⚫ 剛体回転しても出力が変わらないよう、入力に回転行列をかける T-Netの出力が直交行列になるように正則化項 𝐼 − 学習が安定した 2 ⊤ 𝐴𝐴 を加えると、 出典:https://jp.mathworks.com/help/vision/ref/pctransform.html T-Netから出力された 3×3の行列をかける T-Netから出力された 64×64の行列をかける 21
5. 性能検証 22
5. 性能検証 5.1 クラス分類 ⚫ ⚫ ⚫ 「ModelNet40」のCADモデルから点群(1024点)を作成 クラス数は40 Train=9843個,Test=2468個で学習・評価 各クラスの 正解率の 全体の正解数÷ 全体の個数 平均値 global featureをMLPに通してsoftmax 23
5. 性能検証 5.2 パーツセグメンテーション ⚫ ⚫ 「ShapeNet」(N=16881,全16クラス,全50パーツ)を使用 評価指標は mIoU TP IoU = FN + TP + FP 出典:https://jp.mathworks.com/help/vision/ref/evaluatesemanticsegmentation.html 24
5. 性能検証 5.3 セマンティックセグメンテーション ⚫ 「Stanford 3D semantic parsing dataset」を使用 25
5. 性能検証 5.4 ロバスト性の検証 ⚫ 欠損、外れ値、ノイズにどれだけ強いかを検証 パーツセグメンテーション クラス分類 欠損 (total:1024) 学習時の 外れ値 ガウシアン ノイズ 半数が欠損しても 2~4%程度しか 精度が下がらない 26
5. 性能検証 5.5 パラメータ数と計算コスト ⚫ ⚫ PointNetは軽量かつ高速 しかもスケールしやすい • • PointNet :点群の数を𝑁倍にすると計算量は𝑁のオーダーで増える Multi-view系:解像度を𝑁倍にすると計算量は𝑁 2 のオーダーで増える T-Netなしver. 27
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation まとめ まとめ1 PointNetは点群データを入力として扱える深層学習モデルで、 まとめ2 Max poolingやT-Netによって、点順序や剛体回転に対する出力不変性を実現 まとめ3 従来モデルよりも圧倒的に軽量なモデルである クラス分類・part segmentaion・semantic segmentationで高精度を達成した 28
29