배경제거 이전 포스팅 다음 단계인 2d 이미지에서 3d 객체(메쉬)로 만드는 작업에 대해 이야기 해보려고 한다.
모델을 프로젝트에 적용한 과정과 Input 사진에 따른 모델링 결과물 퀄리티 위주로!
우선, 자료조사 당시 콜맵 등 다양한 모델들이 있었다. 그 중에서 PIFuHD를 선택하게 된 이유는 다음과 같다.
PIFuHD는 사진에서 인물의 포즈를 탐지해 손,발 등 keypoints를 생성하고, 이를 바탕으로 3D 객체를 만들어 더 사람에 대해 특화된 모델이다. 따라서, 인물을 3D 모델링 하려는 우리에게 적절했다.
https://shunsukesaito.github.io/PIFuHD/
로컬에서 첫 성공적인 결과물. 상당히 앞면과 뒷면도 잘 메쉬가 생성된 것 같다. (누군지 맞혀보세요! 원본 사진은 아래에서 확인할 수 있다.)
하지만, 우리 프로젝트의 서브모듈로 적용하는데에 몇가지 어려운 점이 있었다.(->fork)
우선, 이 프로젝트는 2020년도(지금으로부터 약 4-5년 전)에 나와서 빠르게 라이브러리 등 버전이 업데이트되는 파이썬 환경 상 모델이 돌아가는데 몇가지 오류들이 있었다. 그래서, 처음 프로젝트 내 로컬에서 모델링 결과물이 나왔을 때 짜릿했다. (그러나, 프로젝트에 실제로 적용된 모델은 다음편에서 다시 소개할 예정이다)
다음은 현재 문제상황들을 토대로 기존 코드에서 변경한 부분들이다.
1. 실행은 성공했지만, 모델링 파일이 제공안되는 문제(Not .obj file)
sdf.py
np.bool -> bool 로
초반에, 전체적인 코드 진행 흐름을 파악하기 위해 제공된 코랩을 실행했는데 오류 + obj 파일 제공 안됨. 의 문제가 있었다. 그래서 관련 문제를 열심히 구글링으로 찾아서 어떤 외국분의 도움으로 해결할 수 있었다.
2. Input 사진 비율이 512로 자동 조정되어 모델링 결과가 이상하게 나온 경우.(
)
위와 비슷하게 코랩에서는, np.int -> int로 변경해주어야 한다. 이도 영문 사이트들을 읽어가면서 찾은 내용이다.
로컬에서는, lightweight-pose-estimation 모델를 클론받아 keypoints 를 추출하는 과정의 코드를 새로 추가했다.
3. cuda, pytorch 버전 오류
requirement.txt 로 pytorch, gpu cuda 해당 라이브러리 버전을 다운받아 실행하면 오류가 난다. 따라서, 다음 문서를 참고하여 다운받으면 좋을 것 같다.
https://pytorch.org/get-started/locally/
4. 로컬 적용시 추천 사항.
.pt 파일이나 .sh 파일을 미리 코랩 다운을 받아서 프로젝트 폴더에 넣는 것이 좋다. 왜냐면 깃헙에 써있는 설명대로 하면 명령어 등등 실행이 안되어 번거로울 수 있기 때문이다.
다음은 어떤 이미지들이 input으로 들어가야 좋은 모델링 파일을 얻는 지 여러번 테스트를 해보며 얻은 결과다.
1. 신체 일부(ex: 상반신)가 나온 사진도 잘 모델링 될까?(Part of body)
-> 전신이 다 나온 사진이 모델링이 잘된다.
keypoint를 추출할 때 전신이 아니라면 정확한 손, 발의 위치를 알 수 없어 메쉬 생성 시 잘못된 keypoints 기반으로 생성되다 보니 그런 것이라 예상한다.
2. 임의로 Input 이미지를 512 사이즈로 조정한 경우?(512 size)
-> 잘 나오지 않는다.
앞서, 위 문제들 중 2번 문제에서 그럼 애초에 Input 사진을 512로 조정하여 모델링을 진행해보았다.
그러나, 임의로 비율이 조정된 사진이 보긴엔 그래도 나쁘진 않지만 keypoints 인식이 잘 되지 않아서 인지 모델링 결과가 좋지 못했다.
3. 신체의 일부가 가려진 경우(hidden object space)
-> 깊이(depth) 정보가 없어 해당 부분만 잘 모델링 되지 않는다.
핸드폰 부분만 모델링이 잘 이루어지지 않음.
V의 두께가 엄청나다...
사진 한장으로 메쉬가 생성되다 보니 손으로 브이(V)를 하던가 거울 셀카를 찍을 때 그 깊이에 대한 정보까지는 없다보니, 이런 아쉬운 부분이 있었다.
이와 관련한 연구가 있는 것 같아 추후에 살펴보고 싶다.
Beyond the Contact: Discovering Comprehensive Affordance for 3D Objects from Pre-trained 2D Diffusion Models ( In ECCV 2024 , Hanbyul Joo)
결론: 물체에 가려지지 않는 전신 위주일수록 메쉬 파일의 결과물이 좋다!
'캡스톤' 카테고리의 다른 글
[Backend] Springboot, FastAPI, Flask 비교, 후기, 추천 (3) | 2024.11.17 |
---|---|
[OpenCV] 사진/동영상 배경제거 작업 (6) | 2024.11.03 |