[일단 박죠] NVDIA의 GET3D를 활용한 아바타 자동 생성 #2

jeyong·2023년 7월 12일
0
post-thumbnail
post-custom-banner

1. 아바타를 자동 생성 해보자!

앞에 게시글에서 언급했던 것과 같이 깃허브에서 제공하는 코드는 ShapeNetCore에 대한 코드들만 제공해준다... 그래서 아바타를 자동으로 생성하기 위해서는 열심히 굴러야한다.. 열심히 굴러보자!
아래 링크는 GET3D의 논문의 링크이다.

https://nv-tlabs.github.io/GET3D/

GET3D에 대한 논문을 읽어보면 아바타에 대한 정보들을 알수있다.

사진과 같이 Renderpeople에 대한 데이터를 사용했다는 정보를 알 수 있다. (무려 500장! 이땐 500장의 의미를 정확히 파악하지 못하였다. 그래서 뒤에 엄청난 일이 일어난다..)
아래는 renderpeople의 링크이다.

https://renderpeople.com/

사진과 같이 해당 링크에 접속하여서 FREE Model에 대해서 다운로드 받고 해당 데이터에 대해서 이미지를 렌더링 하면 된다. 렌더링할 때 사소한 이슈가 발생하는데 GET3D에서 제공해준 렌더링 코드를 분석해보면 ShapeNetCore 데이터의 위치와 크기를 기반으로 카메라 각도를 설정하여주었기때문에 렌더링 된 이미지가 상반신만 어둡게 보이는 문제와 이상한 곳을 찍는 문제가 발생한다. 해당 문제를 해결하기위해서는 카메라의 각도와 빛의 각도를 조정해주면 된다.

사소한 이슈는 이것이고 큰 문제도 발생한다.

3D POSED PEOPLE 데이터의 경우 위에 사진과 같이 OBJ 파일을 제공해준다.

하지만 3D RIGGED PEOPLE 데이터의 경우 사진과 같이 OBJ 파일을 제공해주지 않는다. 현재 수행중인 과제는 유니티의 연동이 필수적이라 RIGGED 데이터를 이용하여야한다. 왜냐하면 모델에 대해서 행동을 적용하여야하는데 모델이 T 포즈가 아닌 다른 포즈를 취하고 있을 경우 행동을 적용할 수 없기 때문이다 (OTL...)
일단.. 해당 문제는 후에 해결하고 POSED PEOPLE 데이터를 이용하여 모델을 학습하고 모델이 생성해보기로 했다.

사진과 같이 렌더링 된 이미지를 이용하여 학습시키고 추출해내면 데이터가 뽑혀지는 것을 알 수 있다. 해당 데이터는 FREE Model 3장을 이용하여 학습하기도 하였고, 디버깅 용도로 수행해 본 것이라 학습도 조금 수행하여 제대로 된 데이터를 뽑지는 못하였다. 그래도 된 것 만으로도 기분 좋았다.

2. 발생하는 문제점

데이터의 부족

앞에서도 설명한 것과 같이 500장을 사용하였다. 하지만.. renderpeople에서 데이터를 500장을 구매한다면 엄청난 돈이 필요하다. (NVDIA는 부자인가?) 해당 문제를 해결하기 위해서는 FREE 데이터를 더 찾아보거나 데이터의 증강이 필요해보인다.

OBJ, MTL / FBX의 문제

앞에서 렌더링 된 이미지를 보았을 때 이상한 느낌이 들었을 것이다. 바로 renderpeople의 경우 텍스쳐가 없다는 것인데, 해당 문제는 renderpeople에서는 obj파일만 제공해주고 mtl파일을 제공해주지 않는다. 대신 FBX 파일을 제공해주고있다. FBX파일에는 텍스처 정보가 저장되어있어 FBX 파일을 이용하여 3D 모델을 확인할 경우 텍스쳐가 보인다.
또한, 앞에서 설명했다싶이 POSED MODEL의 경우 유니티에서 쓰일 수 없어 RIGGED MODEL을 이용하여한다. 하지만 RIGGED MODEL의 경우 OBJ 파일을 제공해주지않고 FBX 파일만을 제공해준다.
현재 GET3D에서 제공해주는 코드를 보면 OBJ 파일을 기반으로 렌더링 한다.

정리하자면 해결책이 두가지 있다.

1. FBX 파일을 이용하여 OBJ, MTL 파일을 뽑아낸다.

2. OBJ 파일을 기반으로 구현된 렌더링 코드를 FBX 기반으로 수정한다.

다음화에는 해당 문제들을 해결해보겠다..

profile
노를 젓다 보면 언젠가는 물이 들어오겠지.
post-custom-banner

0개의 댓글