https://github.com/CMU-Perceptual-Computing-Lab/openpose
원문을 기준으로 번역 및 추가 작업 내용을 기술했다.
0~1장: 번역
2장: 사용해가며 작성
3. 2d keypoint 탐지 -> 성공
4. 3d keypoint recon -> 실패
5. 2d keypoint export
0. Openpose의 개념
최초로 실시간에 이미지 안에서 여러명의 몸, 손, 얼굴, 발을 탐지해내는 기술로 CMU Panoptic Studio dataset을 기반으로 생성되었다.
1. 결과들
* Whole-body의 2D estimation
* Whole-body의 3D Pose Reconstruction and Estimation
* Unity Plugin
* 실시간 분석
현재 비교가능한 오픈포즈, 알파포즈, Mask R-CNN과 비교해보았을 때, Openpose는 constant한 시간에 작동하는 것이 특징임
2. 특징
* 주기능
- 2D 실시간 다자 키포인트 탐지
' 15, 18, 25 키포인트 body/foot 추정 지원. 사람 수에 관계없이 런타임 작동
' 2x21-keypoint 핸드 키포인트 추정. 탐지된 사람 수에 따라 런타임이 안될 수 있음
' 70-keypoint 얼굴 키포인트 추정. 탐지된 사람 수에 따라 런타임이 안될 수 있음
- 3D 실시간 1인 키포인트 탐지
' 여러 뷰로 3D triangluation 지원
' Flir 카메라 핸들 싱크로
' Flir/Point Grey 카메라 호환
- 칼리브레이션 도구
' 디스토션, in/extrinsic 카메라 파라미터
* 입력
- 이미지, 비디오, 웹캠, Flir/Point Grey, IP 카메라, 뎁스 카메라 등
* 출력
- 기본 이미지 + 키포인트(PNG, JPG, AVI....)
- 키포인트(JSON, XML, YML)
- array class 형태의 키포인트들
- 커스텀 형태
* 운영체제
- 우분투, 윈도우, 맥, TX2
* 하드웨어
- CUDA, OpenCL, CPU-only
* 사용 대안
- 빌트인 기능: Command-line demo를 이용
- C++/Pytho API: 커스텀 기능 개발에 활용
2. Openpose 사용을 위한 세팅
위 링크로 가면 윈도우즈 포터블 데모를 받을 수 있도록 안내되어있다.
주된 내용은 릴리즈 섹션에서 오픈포즈를 다운받고, 압축 파일 내의 instructions.txt에 적힌대로 model을 다운받기만 하면 된다.
커맨드라인 명령어는 아래 페이지를 참조하자.
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/01_demo.md
그럼 비디오를 하나 가지고 이런저런 기능을 확인해보자.
우선 아래 이미지를 보고 적절한 위치에 media 폴더를 만든 후 영상을 삽입해주자.
3. 2D 키포인트 추적을 해보자.
* 기본적인 2D 키포인트 추적
bin\openposeDemo --video media/파일명.mp4
* 손도 추적
bin\openposeDemo --video media/파일명.mp4 --hand
* face도 추적
bin\openposeDemo --video media/파일명.mp4 --face
* face hand 추적 -> 실패
bin\openposeDemo --video media/파일명.mp4 --face --hand
4. 3D 키포인트 추적을 해보자. (실패)
bin\openposeDemo --video media/파일명.mp4 --3d --number_people_max 1
로 실행해봤는데,
그러면
3-D reconstruction (`--3d`) requires at least 2 camera views, only found 1 camera parameter matrices. If you are simultaneously using FLIR cameras (`--flir_camera`) and the 3-D reconstruction module (`--3d), you should also enable `--frame_undistort` so their camera parameters are read. |
이런 메세지가 나온다.
FLIR 카메라가 뭐지?...
나무위키를 보니 그냥 적외선 카메라라고 한다.
자 아무튼 그럼 카메라를 두대 연결하고 나서 잘 되나 해볼까?...
우선 usb 카메라를 두대 달아주고,
bin\openposeDemo --3d --number_people_max 1
요 명령어로 실행해봤다. 음 안된다. 같은 카메라 모델을 두대를 달아서 그런가?
각기 다른 제품을 가져다 꽂아본다. 여전히 에러는 똑같다. 이유를 모르겠네....
아무튼 3D 키포인트 추출은 일단 멈추는 것으로......
5. 2d 키포인트를 출력해보자.
bin\openposeDemo --video media/파일명.mp4 --write_json export
그럼
요렇게 프레임별로 결과가 나온다.
내부를 열어보면,
이런식으로 값이 나온다.
pose_keypoints 안에 있는 쉼표의 갯수를 보니 총 74개다.
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/02_output.md
아웃풋에 대한 설명을 보면 x,y,c 로 하나의 조인트가 표현되는데 c는 confidence 값으로 0과 1사이의 값이라고 한다.
결과적으로 지금 내가 뽑아본 파일에는 75개의 값이 있고, 이걸 3으로 나눠보면 25가 된다. 그러므로 총 25개의 조인트에 대한 내용이 뽑혀진 것으로 추정할 수 있다.
그리고 각 조인트는 BODY_25 포맷으로 뽑혀진 것이다. 이건 openpose의 기본 옵션이다.
이렇게 디자인된 것이다.
이상으로 openpose에 대해 간단한 개념에 대한 정리를 마친다.
'인공지능 공부' 카테고리의 다른 글
Physical Inertial Poser (PIP) 읽어보기 (0) | 2023.06.29 |
---|---|
SOMA: Solving Optical Marker-Based MoCap Automatically 읽어보기 (0) | 2023.06.29 |
On human motion prediction using recurrent neural networks 읽어보기 (0) | 2023.02.20 |
Learning joint reconstruction of hands and manipulated objects 둘러보기 (0) | 2023.02.03 |
AGORA: Avatars in Geography Optimized for Regression Analysis 둘러보기 (0) | 2023.02.03 |