오늘의 인기 글
최근 글
최근 댓글
Today
Total
12-02 16:28
관리 메뉴

우노

[DL] Object Localization (객체 위치 식별) 본문

AI/Deep Learning

[DL] Object Localization (객체 위치 식별)

운호(Noah) 2021. 2. 9. 13:07
  • 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)
  • 하지만, 우리는 위에서부터 한 개의 이미지에 한 개의 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을 사용해도 됩니다.

Comments