• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

해당 강의까지 듣고 Faster RCNN에 anchor box에 대한 내용 이해점검과 질문

21.07.22 19:39 작성 조회수 163

1

< 강의를 이해한 내용 >

anchor box는 3가지의 사각형 형태, 3가지의 다른 크기로 이루어져 있다.

즉, anchor box는 9개의 다양한 사각형을 이용하여 이미지의 해당 부분의 obj 존재여부를 판단해내는 것이다.

anchor box는 원본 이미지에 적용되는 것이 아니라 Feature Map에 적용되는 것이다.

Feature Map에 가로 x 세로의 수만큼 anchor box가 생기게 된다.

여기서 anchor box는 총 9가지의 box로 이루어져 있으므로 9개의 depth(차원)이 적용되어

총 생기는 anchor box는 가로 x 세로 x 차원(9) 인 것이다.

anchor box는 Feature Map에 생기게 되는데,

학습을 위해 3x3 conv 층을 통과하고, 빠른 학습과 정보 압축을 위해서 1x1 conv 층을 통과한다.

이때 9개의 차원으로 압축되게 되는데, 9개로 압축되는 이유는

anchor box가 3가지의 형태와 3가지의 크기로 총 9개의 box로 이루어져 있기 때문이다.

1x1 conv층을 통해 압축까지 된 Feature Map에 anchor box를 그리게 되면 (가로 x 세로 x 차원)의 수만큼 anchor box가 나오게 되는 것이다.

질문

 - 마치 conv층의 필터를 정의하듯, anchor box의 각 box별 모양과 크기를 정해주어야 할텐데 anchor box의 정의는 어느 부분에서 하나요?

 - Feature Map의 각 9개의 차원별로 각 box가 적용되는 것이 아니라 각 차원별로 모두 9개 다양한 크기의 box가 적용되는 것이 맞나요?

 - 만약 그렇다면 굳이 압축 차원이 9개여야 할 필요가 있을까요? 1x1 conv층에서 9개의 차원과 anchor box 구성의 box수는 무관한 것으로 느껴집니다.

답변 3

·

답변을 작성해보세요.

0

Q. 흐름에 대해서 명확하게 알고 이해하고 싶은데 (40x50x9) 피처맵에 앵커박스가 매핑이 먼저 된 이후에, conv 3x3 과 conv 1x1을 거치는 것인가요? 아니면 먼저 conv층들을 모두 거친 이후에 앵커박스가 피처맵에 매핑이 되는 것 인가요? 

=> 40x50x9는 conv 3x3-> conv 1x1 을 적용해야 만들어집니다. 40x50x516 피처맵에 conv 3x3-> 그리고 filter수가 anchor 수(classification 시) 또는 anchor*4(bounding box regression시 )conv 1x1 을 거친 후에 만들어진 40x50x9 또는 40x50x36 피처맵에 anchor 매핑합니다. 

Q. 해당 강의에서 앵커박스는 9개의 박스(모양3가지 x 크기3가지)로 구성이 되어있습니다. 그리고 (40x50x9) 피처맵에 앵커박스가 40x50x9개 매핑 된다고 하셨습니다. 즉, 피처맵의 픽셀마다 앵커박스가 매핑이 되는 것인데, 이때 픽셀마다 앵커박스가 매핑된다는 뜻은 앵커박스를 구성하는 9개의 박스가 픽셀마다 매핑이 된다는 것인가요?  

=> 네, 피처맵의 개별 픽셀마다 9개의 앵커박스가 만들어 집니다.  

0

jsm9358님의 프로필

jsm9358

질문자

2021.07.23

답변 감사합니다.

Anchor box가 이해가 생각보다 쉽지 않네요.. 다시 질문 드립니다

 

Q. 흐름에 대해서 명확하게 알고 이해하고 싶은데 (40x50x9) 피처맵에 앵커박스가 매핑이 먼저 된 이후에, conv 3x3 과 conv 1x1을 거치는 것인가요? 아니면 먼저 conv층들을 모두 거친 이후에 앵커박스가 피처맵에 매핑이 되는 것 인가요? 

Q. 해당 강의에서 앵커박스는 9개의 박스(모양3가지 x 크기3가지)로 구성이 되어있습니다. 그리고 (40x50x9) 피처맵에 앵커박스가 40x50x9개 매핑 된다고 하셨습니다. 즉, 피처맵의 픽셀마다 앵커박스가 매핑이 되는 것인데, 이때 픽셀마다 앵커박스가 매핑된다는 뜻은 앵커박스를 구성하는 9개의 박스가 픽셀마다 매핑이 된다는 것인가요?  

0

안녕하십니까,

강의를 이해한 내용은 대략적으로 맞는데, 두번째, 세번째 질문을 제가 이해하지 못했습니다. 

먼저 anchor 크기는 anchor scale로 128, 256, 512 사이즈로 주어집니다. 여기에 ratio 1:1, 1:2, 2:1 크기가 적용됩니다. 이 크기를 그냥 정의하면 됩니다. 그리고 이 크기대로 이미지 사이즈 대비 feature map 사이즈로 anchor도 매핑 됩니다. 

두번째, 세번째 질문은 잘 이해를 못했기에 재정리 부탁드립니다. RPN의  1x1 Conv에 대해서 다시 말씀드리자면, 

먼저 앞에서 1x1 Conv 적용을 압축 차원이라고 말씀하셨는데, 여기서 약간의 이해(?)가 어긋난것 같습니다. 

feature map size가 40x50 그리고 channel로 512가 있다면(즉 40x50x512)가 있다면 RPN은 이 feature map에 conv 연산을 적용해서 각 anchor별로 object가 있는지, 있다면 위치가 어딘지를 찾아냅니다.

Deep learning network은 이런 경우 보통 dense layer를 붙입니다. 가령 이미지 classification일 경우 class의 갯수에 해당하는 neuron을 가지는 dense layer(클래스가 10개라면 10개의 neuron을 가지는 dense layer)를 붙이고, 연속형값을 출력하는 회귀의 경우에는 1개의 neuron을 가지는 dense layer를 붙입니다. 그런데 Dense layer는 유연성이 좀 떨어집니다. 그래서 Dense를 사용하지 않고 1x1 Conv를 바로 붙여서 결과를 가져 옵니다. 

이때 RPN Classification의 경우 1x1 conv의 filter개수는 anchor 수(즉 9개) 만큼 가져옵니다.(object인지 아닌지는 softmax를 적용하면 2x anchor 수가 되지만 sigmoid를 적용하면 anchor수임). 왜냐하면 classification이긴 한데, anchor별로 classification을 하기 때문에 dense가 아닌 1x1 conv를 적용하고 anchor 갯수만큼 filter를 적용해서 그 결과로 classification을 하는 것입니다. 물리적으로는 채널을 압축하지만 메커니즘적으로는 classification을 수행하는 것입니다. 

RPN Box regression도 마찬가지입니다. 1x1 conv를 적용해서 regression을 수행하는 것입니다. 다만 anchor별로 box좌표를 추출하므로 1x1 conv의 filter수가 4*anchor 수만큼 될 뿐입니다.