「Metashape (PhotoScan)」での実行時間測定・考察
撮影デバイスの飛躍的な技術進歩によって、3Dオブジェクト生成ソフト「Agisoft PhotoScan」のお問い合わせが日に日に増えております。
今回はPhotoScan (Ver1.3.2)を使用して、Intel、AMDの新型CPU及び、GPUを使用した、比較テストを行い、ハードウェア選択のポイントを考察してみたいと思います。
追記 : 2019年1月現在、Agisoft PhotoScanは「Metashape」という名称に変更となっております
測定方法・ツールなど
- Agisoft PhotoScanバージョン:Ver1.3.2 (評価時のver.) / 比較のためVer1.2.4
- CUDA有効、ソフト上でGPUを有効にするかしないか以外の設定は標準とします。
- サンプルプロジェクト:Doll (Agisoft サンプルデータダウンロードページ)
上記環境にてPhotoScan起動後、
Align Photos (High) → Build Dense Cloud (Midium) → Build Mesh (Midium)
の順で実行し、出力ログにて、実行時間を確認、比較します。
検証環境 1:Intel Core i9
CPU | Intel Core i9 7900X 3.30GHz (TB4.30GHz) 10C/20T 44L |
メモリ | 32GB (DDR4-2666 8GBx4) |
OS | Microsoft Windows 10 Professional 64bit |
※参考:TEGSTAR Premium
検証結果
バージョン | GPU | Align Photos (High) | Build Dense Cloud (Midium) | Build Mesh (Midium) |
---|---|---|---|---|
1.2.4 | GTX1080 x1 | 6分32秒 | 2分01秒 | 42秒 |
1.3.2 | GPU無し | 1分56秒 | 2分13秒 | 38秒 |
GTX1080 x1 | 39秒 | 1分18秒 | 39秒 | |
GTX1080Ti x1 | 36秒 | 1分17秒 | – | |
GTX1080Ti x2 | 26秒 | 54秒 | – |
結論
旧バージョン 1.2.4 からバージョン 1.3.2 へのアップデートにより処理速度が大幅に向上することが確認できました。これはソフトウェア側でうまくCPUを使い、並列処理が行われるようになったためと考えられます。
また、GPUによる処理の恩恵も十分に得られています。Align Photo処理ではGPU無しに比べ、GTX1080搭載時で、3倍強程度の処理速度の向上がみられました。1080と1080Tiではスペック差ほど差は見らませんでしたが、2枚挿しの際は、さらに3~4割程度の効率UPとなっています。一連の作業トータルでの処理時間を考えればGPU追加も有効な選択肢になると言えます。
上記結果より、さらにコア数に特化したAMD製のCPUを使用することで、更なる並列処理効果が見られるのではないかということで、AMD製のCPUでも計測してみました (下記検証環境 2)。コア数は上記Intel Core i9が10コア、20スレッドに対し、AMD Threadripperは16コア、32スレッドとなります。
検証環境 2:AMD Threadripper
CPU | AMD Ryzen Threadripper 1950X 3.40GHz/40MB 16C/32T |
メモリ | 32GB (DDR4-2666 8GBx4) |
OS | Microsoft Windows 10 Professional 64bit |
検証結果
バージョン | SMT | GPU | Align Photos (High) | Build Dense Cloud (Midium) | Build Mesh (Midium) |
---|---|---|---|---|---|
1.3.2 | 標準 | GTX1080 | 52秒 | 1分23秒 | 53秒 |
OFF | GTX1080 | 37秒 | 1分20秒 | 45秒 |
結論
実測の結果としては、思ったほどの効果は得られず、逆にSMT (CPUのマルチスレッド機能)をOFFにしたほうがこの場合は良い結果が出るという結果となりました。
下記「参考」は測定時のCPU使用状況になりますが、Intel Core i9はCPUにまんべんなく負荷がかかっているのに対し、AMD Threadripperは負荷がかかり切らない(使用効率が悪い)状況となっています。SMTをOFFにすることで改善がみられることから、ソフトウェア側でIntelのCPUへ最適化されており、今回検証のPhotoScanのバージョンでは、AMDのCPUマルチスレッド機能を使いきれない、ということが言えそうです。
参考
環境1 (Intel Core i9)での処理中のCPU使用状況
環境2 (AMD Threadripper SMT 標準)での処理中のCPU使用状況
※負荷がかかりきらない状態が続きます。
環境2 (AMD Threadripper SMT OFF)での処理中のCPU使用状況
今回の検証 全体の結論
今回検証に使用したPhotoScan (1.3.2)では、旧バージョンで課題であった並列処理やGPUを用いた処理がきちんと機能していることが確認できました。今回のバージョン含め、以降のバージョンでは現行のIntel CPUや複数枚のGPUをチョイスすることでさらに作業効率を上げることができそうです。
なお、PhotoScan (1.3.2)ではIntel製のCPUには最適化されていることが考えられましたが、今後のアップデートにてAMDのCPUも考慮されたものになる可能性はあると思われます。AMD製のCPUを選択するのは、今後のバージョンアップ状況をみてからでもよろしいかもしれません。
PhotoScanのバージョンによる違いやXeonのような物理CPUを増やしたパターン、GPUスペックによる効果なども、今後情報を公開していく予定ですので、ご期待ください。