[m1 mac] openpose.bin 생성하기

johyonghoon·2023년 3월 17일
0

HowsFit

목록 보기
1/1
post-thumbnail

팀프로젝트에서 활용하는 HR-VITON을 사용하기 위해서는
1. Openpose
2. Human Parse(CIHP_PGN)
3. Densepose
4. Cloth Mask(Carvekit)
5. Parse Agnostic
5개의 전처리 과정이 필요하다.

그 중 openpose를 ubuntu(Linux)서버에서 돌리기 위해서는 결국 mac 환경에서 실행이 가능해야 한다.
Windows에서 실행하던 기존의 세팅을 docker에 올렸을 때 어차피 되지 않았기 때문에 이 작업을 수행했다.

% git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git

git으로 openpose를 내려받고 Readme를 읽어보면 openpose를 빌드하여 openpose.bin을 생성해야 한다.
따라서, 이 글에서는 openpose를 빌드하여 openpose.bin을 생성하는 과정을 담는다.

% cd openpose 
openpose % mkdir build 
openpose % cd build 
build % cmake ..
build % make -j`nproc`

빌드를 위한 과정은 위와 같다. 당연하게도 cmake와 make를 설치해주지 않으면 실행할 수 없다.

make는 소프트웨어 개발을 위해 유닉스 계열 운영 체제에서 주로 사용되는 프로그램 빌드 도구이다.(출처 : 위키)
cmake는 빌드 과정 자체를 수행하지는 않고 각 운영체제에 맞는 make 파일을 생성 및 관리하는 도구이다.(출처 : 위키)

따라서 cmake와 make를 설치해주어야 한다.
이 블로그에서는 다루진 않았지만 mac에서는 패키지 관리자인 homebrew를 설치해두면 편하다.

% brew install cmake

Make 설치를 위해 Xcode Command Line Tools 를 설치한다.
아래 명령을 통해 설치 가능하다.

% xcode-select --install
% xcode-select --version

설치 정보까지 코드로 확인할 수 있다.
cmake와 make를 설치하고 나서 위 빌드 과정을 이어나갔다.

build % .. cmake

이번에는 Protobuf가 없다고 한다. 이것도 설치해주자.

% brew install protobuf

다시 cmake 시도

build % .. cmake

또 안된다. 독하다 독해 ㅋㅋㅋ

이번에는 찾아보니 opencv와 glog 패키지가 없어서 발생하는 문제라고 한다.
glog는 아래 코드를 통해 설치할 수 있었지만
opencv는 근본적으로 opencv의 OpenCVConfig.cmake 파일이 필요했다.

brew install glog
brew install opencv

다른 설치 방법으로 opencv를 설치하게 되면 쉽게 찾을 수 있는지는 모르겠지만 찾기 어려웠다.
그래서 맥북에서 파일 검색으로 OpenCVConfig.cmake를 찾았다.
where OpenCVConfig.cmake 명령으로는 찾을 수 없었고 finder에서 검색 기능으로 찾았다.
그 파일을 복사하여 cmake.lib에 넣어주었다.
이 과정에서 삽질을 많이 했다...

build % .. cmake

각 모델을 다운받기 시작했다!! 꽤 오랜 시간 다운로드를 진행하니 기다려주자 :)
드디어 빌드파일 생성 성공!! make로 빌드해보자

build % make -j`nproc`

새로운 인고의 시작...

SetTotalBytesLimit가 1개의 인자만 받아야 하는데 뒤의 536870912를 받아서 나는 에러였다.
반신반의하고 뒤의 코드를 지워주니 이상하게 돌아갔다. 이런식으로 수정해나가도 되는건가...
아마 내 생각에는 그래서 Readme에서 mac의 build 부분이 되지 않는다고 나온 것 같았다.
아무튼 이 코드를 수정해주고 나니 다른 에러가 나타나기 시작했다. 이게 진짜 찐...

구글링해서 구세주를 영접했다.

https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/1942

위 방법대로 openpose/CMakeLists.txt 파일의 868번 코드를 수정해주었다.

if (APPLE)
  # include_directories("/usr/local/opt/openblas/include")
  include_directories("/opt/homebrew/opt/openblas/include")
endif (APPLE)

미친... 빌드 된다.

위에는 암튼 모르겠고~ 빌드만 되면 그만이야~

root에 코드를 만들어서 실행해주었다. 테스트는 openpose repository에서 제공하는 이미지를 활용했다.

장장 4시간 반만에 성공했다... 고생했다 내 자신...

자문 / 참고자료

자문 : chatgpt
https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/1942

0개의 댓글