未来を創る、テックコミュニティー

代表論文通信~Accelerating 3D Deep Learning with PyTorch3Dを訳す①

草場代表
2020/10/13

こんばんは。代表の草場です。

午前中にSDGsのボードゲームの打ち合わせ二件。京都版ができそうです。修学旅行での需要もあるので楽しみです。明日は台湾版の最終調整。

さて、点群に関して様々調べています。
宇都宮のバーチャルツアーの取り組み、これはやりたいことと近いので絡みたいです。
増田先生のまとめ記事、「3次元計測とモデル化技術の動向」、ちゃんとレビューしよう。
建築Visualization blog、積木製作さんのTsumiki Tech TimesUnity for AECSAPEETさんのブログは毎日チェック。
静岡の点群の扱いに関しては、海行さんのことが取り上げられている記事が勉強になります。
GithHubに関しては、BA_PointCloudDendritePcx – Point Cloud Importer/Renderer for Unity、を要チェック。
点群からのメッシュ作成に関しては、点群にメッシュをフィッティング!!点群のメッシュ化MeshLabで点群メッシュ化の際に色情報をテクスチャ画像にする
そして、点群を扱うPiXYZ STUDIOがあるそうです。これもチェック。
八分木(octree)で空間インデックス構築済みの形式であるPotreeに変換して読み込ませる方法もあるので、Unityで点群のロード・表示をチェック。
Sketchfabもプラットフォームとして活用すべしですね。
Unityを使ったリアルタイム. プロシージャルモデリングも最新で面白いです。

さて、3次元のディープラーニングが面白いんで、本格的にPytorch3Dを活用します。取り急ぎ、Accelerating 3D Deep Learning with PyTorch3Dを翻訳していきます。

アブストラクト

ディープラーニングは、2次元画像認識を大幅に向上させました。3Dに拡張することで、自律走行車、仮想 と拡張現実感、3Dコンテンツのオーサリング、さらには2D認識の改善にも貢献しています。
しかし、関心が高まっているにもかかわらず、3Dディープラーニングはまだ比較的十分に研究されていません。この格差の原因の一部は、異種データを効率的に処理したり、グラフィックス操作を差別化できるようにリフレーミングするなど、3Dディープラーニングに関わる工学的な課題にあると考えられています。我々は、3Dディープラーニングのためのモジュール化された効率的で微分可能な演算子のライブラリであるPyTorch3Dを導入することで、これらの課題に対処しています。このライブラリには、メッシュと点群のための高速でモジュール式の微分可能なレンダラーが含まれており、合成による解析アプローチを可能にしています。他の微分可能なレンダラーと比較して、PyTorch3Dはよりモジュール化されており、効率的であるため、ユーザーはより簡単に拡張することができ、大きなメッシュや画像へのスケーリングも容易です。
PyTorch3D の演算子とレンダラーを他の実装と比較し、速度とメモリの大幅な改善を実証しています。また、PyTorch3Dを用いて、ShapeNet上の2次元画像からの教師なし3次元メッシュや点群予測の最新技術を向上させています。PyTorch3Dはオープンソースであり、3Dディープラーニングの研究を加速させる一助となることを期待しています。

主には点群を中心に扱いたいので、その部分を注目して読んでいきます。

1 はじめに
過去10年以上にわたり、ディープラーニングはAIシステムが2次元画像データを処理する能力を大幅に向上させてきました。現在では、オブジェクトやシーンの分類、オブジェクト検出、セマンティックセグメンテーション、インスタンスセグメンテーション、人間のポーズ推定などのタスクに対応した高性能なシステムを構築できるようになりました。これらのシステムは複雑な画像データを処理することができ、数え切れないほどの実世界の設定で導入されています。成功しているとはいえ、これらの手法には共通の欠点があります。それは、2Dスナップショットを処理し、世界の真の3D性を無視しているということです。
ディープラーニングを3Dに拡張することで、多くの新しいアプリケーションが可能になります。3D点群で物体を認識することで、自律走行車のセンシング能力を向上させたり、新しい拡張現実体験を可能にしたりすることができます。深さや3D形状を予測することで、2D画像を3Dに持ち上げることができます。
生成モデルは、アーティストが3Dコンテンツを作成する際に役立つかもしれません。ビュー合成のような画像ベースのタスクは、2Dの監督のみを与えられた3D表現によって改善される可能性があります。
関心が高まっているにもかかわらず、3Dディープラーニングはまだ比較的過小評価されています。
この格差の原因のいくつかは、3Dディープラーニングに関わる工学的な課題にあると考えています。そのような課題の1つは、異種データがあります。2D画像は、ほとんどの場合、通常のピクセルグリッドで表現されます。対照的に、3Dデータは、ボクセルグリッド、点群、メッシュなどの様々な構造化されたフォーマットで保存されており、これらのフォーマットは、要素の不均一性を示す可能性があります。例えば、メッシュは、頂点や面の数、トポロジーが異なる場合があります。このような不均一性により、PyTorchやTensorflowのような標準的なディープラーニングツールキットで提供されるテンソル中心のプリミティブを使用して、3Dデータに対するバッチ処理を効率的に実装することが困難になります。2つ目の重要な課題は、差別化可能性です。コンピュータグラフィックスのコミュニティでは、3Dデータを効率的に処理するための多くの方法が開発されています。しかし、ディープラーニングパイプラインに組み込むためには、各操作を見直す必要があり、グラデーションも効率的に計算する必要があります。カメラ変換などの一部の操作は、自動微分によってグラデーションを簡単に認めることができます。
また、メッシュレンダリングのように、微分可能な緩和を用いて再構築する必要があるものもあります。
我々は、PyTorch上に構築された3Dディープラーニングのためのモジュール化された効率的で十分にテストされた演算子のライブラリであるPyTorch3Dを導入することで、これらの課題に対処しています。すべての演算子は高速で微分可能であり、多くの演算子は、効率を向上させ、メモリ使用量を最小限に抑えるために、カスタムCUDAカーネルを用いて実装されています。点群とメッシュのバッチを管理するための再利用可能なデータ構造を提供し、すべてのPyTorch3D演算子が異種データのバッチをサポートできるようにしています。
PyTorch3Dの主な特徴の1つは、メッシュと点群のためのモジュール式で効率的な微分可能なレンダリングエンジンです。微分可能なレンダリングは、3D データを 2D 画像に投影し、画像レベルの監視のみで 3D 予測を行うことができる解析合成や逆レンダリングのアプローチを可能にします。最近の他の微分可能なレンダラーと比較して、我々のレンダラーはモジュール性と拡張性の両方を備えています。レンダリング パイプラインをステージ(ラスタライズ、ライティング、シェーディング、ブレンディング)に分解することでモジュール性を実現し、ユーザー定義の新しいコンポーネントに簡単に置き換えることができるので、ユーザーはレンダラーをニーズに合わせて適応させることができます。2 段階のラスタライズと、各ピクセルに影響を与えるプリミティブの数を制限することで、効率を向上させています。最適化されたPyTorch3D演算子を、ナイーブなPyTorch実装や他のオープンソースパッケージで提供されているものと比較し、速度とメモリ使用量が最大10倍改善されていることを実証しています。また、PyTorch3Dの柔軟性については、ShapeNetデータセットを用いた教師なし形状予測の実験を行いました。モジュール化された微分可能なレンダラーと効率的な3D演算子を用いて、2D画像からの教師なし3Dメッシュと点群予測のための最新技術を、高い計算スループットを維持したまま改良しました。
PyTorch3Dはオープンソースであり、今後も進化していく予定です。の貴重なツールとなることを期待しています。コミュニティに参加し、3Dディープラーニングの研究を加速させるのに貢献してください。

とりあえず導入します。

 

 

 

 

 

 

 

この記事を書いた人
草場代表
エディター