본문 바로가기

AI/OpenVINO

3-1. 3D Human Pose Estimation with OpenVINO

참조: https://docs.openvino.ai/2024/notebooks/3D-pose-estimation-with-output.html

 

Live 3D Human Pose Estimation with OpenVINO — OpenVINO™ documentation

Main Processing Function Run 3D pose estimation on the specified source. It could be either a webcam feed or a video file. def run_pose_estimation(source=0, flip=False, use_popup=False, skip_frames=0): """ 2D image as input, using OpenVINO as inference bac

docs.openvino.ai

 

첫 번째 예제는 웹캠으로 입력된 사람의 자세를 알아보는 것으로,

기존의 학습된 모델인 human-pose-estimation-3d-0001 Open Model Zoo 에서 받아서 사용할 것이다. 

 

앞에서 언급했던, OpenVINO의 목적을 다시 상기시켜보자면,

내 컴퓨터에서 학습시켜서 어떤 모델을 만들어내는 것이 아니고,

그렇게 만들어진 모델을 고가의 GPU가 없는 평범함 컴퓨터에서 AI를 구동시키기 위함이다. 

따라서, 적합한 모델은 이미 만들어져 있다고 가정하는 것이다.

 

먼저 이 예제를 실행시키기 위해서는 pythreejs를 설치한다.

(openvino_env) c:\Intel\openvino_2024\openvino_notebooks>pip install pythreejs

 

 

이제 jupyter notebook을 열어보자.

 

notebook의 위치는 C:\Intel\openvino_2024\openvino_notebooks\notebooks\3D-pose-estimation-webcam

 

여기서부터는 jupyter notebook화면 안에서 진행된다.

몇가지 필요한 패키지를 설치하고 패키지 import한다.

pythreejs 설치
패키지 import

 

 

위에서 설명한 대로, 학습된 모델을 다운로드한다. 여기서 omz_downloader를 실행하게 되는데 이것은 openvino-dev 패키지 안에 있다. 

학습된 모델 다운로드

 

다운받은 모델의 위치

위 그림은 다운받은 모델은 pytorch 형태로 그 폴더 위치를 나타낸다.

 

이제 학습된 모델이 있으니 OpenVINO로 동작하게끔 만드는 변환 과정이 필요하고 명령어는 아래와 같다.

 

여기서는 pytorch -> onnx -> OpenVINO 의 순서로 진행됨을 기억하자.

pth 모델을 onnx로 변환

결과물은 bin 파일, network architecture와 xml 파일, model weight이다. 

 

이제 OpenVINO의 IR 형식까지 맞추었으니 읽어서 추론하는 것을 할 시간이다.

추론에 사용할 모델을 읽음

여기서 device.value = 'CPU' 이다. (이것을 정하는 코드가 위에 있었다)

여기서는 추론 엔진 init -> IR 모델 읽기 -> 모델 컴파일 -> 추론 요청 의 순서를 기억하자.

 

 

 

 

 

 

코드 전문은 위의 링크 또는 github를 참고하시길..

 

간단하게 코드의 흐름을 보면, 

run_pose_estimation(source, flip, use_popup, skip_frames): source는 0이면 webcam, 아니면 영상파일 위치

비디오 플레어어를 실행시키고, 들어오는 영상의 프레임마다 이미지 사이즈를 변환하여 모델에 추론시킨 결과를 화면에 뿌려준다.

 

이번 예제는 첫 예제로 각 패키지나,

추론 모델에 관한 설명보단 OpenVINO를 이용하여 이런 과정을 거치면 PC에서도 원활히 돌아갈 수 있구나 정도만

이해하기로 하자.

 

아래는 실행한 결과를 캡쳐한 것이다.

 

동영상도 있으면 좋겠지?

 

3D Human Pose Estimation 예제