2020. 11. 14. 16:29ㆍComputer Vision/Toy projects(심심풀이)
구글의 Mediapipe를 사용해본다.
Object_detection + Tracking 조합을 많이 사용하지만 사용중 박스 인식의 떨림(jitter)는 언제나 거슬린다.
구글의 Mediapipe는 CPU를 사용함에도 매우 안정적으로 바운딩 박스를 인식하고 추적한다.
얼마나 좋은지 한 번 사용해보자.
MediaPipe 설치하기:
- 정식 홈피 설명서(1).
- 홈피 설명을 참고해서 mediapipe 깃허브 클론.
Bazel 설치하기:
MediaPipe Box Tracking 실행하기:

- Box Tracking은 아직 Python 실행을 지원하지 않는다.
- 이번 포스트에서는 Desktop 버전을 실행해본다 → [ref]
Object Detection and Tracking
매 프레임마다 Object detection을 적용하는 것 보다 둘을 섞어서 사용하는게 더 안정적이다 [ref3].
- 먼저 Object detection 예시를 빌드한다 → 빌드 방법은 홈피 내용 참고.
- 같은 방식으로 Box Tracking 예시도 빌드한다 → 해당 포스트에는 설명이 없다. Obejct detection에서 사용한 방식대로 하되 경로만 바꿔서 빌드한다.

Running on CPU
Desktop 실행 예시를 따라한다.
- 공식 홈피의 예시는 hand_tracking 내용이 나와있다.
- 예시 명령어를 참고해서 위에서 빌드한 examples 의 경로만 수정해서 사용해본다.

- bazel-bin/mediapipe/examples/desktop/object_tracking/object_tracking_cpu
- media/graphs/tracking/object_detection_tracking_desktop_live.pbtxt
~$ GLOG_logtostderr=1 bazel-bin/mediapipe/examples/desktop/object_tracking/object_tracking_cpu \
--calculator_graph_config_file=mediapipe/graphs/tracking/object_detection_tracking_desktop_live.pbtxt
Conclusion
물체를 인식하는 속도, 화면 전환에 대한 반응 속도가 매우 만족스럽다.
안타까운 부분:
- 아직 bazel 사용법을 제대로 모른다.
- Mediapipe에 인식된 박스 정보(bbox data)를 Python에서 사용하려면 어떻게 해야할까?
- Object detection + Tracking 조합이 좋은건 알겠는데 → Object detection은 몇 프레임마다 진행하는게 최적일까?
추후에 좀더 기술적인(technical)한 부분을 공부해서 정리하자.
Reference
[1] google, mediapipe, github / 정식 깃허브
[2] MediaPipe Box Tracking, MediaPipe / 이번 포스트에서 참고하는 자료
[3] Object Detection and Tracking using MediaPipe, Google Developers / Object detection & Tracking을 같이 쓰는게 더 안정적으로 박스를 추적할 수 있다.
