TRIPSの環境構築(Windows,View&Train)


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)