우노
[DL] Object Localization (객체 위치 식별) 본문
- Object Detection을 구성하기 위해서는, 먼저 Object Localization을 알아야 합니다.
- 따라서, Object Localization이 무엇을 의미하는지부터 알아보도록 하겠습니다.
Object Localization
- 위와 같이 이미지가 주어졌을 때, 이미지를 car라고 분류하는 것을 'Image classification'이라고 합니다.
- 이 때, car가 이미지 속 어디에 있는지까지 알아내는 것을 'Classification with localization'이라고 하며
- localization을 사용해, 이미지에서 하나의 객체가 아닌 여러 객체를 인식하는 것을 'Detection'이라고 합니다.
Classification with localization
- 이미지가 주어졌을 때, Classification과 localization을 동시에 처리 할 수 있는 방법에 대해 알아보겠습니다.
- 우선, 우리는 Image classification에는 익숙합니다.
- Image classification은 위 그림과 같이
- 여러 Layer를 가진 ConvNet에 Image를 입력하면, Softmax를 적용한 Output Vector를 통하여
- 이미지를 사용자가 정한 객체 카테고리(보행자, 자동차, 오토바이, 배경 등)로 분류할 수 있었습니다.
- 이 때, Output Vector에 분류 뿐만 아니라 자동차의 위치까지 출력하고 싶다면 어떻게 해야할까요?
- 이를 위해서는, Output Vector에 Bounding Box의 좌표를 추가해주면 됩니다.
- Bounding Box란 이미지 내의 객체 경계선을 의미합니다.
위 그림처럼, Bounding Box의 좌표는 bx, by, bh, bw로 이루어져있으며
이미지 좌측 상단의 좌표를 (0,0) 우측 하단의 좌표를 (1,1)로 정하여 계산합니다.
- bx : bounding box의 중심점 x좌표
- by : bounding box의 중심점 y좌표
- bh : bounding box의 높이
- bw : bounding box의 너비
- 위 예시에서는 (bx, by, bh, bw)를 (0.5, 0.7, 0.3, 0.4)라고 할 수 있습니다.
따라서, 신경망의 Traing Set에 기존의 Class Label 뿐만 아니라 Bounding Box 좌표 4개를 추가해 Trainging한다면
지도학습을 통해 Classification과 localization을 동시에 예측할 수 있게 됩니다.
Target Label y 정의
- 따라서, Target Label y는 Class Label(c1, c2, c3) 과 Bounding Box(bx, by, bh, bw) 로 구성 되어야 합니다.
- 구체적으로 보면, 위 예제를 기준으로 [Pc, bx, by, bh, bw, c1, c2, c3]가 됩니다.
- Pc (Probability of Class) : "객체가 있는가?"를 의미합니다.
- Pc = 1이면 Object가 존재한다는 뜻이며
- Pc = 0이면 Object가 없는 background라는 뜻입니다.
- bx, by, bh, bw : Bounding Box 의 좌표
- c1, c2, c3 : Class1(Pedestrian), Class2(Car), Class3(Motorcycle)
- Pc (Probability of Class) : "객체가 있는가?"를 의미합니다.
- 하지만, 우리는 위에서부터 한 개의 이미지에 한 개의 Class(Car)만 있다고 가정하고 있기 때문에, Class는 오직 1개만 사용됩니다.
Target Label y 예시
위에서 정의한 Target Label y를 이용하여 예를 구성해 보겠습니다.
첫 번째로, Object가 있는 왼쪽 이미지를 input X로 받았을 때, y = [1, bx, by, bh, bw, 0, 1, 0] 으로 구성할 수 있습니다.
- 먼저, Class2(Car)에 해당하는 Object가 있기 때문에,
- Pc = 1 이 되고, Class2 = 1 이 되며 나머지 Class는 0이 됩니다.
- 그 다음으로는, Object의 Bounding Box 좌표(bx, by, bh, bw)를 추가합니다.
두 번째로, Object가 없는 오른쪽 이미지를 input X로 받았을 때, y = [0, ?, ?, ?, ?, ?, ?, ?] 으로 구성할 수 있습니다.
- 이미지에 Object가 없기 때문에 Pc = 0 이 되고 나머지 원소는 어떤 값이 와도 의미가 없습니다.
따라서, Training set에서는 Object가 있는 이미지와 없는 이미지를 위와 같은 방법으로 Labeling 할 수 있습니다.
Loss Function
마지막으로 Loss Function을 정의해보겠습니다.
- Loss Function은 대표적으로 Squared Error가 사용됩니다.
[Pc, bx, by, bh, bw, c1, c2, c3] 는 [ y1, y2, y3, y4, y5, y6, y7, y8 ] 로 표현되며
Loss를 구하는 방식은 객체 존재 여부에 따라 다릅니다.
객체가 존재한다면, 즉 y1 = 1 이라면 y1 ~ y8까지 모든 원소에 대한 Squared Error를 구합니다.
하지만, 객체가 존재하지 않는다면, 즉 y1 = 0 이라면 y1 값만 필요하므로 오직 y1 원소에 한하여 Squared Error를 구하면 됩니다.
실제 사용할 때는, loss function으로 Cross Entropy와 같은 log like feature를 사용할 수 있으며 Squared Error를 사용해도 무방합니다.
Pc의 경우 0 / 1 두 가지 값 중 하나를 예측하는 것이므로 logistic regression을 사용해도 됩니다.
'AI > Deep Learning' 카테고리의 다른 글
[DL] Object Detection (Sliding Windows, YOLO) (1) | 2021.02.10 |
---|---|
[DL] Landmark Detecting (1) | 2021.02.09 |
[DL] Convolution, Padding, Stride, Pooling in CNN (1) | 2021.02.03 |
[DL] LeNet-5, AlexNet, VGG-16, ResNet, Inception Network (1) | 2021.02.03 |
[DL] Transfer Learning(전이학습)이란? (3) | 2021.01.27 |