Detect-and-Track: Efficient Pose Estimation in Videos

pose-estimation
cvpr
sota
cvpr2018
posetrack

#1

#iccv #posetrack 2017년에 1위한 모델입니다. Mask RCNN 기반으로 Human Detecton을 수행하고, RoI에 대해서 KeyPoint를 찾는 2 stage top-down approach입니다. 조금 다른 점은, 3d CNN을 통해 temporal information을 어느 정도 사용하고, post processing으로 tracking 정보도 연결했다는 점입니다.

Approach

전체적인 프로세스를 설명한 이미지입니다. Input은 비디오의 일부 몇 프레임을 대상으로 합니다.

일부 몇 프레임이 인풋으로 들어오면 3D CNN구조로 되어 있는 Mask RCNN을 통해서 사람의 위치를 찾고, 각 RoI에 대해서 Keypoints를 찾습니다.

이렇게 찾아진 정보를 시간대 별로 연결해 동일 인물들에 대해 Tracking하도록 정보를 구성합니다. 이 때 Integer Programming 등 기존 방법보다 훨씬 비용이 적은, bipartite maching으로 문제를 정의하고, Hungarian Method로 문제를 해결하고 있습니다. 이후에 자세히 설명합니다.

Network

Base Network

Base Network는 Resnet 입니다만, 이를 변형해서 2D Conv. Layer를 모두 3D Conv. 로 변경했습니다. 여기에 약간의 필터 사이즈를 번경하거나 패딩을 변경하는 등의 약간의 변화를 일부 레이어에 주었습니다. Temporal Channel에 대해서는 모두 stride=1 이라고 하는데, stride가 커지면 퍼포먼스 저하가 있었다고 합니다. 또 Initialization에서도 약간의 변화가 있는데, 3d Kernel의 중심에 있는 2d Slice에 대해서는 2d Kernel Weight를 그대로 사용하고, 나머지는 0으로 초기화했다고 합니다. 이를 center initialization이라고 부르는데, 기존의 mean init.에 비해 성능이 약간 더 낫다고 합니다.

최종적으로, Input TxHxW 에 대해서 출력되는 피쳐는 T \cdot \frac{H}{8} \cdot \frac{W}{8} 가 됩니다.

Tube proposal network

Base Net. 에서 얻은 Feature를 가지고, [Faster R-CNN]에서의 RPN처럼, Region Proposal Network을 추가해 사람을 찾도록 했습니다. 단순히 작은 3D Conv. 와 FC로 이루어진 네트워크를 이용해서 confidence classification과 box regression 을 합니다. 차이점은 전체 시간 대에 걸쳐서 각각 Proposal이 나온다는 점입니다. classification에는 softmax를, box regression에는 L1 Loss를 사용했습니다.

이렇게 얻어진 Proposal은 Temporal Step T 만큼 있고, 이는 애초의 Feature 역시 마찬가지이므로, 각각 해당하는 위치에서 Feature를 RoIAlign Opteration을 통해 Crop한 후, Concatenate합니다. 이렇게하면 TxRxR 사이즈의 Feature Map을 얻게 됩니다.

위 그림에서처럼, Classification Head는 Bounding Box에 대한 cls., reg. output으로 이루어져 있고, Keypoints Head는 이전 페이퍼들과 유사하게 Spatial Softmax Loss로 이루어져 있습니다.

Linking keypoint predictions

이렇게 각 프레임별로 얻어진 데이터를 시간 상으로 이어야 합니다. 즉, 트래킹된 결과처럼 최종 결과를 가공하는 것입니다. 참고로 기존에는 Integer Programming으로 풀거나(매우 느림), LSTM과 같은 RNN으로 Temporal Information을 임베딩하는 등의 시도가 있었습니다.

여기에서는 각 Detection결과를 하나의 Node로 생각하고, 인접한 시간 상으로 연결될 수 있는 Graph로 모델링하는 것으로 시작합니다. 연결되는 비용은 두 박스의 유사도에 음수를 취한 것입니다. 유사도는 아래와 같은 방식으로 구할 수 있습니다.

  • 두 CNN feature에 대한 Cosine Similarity
  • Location Similarity(IoU)
  • Pose Similarity
  • LSTM 등을 통한 Learned distance metric

논문에서는 CNN Cosine Similarity가 가장 좋았다고 합니다.

즉, 첫번째 프레임부터 시작해서 인접한 다음 프레임의 Box들과 유사도를 구한 후, Bipartite Matching하는 것으로 볼 수 있습니다.

Results

Detection Threshold를 주면 성능이 조금 나아지는데 이는 False positive를 줄였기 때문이라고 합니다.

(제 생각에는 threshold를 줄 때, 인접한 프레임에서 IoU등이 높은 사람이 있는 경우에는 threshold를 조금만 주면, precision에 도움을 주면서도 false positive가 줄어서 더 성능이 올라갈 것 같습니다. 일종의 앙상블 효과)

이외에도 Hungarian Method, 그리고 다양한 Similarity Cost에 대한 Ablation Test가 있습니다.

2D RCNN Model보다 3D RCNN Model이 성능이 좋음을 보이면서, #posetrack 2017 Competition에서 좋은 성적을 냈습니다.


Towards Accurate Multi-person Pose Estimation in the Wild