3DDFA 작동 절차 참고

8567 단어 메모
htps : // 기주 b. 이 m/cぇ아r즈 sk/3dd후. 기 t
안면 3D 솔루션, 3DDFA 동작 메모

NVIDIA로 환경 구축



사전에 miniconda로 환경을 구축하십시오.
conda create -n 3ddfa python=3.6
conda activate 3ddfa
sudo apt-get install -y --fix-missing \
    build-essential \
    cmake \
    gfortran \
    git \
    wget \
    curl \
    libjpeg-dev \
    liblapack-dev \
    libswscale-dev \
    pkg-config \
    python3-numpy \
    zip \
    libboost-dev \
    libboost-all-dev \
    libsm6 \
    libxext6 \
    libfontconfig1 \
    libxrender1 \

Repository clone 및 cython Build
git clone https://github.com/cleardusk/3DDFA.git
cd ./3DDFA
pip install -r requirements.txt 

본래는 이것으로 좋을 것입니다만 requirements.txt 에 지정되어 있는 dlib version이라고 빌드 에러가 발생해 먼저 추천하지 않았기 때문에

pip install dilb에서 최신 버전을 넣고 테스트했습니다.

추론 테스트


python ./main.py -f samples/emma_input.jpg --bbox_init=two --dlib_bbox=false




추론 속도 테스트


$ python ./speed_cpu.py 

Inference speed: 24.69±4.11 ms

위의 스크립트를 사용하여 CPU에서 추론 속도를 확인할 수 있습니다.

학습



학습에서 벤치마크까지


데이터
다운로드 링크
Description


train.configs

BaiduYun or Google 드라이브 , 217M
The directory contraining 3DMM params and filelists of training dataset

train_aug_120x120.zip

BaiduYun or Google 드라이브 , 2.15G
The cropped images of augmentation training dataset

test.data.zip

BaiduYun or Google 드라이브 , 151M
The cropped images of AFLW and ALFW-2000-3D testset


train.configs
train_aug_120x120.zip
test.data.zip

다운로드하고 압축을 풉니 다.

test.data.zip은 ~/3DDFA 바로 아래에 설정, train.configs는 이미 있는 train.configs를 덮어쓰는 형태로 세트, train_aug_120x120도
traing.configs에 저장하는 형태로 실시했습니다.

~/3DDFA/training 안에 있는 ./train_vdc.sh
#!/usr/bin/env bash

LOG_ALIAS=$1
LOG_DIR="logs"
mkdir -p ${LOG_DIR}

LOG_FILE="${LOG_DIR}/${LOG_ALIAS}_`date +'%Y-%m-%d_%H:%M.%S'`.log"
#echo $LOG_FILE

./train.py --arch="mobilenet_1" \
    --start-epoch=1 \
    --loss=vdc \
    --snapshot="snapshot/phase1_vdc" \
    --param-fp-train='../train.configs/param_all_norm.pkl' \
    --param-fp-val='../train.configs/param_all_norm_val.pkl' \
    --warmup=-1 \
    --opt-style=resample \
    --resample-num=132 \
    --batch-size=512 \
    --base-lr=0.00001 \
    --epochs=50 \
    --milestones=30,40 \
    --print-freq=50 \
    --devices-id=0 \
    --workers=8 \
    --filelists-train="../train.configs/train_aug_120x120.list.train" \
    --filelists-val="../train.configs/train_aug_120x120.list.val" \
    --root="/home/rocm/3DDFA/train.configs/train_aug_120x120" \
    --log-file="${LOG_FILE}"
--epochs=50 에서 GTX1080Ti에서 6시간 정도의 학습 행정이었습니다
cd ../
 python benchmark.py -c   ./training/snapshot/phase1_vdc_checkpoint_epoch_50.pth.tar


에서 학습 한 모델의 벤치 마크가 가능합니다.
$ python benchmark.py -c   ./training/snapshot/phase1_vdc_checkpoint_epoch_50.pth.tar
Extracting params take  1.483s
[ 0, 30]    Mean: 3.973, Std: 1.807
[30, 60]    Mean: 5.008, Std: 2.656
[60, 90]    Mean: 6.459, Std: 3.545
[ 0, 90]    Mean: 5.147, Std: 1.019
Extracting params take  7.443s
[ 0, 30]    Mean: 5.696, Std: 4.991
[30, 60]    Mean: 7.062, Std: 5.830
[60, 90]    Mean: 7.853, Std: 7.814
[ 0, 90]    Mean: 6.870, Std: 0.891

학습 한 모델에서 실제로 움직여보십시오.



main.py의 36행
  def main(args):
      # 1. load pre-tained model
      checkpoint_fp = 'models/phase1_wpdc_vdc.pth.tar'
      arch = 'mobilenet_1'           

에서 모델의 PATH를 지정할 수 있습니다.

/training/snapshot에 체크 포인트가 출력되기 때문에 이것을 사용합니다.
training/snapshot/phase1_vdc_checkpoint_epoch_50.pth.tar
python ./premain.py -f samples/emma_input.jpg --bbox_init=two --dlib_bbox=false



epoch50 6 시간의 학습 작업으로이 정도의 랜드 마크 처리가 가능했습니다.

ROCm-Docker의 테스트 정보



AMD의 GPU에서도 동작을 확인하고 싶었기 때문에 Docker를 세워 환경을 구축했습니다.

ROCm-Pytorch-Docker의 환경 구축이 어느새 쉬워졌습니다.

추기 (2019/10/01) python 관련으로 신경이 쓰이는 일이 있었다
 import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'

이러한 이유로 pip3이 제대로 작동하지 않는다는 사례가 발생했으며 현재 0에서 빌드하지 않으면 제대로 사용할 수 없다는 사건이 발생했습니다.
pip 업그레이드 등을 시도했지만 해결할 수 없었습니다.

좋은 웹페이지 즐겨찾기