Shuo-Diao Yang, Hung-Ting Su, Winston H. Hsu, Wen-Chin Chen
Few shot learning을 활용한 object counting을 진행한 첫 논문이라 주장.
보지 못한 object class에 대한 count가 가능하도록 함.
이를 위해 Class-agnostic Few shot Object Counting Network(CFOCNet)을 제안함.
본 모델은 query image와 reference image 간의 similarity를 구함으로써 자체적으로 count가 가능하게 함.
Resnet을 활용하고 matching score의 다양한 크기들을 모아 자동 학습시킴.
일반적인 Object counting은 사람, 차, 동물 등의 물체 카테고리에 맞게 그 개수를 세는 것에 초점이 맞춰져 있다. 그러나 이는 다른 물체 class에 대해서는 불가능하다.
다른 물체에 대해서 counting을 하기 위해서는
1) 재학습이 필요하고 2) label된 큰 데이터가 필요하고 3) 많은 시간이 필요하다.
object의 숫자를 세는 방법은 크게 2가지
1) object detector에서 개수를 세는 것
2) 예측한 density map을 sum하는 것
본 논문에서는 Class-agnostic Few-shot Object Counting Network (CFONet)을 제안한다. 이 모델에서 query 이미지 한 장과 몇 장의 reference 이미지들을 입력으로 넣으면 임의의 object class에 대한 counting 정보를 알 수 있다.
본 네트워크는 query 이미지와 reference 이미지들간 다른 크기별 similarity를 계산하는 효율적인 네트워크다.
Resnet을 사용할 것이고 데이터 세트로는 COCO dataset으로 훈련한다.
Few-shot learning - 중략
Object counting - 중략
문제 정의
주어지는 것 : 여러 종류의 object가 포함된 한 장 query 이미지, query 이미지에 존재하는 한 종류의 객체에 대한 reference 이미지들
해결하는 것 : query 이미지 속에 reference 이미지의 객체가 몇 개가 있을까
입력 유의
본 모델에서 활용하는 COCO Dataset에서는 한 장의 query 이미지에 다양한 임의의 object가 존재하므로 임의의 하나의 종류 class를 선택한다.
훈련 단계에서 label 정보 없이 network에 한 장의 query 이미지와 다수의 reference 이미지들을 넣는다.
testing 단계에서 training data에 보이지 않았던 reference 이미지 카테고리 object를 통해 합리적인 결과를 도출한다.
본 네트워크는 two-stream Resnet encoder와 doecder로 이루어짐
Resnet encoder
encoder는 2개의 stream을 가짐.
하나는 query stream 또 다른 하나는 reference stream
강력한 feature representation때문에 Resnet-50에서 3 개의 block을 사용
query stream : i는 3개의 Resblock을 각각 나타냄
reference stream : i는 3개의 Resblock을 각각 나타냄, j는 k개의 shot을 나타냄 (k-shot)
Matching mechanism
Resnet Encoder에서 추출한 reference image 결과들을 j 차원에 따라 pooling operation을 진행하여 종합함.
더 많은 reference 이미지를 제공하면 더 좋은 성능을 이끌어낼 수 있음.
$R_i^{query}, R_i^{ref}$ 사이의 matching socre를 구하기 위해 아래와 같이 진행.
단, 이때 계산량 감소때문에 $r \times r$의 feature map resolution 감소를 위한 max pooling operation를 진행함. 진행시 spatial dimension(height와 width)를 따라 진행. 경험적으로 r=4가 가장 좋음
또한, self-attention mechanism을 query branch에 적용함으로써 모델이 반복적으로 발생하는 같은 물체에 대한 self-similarity에 집중할 수 있게 한다.
Density map decoder
Conv : $1 \times 1$을 통해 채널을 1로 줄임
Sum을 통해 scalar로 바꿈
Softmax를 통해 서로 다른 matching score map에 상응하는 weight normalize 진행
Matching Score map을 합치기 위해 다음과 같이 계산
F는 원본 이미지의 1/8이므로 transpose conv와 bilinear upsampling을 진행
Dataset
COCO dataset을 사용
80개의 category 중 60개는 훈련에 20개는 test에 사용
데이터의 instance 개수에 따른 이미지의 양의 차이가 있어 5개 혹은 그 이상의 instance가 있는 이미지를 선별함.
Ground Truth Density Map
COCO dataset은 bounding box annoation만 있으므로 중앙에 해당하는 부분만을 1로 놓고 Gaussian kernel을 conv하여 Ground Truth Density Map 구성함.
Settings
query 이미지는 랜덤하게 256 x 256으로 crop하고 0.5의 확률로 flip
reference 이미지들은 padding과 함께 64x64로 resize
matching score를 계산에 사용하기 위한 1x1 conv feature map channel을 256으로 줄임.
본 논문에서는 5-shot matching problem을 사용
Loss
$P_i$ : 예측한 Density Map
$GT_i$ : Ground Truth Density Map
SSIM 지표를 활용한 regularization을 적용.
$\lambda = 1e - 5$
Adam Optimiaer
learning rate $1e-4$
batch size 20
Tensorflow
V100 GPUs 사용
Evaluation
Results
Ablation Study
weighted fusion과 self-attention 활용이 필요함.
https://github.com/SinicaGroup/Class-agnostic-Few-shot-Object-Counting