# 3DHPE 交接 [Google link](https://drive.google.com/file/d/14m81mbKCYENop1GPiNds6071MhyJTv31/view?usp=sharing) for downloading code && data ## ```bash |-- data | |-- 3dhp | | |-- Image_data | | | |-- mpi_inf_3dhp_test_set 3DHP數據集的測試集 總共6個人, 4個室內採集,2個室外採集 | | |-- read_files 讀取3dhp數據的repo,我們在lib/dataset/h36m/data_utils裡面使用到它 | |-- human3.6M | |-- evolved | | |-- S15678 使用我們augmentation方法之後 生成的數據會在這裡 | |-- cameras.npy human3.6 dataset的相機資訊 (resolution,focal length, principle point, distortion coefficient 等) | |-- threeDPose_test.npy human3.6 dataset的 3D GT train | |-- threeDPose_train.npy human3.6 dataset的 3D GT test | |-- twoDPose_HRN_test.npy human3.6 dataset的 2D testing pose from HRnet | |-- twoDPose_HRN_train.npy human3.6 dataset的 2D training pose from HRnet | |-- visual_evoh36m.py debug用 |-- libs | |-- dataset | | |-- h36m | | | |-- cameras.py 使用相機的相關函數(包括使用透視投影來獲取huamn3.6的 2D train/test GT) | | | |-- data_utils.py pose 數據的前處理,標準化等 | | | |-- pth_dataset.py 讀取到 pytorch的dataloader | |-- evolution | | |-- interpolation.py 我們的augmentation 都在這裡 | | |-- parameter.py augmentaion 使用到的一些參數(和 訓練模型的 參數是分開的) | |-- model | | |-- model.py motion transformer的架構 | |-- parser | | |-- parse.py 模型訓練用到的參數 | |-- skeleton | | |-- anglelimits.py aug使用到的關節角度極限,防止aug出無效的不真實的pose 以及 骨頭相關操作 | |-- trainer | | |-- trainer.py 訓練模型用的腳本 | |-- utils 額外輔助函數 | | |-- laplotter.py | | |-- utils.py | |-- visualization 用來可視化3d pose的函數 | | |-- viz.py |-- model pretrained model |-- resources | |-- constraints augmentation 使用的關節角度限制,已經提前定義好 | |-- bones.npy | |-- conditional_dis.npy | |-- jointAngleModel_v2.npy | |-- staticPose.npy | |-- template.npy | |-- testPose.npy |-- tools | |-- some_demo | | |-- pose_space_visualization 把 aug出來的pose的17個關節空間位置平均起來,可視化在3d 空間中 | | | |-- 3d_space_heatmap.py | | | |-- space_aug0.png | | | |-- space_aug1.png | | | |-- space_aug2.png | | |-- focal1.gif 修改相機的不同focal length會導致2D pose 的大小不一 | | |-- focal2.gif 修改相機的不同focal length會導致2D pose 的大小不一 | |-- generation_368988.npy 實驗中使用到的aug的動作 | |-- inter_2Dto3Dnet.py 一步式 訓練模型的總腳本,執行這個file即開始訓練模型 | |-- inter_evolve.py 一步式 做augmentation的總腳本,執行這個file即開始做 data augmentation | |-- job.sh 國網中心使用到的script,下方有說明怎麼用 | |-- model_inference.ipynb infer model ``` ```bash # check data loader cd libs/dataset/h36m/ open pth_dataset.py # check motion transformer cd libs/model/ open model.py # check training process cd libs/trainer open trainer.py # check training parameters cd libs/parser open parse.py # check augmentation script cd libs/evolution # aug parameters open parameter.py # aug process open interpolation.py ``` ## conda environment ```bash= # install conda env first conda create -n env_name python=3.6 pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 matplotlib scipy h5py -c pytorch conda activate env_name pip install tqdm seaborn opencv-python natsort transformers mathutils ``` ## Data augmentation ```bash= cd tools # set different F to generate data with different size # kfnum --> keyframe number # inter_step interpolation transition step python inter_evolve.py -generate True -F 0.00001 -kf_num 50 -inter_step 20 ``` ## Model training ```bash= cd tools # start training python inter_2Dto3Dnet.py -save_name demo -epochs 40 \ -lr 0.00008 -batch_size 4096 -train True -twoD_source "synthetic" \ -evolved_path generation_368988.npy # training with overfit flag for debugging python inter_2Dto3Dnet.py -save_name demo -epochs 40 \ -lr 0.00008 -batch_size 4096 -train True -twoD_source "synthetic" \ -evolved_path generation_368988.npy -overfit True ``` ## Model evaluation ```bash= cd tools # Mac user open model_inference.ipynb # Vscode in Win or Linux code model_inference.ipynb ``` ## 國網中心 新建一個 `job.sh` 文件內容如下 記得修改 `SBATCH -e` 指令,這樣訓練的log才不會覆蓋 ```bash= #!/bin/bash #SBATCH -A MST108312 #SBATCH -J pth #SBATCH -p gp4d #SBATCH -e gwzx_set/demo.txt #SBATCH -c 16 #SBATCH --gres=gpu:4 #SBATCH --mail-type=ALL #SBATCH --mail-user=q1765490893@gmail.com module purge module load miniconda3 module load nvidia/cuda/10.1 conda activate env_name srun python inter_2Dto3Dnet.py -save_name demo -epochs 40 -lr 0.00008 -batch_size 4096 -train True -twoD_source "synthetic" -evolved_path generation_368988.npy ``` 登錄國網中心, ```bash= sbatch job.sh ```