WindowsにTRIPSの環境構築(View&Train)を行う手順です。
<目次>
1.コンパイルの準備(メモリ、GPU、各種インストール)
2.コンパイルの作業(Anaconda仮想環境、TRIPSダウンロード、C++コンパイル)
3.Viewサンプルの準備(Sampleダウンロード、Sample設定)
4.Viewの起動(View起動コマンド)
5.COLMAPの準備(ダインロード、インストール)
6.COLMAPによるTrainデータの作成(SFMとMVSのモデル作成)
7.Trainの実行(COLMAP変換シェル、Train実行コマンド)
8.設定や操作の画像サンプル
1.コンパイルの準備(メモリ、GPU、各種インストール)
<条件(検証環境)>
メモリ:32GB
GPU:RTX2070 8GB
ソース管理:Gitを使用する
コンパイル:Anaconda仮想環境とVS2022を使用する
CUDA環境:CUDA 11.7+cuDNN_CUDA11.X
<メモリ>
RAM24GB以上
※COLMAPのStereo処理は、約16GBになる時がありました
※COLMAPのfusions処理は、約20GBになる時がありました
※Trainの実行は、一時的に14GBになる時がありました
<GPU>
Nvidia製RTX以降かつVRAM8GB以上
※Trainの実行は、VRAM16GB以上を推奨します
(VRAM8~12GBの場合、「GPUメモリの少ない場合」のパラメータが必要です)
<SSD>
空き40GB以上
※この想定は、1920×1080の画像が300枚の場合です
<gitのインストール>
https://git-scm.com/downloads
ダウンロード後、デフォルト設定でインストールする
<Anaconda3のインストール>
https://www.anaconda.com/download
ダウンロード後、デフォルト設定でインストールする
<VS2022 communityのインストール>
https://visualstudio.microsoft.com/ja/vs/community/
ダウンロード後、Exeを実行する
[デスクトップとモバイル]-[C++ によるデスクトップ開発 ]をインストールする
サインインは「後で行う」で進み、後はデフォルト設定で完了させる
<Nvidiaドライバの最新化>
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
必要に応じ、ドライバを最新化する
<CUDAのインストール>
https://developer.nvidia.com/cuda-toolkit-archive
CUDA11.7のダウンロード後、デフォルト設定でインストールする
※TRIPSサイトの手順は、CUDA11.8です
libtorchと整合性を合わせれば、CUDA11.7でもCUDA11.8でも構いません
※CUDA Tool Kitは、VS2022を先にインストールする必要があります
もしCUDAインストール済みの場合は、再インストールが必要になります
<cuDNNのセットアップ(ユーザー登録が必要)>
https://developer.nvidia.com/cudnn
CUDA11.Xをダウンロード後、下記のフォルダ配下の同一ファルダ内に追加コピーする
C:\Program\NVIDIA GPU Computing Toolkit\CUDA\v11.7
※この例は、CUDA11.7の場合です。CUDA11.8の場合、末尾がv11.8です
システムプロパティの環境変数(システム環境変数)にパスを登録する
CUDNN_PATH C:\Program\NVIDIA GPU Computing Toolkit\CUDA\v11.7
※この例は、CUDA11.7の場合です。CUDA11.8の場合、末尾がv11.8です
CUDN_PATHと同じ設定にしてください
2.コンパイルの作業(Anaconda仮想環境、TRIPSダウンロード、C++コンパイル)
<条件(検証環境)>
Anaconda仮想環境名:trips_gpu
pythonバージョン:python 3.10.6
cudaバージョン:11.7
TRIPSの作業ディレクトリ:E:\00_nvidia_work\Trips-3d
<仮想環境作成コマンド(Anaconda Prompt)>
Anaconda Promptを起動し、以降を実行する
e:
cd E:\00_nvidia_work\Trips-3d
conda create -y -n trips_gpu python=3.10.6
conda activate trips_gpu
conda install -y cmake=3.26.4
conda install -y -c intel mkl=2024.0.0
conda install -y -c intel mkl-static=2024.0.0
conda install openmp=8.0.1 -c conda-forge
<TRIPSのクローンとモジュール追加(Anaconda Prompt)>
以下を実行する
e:
cd E:\00_nvidia_work\Trips-3d
git clone https://github.com/lfranke/TRIPS.git
cd TRIPS/
git submodule update --init --recursive --jobs 8
<libtorchのダウンロードとコピー>
※この作業では、Anacondaプロンプトを使用しません※
「PyTorch Release 2.0.1 – Final RC is available」のサイトを開く
https://dev-discuss.pytorch.org/t/pytorch-release-2-0-1-final-rc-is-available/1224
次の表示個所を見つけ、CUDAバージョンに合うlibtorchをダウンロードする
Windows CUDA 11.7, 11.8
(Release version):
https:/download~/cu117/libtorch-win-shared-with-deps-latest.zip
https:/download~/cu118/libtorch-win-shared-with-deps-latest.zip
※CUDA11.7:cu117、CUDA11.8:cu118を選択してください
zipファイルのlibtorchフォルダを、次のフォルダ配下にコピーする
E:\00_nvidia_work\Trips-3d\TRIPS\External
libtorchフォルダの配置
TRIPS\
External\
libtorch\
bin\
cmake\
include\
lib\
…
saiga\
…
src\
…
<TRIPSのコンパイル(Anaconda Prompt)>
以下を実行する
conda activate trips_gpu
E:
cd E:\00_nvidia_work\Trips-3d\TRIPS\External
cmake -Bbuild -DCMAKE_CUDA_COMPILER="%CUDA_PATH%\bin\nvcc.exe" -DCMAKE_PREFIX_PATH=".\External\libtorch" -DCONDA_P_PATH="%CONDA_PREFIX%" -DCUDA_P_PATH="%CUDA_PATH%" -DCMAKE_BUILD_TYPE=RelWithDebInfo .
cmake --build build --config RelWithDebInfo -j
conda deactivate
3.Viewサンプルの準備(Sampleダウンロード、Sample設定)
<Viewサンプルのダウンロード>
https://zenodo.org/records/10664666
上記サイトから、「tt_scenes.zip、tt_checkpoints.zip」をダウンロードする
zipファイルの「tt_xxxxx、checkpoint_xxxxx」フォルダを、次のフォルダ配下にコピーする
E:\00_nvidia_work\Trips-3d\TRIPS\scenes
E:\00_nvidia_work\Trips-3d\TRIPS\experiments
Viewサンプルの配置
TRIPS\
build\
…
experiments\
checkpoint_train
checkpoint_playground
…
scenes\
tt_train\
tt_playground\
…
…
4.Viewの起動(View起動コマンド)
<Viewerの起動、tt_trainの場合(Anaconda Prompt)>
E:\00_nvidia_work\Trips-3d\TRIPS\build\bin\RelWithDebInfo\viewer.exe --scene_dir scenes/tt_train
5.COLMAPの準備(ダインロード、インストール)
<COLMAPのダウンロード>
https://github.com/colmap/colmap/releases
「COLMAP-3.9.1-windows-cuda.zip」をダウンロードする(202403時点)
<COLMAPのインストール>
COLMAPのインストールフォルダを作成する
E:¥COLMAP-CUDA
zipより、次のフォルダとファイルを、インストールフォルダへコピーする
binフォルダ
libフォルダ
COLMAP.bat
<COLMAP.batのセキュリティ許可>
COLMAP.batを右クリックし、セキュリティ「許可する」をチェックし、[適用]を押す
<Vocabulary Treesのダウンロード>
https://demuc.de/colmap/
「Vocabulary_tree_with_32K_visual_words.bin」をダウンロードし、次のフォルダに入れる
E:¥COLMAP-CUDA\bin
※これは、[Feature matching]で使用する
6.COLMAPによるTrainデータの作成(SFMとMVSのモデル作成)
<データフォルダの作成、train2の場合>
COLMAPのデータフォルダを作成する
E:¥COLMAP-CUDA\00_data\train2
<イメージデータの準備、train2の場合>
データフォルダに、imagesフォルダを作成する
E:¥COLMAP-CUDA\00_data\train2\images
画像データファイルを、imagesフォルダに配置する
画像フォルダの配置イメージ
train2
images
xx0001.jpg
xx0002.jpg
xx0003.jpg
…
画像サイズを長辺2000pixel以下にする
※縮小する場合、Exit情報を消さないツールを使用してください
(フリーソフトでは、「縮小革命」がExit情報を継承できます)
※もし2000pixel以上の場合、VRAM使用量が大きく増加します
<COLMAPのSFMモデル作成、train2の場合> [作業時間:約1時間(300枚:1920×1080)]
COLMAP.batをダブルクリックする
[File]-[New project]の「Database,Images」を登録し、[Save]を押す
Databaese:E:¥COLMAP-CUDA\00_data\train2\database.db
Images:E:¥COLMAP-CUDA\00_data\train2\images
[Exrtas]-[Set options for …]を押し、次の選択を入力する
・Data: [Video Frames](Video Frames:1920×1080の画像サイズのため)
・Quality: [Exreme](Exreme:最高品質)
※これで、Automatic reconstructionと同じ設定値が反映します
[Processing]-[Feature extraction]の次の箇所を変更し、[Extract]を押す
・Camera model [OPENCV](OPENCV:SIMPLE_RADIAL+補正値を設定する)
・☑Shared for all images (チェックを付ける:カメラ設定を一つにまとめる)
・max_image_size [2000](2000:解像度を下げてメモリエラーを回避する)
※処理後、[Feature extraction]のウィンドウを閉じる
※処理時間:約15分
[Processing]-[Feature matching]-[VocabTree]タブの次の個所を変更し、[Run]を押す
・num_images: [301](100⇒301へ変更:画像枚数にする)
・vocab_tree_path: [E:¥COLMAP-CUDA\bin\Vocabulary_tree_with_32K_visual_words.bin]
(SelectFileで選択する:ダウンロードしたVocabulary Treesを設定する)
※処理後、[Feature matching]のウィンドウを閉じる
※処理時間:約15分
[Reconstruction]-[Reconstruction options]を押し、次のタブ-設定値を変更する
・[Triangulation] min_angle[deg]: [0.01](1.50⇒0.01へ変更:遠くの背景まで点群の対象にする)
・[Filter] filter_min_tri_angle[deg]: [0.01](1.50⇒0.01へ変更:遠くの背景まで点群の対象にする)
※この設定で、少し遠い山などの点群が増えます(山などテクスチャが鮮明になります)
[Reconstruction]-[Start reconstruction]を押す
※この処理でSFMモデルが構築されます
※処理時間:約30分(モデルにより、大きく時間が変化します「tt_playground:約60分」)
SFMモデルのデータ保存のため、「sparse」フォルダを作成する
E:¥COLMAP-CUDA\00_data\train2\sparse
SFMモデルのデータ保存のため、Export modelを実行する(「sparse」フォルダを指定)
<COLMAPのMVSモデル作成、train2の場合> [作業時間:約2時間55分(300枚:1920×1080)]
MVSデータ保存のため、「dense」フォルダを作成する
E:¥COLMAP-CUDA\00_data\train2\dense
[Reconstruction]-[Dense reconstruction]を押す
右隅の[Select]を押し、次の「dense」フォルダを選択する
E:¥COLMAP-CUDA\00_data\train2\dense
[Options]を押し、[Stereo]タブと[Fusion]タブの次の箇所を変更する
・[Stereo] max_image_size [2000](2000:1920×1080のサイズに合わせる)
・[Stereo] min_triangulation_angle [0.01](1⇒0.01:遠くの背景まで点群の対象にする)
・[Stereo] filter_min_triangulation_angle [0.01](3⇒0.01:遠くの背景まで点群の対象にする)
・[Stereo] filter_geom_consistency_max_cost [3](1⇒3:フィルターをかけないため)
・[Fusion] max_image_size [700](700:Plyファイルサイズ調整のため、※目標150MB以下※)
・[Fusion] min num pixels [2](15⇒2:最小ピクセル数を減らし、点群の対象を増やすため)
※Fusion設定は、「min_num_pixels」を決めて「max_image_size」でPlyサイズを調整しました
※設定後、[Dense reconstruction options]を閉じる
[Undistortion]を押す
※画像一覧リストが表示されます
[Stereo]を押す
※Depthmap、Nomalmapが有効になります
※処理時間:約165分
[Fusion]を押す
※fused.ply、fused.ply.visが作成されます
※処理時間:約10分
処理後、[Dense reconstruction]のウィンドウを閉じる
7.Trainの実行(COLMAP変換シェル、Train実行コマンド)
<データフォルダの作成、tt_train2の場合>
trainの実行に必要なデータフォルダを作成する
E:\00_nvidia_work\Trips-3d\TRIPS\scenes\tt_train2
<win_colmap2adop.shのシェル作成、COLMAPのtrain2⇒tt_train2の場合>
各自環境に合わせ「INPUT_DIR=~、OUTPUT_DIR=~、~colmap2adop.exe」を変更してください
#!/bin/bash
INPUT_DIR=/E/00_nvidia_work/COLMAP-CUDA/00_data/train2
OUTPUT_DIR=/E/00_nvidia_work/Trips-3d/TRIPS/scenes/tt_train2
mkdir -p ${OUTPUT_DIR}/images/
cp ${INPUT_DIR}/images/* ${OUTPUT_DIR}/images/
/E/00_nvidia_work/Trips-3d/TRIPS/build/bin/RelWithDebInfo/colmap2adop.exe --sparse_dir ${INPUT_DIR}/sparse/ \
--image_dir ${OUTPUT_DIR}/images/ \
--point_cloud_file ${INPUT_DIR}/dense/fused.ply \
--output_path ${OUTPUT_DIR} \
--scale_intrinsics 1 \
--render_scale 1
<win_pointcloud.shのシェル作成、tt_train2の場合>
各自環境に合わせ「SCENE_DIR=~、~preprocess_pointcloud.exe」を変更してください
#!/bin/bash
SCENE_DIR=/E/00_nvidia_work/Trips-3d/TRIPS/scenes/tt_train2
/E/00_nvidia_work/Trips-3d/TRIPS/build/bin/RelWithDebInfo/preprocess_pointcloud.exe --scene_path ${SCENE_DIR} --point_factor 3
<train_normalnet_e600s150.iniの作成>
E:\00_nvidia_work\Trips-3d\TRIPS\configs\train_normalnet.iniを同一フォルダ内にコピーし、
ファイル名を「train_normalnet_e600s150.ini」にする
その後に「train_normalnet_e600s150.ini」の次の設定を変更する
num_epochs = 600
save_checkpoints_its = 150
num_epochs(学習回数)は、今回は変更しない
save_checkpoints_its(セーブ間隔)は、50⇒150に変更する
※変更理由は、saveに時間を要するため、セーブ間隔を広げて処理時間を短くするため
<win_colmap2adop.shのシェル実行、COLMAP⇒ADOPのデータ変換(Git Bash)>
Git Bashでシェルスクリプトを実行する
/E/00_nvidia_work/Trips-3d/TRIPS/win_colmap2adop.sh
※各自環境に合わせ、パス変更してください
※処理時間:約10分
<win_pointcloud.shのシェル実行、ADOP点群のデータ拡張(Git Bash)>
Git Bashでシェルスクリプトを実行する
/E/00_nvidia_work/Trips-3d/TRIPS/win_pointcloud.sh
※各自環境に合わせ、パス変更してください
※処理時間:約20分
<trainの実行、tt_train2の場合(Git Bash)>
①GPUがVRAM16GB以上の場合
Git Bashでコマンドを実行する
cd /E/00_nvidia_work/Trips-3d/TRIPS/
/E/00_nvidia_work/Trips-3d/TRIPS/build/bin/RelWithDebInfo/train.exe --config configs/train_normalnet_e600s150.ini --TrainParams.scene_names tt_train2 --TrainParams.name new_name_for_this_training
※各自環境に合わせ、パス変更してください
※この処理は、VRAM使用量が14GBとなり、Train1回を10分で完了できず停止させました(RTX2070 8GB)
②GPUがVRAM8GBと12GBの場合
Git Bashでコマンドを実行する
cd /E/00_nvidia_work/Trips-3d/TRIPS/
/E/00_nvidia_work/Trips-3d/TRIPS/build/bin/RelWithDebInfo/train.exe --config configs/train_normalnet_e600s150.ini --TrainParams.scene_names tt_train2 --TrainParams.name new_name_for_this_training --TrainParams.batch_size 1 --TrainParams.inner_batch_size 2 --TrainParams.train_crop_size 256
※各自環境に合わせ、パス変更してください
※この処理は、VRAM使用量が約8GBで収まり、150回:約1.5時間、600回:約7時間でした(RTX2070 8GB)
<View用checkpointの設定、tt_train2の場合>
experiments配下に、checkpoint_train2のフォルダを作成する
experimentsフォルダに作成された最新の[DATE]_[TIME]_new_name_for_this_trainingより、
Viewしたいtrain回数のフォルダ「epXXXX」と、3つの設定ファイル「params.ini、
test_indices_tt_train.txt、train_indices_tt_train.txt」を、checkpoint_train2配下にコピーする
View用トレーニングデータの配置
TRIPS\
…
experiments\
checkpoint_train2
ep0600 ←Viewしたいtrain回数のフォルダ(例えば、100回⇒ep0100)
params.ini
test_indices_tt_train.txt
train_indices_tt_train.txt
※checkpointは、experiments配下より自動選択されます
その選択順位は、Viewの左下に表示されるので確認してください
自動選択の対象外にするには、experiments以外にデータを移動してください
<トレーニングの追加パラメータ>
・「GPUメモリが少ない(8GB、12GB)」場合、次のパラメータが必要になる
–TrainParams.batch_size 1
–TrainParams.inner_batch_size 2
–TrainParams.train_crop_size 256
・「Train時の8番目削除を変更したい」場合、次のパラメータが必要になる
–TrainParams.train_factor 0.1
※10番目:0.1(1/10)、Defaultの8番目:0.125 (1/8)
・その他のパタメータは、サイトより確認してください
https://github.com/lfranke/TRIPS
8.設定や操作の画像サンプル
以下を「クリック」すると、画像サンプルを表示します。
1)COLMAP
01_Extras(VideoFrame-Extreme)
02_Processing
02_Processing(Feature_extraction)
02_Processing(Feature_matching)
03_Reconstruction
03_Reconstruction(Reconctruction_option_init)
03_Reconstruction(Reconctruction_option_Triangulation)
03_Reconstruction(Reconctruction_option_Filter)
04_Dense_reconstruction
04_Dense_reconstruction(Dense_reconstruction_option_streo)
04_Dense_reconstruction(Dense_reconstruction_option_fusion)
05_COLMAP_Fused_Ply_Image
2)TRIPS(Convert⇒Train)
01_win_colmap2adop.sh (Git Bash)
02_win_pointcloud.sh (Git Bash)
03_Train (Git Bash)
3)TRIPS(TrainData⇒View)
11_new_name_for_this_training
12_checkpoint_train2
13_Vewer (Anaconda prompt)