Dami Choi, Alexandre Passos, Christopher J. Shallue, George E. Dahl

Inc Lomin's avatar
Nov 28, 2019
Dami Choi, Alexandre Passos, Christopher J. Shallue, George E. Dahl

Abstract

라벨링이 되지않은 crowd image를 활용한 crowd counting 방식을 제안합니다. 큰 이미지에서 잘려진 이미지는 인원이 줄어드는 점을 활용해서 순위를 계산합니다. 이를 통해서 제한된 데이터셋의 크기 문제를 해결할 수 있도록 합니다. 구글에서 키워드 검색과 이미지 검색을 통해서 두개의 crowd scene dataset을 만들었습니다. learning-to-rank와 crowd density map을 추측하는 multi-task network를 활용해서 unlabeled dataset를 효율적으로 활용하는 방법을 설명하겠습니다. 두개의 crowd counting dataset을 실험해서 이 접근 방식으로 state-of-the-art를 보였습니다.

Introduction

CNN을 활용한 Crowd counting approach들은 다음과 같은 방식이 있습니다. 하지만 이러한 방식의 person counting과 crowd density estimation은 data에 의존도가 높습니다.
  • scale-aware regression models
  • multi-column CNNs
  • switching networks
 
self-supervised learning의 일반적인 접근방식은 먼저 self-supervised task를 학습한 네트워크에 최종 task를 fine tuning하는 방식입니다. 제안하는 방식은 self-supervision 방식이지만 multi-task network를 통해서 놀라운 성능을 얻어냈습니다.
 
notion image
주요 contribution은 다음과 같습니다.
  1. unlabeled crowd image를 통해 학습하는 방법
  1. 자동적으로 요구되는 data를 인터넷에서 얻는 두가지 방식을 제안
  1. 라벨링된 crowd scene dataset에서 순위가 있는 세트를 통해 학습을 하는 세가지 방식을 분석합니다.

Methods

Generating ranked image sets for counting

regressing을 통해 이미지의 사람수의 절댓값을 찾는 대신 이미지를 비교하고 이미지의 사람수를 비교하도록 합니다. main idea는 모든 패치는 큰채이세 속해있고 그 패치는 항상 큰 패치보다 같거나 작은 수의 사람을 가지고 있음을 의미합니다. 이를 통해서 crowd image들간에 상대적인 rank가 존재함을 가정할 수 잇습니다. 이 아이디어를 이용해서 크롤링한 큰 이미지 데이터셋을 라벨링하지 않고 활용할 수 있습니다. 이미지 데이터셋을 모으는 데에는 다음 두가지 접근 방식을 사용했습니다.
  • Keyword query: Crowd scene과 연관된 단어를 Google image에 keyword로 검색해서 수집 후 관련되지 않은 사진은 삭제했습니다. 최종적으로 1180장의 고화질의 Crowd scene image를 모았고 기존 UCF_CC_50 dataset의 24배, ShanghaiTech Part_A의 2.5배, Part_B의 2배 수준이 되었습니다. 또한 annotation은 수행되지 않았습니다.
  • Query-by-example image retrieval: 기존의 crowd counting dataset에 대해서 google Image검색의 visual image search를 활용하여 학습이미지를 검색했습니다. 결과로 나온 이미지의 첫 10장과 연관되지 않은 사진을 제외했습니다. UCF_CC_50으로 256장, ShanghaiTech Part_A로 2229장, Part_B로 3819장을 수집했습니다.
Figure 2. 수집된 이미지의 예시
Figure 2. 수집된 이미지의 예시
 
이렇게 수집된 Unlabeled dataset을 ranked dataset으로 활용하기 위해서 다음 Algorithm 1을 사용했습니다.
  1. 패치의 수 k와 scale factor s 그리고 image가 input으로 주어집니다.
  1. anchor point를 anchor region에 random하게 잡습니다. anchor region는 원래 이미지의 1/r 크기로 정의되며 중심은 원래 이미지의 중심으로 잡고 aspect ratio는 같게 유지합니다. 선정된 anchor point를 기준으로 가장 큰 사각형 영역을 잡습니다.
  1. k-1개의 사각형 패치를 자르고 scale factor로 크기를 줄여나갑니다. 모든 패치는 anchor point를 중심으로 잡습니다.
  1. 모든 패치를 network의 input size로 resize합니다.
Output: number of person으로 정렬된 patch list
notion image
Algorithm 1의 예시 이미지
Algorithm 1의 예시 이미지

 

Learning from ranked image sets

Crowd density estimation network와 Crowd ranking network의 구조 및 학습
Crowd density estimation network와 Crowd ranking network의 구조 및 학습
  1. Crowd density estimation network
    1. crowd density regression의 예시 이미지
      crowd density regression의 예시 이미지
      먼저 ground truth가 있는 crowd counting dataset을 학습하기 위한 네트워크를 설명하겠습니다.
      이 네트워크는 crowd density 즉 per pixel number of person을 regress합니다. 이 crowd density map의 모든 값을 더해서 scene에 등장하는 사람의 수를 예측할 수 있게 됩니다. 실험에서는 이 방식을 비교할 baseline으로 삼습니다.
      baseline은 VGG-16 네트워크를 사용했습니다. regression을 위해서 마지막 두개의 fully connected layer를 삭제하고 max-pooling layer(pool5)에서 spatial resolution의 reduction이 줄어들지 않도록 했습니다. 그리고 single convolution layer( 3x3x512)를 stride1과 zero padding으로 추가해서 바로 crowd density map을 regress할 수 있도록 했습니다. 정답과 예측 사이의 Euclidiean distance를 통한 Counting loss L_c는 다음과 같이 계산됩니다.
      • M: number of images in training batch
      • y_i: ground truth person density map
      • y^_i: prediction from network
       
      Crowd counting의 ground truth annotation은 'center'(head of person)의 좌표의 모음으로 구성됩니다. 이를 crowd density map으로 변경하기 위해서 15pixel 단위의 표준편차와 합으로 gaussian distribution을 계산합니다.
       
  1. Crowd ranking network
    1. Algorithm1을 통해 만들어진 Crowd ranking dataset을 활용하기 위해서 ranking을 구하도록 학습해야합니다. 이 Ranking은 한 패치에 다른 패치보다 같거나 더 많은 수의 사람이 있는지를 의미합니다.
      이를 학습하기 위해서 Euclidian loss를 average pooling layer와 ranking loss로 대체했습니다.
      average pooling layer는 density map을 spatial unit의 number of person으로 변환하고 이는 다음과 같습니다.
      • x_j: spatial coordinates of density map
      • M: number of spatial units (in this case 14 x 14)
      랭킹을 loss로 만들기 위해서 pairwise ranking hinge loss를 다음 식으로 pair마다 구합니다.
      • epsilon: margin(본 논문에서는 0으로 사용)
      이 loss는 두 이미지의 count estimation을 이용해서 order가 correct ranking에 맞지 않을 경우 loss를 증가시킵니다. 이때 I_1의 ranking이 I_2보다 높다고 가정합니다.
      네트워크 parameter에 따른 loss는 다음 식에 따라서 계산됩니다. correct ranking을 반환했을 때는 back propagation이 없지만 낮은 score의 patch에 대해서는 estimate를 증가하고 높은 score의 patch에 대해서는 estimate를 낮추도록 gradient를 발생시킵니다.
      notion image
      일반적인 ranking loss 구현은 두개의 이미지를 parallel branch에 넣어주는 Siamese network를 사용합니다. 하지만 computation의 이점을 위해서 하나의 branch에 batch로 이미지들을 넣고 ranking loss를 계산시에 이들을 결합하도록 했습니다. Ranking loss는 다음과 같습니다.
      S(i): set of patches containing fewer people than pacth i
      5개의 이미지에 대해 5개의 set을 가진 25장의 이미지의 minibatch에서는 50 pair가 생성됩니다.(4+3+2+1) x 5 =50
       
  1. Combining counting and ranking data
    1. notion image
       
      • Ranking plus fine-tuning: 먼저 large ranking dataset에 학습한 후에 densifty map을 직접 estimation하도록 fine tuning
      • Alternating-task training: 300 mini-batched를 학습 시킨 후 다음 task로 넘기는 방식
      • Multi-task training: self-supervised task와 supervised counting task를 동시에 진행

    Experiments

    Datasets and Experimental Protocol

    1. UFC_CC_50
      1. 50장의 서로다른 resolution을 가진 annotated image로 구성됩니다. density의 variation은 94 - 4543명이고 평균은 1280명입니다.
         
    1. ShanghaiTech dataset
      1. 1198장에 330165명이 포함된 대규모 데이터셋입니다. 두개의 파트 A, B로 구성되며 482장의 A는 random하게 크롤링된 이미지입니다. 716장의 B는 거리에서 촬영된 사진입니다. 두개의 파트는 각각 학습 및 평가용으로 A는 300(학습)/182(평가), B는 400/316장으로 구성됩니다.
     
    기존의 Work들을 따라서 MAE와 MSE를 평가 방법으로 사용했습니다.
    notion image
    • N: number of test images
    • C(I_i): ground truth number of person in i th image
    • ^C(I_i): predicted number of persons in the i th image
     
    Caffe를 이용해 구현하였고 학습에는 Stochastic Gradient Descent(SGD)를 사용했습니다. mini-batch의 크기는 ranking과 counting을 위한 크기로 25, multi-task training에는 50장으로 구성했습니다.
    mutli tasklearing에서 loss의 weight hyper parameter인 lambda는 100이 좋은 성능을 보였습니다.
    다른 구현들과 상세한 hyper parameter는 논문을 참고해주세요.
     

    Ablation study

    ablation study는 UCF_CC_50에 대해 평가했습니다. 이 ablation study는 ranking loss를 통한 improvement를 확인하는데 초점을 맞췄습니다.
    notion image
    Multi-task traning방식이 가장 좋은 성능을 보여 다음 실험들은 기본적으로 multi task learning방식으로 진행했습니다.
     

    Comparision with the state-of-the-art

    notion image
    MAE에서는 좋은 성능을 보여주나 MSE의 성능이 않좋은것으로 보아 extreme outlier가 존재하는 것으로 보입니다.
    query by example과 keyword 로 모은 Dataset으로 학습한 모델을 비교하면 query by example이 낮은 것을 볼 수 있는데 이는 UCF_CC_50가 모두 흑백의 낮은 resolution으로 query result 이미지들이 이와 다르기 때문으로 볼 수 잇습니다.
     
    다음은 state-of-the-art와 ShanghaiTech dataset의 두 set에 대해 비교한 결과입니다.
    결과는 UCF_CC_50과 비슷합니다. ShanghaiTech에서는 2%정도 증가한 결과를 확인할 수 있었고 PartA와 PartB 모두에서 sota를 능가하는 성늘을 보였습니다.
     
    notion image
    위 (UCFF_CC_50의 예시) 아래(ShanghaiTech의 예시)
    위 (UCFF_CC_50의 예시) 아래(ShanghaiTech의 예시)

    Evaluation on transfer learinng

    이 학습방식의 gerneralization을 확인하기 위해서 ShanghaiTech dataset을 source domain으로 UCF_CC_50 dataset을 target domain으로 설정하고 transfer learning을 실험해봤습니다.
     
    notion image

    Conclusion

    주요 novelty는 larger crop이 더 작은 crop보다 많은 수의 사람을 포함하고 있는 점을 통해서 대량의 데이터셋이 부족한 문제를 해결함에 있습니다. 이를 통해서 internet으로 얻어진 이미지를 Ranking하도록 해서 Ranking dataset을 만들어내고 이를 additional data로 활용할 수 있는 multi task network를 보였습니다.
     
    Share article