• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

SSD의 이해02 에서 Multi Scale Feature Map의 detection에 대한 질문

21.07.25 17:25 작성 조회수 648

0

Multi Scale Feature Layer를 설명하시며
피쳐 맵이 작을수록 큰 object들에 대한 detection이 가능하고
피처 맵이 클 수록 작은 object들에 대한 detection이 가능하다고 하셨습니다.
위에 말에서 왜 그러한지에 대해서 이해가 가질 않아서 추가 설명을 부탁드리고 싶습니다.
강의 내용을 이해하기로는 작은 피처맵일수록 이미지의 핵심적인 특징을 가진다고 하신부분과 연관 되는 것 같습니다.
제가 이해가 안되는 부분은 이미지의 핵심적인 특징들을 작은 피처맵들이 갖는다고 해서 detection할 때는 어떻게, 왜 더 큰 object들을 detection이 가능한지 이해가 가지 않습니다.
머리속으로 이해가 가기를 아직 conv층을 많이 안거쳐서 더 큰 피처맵일수록 피처맵 크기가 크기때문에 더 큰 object들을 detection할 것 같은데 conv층을 더 많이 거쳐서 더 구체적인 정보를 가진 작은 피처맵일수록 더 큰 object들을 detection할 수 있다고 하셔서 어떻게 그럴 수 있는지 혼동이 됩니다.
그리고 부가적으로 계속 SSD의 이해 03의 수업을 들으며 앞에 질문 내용과 연관이 되어 덧붙여 질문하여 봅니다.
위의 그림에서 강아지를 detect하기 위해서 4x4 feature map에서, 즉 더 작은 feature map에서 더 큰 object를 detect할 수 있었습니다.
이는 말씀해주신 강의 내용과 일맥상통하는데요,
저에게 이해가 안가는 것은 이는 단순히 (a)의 이미지 사진을 4x4로 나누어서 anchor box를 통해 object를 detect 한 것이지,
여러번의 conv층을 거쳐서 나온 4x4의 feature map에서 anchor box를 통해 object를 detect한 것이 아닌 것 같아서
어떻게 두 과정이 같을 수 있는지 잘 이해가 가질 않습니다.. 왜냐하면 제가 이해하기로 4x4의 feature map은 8x8 feature map보다 더욱 두터운 channel를 가지면서 이미지의 더욱 세밀한 특징들을 추출해낸 feature map이라고 생각하기 때문입니다.

답변 1

답변을 작성해보세요.

0

안녕하십니까, 

말씀하신 부분이 일견 논리가 있으십니다. 

한가지 말씀 드리고 싶은 것은 아래 부분에서 적어주신 '4x4 feature map은 더욱 세밀한 특징을 추출한것이 아니라 보다 추상적이고, 핵심적인 feature를 추출한 것입니다. 

왜냐하면 제가 이해하기로 4x4의 feature map은 8x8 feature map보다 더욱 두터운 channel를 가지면서 이미지의 더욱 세밀한 특징들을 추출해낸 feature map이라고 생각하기 때문입니다.

그러니까 Conv 연산을 계속 적용해서 38x38 feature map -> 19x 19 -> 19x19 -> 10x10 -> 5x5 -> 3x3 으로 Conv 연산을 수행해서 최종적으로 만들어진 3X3 Feature map은 매우 추상적이고 핵심적인 feature 위주입니다. 세밀한 edge, 음영, 형태 부분은 많이 사라졌지만, 이미지를 판별하기 위한 핵심 feature를 가지고 있으며, 이미지 판별에 방해가 되는 세밀한 잡음등은 없어지고, 핵심에 집중하는 feature map을 만듭니다. 

그런데 3x3 정도로 작은 feature map에 object를 Detection하려면 문제가 생깁니다. 작은 object 들이 아예 feature map에서 특징이 사라지거나, 해당 feature map에 특징이 있더라도, 전체 이미지 대비 object 크기가 작기 때문에 anchor box와 해당 object의 ground truth box가 IOU가 작아서 Detection시에 무시가 되기 쉽습니다. 

그래서 object detection은 일반적으로 이미지 크기를 키우거나 최종 feature map 크기를 너무 작게 가져가지 않습니다.  그런데 SSD 는 서로 다른 Feature map에서 서로 다른 scale로 object를 Detection합니다. 가령 19x19에는 작은 object라고 하더라도 상대적으로 3X3 에 비해서는 해당 object와 Ground truth가 겹칠 영역이 크기 때문에 보다 잘 Detect가 될 수 있습니다. 

물론 이렇게 상대적으로 큰 feature map을 기반으로 할때도 문제가 있습니다(어떻게 보면 SSD의 치명타이기도 합니다만). Conv 채널 연산이 비교적 덜 적용된 초반의 대형 feature map은 작은 object들은 상대적으로 잘 도출하더라도 많은 conv 채널 연산이 적용된 작은 feature map에 비해서 핵심적인 feature들을 제대로 도출하지 못하기 때문에 예측 성능이 떨어집니다. 

나중에 Yolo, Retinanet 설명드릴때 다시 말씀 드릴테지만, 그래서 FPN(Feature Pyramid Network)이 만들어 집니다. FPN은 SSD와 많이 유사하지만, 상위 feature map의 값을 하위 feature map으로 전달하여 하위 feature map의 예측 정확도를 키우게 됩니다. 

감사합니다.