Viresh Ranjan, Udbhav Sharma, Thu Nguyen, Minh Hoai
https://arxiv.org/abs/2104.08391
이 논문의 기여도는 크게 2가지
1) few-shot regression task를 통해 모든 물체에 대한 counting이 가능하게 했다.
2) few-shot counting task에 맞는 147 종류 6000장 이상의 이미지를 보유한 데이터 세트를 제안한다.
다양한 종류 물체가 많이 있을 때 세는 것이 어려운 이유 2가지
1) 현존하는 대다수의 counting은 label이 달린 supervised regression task로 density map을 뽑기 위한 모델을 활용
2) 한 종류에 국한 되지 않는 데이터 세트가 존재하지 않음
few shot setting
- input : 이미지 한 장과 이미지 속 관심있는 물체의 소수의 examples(bounding box된 부분)
- output : 관심있는 물체의 counting 개수
Contribution 1
few-shot coutning task를 위해 Few Shot Adaptation and Matching Network(FamNet)을 제안
본 네트워크에는 2개의 key point 존재
1) feature extraction module
2) density prediction module
+ test time 시 새로운 few-shot adaptation scheme를 통해 성능 향상
Contribution 2
오직 few-shot counting만을 위한 147 종류로 된 6000장 이상의 데이터 세트을 제안
Few-Shot Counting-147 (FSC-147)
1) annotate된 특정 type의 object ex) 사람, 차, 동물 등을 기반으로 단일 물체의 counting
2) 제안한 아이디어와 비슷한 개념을 지닌 모델 : GMN
3) few-shot detection
few-shot counting과 few-shot detection은 2가지가 다름
- few-shot counting은 dot annoation이 필요하지만 few-shot detection은 bounding box annotation이 필요
- few-shot detection은 occlusion에 영향을 받지만 few-shot counting은 density estimation을 사용하기 때문에 상대적으로 occlusion에 강건함. 이는 density estimation 방법이 crowd counting이나 cell counting과 같은 다양한 도메인에 적용했을 때 강건했음을 경험적으로 알 수 있음.
4) few-shot classification : MAML(Model Agnostic Meta Learning) - 2차 미분을 사용하기 때문에 계산 비용이 높음
Input : 3 채널 이미지 한 장과 count하고자 하는 bounding box exemplar
Output : Height와 Width만 존재하는 예측한 Density map
해당 output인 density map을 sum하여 count 진행
FamNet은 크게 2 모듈이 존재
1) multi-scale feature extraction module
2) density prediction module
<Feature Extraction Module>
다양한 category의 object를 다루기 때문에 ImageNet-pretrained Resnet-50을 backbone으로 첫 4개의 block 사용함.
이때 이 block들은 훈련 단계에서는 freeze
<ROI Pool>
Resnet-50 3~4번째 block으로부터 ROI pooling을 수행함으로써 exemplar를 위한 multi-scale feature를 획득
<Featuer Correlation Layer>
이후 exemplar feature와 이미지 feature 간의 correlation map을 사용하여 density prediction module이 agnostic하게 함.
object들이 각기 다른 크기를 가지는 것에 대해
<Density prediction Module>
5개의 conv + 3개의 upsampling layer로 구성
마지막 conv는 1x1으로 input 이미지 사이즈와 맞춤.
본 모델의 학습에 있어 다른 방법들과 달리 exemplar는 bounding box 기반의 annotation이 되어있다. 이는 기존 dot annotation으로 loss를 구성하고 15x15의 고정된 size의 Gaussian window로 convolve하여 density map을 구성하는 것과는 다르다.
사용하는 데이터 세트 속 각 객체의 사이즈는 variation이 크다. (다양하다)
target density map을 만들기 위해서 adaptive window size에 따라 Gaussian smoothing을 해야한다.
각 dot은 물체의 중앙을 의미하기에 이를 기반으로 nearest neighbor한 dot들 간의 길이를 계산하여 평균을 낸다. 이 평균 distance를 Gaussian window size로 사용하여 density map을 구성한다.
Gaussian std는 window size의 1/4
Ground Truth Density Map과 Predicted Density map 간의 MSE Loss 사용
Adam Optimizer
learining rate $10^{-5}$
batch size 1
이미지 height를 384로 고정하고 width는 원본 이미지 비율에 맞게 조절
Key Idea
추정한 count 정확도를 향상시키기 위해서 exemplar의 bounding box를 단순히 exemplar의 appearance feature를 추출하기 위한 방법으로만 사용할 것이 아니라 location을 활용하는 것이 더 좋을 것 같다
이를 location 정보를 활용하기 위해 2가지 loss를 제안
$b \in B$ : Bounding box
$Z_b$ : location b에 존재하는 density map Z로부터 crop
1) Min-Count loss
$Z_b$ 내 density value의 합은 최소 1이다.
그러나 overlap과 같은 경우에 따라 1 이상이 될 수 있다.
Min-Count loss를 통해 제약 위반의 정량화할 수 있게 한다.
가령 1보다 크면 0이 반환 -> Loss는 없음
1보다 작으면 숫자 반환 -> Loss 존재
2) Perturbation Loss
exemplar bounding box에 의해 제공되는 위치 정보를 활용하는 이 loss는 correlation filter 기반의 tracking 알고리즘의 성공에서 영감을 받음.
bounding box의 정확한 위치일 때 높은 response
perturbed location일 때 낮은 response
predicted density map $Z$는 exemplar와 이미지 간의 correlation response map
exemplar 위치 주변은 gaussian 처럼 보임.
이를 활용한 차이를 Loss로 줌.
Combined Adaptation Loss
test time 각 test 이미지 별로 100번의 gradient descent step을 수행
learning rate $10^{-7}$
$\lambda_1, \lambda_2$ : $10^{-9}, 10^{-4}$
training loss는 test 에서는 사용하지 않음
loss와 gradient는 비슷한 크기를 유지하는 것이 중요
adaptation loss는 오직 test time에서만 사용
COCO dataset의 이미지들은 물체의 pose나 appearance에 큰 variation이 있거나 작은 숫자가 존재하기 때문에 의도한 application 조건을 만족하지 못한다.
이에 147가지의 object category를 포함하는 6135장의 이미지들로 구성된 본 데이터 세트를 제안한다.
물체는 7개에서 3731개까지 존재하며 이미지 마다 평균 56개의 물체가 존재한다.
데이터 세트 filtering
1) High image quality : 고품질 이미지
2) Large enough object count : 최소 7개 이상의 물체 개수
3) Appearance similarity : 비슷한 pose, texture, appearance를 가진 물체들을 모음
4) No severe occlusion
Train / validation / test = 3659장 / 1286장 / 1190장
평균 height, width = 774, 938
평균 56개 object 존재
총 343,818개의 물체 존재
예시
MAE, RMSE를 활용한 Evaluation Metrics 사용
비교했을 때 제안한 모델 FamNet이 낮은 MAE, RMSE를 보임
COCO dataset에서도 마찬가지의 결과를 보임
exemplar를 증가시켰을 때 성능이 향상됨
Ablation Study를 진행했을 때 다 사용했을 때가 가장 좋음
CARPK dataset을 활용해서 훈련시킨 후 성능을 평가했을 때 제안 모델의 성능이 좋음
다만 few-shot으로만 했을 때는 성능이 우월하지는 않음
Predicted density map과 실제 count 개수
중간 정도 잘 alignment되었을 때는 성능이 괜찮게 나오나 정형화되지 않았을 때는 성능이 좋지 않을 수 있음.
특히 4째 행은 제대로 count하지 못함.
background와 객체 간의 유사도를 구분하지 못해서 생긴 일이라 판단.
test time adaptation을 했을 때 성능이 잘 나옴을 확인할 수 있었음.
https://github.com/cvlab-stonybrook/LearningToCountEverything