지금까지는 전신의 아바타를 생성하는데 집중하였는데, 그렇게 만족스러운 결과를 뽑지 못하였다.
그래서 전략을 바꾸어서 얼굴만 생성하는데 집중해볼 것이다.
얼굴만 생성해주는 모델을 찾아보았는데 PanoHead를 발견하였다.
사진에서 볼 수 있듯이 단일 뷰 이미지만을 사용하여 360도에서 전체 머리의 이미지 합성을 가능하게 해준다.
PanoHead를 이용해서 사람과 같은 얼굴을 생성해보겠다.
깃허브에 환경 구축하는 방법이 잘 나와있어서 크게 어렵지 않았다. 해당 내용을 기술하겠다.
git clone https://github.com/SizheAn/PanoHead.git
cd PanoHead
conda env create -f environment.yml
conda activate panohead
사전 훈련된 모델 다운로드 링크
해당 링크에서 사전 훈련된 모델을 다운로드 받는다.
gen_samples.py 스크립트로 사전 훈련된 모델을 사용하여 이미지와 .mrc 파일 형식의 3D 모델을 생성한다.
python gen_samples.py --outdir=out --trunc=0.7 --shapes=true --seeds=0-3 --network models/[사전 훈련된 모델 파일명].pkl
위에서 설명했던 코드로 3D 모델을 생성할 경우 .mrc 파일로 생성하게 된다.
그래서 "--shape-format .ply" 옵션을 이용해서 .ply 파일로 내보내게 한다. .ply 파일이 더 생성된 파일을 확인하기 용이하기 떄문이다.
또한 더 좋은 해상도를 위해서 "--shape-res 1024" 옵션을 이용하여 해상도를 1024로 설정한다.
아래는 내가 사용한 코드이다.
seeds 옵션을 0-3 으로 주었기 때문에 4개의 모델을 생성해준 모습이다.
아래는 결과 사진이다.
해상도를 1024로 올려준 덕분에 좋은 결과를 뽑아내었다. 하지만 텍스쳐가 입혀져있지 않은 모습이다.
텍스쳐를 입혀주기 위해서 알아보았지만 현재 panoHead에서는 해당 기능을 제공해주지 않는 것 같다... 만약 해당 퀄리티에 텍스쳐까지 입혀주었다면, 직접 면접관과 닮은 데이터를 찾아서 학습을 해주고 추출해주는 과정까지 해보려고 했으나 텍스쳐를 입혀주지않기떄문에 또 여행을 떠나야할 것 같다.. ㅎㅎ
텍스쳐를 입혀주는 다른 모델도 찾아봐야겠다.