見出し画像

NeRFと市販の3Dスキャナーを比較してみた - その1

2022年後半にChatGPTのような多くの人が驚愕する実用的なAIが出てきましたが、3D技術関連でもブレイクスルーとなる機械学習関連の技術が表出してきました。
その名もNeRF(Neural Radiance Fields)
3次元空間のオブジェクトや地形を表現するためのニューラルネットワークモデルとのことです。
NeRFは、入力としての2D画像とその画像に対応する3次元的な位置との対応関係を学習し、学習したNeRFモデルは新しい画像を入力したときにその画像に対応する3D表現を生成することができます。

こういった面白いテクノロジーが世の中にどんどんと出てきているにもかかわらず、起業後の忙しい日々に追われてトライアルできる時間の確保ができず、伸び伸びの状態でした。。。しかし、そもそも僕はトライアンドエラーが大好きなエンジニア崩れの起業家1年生。「スタートアップ企業の代表としてテクノロジーを社会実装するためには他人からの伝聞情報を鵜呑みにするのではなく自分が楽しんで使え」をテーマにここから先は様々な最新技術を自ら試してみることにしました。その第一回としてNeRF技術のチェックと同時に他の3D化技術との比較を行ってみました。

NeRFの利点について

同じく2D画像を使う方式としてPhotogrammetryという方式がありますが、NeRFはPhotogrammetryが苦手とする(というか撮影できない)透明色反射物白い物体黒い物体といった物体を撮影できる技術という触れ込みで今まで撮影できなかったものを3D化できる技術です。
NeRFは複数の画像から得られるテクスチャや色情報を統合することで、3Dデータに対してより詳細な質感や色情報を付加することができます。これにより、NeRFによる3D表現はPhotogrammetryと比べてよりリアルな表現をすることができます。

Photogrammetryの利点について

一方のPhotogrammetryは複数の画像から三次元計測を行うことで、高精度な3Dデータを生成する技術です。そのため、Photogrammetryは画像から物理的な距離や角度を測定することで高精度な3Dデータを生成することができますが、NeRFはニューラルネットワークを使用して3Dデータを推定して作成するため、物理的な基準に基づく計測ができないという制限があります。

手元にあるパターン投影用の装置と比較してみた

本質的には上述の2Dから生成するPhotogrammetryと比較するべきですが、まずは比較対象となる技術として今回は社内にあるパターン投影法タイプの3Dスキャナを使用して比較してみました。
スマホから写真をアップして3D化してくれるPhotogrammetry用のサービスも世の中には数多くありますが、光源設定などの写真撮影環境を整える必要があり手間がかかることが理由です。ご容赦を。。。

今回の題材はちょっと難しい薄っぺらいもの

今回は社内にある物の中でも比較的3Dスキャンが困難な小さくて薄っぺらいものを選択しました。ペラペラなものは撮影後の位置合わせが難しいので3Dスキャン時の配置方向検討が難しいです。今回は台座があるから台座にセットして撮ってしまえということで台座にセットして10度単位でテーブルを回転させて撮りました。10度x36の360度方向での撮影になります。

撮影対象にした戦闘機(F35)のフィギュアが3Dスキャナーのターンテーブル上に載っている写真
撮影対象にした戦闘機(F35)のフィギュア

この配置でパターン投影では厳しい。。

結果は以下のとおりです。。ほぼ取れていません。
これは配置方向が悪く、スキャナーから出力される格子パターンがまともに投影されないことに由来していると思われます。しっかりと模型の面に講師パターンがあたるようにロケットの様に立てて配置すれば結果も変わるでしょう。。
低価格な3Dスキャナーを使いましたが、高価な装置を使ったとしても原理上同様の問題が生じるため、パターン投影の装置を用いてこういったペラペラなモデルを撮影する場合は配置方向を要検討です。

飛行機の模型をパターン投影方式の3Dスキャナーで撮影した結果
パターン投影でのスキャン結果

この状態でも穴埋めしたりできますが、あまりにボロボロなのでこのまま使うことは不可能です。改めて撮影方法を検討して再撮影する必要がありますが、今回は次に行きます!

まずは写真撮影!

NeRFは環境に依存しにくいということで社内で特に環境を整えず作成してみました。今回の撮影枚数は96、環境は良くないですがとりあえず量は準備してみました。

NeRF生成に利用した画像
NeRF生成に利用した画像

NeRFにはNerf-pytorchやtf-nerfといったライブラリがあるので、自ら実装したい場合はそういったライブラリを使うのが良いですが、今回はLumalabs.aiというサービスを利用して生成してみました。
撮影した画像をzip圧縮してアップロードするだけで3D化してくれる優れものです。生成結果を以下のリンクにアップしたので是非ご確認ください。

また本サービスでは3Dモデル化してダンロードも可能なのでダウンロードしてみました。
簡易的なビジュアライズ用の3Dデータとしては十分な品質です。

NeRFによる出力結果の画像
NeRFで生成したオブジェクト

ビジュアライゼーションではNeRFに軍配!

パターン投影が苦手としている形状といえど、これだけの差が生まれるとは。。テクノロジーは日々進歩していると実感できます。
3Dデータの活用範囲は今後ますます広まっていくと考えられていますが、データの作成に要するエンジニアリングによるハードルや要求するハードウェアの性能などといったボトルネックや参入障壁が存在していました。こうした新たなテクノロジーがそれらハードルを取り除いていくことは間違い無いでしょう。
新たなテクノロジーに触れることを怖がらず、それらを味方につけることで楽しんでいきたいと思います。
次回はパターン投影で撮影しやすいオブジェクトを選択し、撮影物のメッシュデータの状態を比較してみたいと思います。


この記事が気に入ったらサポートをしてみませんか?