地面の目印 -エスワン-

さまざま、気の向いたとき
数学関係は、今後 https://fifthtaxi.hatenadiary.jp/ へ

colmapがようやく最後まで動く(その2)

2022-09-16 14:33:31 | 3D

1.はじめに

 colmapが最後まで動き、嬉しくなったので、今度は動画をもとに3Dモデル作成に挑戦した。ある対象の周りを静止画で何十枚も撮るのは結構大変。動画で撮影したものから3Dモデルができれば便利ではと考えた結果です。。

 参考にしたのは、以下のサイトです。

サイト1:https://blog.goo.ne.jp/yoossh/e/d1278b39229eca47774fe5646a2bb2d7

サイト2:https://buaiso.blogspot.com/2018/11/colmap.html

 

2.実行

 実行は以下の順序で行った。

 (1) 動画から静止画の作成

 (2) 静止画に対しcolmapの適用

 

3.動画から静止画の作成

 参考にしたサイト1,2でも用いている ffmpeg というフリーソフトを用いてDOS窓から

ffmpeg -i akatsuka_20220815.mp4 -vf framestep=10 -vcodec png images\img-%03d.png 

  とした。-i, -vf -vcodec などのパラメータの意味はよくわからないが、 xxx.mp4 は入力する動画ファイル、出力はimgesというフォルダーの中に連番で img-xxx.png という静止画ファイルができるようにした。 framestep=10 は間引くフレーム数。最初このパラメータなしで実行したところ約30秒の動画から849枚の静止画が作成されたので、10フレーム毎の間引きとしたところ85枚に減少した。

    

   【近くの公園での動画】           【抽出した静止画の一枚】

 

4. 静止画に対するcolmapの適用

 当初、パラメータの調整ができるマニュアルモードで行おうと思ったが、最初の Feature extraction の Camera model を設定するところで困ってしまった。上記サイト2では、設定の例が示されているが、その背景にある理屈がよくわからなかったので、サイト1にしたがいAutomatic reconstruction でやってみることにした。この場合、下に示すパラメータ設定画面に max_image_size の項がないことが問題となる。一方、Data type として Video frames を設定すれば、カメラパラメータの設定を避けることができる(本当は何らかの設定がされているはず。どうなっているのだろう)。また、非力な実行環境を考慮して Quality を low に設定した。これで、Runさせるとなぜか最後まで実行できた。

【Automatic reconstructionでのパラメータの設定】

【Qualityをlowに設定したときのDense reconstructionの結果】

 

 このように、lowではさすがに出来上がった点群の品質が低かったので、上の設定で Quality を medium にして実施すると、6枚目のステレオマッチングのところで落ちてしまった。Feature extraction と Feature matching  の部分はできていたようだったので、Sparce reconstruction からマニュアルで実施。

 Dense reconstruction では max_image_size を500に設定して実施した。その結果、画質は lowのときに比べ数段向上した。

【Qualityをmediumに設定したときのDense reconstructionの結果】

 

 その後、QualityをHighにして実施すると、Automatic reconstruction の Feature matching の部分で「GPUメモリが足りない。SiftGPUが十分サポートされていない。」とのエラーが出る。結局、前回のブログに示した実行環境では mediumで得た成果が限界のようだ。これ以上良い質の成果を colmap を用いて出すためには、PCのメインメモリやGPUメモリを 増設しなければいけないようだ。

 

5. その他
 4.にあげた例の動画は、歩きながら左側面を撮ったものであった。左右両面が一度に撮れればいいなと思い、歩きながら前方を撮影した動画で colmap を適用してみた。結果を以下に示す。

【歩きながら前方を撮影した動画からのDense reconstructionの結果】

 

 そろそろPCを買い替え、実行環境を強力にしようかな。


colmapがようやく最後まで動く

2022-08-18 15:42:28 | 3D

1. はじめに

 colmapによる3Dモデル作成に取り組んでいることは、以前colmapのビルドの記事に記した。その後、あれこれ試したがどうもうまくいかない。今回ようやくdense constructionを完了し、meshモデルも作成することができた。meshモデルをMeshLabに読み込むとグレー表示で色が消えていたのが、残念であるが結果をメモとして残しておく。

 

2.colmapの実行環境

 今回のcolmapは以下の環境で実行した。

OS: Windows 10 Home
Version: 21H1
CPU: Intel(R) Core(TM) i7-4770
RAM: 8GB
GPU: NVIDIA Quadro K600
GPU Driver: NVIDIA CUDA 10.2.89
GPU RAM:1GB

colmap:colmapのビルド に記した新たにビルドしたもの

使用した写真:SfM事始めに記した26枚のデコイのカモの写真のうちの連続した8枚。画像のサイズは4160x3120 である。なお、画像ファイル名は枚数を少なくしたのは、GPUメモリが多くないので計算時間を押さえたかったためである。

 

3.実行

(1)Automatic reconstruction

 DOS窓から colmap.bat を実行すると以下の画面が現れる。

 File > New project を選択すると、以下のwindowが現れ、Databaseファイル画像を指定するように求められるので、

DatabaseNewを押下し、予め定めた作業フォルダ(ここではworkとする)内に例えばdatabaseと指定する。画像は作業フォルダ内に予め画像8枚を収めたフォルダー(ここではimagesとする)を指定し、saveする。ここで、念のため File > Save project as を選択し、プロジェクトファイル(project.ini)をsaveしておく。

 次に、一気通貫でメッシュモデルまで作成が可能な Reconstruction > Aitomatic reconstruction を選択する。すると下図のようなパラメータ設定画面が現れるので、上で設定した作業フォルダ―と画像ファイルのフォルダーを指定する。また、Qualityは計算時間が短くて済むようLowを設定した。そしてRunを押下する。

 するとかなり時間がかかるが、Feature extractionは行われるがFeature matchingがメモリ不足のためエラーとなり、途中でcolmapがクラッシュしてしまう。このため、Automatic reconstructionはあきらめ Feature extraction から一つずつマニュアルで行うことにする。

(2)Manual reconstruction

プロジェクトファイルをsaveするまでは上と同じ。

a. Feature extraction

 メニューから Processing > Feature extraction とすると下図のwindowが現れる。ここで max_image_size のdefaultは3200であるが、そのままにすると2.に記した環境では落ちてしまうので、500とした。そしてwindow下部のExtract をクリックするとすぐ完了する。完了してもwindowはそのまま残るので右上の×印をクリックしてwindowを閉じる。

b. Feature Matching

 次に、Processing > Feature matching を選択すると、図のwindowが現れる。

 Matching の手法にいくつもあるが、左上端の Exhausive ではうまくいかなかったので、その右隣の Sequential を選択。Runをクリックして実行するとマッチングは直ぐに終了した。

c. Database management

 次に、Processing > Database management を選択すると、図のような状態になっていた。

d. Sparse Reconstruction

 次に、Reconstruction > Start reconstruction を選択すると、直ぐに実行が始まり、疎な点群が作成され、その結果がカメラの3次元位置とともに画面に表示される。

e. Dense Reconstruction

 次に、Reconstruction > Dense reconstruction を選択すると、下図の下側のwindowが現れる。ここで、windowの上側の option をクリックすると下図の上側のwindowが現れる。

 ここで max_image_size の default は 2000 であるが、そのままであるとうまく動作しないので500 に設定する。上側のwindowを閉じて、下側windowの Undistortion をクリックする。その結果は下図のようになる。

 次に、Stereo をクリックする。この部分が一番時間がかかるが今回は画像枚数が8枚と少なかったので十数分で完了したと思う。完了すると画面は下図のようになる。

 このあと Fusion をクリックすると最終的な3次元点群ができる(下図)。その後、メッシュモデルを作成するには、PoissonDelaunay をクリックすれば良い。今回の例では、Delaunay のみしか作成できなかった。

 メッシュモデルは colmapでは表示できないので、File > Export all models により export しておく。 

 

4. 最後に

 colmap を最後まで動かすのに大変苦労したが、(誤解の可能性はあるものの)わかったことをまとめておく。

(1) メインメモリや GPU のメモリが少ないと、途中でクラッシュするようだ。

(2) (1)の場合、Automatic reconstruction ではなく、Feature extraction からステップを踏ん

        で実行する 。

(3) Feature matching max_image_size (デフォールト3200)と Dense constructionOption max_image_size (デフォールト2000)を小さくする。どの環境であれば、どの程度に設定すれば良いのかの情報があれば良いと思った。

(4) Feature matching の方法は Sequential ではうまく動いた。

(5)メッシュモデル作成は、なぜか Poisson ではうまくいかない。Delaunay は白黒になってしまう。

(6)Dense construction GPU がないと実行されないようなので、Quadro K600 がうまく機能したのではないかと考えている。なお、ビルド済みをダウンロードした colmap では、GPUをオンにするとなぜか直ぐクラッシュしてしまう。

 

 これからも機会があれば試験を繰り返し、今回のメモの内容を改善したい。


colmapのビルド

2022-05-30 13:49:11 | 3D

1.はじめに

 以前にブログ「cudaに触ってみる」に書いたようにCOLMAPによる3次元モデルの作成に取り組んでいる。cudaのインストールもできたようだし、COLMAPを試してみることにした。COLMAPのサイトを見ると、実行形式をダウンロードして試してみるのが簡単そうだったので、以前の記事「SfM事始め」で作成したカモの写真を使って実施してみた。

 ところが、「12878点をマッチングするためのGPUメモリが十分でない。マッチング最大数を減らせ」とか「SiftGPUのサポートが十分でない」などのエラーが出てきてしまう。ほかにも設定可能なパラメータを変えて実施してみるがうまくいかない。COLMAPには親切なマニュアルもないし、行き詰ってしまった。インストールしたのはCOLMAP-3.7のWindowsバージョンだったが、COLMAP-3.6 では、legacy compute capability が3.0以下のGPUに対する実行形式の配布は中止するということが書かれていたし、使用しているQuadro K600 の compute capability がちょうど3.0であり、いっそのことソースファイルのビルドから始めた方がよいかなと考え、軽い気持ちでCOLMAPのビルドを行うこととした。これは、間違いの始まりかな??

 ここでは、COLMAPのビルドに関する試行錯誤を備忘録として書いておく。

2.COLMAPのサイトに指示にしたがって

 COLMAPのサイトには、Windows環境でソースからビルドを行うには、以下を実施するとの記載があった。

git clone https://github.com/microsoft/vcpkg          (1)
cd vcpkg                                                                                  (2)
.\bootstrap-vcpkg.bat                                                               (3)
.\vcpkg install colmap[cuda,tests]:x64-windows                         (4)

(1) ネットの情報によると、これは、vcpkgというWindows用のC++パッケージマネージャーをGitHubからダウンロードすることらしい。そもそもGitHubなるもののお世話になったことがないので、Git for Windows をインストールしてgit cloneというコマンドを使えるようにする必要があった。今となっては記憶が定かではないか、おそらくこのサイトあたりを見てgit clone コマンドを使えるようにしたと思う。それ程時間はかからずダウンロードは終わる。

(2) (1)でgit clone コマンドを実行したフォルダ内に vcpkg というフォルダができるので、そのフォルダにカレントディレクトリを移すだけである。

(3) カレントディレクトリ内にある bootstrap-vcpkg.bat というバッチファイルを実行する。 これもすぐに完了する。

(4) このコマンドを実行したところ、多くのファイルのダウンロード、ビルドが延々と続き最後はPCがフリーズしてしまった。

 

3.やり直し、やり直し、やり直し

 どこが悪いのかさっぱりわからなかったが、関係するファイルをすべて削除し、もう一度2.の(1)からやり直す。(3)までは問題ない。(4)を実行し黒いコマンド窓を眺めていると、

C:\vcpkg>vcpkg install colmap[cuda,tests]:x64-windows
Computing installation plan...
A suitable version of cmake was not found (required v3.22.2). Downloading portable cmake v3.22.2...
Downloading cmake...
  https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-windows-i386.zip -> C:\vcpkg\downloads\cmake-3.22.2-windows-i386.zip
Extracting cmake...
The following packages will be built and installed:
  * assimp[core]:x64-windows -> 5.0.1#5
 (以下延々とビルドするプログラムのリストが続く)

というような表示。どうも164個のプログラムをダウンロード、ビルドする必要があるようだ。それで前回あんなに時間がかかってしまったのだ。

 覚悟をきめてコマンド窓を眺めていると125/164番目のプログラムが2時間たっても終わらない。それをCtrl+Cで強制中断すると残りのプログラムのビルドが始まり、164/164番目のプログラムで

Installing 164/164 colmap:x64-windows...
Building colmap[core,cuda,tests]:x64-windows...
-- Downloading https://github.com/colmap/colmap/archive/29a1e3642a3b00734a52b21e597ea4d576485fe6.tar.gz -> colmap-colmap-29a1e3642a3b00734a52b21e597ea4d576485fe6.tar.gz...
-- Extracting source C:/vcpkg/downloads/colmap-colmap-29a1e3642a3b00734a52b21e597ea4d576485fe6.tar.gz
-- Applying patch fix-dependencies.patch
-- Using source at C:/vcpkg/buildtrees/colmap/src/d576485fe6-7dd36362d1.clean
-- Configuring x64-windows-dbg
-- Configuring x64-windows-rel
-- Building x64-windows-dbg
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:158 (message):
    Command failed: C:/vcpkg/downloads/tools/cmake-3.22.2-windows/cmake-3.22.2-windows-i386/bin/cmake.exe --build . --config Debug --target install -- -v -j9
    Working Directory: C:/vcpkg/buildtrees/colmap/x64-windows-dbg
    See logs for more information:
      C:\vcpkg\buildtrees\colmap\install-x64-windows-dbg-out.log

 どうも164番目でようやくCOLMAPのビルドを行っているようだ。125番目のプログラムを強制中断しているので、当然ながらエラーメッセージが出ている。もう一度 (4) のコマンドを実行するとなぜかCOLMAPのビルドだけが行われ(125番目のプログラムはどうなった?)

C:\vcpkg>vcpkg install colmap[cuda,tests]:x64-windows
Computing installation plan...
The following packages will be built and installed:
    colmap[core,cuda,tests]:x64-windows -> 2022-03-14
Detecting compiler hash for triplet x64-windows...
Restored 0 packages from C:\Users\kanri\AppData\Local\vcpkg\archives in 9.691 ms. Use --debug to see more details.
Installing 1/1 colmap:x64-windows...
Building colmap[core,cuda,tests]:x64-windows...
-- Using cached colmap-colmap-29a1e3642a3b00734a52b21e597ea4d576485fe6.tar.gz.
-- Cleaning sources at C:/vcpkg/buildtrees/colmap/src/d576485fe6-7dd36362d1.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source C:/vcpkg/downloads/colmap-colmap-29a1e3642a3b00734a52b21e597ea4d576485fe6.tar.gz
-- Applying patch fix-dependencies.patch
-- Using source at C:/vcpkg/buildtrees/colmap/src/d576485fe6-7dd36362d1.clean
-- Configuring x64-windows-dbg
-- Configuring x64-windows-rel
-- Building x64-windows-dbg
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:158 (message):
    Command failed: C:/vcpkg/downloads/tools/cmake-3.22.2-windows/cmake-3.22.2-windows-i386/bin/cmake.exe --build . --config Debug --target install -- -v -j9
    Working Directory: C:/vcpkg/buildtrees/colmap/x64-windows-dbg
    See logs for more information:
      C:\vcpkg\buildtrees\colmap\install-x64-windows-dbg-out.log
  (中略)
You can submit a new issue at:
    https://github.com/microsoft/vcpkg/issues/new?template=report-package-build-failure.md&title=[colmap]+Build+error
Include '[colmap] Build error' in your bug report title, the following version information in your bug description, and attach any relevant failure logs from above.
    vcpkg-tool version: 2022-05-05-67e17c1782801cf481be9ac0b3765dff3e4bdeb8
    vcpkg-scripts version: c40e73f7e 2022-05-24 (8 hours ago)

の表示。どうも

CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:158 (message):
    Command failed: C:/vcpkg/downloads/tools/cmake-3.22.2-windows/cmake-3.22.2-windows-i386/bin/cmake.exe --build . --config Debug --target install -- -v -j9

というところが怪しい。そこで、メッセージの最後の段にある忠告に従い '[colmap] Build error' というレポートをGitHubに投稿することとした。

 その前に悪あがきとして、COLMAPのインストールに関する日本語のサイトをまねて、関連のファイルを全部削除した上で以下のコマンドを実施。

git clone https://github.com/microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat
vcpkg integrate install
vcpkg install yasm-tool:x86-windows
vcpkg install colmap[cuda]:x64-windows

 4番目のコマンドを実行すると、CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake"  というメッセージが出てきたので、言うとおりに環境変数を付け加える。

 5番目のコマンドはワーニングがいくつか出ただけで完了。

 6番目のコマンドを実行すると、167個のプログラムをインストールすることになった。5番目のyasmに関係するプログラムが3つ増えたらしい。すると、--recurse というオプションをつけろと言っているので、その通りに実行。すると、ほとんどのプログラムはあっという間に終わり、133番目まで来た。141に30分かかった。147~155はqt5というプログラム関係で結構時間がかかった。165番目がcolmapで、errorメッセージを出して終了した。

 別の日本語のサイトではqt5のインストールが必要と言っているので、その関係なのだろう。

 GitHubを検索すると、[Windows] Build error · Issue #1511 · colmap/colmap · GitHub」に関連の問題のやり取りがあったので、それに従って、glogフォルダにあるlogging.h の3行をコメントアウトした。その上で初心に帰り、COLMAPのサイトの記述どおりコマンドを実行。

 すると、あっという間に完了。直前のトライで時間がかかったqt5もすんなり完了。しかし、164番目のCOLMAPのところで同じエラーが出た。

 万事休して、GitHubに状況を投稿。すると、英語版のVisual Studioをインストールしてからもう一度報告しろ、という冷たい返事。CMake Errorはどうなったんだ?

 そんなことがあるのかなと疑いつつもネットを検索するとこのサイトに VisualStudio の英語言語パックをインストールすることで vcpkg がビルドできるようになったとの記載があった。

 そこで、Visual Studio2017の日本語版を削除し、英語版をインストールし、再度COLMAPのサイトにあるコマンドを実行。その前に関係のファイルを全部削除したか、.\vcpkg install colmap[cuda,tests]:x64-windows   だけ実行したのか今となっては定かではないが、おそらく関係ファイルは削除しなかったと思う。

 2時間10分ほどかけて、どうにかCOLMAPがビルドできた。

 このサイトに Visual Studioのソリューションファイルは "C:\Git\colmap\build\colmap\__build__\COLMAP.sln"に生成されていますので とあったが、それらしいものは見当たらない。 

 コマンド窓のメッセージにC:\Users\(ユーザー名)\AppData\Local\vcpkg\archives\33 にbinaryのキャッシュがあるというので、それを解凍し、c:\(フォルダ名)\tools に移した。実行形式のファイルに関連するフォルダC:\colmap にあるcolmap.batをコピーして、toolsフォルダ内のcolmapフォルダの名称をbinと変えたら、バッチファイルが問題なく動き、COLMAPが立ち上がった。やれやれ。でもまったくわかった気がしない。

 テストデータに対してビルドしたCOLMAPを適用してみる。すると、実行形式のCOLMAPと同じように途中でトラブルに見舞われ、結局3Dモデルはできずじまい。

 まとめると、COLMAPのビルドは行われたようで、実行形式のCOLMAPのフォルダにあるのと同じ.exeファイルができているが、状況は以前と変わらない。長い戦いになりそうである。

 

 


cudaを触ってみる

2022-05-13 09:59:46 | 3D

1. はじめに

 SfMをかじりはじめてから、Regard3DとBundlerを試してみた。実際にいろいろ撮影して3Dモデルを作成しようとするが、マッチングしないケースやマッチングしてもその後の画像の復元が不十分など、なかなかうまくいかないケースも多い。改めて、最初に読んだ SfMのソフトの比較記事 を読む COLMAPというソフトがよさそうである。別の記事 でもCOLMAPの結果が最もきれいであるとしていた。

 そこで、COLMAPを試すことにした。マッチングはやはりできたりできなかったりだったが、マッチングできた場合でもその後のdensificationではcuda errorで落ちてしまう。ネットの 記事 によると、densificationにはcudaを走らせるGPUが必要とあった。

 「cudaって何?」

 ネットで調べると、cudaはnVIDIA社のGPUを並列処理プロセッサとして利用するためのプログラミング環境 のようだ(例えば、https://co-crea.jp/wp-content/uploads/2016/07/File_2.pdf による)。ここで、かつてnVIDIA社のGPUであるQuadro K600を別の目的で自分のPCに増設したことを思い出した。その目的のためには、全く使用せず宝の持ち腐れになっていた。

 「cudaをインストールして、COLMAPでdensificaionができるようにしてみよう。」

 というわけでcudaを触ってみることにした。この記事はその時の試行錯誤のメモです。

 

2. cudaのインストール:失敗編

 ネットに良い記事(https://www.kkaneko.jp/tools/win/cuda.html、以下[K]とする)があったので、それを踏襲してインストールを試みる。おおよその順序は以下のとおり。

 

 (1)Visual Studioのインストール

 (2)NVIDIAドライバーのインストール

 (3)NVIDIAツールキットのインストール

 (4)NVIDIA cuDNNのインストール

 (5)nvccの実行

 (6)NVIDIA cudaサンプルプログラムのビルドと実行

 

2-1 Visual Studioのインストール

 [K]にしたがって Visual Studio Community 2022 をインストールする。時間はかかるが問題なくインストールが行えた。

 

2-2 NVIDIAドライバーのインストール

 NVIDIAドライバダウンロードのページにいき製品に適したドライバーを特定し、ダウンロード、インストールした。PCに搭載されているGPUは Quadro K600 だったので

 

  製品のタイプ:NVIDIA RTX / Quadro

  製品シリーズ:Quadro Series

  製品ファミリー:Quadro K600

  オペレーティングシステム:Windows 10 64-bit

 

とした。

 

2-3 NVIDIAツールキットのインストール

 実施時点(2022年5月)で最新のversion11.6.2をダウンロードし、インストールする。これも無事に終了。その後、環境変数 PATH, CUDA_PATH, CUDA_PATH_V11_6 が正しく設定されていることを確認。

 

2-4 NVIDIA cuDNNのインストール

 これが必要かどうか分からなかったが、[K]にあるとおりにダウンロードしインストール。

 

2-5 nvccの実行

 nvccは、"NVIDIA CUDA Compiler"の略でC/C++言語をもとに独自の拡張を行った専用言語のコンパイラらしい。

 [K]にあるとおり、https://developer.nvidia.com/blog/easy-introduction-cuda-c-and-c/ にあるコードをテキストエディタで編集しhello.cuとして保存した。nvccでのsourceファイルは、cuという拡張子とするらしい。

 Vusual Studioをインストールすると一緒にインストールされる x64 Native Tools コマンドプロンプト で、nvccによりビルドし、作成されたexeファイルを実行する。そうすると、 「Max error: 2.000000」と表示された。[K]によると、「Max error: 0.000000」と表示されるとOKとのことであったが、大した違いでないと考え先に進んだ。結果的にはこれが大きな間違いだった。

 

2-6  NVIDIA cudaサンプルプログラムのビルドと実行

 cuda をインストールすると C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.6\cuda-samples にcudaのサンプルプログラムが大量に保存される。このフォルダにvusual studio 2022のソリューションファイル Samples_VS2022.sln があるので、これをダブルクリックして立ち上げる。[K]にしたがい、「ソリューションの再ターゲット」、「ソリューションのビルド」を実行。サンプルプログラムが186あるので、ビルドには相当時間がかかった。出てきた結果は、警告の山と19個のエラー。
 186のサンプルプログラムのうち、exeファイルができているものが相当数ある。そのうちの一つがnbody。多体問題のシミュレーションのようだ。そこで改めてnbody単独でビルドすると問題なくビルドできたので、exeを実行してみる。すると、次のメッセージが出た。

 

CUDA error at C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.6\cuda- samples\Samples\5_Domain_Specific\nbody\bodysystemcuda_impl.h:302 code=13(cudaErrorInvalidSymbol) "setSofteningSquared(softeningSq)" 

 

 そこでcode13に関する情報をネットで調べると、https://www.knime.com/deeplearning4j に以下の記載があった。

 

 どうもGPUである Quadro K600 と cuda のバージョン(ここでは11.6)が合わないらしい。そこで、https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ をみると、NVIDIAのGPUのアーキテクチャと対応するcudaのバージョンの記載があった。Qudro K600のアーキテクチャはなんだろうと思い、近くにあったケースをみると「NVIDIA Kepler アーキテクチャにより、・・・」と書いてあった。上のサイトには、Keplerはcuda5からcuda10まで対応と書いてある。それじゃ、cuda10をインストールしてみるか。

 

3. cudaのインストール:成功(したと思われる)編

 cuda10についても[K]と同じ方によるインストールのガイダンス

(https://www.kkaneko.jp/tools/win/cuda10.html、以下[K2]とする)があった。これにしたがいインストールを行うことにした。 

 手始めにvisual studio 2022を削除して、2017をインストールする。これは、cuda10が対応するvisual studioのバージョンは2017までであることによる。後は基本的にcuda11のときと同じでインストールは順調に進んだ。

 「2-5 nvccの実行」にあげたサンプルを実行すると、めでたく「Max error: 0.000000」と表示された。

 そこで最終段階のサンプルプログラムのビルドを行った。cuda10では、サンプルプログラムの数が174に減っている。今回は、174のうち4つのサンプルのビルドに失敗したが、エラーはでなかった。

 そこで、いくつかのサンプルを実施してみた。うまくいくものと、いかないものがあった。下はoceanFFTの実施時のキャプチャ画面、実際はダイナミックな動きに迫力がある。とにかく、サンプルプログラムがいくつも動いたので良しとしよう。

 

4. cudaのコーディング

 サンプルプログラムが動くだけでは、あまりよくわかった気にならないので、実際のコーディングがどうなっているのか知りたくなった。丁度 良い資料 があったので、これにそってコーディングのマネゴトをしてみた。単純に行列の掛け算を行うというプログラムである。必要なコードは全て書いてあったので、visual studio 2017で単に編集しただけである。

 CPUだけ使ったcのプログラムとcudaでのプログラムの2種類のコードが示されているので計算速度の差が実感できるようになっている。

・通常のCでのコーディング

 visual studioを立ち上げ、新規プロジェクト(ここではConsoleApplication1とした)でコンソールを選びコードを書くだけ。ビルドすれば、Debugフォルダーに.exeファイルができる。これをコマンドプロンプトから実行できる。 

  C:\Users\ユーザー名\source\repos\ConsoleApplication1 に.slnファイルができるので、コードを直したければこれを開けばよい。 

・cudaでのコーディング

 visual studioを立ち上げてから、ファイル>新規作成>プロジェクト でプロジェクトを作成する。このとき現れるウィンドウの左側に並んだ「インストール済み」の中から、NVIDIAを選ぶ。すると kernel.cu ができるので、必要なら後で適当に名前を変える。 

 __global__ 関数がcudaプログラムの要のようで、これはmain関数の前におかなければならない。Cの場合、mainで呼び出す関数はその前に定義されていなければならないようだ。Cについてはほとんど何も知らないのでかなりいい加減。

 2つのプログラムを比較すると、明らかにcudaを利用したプログラムの計算速度の方が早かった。参考にした資料には、計算時間が表示されていたが、そのコードが示されていなかったので、計算速度を体感しただけである。

 一応、cudaが動くようになったので、次は、COLMAPのdesificationがうまくいくかどうかやってみよう。


MeshLabで出力した3DデータをBlenderで着色する

2022-04-18 10:40:54 | 3D

 2022年4月15日に3D モデルをSketchfabで公開した記事を書きました。もともとこの3Dモデルは、フリーのSfMソフトRegard3Dで作成した点群データを、3Dデータ編集ソフトMeshLabでメッシュデータとしたものを、Blenderで加工し、.ply形式でエクスポートし、Sketchfabにアップしたものです。

 MeshLabで作成した.ply形式のメッシュデータをSketchfabにアップするとなぜか色が消えてグレーの3Dモデルとなりました。Blenderに読み込んでもグレーのままです。そこでBlenderを使ってオブジェクトに着色しました。この記事は、その際の手順を忘れないようにメモしたものです。なお、この作業は、ほぼ、この記事に沿って行いました。

 

1. 作業の流れ

(1) Blenderへの読み込み

(2) 位置、回転とスケールの調整

(3) 着色

(4) Sketchfabへアップロード

 

2.Blenderへの読み込み

 記事「SfM事始め」の5.(1)に記載したとおり、ファイル>インポート によりMeshLabで作成したメッシュデータを読みこめばよい。

 

3.位置、回転とスケールの調整

 Blender(3.01)に読み込んだままの状態では、とんでもない位置に、とんでもない傾きで、とんでもないスケールで表示される可能性がある。

(1) 位置

 オブジェクトの中心が原点付近に来るように、オブジェクトを選択したあと 「右クリック>原点を設定>ジオメトリを原点に移動」とする。

(2) 回転

 Blender画面の左側の縦に並んだアイコンから「回転」を選択する。次に、オブジェクトが見やすい位置に来るように赤、緑、青の回転軸を動かす。回転が決まったら、「オブジェクトモード」になっていることを確認し、「オブジェクト>適用>回転」とする。そのあと、左側のアイコンを「ボックス選択」に戻す。

(3) スケール

 Blender画面の右側に並んだアイコンから「オブジェクトプロパティ」を選択すると図のような画面が現れる。ここで、スケールを例えば1/4にしたい場合はX,Y,Zの項にそれぞれ0.25を入力する。

 

3.着色

 次に右上4つの円状のアイコンの右側のプルダウンメニューを開き、「頂点」を選択する(下図を参照)。するとオブジェクトが着色される。

 次に、以下の①~⑤を行う(下図参照)。

① Blender画面の右側に並んだアイコンから「マテリアルプロパティ」を選択する。現れた画面で、「新規」ボタンをクリックする。

② 現われた画面で、サーフェスの項がプリンシプルBSDFとなっている。次に、ベースカラーの項の黄色の◯をクリックし現れた画面で属性を選択する。

③ 現れた画面の名前の項に「Col」と入力する。

④ 縦に並んだアイコンから、「オブジェクトデータプロパティ」を選択し、現れた画面で「頂点カラー」の項に③で入力した「Col」が登録されていることを確認する。これで、オブジェクトに着色された色がベースカラーとなる。

⑤ 次に、ファイル>エクスポートにより、着色されたオブジェクトを.ply形式で保存する。また、.blend形式のプロジェクトファイルも保存しておくと良い。

4.Sketchfabへアップロード

 3⑤でエクスポートした.plyファイルをSketchfabにアップロードし、オブジェクトが着色されていることを確認し、よければ公開する。なお、この.plyファイルをBlenderでインポートすると着色はされておらず相変わらずグレーで表示される。.blend形式のプロジェクトファイルでは着色されている。この辺りがよくわからない。