이미지 내에서 물체의 위치와 그 종류를 찾아내는 것.
이미지 기반의 문제를 풀기 위해서 다양한 곳에서 필수적으로 사용됨.
(자율 주행에서 차량, 사람 탐지, 얼굴 인식 등)
주어진 이미지 안의 물체가 무엇인지 알아내는 것. 한 가지 물체를 찾기 때문에 가장 큰 물체를 알아내려고 함. 딥러닝의 가장 단순한 형태.
이미지 안의 물체가 어느 위치에 있는지 찾아내는 것. Bounding Box라는 사각형 형태로 위치를 나타냄.
위치가 담긴 사각형을 (min_x, min_y, max_x, max_y) 또는 (min_x, min_y, width, height) 형태로 나타냄.
이미지 안의 물체가 무엇인지, 어디에 있는지 모두 알아내는 것.
하나도 가능 but 보통 여러 물체를 찾아냄.
다만 위 이미지처럼 강아지가 두 마리면 강아지1, 강아지2처럼 구분하기도 하고 구분하지 않기도 함.
주어진 이미지 안의 물체의 영역을 알아내는 것.
사각형으로 나타내는 Localization이나 Detection과 다름.
실제 영역을 표현해야 하기 때문에 물체의 윤곽선을 따라 불규칙한 선이 됨.
이렇게 표현된 영역을 Object Mask라고 함.
(원본 이미지와 같은 크기의 데이터에 모든 값을 0으로 초기화 한 후, 물체가 있는 좌표의 데이터만 1, 2, ... 등으로 mask를 씌우기 때문)
강아지가 두 마리인 경우 별도로 구분하지 않음.
Semantic Segmentation과 동일 but 강아지가 두 마리면 별도로 구분.
물체의 위치를 사각형으로 정의, 이를 꼭짓점의 좌표로 표현하는 방식.
개의 점을 표현하는 방식은 두 가지.
1) 전체 이미지의 좌상단을 원점으로 정의, 바운딩 박스의 좌상단 좌표와 우하단 좌표 두 가지 좌표로 표현.
2) 이미지 내의 절대 좌표로 정의X, 바운딩 박스의 폭과 높이로 정의.
= 교차하는 영역을 합친 영역으로 나눈 값
면적의 절대적인 값에 영향을 받지 않도록 두 개 박스의 차이를 상대적으로 평가하기 위한 방법
빨간색 영역 Ap는 예측(prediction)과 정답 A
gt(ground truth)의 교집합인 영역이고 회색 영역이 합집합인 영역일 때, IoU는 빨간 영역을 회색 영역으로 나눠준 값
갑분퀴즈
Q2. 정답(Ground truth)와 예측값의 영역이 일치하는 경우는 IoU가 몇이 될까요?
A2. 1(합집합인 영역과 교집합인 영역이 동일해짐)
물체의 영역을 숫자로 표현.
Classification 모델을 만들 때:
convolution layer로 구성된 백본 네트워크(backbone network)를 통해 이미지 특성을 추출, 그 다음 클래스 간 분류를 위한 fully connected layer를 추가.
Classification 문제를 풀 때는 표현해야 할 클래스에 따라 최종 결과 노드의 개수가 정해진다.
이제 localization을 위해 박스의 위치를 표현할 output 노드 4개를 convolution layer로 구성된 백본 네트워크 다음에 추가해야 함.
pc: 물체가 있을 확률, 0이면 배경.
c1, c2, c3: 물체가 있을 때 각각 클래스 1, 2, 3에 속할 확률
bx, by: 좌측 상단의 점을 표현하는 x축과 y축의 좌표
bh, bw: 바운딩 박스의 높이와 폭
Q.위 이미지에서 object detection을 위한 target label y를 직접 만들어보기
Ground Truth가 되는 bounding box의 좌표(position)은 위 그림과 같이 (x1, y1, x2, y2)이다.
A. Bounding box가 x1, y1, x2, y2이고 image의 크기가 w, h 일때, Target label y=[1, x1/w, y1/h, (y2-y1)/h, (x2-x1)/w]
1은 물체가 있음을 의미.
c1, c2, c3는 없음(문제에서 클래스 1개니 고려할 필요 없다고 함)
위에서 계산한 localization은 일정한 크기의 입력 이미지에 어떤 물체가 있는지 확인하고 그 위치를 찾아내는 방법.
큰 이미지에서 여러 물체를 찾으려면?
슬라이딩 윈도우(sliding window)
전체 이미지를 적당한 크기의 영역으로 나눈 후, 각각의 영역에 대해 이전 스텝에서 만든 Localization network를 반복 적용해 보는 방식.
원본 이미지에서 잘라내는 크기를 윈도우 크기로 하여, 동일한 윈도우 사이즈의 영역을 이동시키면서(sliding) 수행해 주는 방식.
(컨볼루션(Convolution)의 커널이 슬라이딩하는 것처럼 이해)
Q. Sliding window방식으로도 물체를 찾아내는데는 문제가 없는데 이렇게 안하는 이유는?
A. 매우 많은 갯수의 window 영역에 대해 이미지의 localization을 돌아가면서 하나씩 진행해야함. 시간이 오래 걸림. 또한 물체의 크기가 다양해지면 단일 크기의 window로 이를 커버할 수 없으므로 처리속도 문제가 더욱 심각해짐.
Sliding window의 단점인 연산량과 속도를 개선하기 위한 방법: Sliding window 대신 convolution을 사용.
14X14 크기의 입력에 대해 convolution을 수행했을 때 최종적으로 얻어지는 1X1 사이즈의 출력을 sliding window 영역의 localization 결과라고 해석한다면, 거꾸로 14X14 크기의 receptive field가 바로 sliding window 영역이 되는 효과.
그러나 sliding window로 localization을 수행하는 방식처럼 순차적으로 연산이 실행되는 게 아니라 병렬적으로 동시에 진행되므로 convolution은 속도 면에서 훨씬 효율적
차 사이에 사람이 있음. 한 칸에 한 가지 물체를 감지하기 때문에 만약 모두 차를 잡게 된다면 사람을 놓친다.
앵커 박스(anchor box)는 서로 다른 형태의 물체와 겹친 경우에 대응할 수 있음.
일반적으로 차는 좌우로 넓고 사람은 위아래로 길쭉합니다. 따라서 사람의 형태와 유사한 형태와 차와 유사한 형태의 가상의 박스 두 개를 정의
차와 사람 클래스에 대해서 물체를 감지하기 위해서,
1개 그리드 셀에 대한 결괏값 벡터가 물체가 있을 확률,
2개의 클래스,
바운딩 박스 4개
총 7개의 차원을 가지게 된다.
따라서 입력값이 16x16 일 때, 이 그림을 2x2로 총 4칸의 그리드로 나누었다고 하면, 결괏값의 형태는 7개의 채널을 가져 2x2x7이 된다.
이때 7개의 차원을 한 벌 더 늘려주어 한 개의 물체의 수를 늘려준다. 앵커 박스가 두 개가 된다면 결괏값의 형태는 2x2x14가 된다.
Anchor box #1, 사람을 위해 설정한 크기
Anchor box #2, 차를 위해 설정한 크기
그림 가장 우측에는 차만 있는 경우 사람을 담당하는 Anchor box #1의 pc가 0이 되고 차를 담당하는 Anchor box #2는 p
c는 1이 되도록 클래스와 바운딩 박스를 할당
인식 범위 내에 물체가 있고 두 개의 앵커 박스가 있는 경우 IoU가 더 높은 앵커 박스에 물체를 할당
바운딩 박스: 모델이 추론한 물체의 위치가 표현된 박스. 혹은 물체 위치의 실제값으로 데이터셋에 준비된 라벨일 수도 있습음. 물체마다 한 개 존재
앵커 박스: 모델이 추론해야 할 위치의 후보들. 이미지의 모든 영역을 뒤덮을만큼 다양한 앵커 박스를 만들어서 그중에 물체가 있을 확률이 가장 높은 앵커 박스를 물체의 바운딩 박스라고 예측. 앵커 박스를 사용하려면 학습 데이터의 라벨도 앵커 박스 형태로 바꿔 주어야 합니다.
2x2 또는 더 큰 Grid cell에서 물체가 있는지에 대한 결과를 받게 되면 매우 많은 물체를 받게 됨.
Anchor box를 사용하지 않더라도 2x2격자에 모두 걸친 물체가 있는 경우 하나의 물체에 대해 4개의 Bounding box를 얻게 됨.
이렇게 겹친 여러 개의 박스를 하나로 줄여줄 수 있는 방법 중 하나가 NMS(non-max suppression).
NMS는 겹친 박스들이 있을 경우 가장 확률이 높은 박스를 기준으로 기준이 되는 IoU 이상인 것들을 없앰.
IoU를 기준으로 없애는 이유는 어느 정도 겹치더라도 다른 물체가 있는 경우가 있을 수 있기 때문.
이때 Non-max suppression은 같은 class인 물체를 대상으로 적용하게 됨.
Convolutional implementation of Sliding Windows
Anchor box
Non-max suppression(NMS)
-Convolution으로 슬라이딩 윈도우를 대신함으로써 여러 영역에서 Object localization을 병렬로 수행할 수 있게 되어 속도 측면의 개선이 있었음.
-Anchor box는 겹친 물체가 있을 때, IoU를 기준으로 서로 다른 Anchor에 할당하도록 하여 생긴 영역이 다른 물체가 겹쳤을 때도 물체를 검출할 수 있도록 할 수 있도록 함.
-마지막으로 Non-max suppression은 딥러닝 모델에서 나온 Object detection 결과들 중 겹친 결과들을 하나로 줄이면서 더 나은 결과를 얻을 수 있게 함.