[paper-review] Objects as Points

riverdeer·2021년 3월 31일
0

Paper Review

목록 보기
14/23
post-custom-banner

Zhou, X., Wang, D., & Krähenbühl, P. (2019). Objects as points. arXiv preprint arXiv:1904.07850.


Abstract

  • 대부분 기존 object detector는 많은 수의 후보 구역들을 선정하고 이들이 진짜 물체를 담고 있는지 분류하는 방식을 사용한다.
  • 이는 굉장히 비효율적이며 추가적인 후처리가 필요하다.
  • 본 논문에서는 Keypoint estimation을 통해 물체(Objects)를 단 하나의 점으로 예측한다.

Object detection with implicit anchors.

  • CenterNet은 기존 anchor box를 사용하는 one-stage detector와 비슷하지만, 다름.
  1. box overlap이 아니라, 위치(point)를 가지고 anchor를 할당
  2. 한 가지 크기의 anchor를 사용
  3. 더 큰 output resolution을 가짐.


3. Preliminary

  • IRW×H×3I \in \mathcal{R}^{W\times H\times 3}: 입력 이미지
  • Y^[0,1]WR×HR×C\hat{Y} \in [0, 1]^{{W\over R} \times {H\over R} \times C}: CenterNet이 만들고자 하는 keypoint heatmap
    • R=4R=4: feature extractor를 거치면서 해상도가 줄어들게 되는 비율
    • Y^x,y,c=1\hat{Y}_{x,y,c}=1: keypoint를 의미
    • Y^x,y,c=0\hat{Y}_{x,y,c}=0: background를 의미
  • CornetNet에서와 비슷하게 keypoint heatmap(Y^\hat{Y}) 및 offset map을 뽑아낸다.
    • keypoint prediction loss
      • Ldet=1Nxyc{(1Y^xyc)αlog(Y^xyc)if Yxyc=1(1Yxyc)β(Y^xyc)αlog(1Y^xyc)otherwise,α=2,β=4L_{det} = -{1 \over N} \sum_{xyc} \begin{cases} (1-\hat{\bold Y}_{xyc})^\alpha \log (\hat{\bold Y}_{xyc}) & \mathrm{if} \space Y_{xyc}=1\\ (1-\bold Y_{xyc})^\beta(\hat{\bold Y}_{xyc})^\alpha \log(1-\hat{\bold Y}_{xyc}) & \mathrm{otherwise}\end{cases}, \\\alpha=2, \beta=4
    • offset loss
      • Loff=1NpOp~^(pRp~)L_{off} = {1 \over N}\sum_p \lvert \hat{O_{\tilde{p}}} - \left( {p \over R} - \tilde{p} \right) \rvert
        • O^RWR×HR×2\hat{O} \in \mathcal{R}^{{W\over R} \times {H\over R} \times 2}: xx좌표에 대한 offset값, yy좌표에 대한 offset값으로 총 두 개
        • pR2p \in \mathcal{R}^2: ground truth keypoints
        • p~=pR\tilde{p} = \lfloor {p \over R} \rfloor

4. Objects as Points

size loss

  • object kk의 bounding box 좌표를 (x1(k),y1(k),x2(k),y2(k))(x_1^{(k)}, y_1^{(k)}, x_2^{(k)}, y_2^{(k)})라고 할 때,
  • center point는 pk=(x1(k)+x2(k)2,y1(k)+y2(k)2)p_k=\left( {x_1^{(k)} + x_2^{(k)} \over 2}, {y_1^{(k)} + y_2^{(k)} \over 2}\right)
  • 물체의 크기를 나타내는 sk=(x2(k)x1(k),y2(k)y1(k))s_k = (x_2^{(k)} - x_1^{(k)}, y_2^{(k)} - y_1^{(k)})
  • 물체의 크기를 조정하는데 기여하는 size loss
    Lsize=1Nk=1NS^pkskL_{size} = {1 \over N} \sum_{k=1}^N \lvert \hat{S}_{p_k} - s_k \rvert
    • S^RWR×HR×2\hat{S} \in \mathcal{R}^{{W\over R} \times {H\over R} \times 2}: xx좌표에 대한 size값, yy좌표에 대한 size값으로 총 두 개

overall loss

Ldet=Lk+λsizeLsize+λoffLoffλsize=0.1,λoff=1L_{det} = L_k + \lambda_{size}L_{size} + \lambda_{off}L_{off} \\ \lambda_{size}=0.1, \lambda_{off}=1
  • 모든 keypoints Y^\hat{Y}, offset O^\hat{O}, size S^\hat{S}는 단일 네트워크에서 비롯된 것이며, 총 C+4C+4(offset 2 + size 2)개의 채널 output이 생성된다.

From points to bounding boxes

  • ExtremeNet에서처럼 상위 100개의 peak point를 저장.
    • P^c\hat\mathcal{P}_c: 클래스 cc에 속하는 nn개의 peak(=center) point
    • P^={(x^i,y^i)}i=1n\hat\mathcal{P} = \{(\hat x_i, \hat y_i)\}^n_{i=1}
    • 이 peak point의 픽셀 값 Y^xiyic\hat Y_{x_iy_ic}를 그 탐지 confidence score처럼 활용할 수도 있다.
    • 최종 bounding box는 아래와 같이 그릴 수 있다.
    • (x^i+δx^iw^i/2,y^i+δy^ih^i/2,x^i+δx^i+w^i/2,y^i+δx^i+h^i/2)(\hat x_i + \delta\hat{x}_i-\hat{w}_i/2, \hat y_i + \delta\hat{y}_i-\hat{h}_i/2, \\\hat x_i + \delta\hat{x}_i+\hat{w}_i/2, \hat y_i + \delta\hat{x}_i+\hat{h}_i/2)
    • (δx^i,δy^i)=O^x^i,y^i(\delta\hat{x}_i, \delta\hat{y}_i) = \hat{O}_{\hat{x}_i, \hat{y}_i}: offset 예측 값
    • (w^i,h^i)=S^x^i,y^i(\hat{w}_i ,\hat{h}_i) = \hat{S}_{\hat{x}_i, \hat{y}_i}: size 예측 값

profile
딥 러닝을 공부하는
post-custom-banner

0개의 댓글