3DDFA 작동 절차 참고
8567 단어 메모
안면 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 업그레이드 등을 시도했지만 해결할 수 없었습니다.
Reference
이 문제에 관하여(3DDFA 작동 절차 참고), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/T_keigo/items/8981eb900c6e119688dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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 \
git clone https://github.com/cleardusk/3DDFA.git
cd ./3DDFA
pip install -r requirements.txt
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
학습에서 벤치마크까지
데이터
다운로드 링크
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 업그레이드 등을 시도했지만 해결할 수 없었습니다.
Reference
이 문제에 관하여(3DDFA 작동 절차 참고), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/T_keigo/items/8981eb900c6e119688dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def main(args):
# 1. load pre-tained model
checkpoint_fp = 'models/phase1_wpdc_vdc.pth.tar'
arch = 'mobilenet_1'
training/snapshot/phase1_vdc_checkpoint_epoch_50.pth.tar
python ./premain.py -f samples/emma_input.jpg --bbox_init=two --dlib_bbox=false
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 업그레이드 등을 시도했지만 해결할 수 없었습니다.
Reference
이 문제에 관하여(3DDFA 작동 절차 참고), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/T_keigo/items/8981eb900c6e119688dd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)