본문 바로가기
딥러닝/CV 논문

[Object Detection] CenterNet 요약

by 혜 림 2022. 1. 28.

 

 

요즘은 시간이 없어서인지 자꾸만 요약을 쓰게 된다.  

딥러닝을 수강할 때 교수님이 소개해주신 내용인데, 당시에도 흥미롭게 들었다. 뭔가 고정관념을 깨부순 모델이었달까? 모종의 이유로 또 접하게 되서 이번엔 그냥 논문을 읽었다>

 

정말 큰 그림만 알고 싶으면 수식은 건너고 글만 읽으면 된다!  사실 본 포스팅에서 수식에 대한 설명은 없다. 나의 글을 모두 따라온 독자라면 금방 이해하리라 믿는다. 이렇게 구한다~ 는 보여주기 식으로만 넣은 것이다. 

 

가보자고!!

 

[논문]

https://arxiv.org/abs/1904.07850

 

 

 

Objects as Points 요약

 

 

우리는 그동안 Object Detection에 어떻게 접근했는가? 1-stage인지 2-stage인지에 따라서 달라지겠지만 어쨌든 큰 틀은 동일하다. classification을 하고, 예측한 bbox 의 좌표를 regress 해서 제대로 된 bbox와 cls 를 얻어내겠다! 가 목표이다. 그러나 이 논문, CenterNet에서는 어떻게 접근하고 있는가? 이 사각형의 틀을 아예 부쉈다. 우리가 4개의 포인트를 모두 예측할 필요가 하등 없다는 것이다. 모델의 이름이 CenterNet인만큼, 여기서는 bbox의 모든 포인트 대신, bbox의 Center를 추적한다. 

 

 

 Center를 추적한다? 이건 또 key-point estimation이다. key-point estimation은 한 번도 본 블로그에서 소개한 적이 없기 때문에 간단한 이미지를 올려놓을 테니 알아서 추측하길 바란다. 

 

뭐 이런 거다

 

 그럼 왜 이 논문은 Center를 추적하는 것으로 object detection을 해석하고자 했을까? 그 이유는, 모든 Object detection은 사실 end-to-end 가 불가능했기 때문이다. 하나의 그림에서 여러개의 bbox를 예측할 때 우리는 반드시 어떤 후처리를 해주어야 한다. 바로 NMS가 그것이다! 이런 사후처리로 인해서 end-to-end는 어려웠으니, 이걸 없애고자 한 것이 이 CenterNet이다~ 이 말이다. 

 

 그러면 이 중점은 어떻게 찾고, 이 중점에서 어떻게 박스를 예측하는가? 이거는 또 봐야지. 

 

 

(1) 중점 찾기 

 입력 이미지를 fully convolutional network 에 넣어서 클래스/채널 별로 heatmap을 만든다. 이 말은 FCN을 알면 바로 이해할 수 있을 것이다. 그럼 이미지에서  heatmap peak가 나타날 것이다. 아래 그림에서 tabby cat 채널의 center가 있는 위치를 예측하는 heatmap peak를 하나 찾을 수 있다. 빨간 점이다. 그래서 이 빨간 점이 실제의 gt의 peak와 동일한지 계산을 한다. 

FCN 논문 중 그림 

 

 gt의 heatmap을 만드는 과정은 아래와 같다. 

 

 

 그래서 이 gt의 heatmap과 prediction 의 heatmap 의 차이를 계산하게 된다. 그 계산이 아래의 식. 

 

 하지만 이 gt heatmap을 만들 때 우리는 당연히 사이즈를 일부 줄이게 된다. 그렇기 때문에 발생하는 offset 불일치가 있는데, 이걸 해결하기 위해서 offset을 위한 loss를 따로 또 만들어준다. 즉 아래의 식을 통해서 center의 좌표를 수정수정하는 것이다. 

 

 

(2) bbox 사이즈 예측하기

 

이건 뭐 간단한 regression이다. 다만 여기서 특이한 점은, scaling해서 bbox 사이즈를 예측하지 않고 그냥 그대로의 숫자를 이용했다고 한다. scaling 대신, 람다 값을 통해 이를 조절한다. 

 

(3) 최종적인 식

 

이러하다. 

 

이제 박스의 center도 있고, 가로 세로 길이도 얻었으니 박스 구축해서 object를 predict 하는 건 쉽다. !

 

backbone으로는 hourglass, resnet, dla 등을 쓰고 있다. hourglass는 이용할 때 적절하게 바꾸었다. 

 

 

결과를 보면 사뭇 정확도는 떨어지지만, 속도는 매우 빠르다는 점을 알 수 있다. 정확도만 어떻게 했더라면 더 좋은 모델이었텐데. 그나저나 이런 흥미는 굉장히 흥미롭다! 이것과 유사한 것도 있다. 센터를 잡는 것은 아니고 코너의 2 점을 잡는 모델이다. (좌측 상단과 우측 하단 혹은 좌측 하단과 우측 상단) 이건 CornerNet이라고 하는데 관심이 있다면 추후에 읽어보시길. 

 

 

 

 


 

 

 이건 그 외에도 3D detection이나 pose detection에도 응용이 쉽다고 하는데, 관심이 있는 사람들은 참고해보길. loss에 어떤 term을 추가했는지만 달라지지, 결국은 유사한 흐름이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'딥러닝 > CV 논문' 카테고리의 다른 글

[GAN] pix2pix HD  (0) 2022.02.10
[Classification] VGGNet 요약  (0) 2022.02.10
[SuperResolution] EDRS  (0) 2021.09.29
[Classification]FuCiTNeT  (0) 2021.09.16
[Generation]Generative Adversarial Nets  (0) 2021.08.23

댓글