민프

[AI] PoseNet에 대해서 알아보자 (PersonLab: Person Pose Estimation and Instance Segmentation with a Bottom-Up, Part-Based, Geometric Embedding Model 리뷰) 본문

[AI | ML]

[AI] PoseNet에 대해서 알아보자 (PersonLab: Person Pose Estimation and Instance Segmentation with a Bottom-Up, Part-Based, Geometric Embedding Model 리뷰)

민프야 2023. 10. 16. 11:45

오늘은 TensorFlow Lite에서 제공되는 MoveNet, PoseNet, BlazePose 중 PoseNet에 대해서 알아보겠습니다. 

 

 

소개

이 논문 2018년 Google에서 발행되었습니다. 

논문에 나오는 Keyword는 Person detection and pose estimation, segmentation and grouping. 입니다.

 

이러한 키워드들은 논문의 핵심 연구 주제와 방법론을 나타내며, 

이를 통해 논문의 주요 내용과 목표를 빠르게 파악할 수 있습니다. 

 

PosetNet은 2D pose Estimation으로써 COCO 데이터셋의 얼굴과 신체 부위에 대한 네트워크 훈련을 진행하였습니다.

 

"Person detection and pose estimation"은 논문에서 인물을 정확하게 탐지하고,

그들의 포즈를 추정하는 방법을 중점적으로 다루고 있음을 나타냅니다.

 

"Segmentation and grouping"은 이러한 탐지된 키포인트와 객체를 그룹화하고 세그멘트화하는 방법에 중점을 둔 연구임을 나타냅니다.

 

아키텍쳐 분석

https://arxiv.org/abs/1803.08225

1. Input Image -> CNN

Input Image는 CNN을 통해 처리되어, 피처 맵이 추출되고, 이 피처 맵은 이미지의 중요한 정보와 특징을 포함하고 있습니다.

 

2. Pose Estimation Module (Bottom-up approach)

추출된 피처 맵을 기반으로, Pose Estimation Module은 인물의 키포인트와 포즈를 추정합니다. 

이 모듈은 키포인트의 위치, 오프셋 등을 예측하여 인물의 포즈를 정확하게 추정합니다.
해당 모듈에서는 HeatMap, Short-range Offsets, Mid-range Offsets 등 단계가 진행되는데 각각 설명해보자면

 

키포인트 히트맵 (Heatmaps)

CNN 기반으로 인물의 키포인트 위치를 예측합니다. 

단거리 오프셋 (Short-range offsets)

키포인트의 정확한 위치를 미세 조정하기 위한 오프셋을 제공합니다. 

중거리 오프셋 (Mid-range offsets)

키포인트 간의 상대적인 위치를 예측하여 인물 인스턴스를 구별하는 데 도움이 됩니다. 

하프 배열 (Hough arrays)

인물 포즈와 인스턴스 세그멘테이션을 디코딩하는 데 사용됩니다.

2. Instance Segmentation Module 

이 모듈은 인물 인스턴스를 세그멘트하는 데 중점을 둡니다.

해당 모듈에서는 Person segmentation mask, Long-range offsets이 초기 수행되는데

 

장거리 오프셋 (Long-range offsets)

더 넓은 범위에서 키포인트와 인물 인스턴스를 연결하는 데 사용됩니다. 

해당 논문에서는 코(Nose) KeyPoint에 대응하는 long-range offsets를 나타내고 있습니다. 

여기서 각 빨간색 줄은 인물 세그멘테이션 마스크의 전경 픽셀이 코 키포인트를 가리키는 방법(방향, 거리)을 시각적으로 보여줍니다.

 

빨간색 줄의 길이는 픽셀과 키포인트 사이의 거리를 나타냅니다. 

이 거리 정보는 픽셀을 정확하게 인물 인스턴스에 할당하는 데 도움을 줍니다.

 

빨간색 줄은 특정 픽셀에서 키포인트까지의 방향을 나타냅니다. 

이 방향 정보는 픽셀을 특정 인물 인스턴스에 할당하는 데 사용됩니다.

 

따라서 빨간색 줄 (long-range offsets)은 각 픽셀이 어떤 인물 인스턴스에 속하는지를 결정하는 데 사용됩니다.

픽셀은 이 정보를 기반으로 특정 인물 인스턴스에 할당되며, 이로 인해 인물 인스턴스의 세그멘테이션이 생성됩니다.

 

Person segmentation mask

CNN 모델 기반으로 예측 된 Keypoint(인물의 주요 부위)를 기반으로 각 픽셀을 특정 인물 인스턴스에 할당하고,

해당 단계에서는 Fully-convolutional 방식을 사용하여서 이미지의 각 픽셀이 사람에 속하는지 아닌지를 판단합니다. 

Instance Segmentation

각 과정에서 나온 Offsets들과, mask 정보를 활용하여서 Instance segmentation이 되게 됩니다. 

성능

위의 사진은 COCO 키포인트 tes-dev 분할 에 대한 모델의 성능을 보여줍니다.

보시는 것과 같이 PersonLab 방식이 더 좋은 결과를 보여주는 것을 확인할 수 있습니다. 

 

 


참고링크

https://arxiv.org/abs/1803.08225

https://www.tensorflow.org/lite/examples/pose_estimation/overview?hl=ko

https://blog.tensorflow.org/2021/05/next-generation-pose-detection-with-movenet-and-tensorflowjs.html?hl=ko&_gl=1*14a5lzh*_ga*MTM2NjU0MDA4Mi4xNjk2OTMwODky*_ga_W0YLR4190T*MTY5NzQxNzI0Ni44LjEuMTY5NzQyMDI5Mi4wLjAuMA..

 

 

 

 

Comments