ML & DL/CV

[CS231n] lecture 02. Image Classification

본 게시물은 2021.01.08. 에 작성되었으며, 블로그를 이전하며 현재 날짜로 등록되었습니다.

0. 이번 강의에서 다루는 개념

  1. Image Classification이 무엇인가.
    • 어려운 점 (Challenges)
  2. Image Classifier의 알고리즘
  3. NN : Neareset Neighbor
  4. Distance Metric
  5. K-NN : K-Nearest Neighbors
  6. Hyperparameters
  7. Curse of dimensionality : 차원의 저주
  8. Linear Classification
  9. Parametric Approach

강의를 들으며 중요한 부분에 대해 정리하고, 개인적으로 부족한 개념에 대해 다른 자료들을 찾아보며 정리했습니다.

1. Image Classification

2-6

Image Classification은 Computer Vision에서 핵심적인 task이다. 이미지를 보고 해당 이미지가 어떤 이미지인지 분류하거나, 무슨 행동을 하는지 설명하는 텍스트를 추출할 수도 있다.
이러한 Image Classification에는 여러 문제가 있다. 문제들을 알아보기 전에, 컴퓨터에서는 image를 어떻게 처리, 확인할까?

2-7

이미지를 컴퓨터에 입력하면 컴퓨터는 0부터 255사이의 수로 표현된 이미지를 보게 된다. 보통은 3차원의 이미지를 확인할 수 있다.
[800, 600, 3]으로 shape을 확인할 수 있으며, 마지막 3은 이미지의 색상을 나타낸다. channel이라고 부르며 RGB 즉, 컬러 이미지일 경우엔 3 channels 로, 흑백의 경우엔 1 channel로 이루어진다.

Challenges for Image Classification

- Viewpoint variation

2-8

보는 관점에 따라 이미지를 나타내는 수, 픽셀이 변하기 때문에 다른 이미지로 인식할 수 있다.

- Illumination
이미지의 밝기, 조명에 의해 분류의 어려움이 있을 수 있다.

- Deformation

2-10

같은 객체(분류 Class)인 경우에도 자세나 모양 등이 다를 수 있다.

- Occlusion
분류할 대상이 가려져 있거나 전체가 보이지 않는 경우가 있다.

- Background Clutter
대상과 배경의 경계가 모호하거나, 비슷한 색상일 경우 분류의 어려움이 있을 수 있다.

- Intraclass variation
같은 종(class)내에서의 변형이 있을 수 있다. 강의에서 예시로 든 고양이라면 고양이의 종이 다를 수 있고, 떡볶이를 분류한다고 하면 즉석떡볶이, 배달떡볶이, 짜장떡볶이 등이 있을 수 있다.

2. Image Classifier의 알고리즘

일반적인 프로그래밍 알고리즘처럼 Image Classification을 한다면 어떨까?

2-15

위 슬라이드처럼 알고리즘을 짤 수 있을 것이다.

  1. 고양이의 특징찾기 e.g. 뾰족한 귀 두개와 입
  2. 특징인 뾰족한 지점들은 모두 코너이다.
  3. 고양이 윤곽선을 따라 코너를 찾는다.
  4. 코너 3개가 발견됐다!
  5. 이것은 고양이다!

하지만 이런 알고리즘은 분류하고 싶은 여러 클래스(e.g. 고양이, 개, 하마, 기린 등)마다 다른 알고리즘을 짜야한다. 게다가 1번 어려움에서 말했던 문제들을 해결하려면 더 더 많은 알고리즘이 필요하다. 확장성이 전혀 없는 방법이다.
이를 해결하기 위해 고안한 Data-Driven Approach를 살펴보자!

  1. Collect a dataset of images and labels
    : 분류할 이미지와, 각 이미지 별로 분류될 정답을 데이터셋으로 모은다.
  2. Use Machine Learning to train a classifier
    : classifier를 학습하기 위해 머신러닝을 사용한다.
  3. Evaluate the classifier on new images
    : 새로운 이미지로 분류해보며 classifier의 성능을 평가한다.

3. NN : Neareset Neighbor

이미지를 분류하기 위해 두 개의 과정을 설계한다.

2-17

학습 데이터와 정답(lables)을 기억하는 train, 테스트 이미지를 예측하는 predict로 나눌 수 있다.
Nearest Neighbor에서는 테스트 이미지와 가장 비슷한 학습 이미지의 정답을 예측한다.

4. Distance Metric

2-20

L1 distance는 test image, training image를 비교해 test image의 정답을 예측하기 위해 사용된다.
슬라이드에서 표현한 것처럼 test image 행렬에서 training image 행렬을 빼준 후에 둘의 차이값에 절대값을 취하고 모두 더한다.
L1 distance를 이용해, predict하기 위한 test image와 모든 training image와의 값을 구한 후 가장 작은 값을 가진 training image의 label을 예측값으로 선택한다.

2-26

이 방법의 시간 복잡도는 어떻게 될까?
train은 O(1), predict는 O(N)으로 학습은 빠르지만 예측이 너무 길다는 단점이 있다.

5. K-NN : K-Nearest Neighbors

2-28

K-Nearest Neighbors은 K개의 가까운 좌표들의 값중 과반수를 해당 이미지의 정답으로 취하는 방식이다. (위 그림의 5가지 색상은 label을 나타낸다.)
예를 들어 label을 알고 싶은 데이터 i가 있다. i주위에 있는 5개의 데이터들의 label이 [노랑, 노랑, 초록, 빨강, 노랑]이라면 노란색이 과반수를 차지하므로 i의 label은 노란색이 된다.
K=1 일 때의 사진을 보면, 초록색 사이의 노랑색이 있거나, 색들의 경계가 들쭉날쭉한 것을 볼 수 있다. 이를 해결하기 위해 K를 3, 5로 늘리게 되면 이러한 부분들이 어느정도 해소되는 것을 볼 수 있다.

2-42

위 그래프는 K의 수에 따른 Accuracy를 보여준다. 그래프에서 보이듯이 K가 늘어난 것이 좋은 결과를 예측한다고 장담할 순 없다. 사진 상의 흰색 부분은 다수결로 결정되지 못해 손실되는 부분이다.

K는 어떤 수로 지정해야 좋을까?

: 강의에서 K를 홀수로만 지정해서 의문이 들었다. 찾아본 결과, 다수결 votiong이 잘 이루어지기 위해서 보통은 K를 홀수로 지정해서 사용한다고 한다.

2-30

위 슬라이드에서 보이는 것은 예측결과이다. 빨간 박스는 오답, 초록 박스는 정답을 맞춘 것이다. K-NN는 40%의 정확도로 좋지 않은 성능을 가진 것을 알 수 있다.

2-31

성능을 보완하기 위해 Distance Metric을 다양화할 수 있다. L1은 원점에서 사각형 위의 모든 점들이 같은 거리를 가지고 있다고 생각한다. L2는 우리가 생각하는 원에 더욱 가까운 형태이다. 두 Distance MEtric간의 차이는 L1이 좌표계의 영향을 받는 다는 것이다. 반면 L2는 좌표계와 아무런 영향이 없다. 따라서 만일 우리가 분류하고자하는 데이터들이 특정할 수 있는 요소를 갖고 있다면, L1을 사용하는 것이 좋다. 데이터들의 요소가 특정할 수 없는 의미를 갖는다면 L2를 사용하는 것이 좋다.

2-32

L1, L2 distance metric을 이용했을 때 차이를 경계 부분에서 확인할 수 있다. L1은 좌표계의 영향을 받아 경계가 보다 부자연스럽고, L2를 사용한 우측 이미지는 더 자연스러운 경계가 만들어졌다.

6. Hyperparameters

같은 데이터라도 L1, L2와 같이 사용하는 distance metric에 따라 다른 결과를 얻을 수 있다. 이처럼 우리가 선택해서 조절하는 요소들을 하이퍼파라미터라고 한다. 예를 들어 K-NN을 사용할 때는, K의 수와 Distance Metric이 하이퍼파라미터가 될 수 있다.
train dataset으로 학습하고, test dataset으로 평가를 하는데, 데이터를 나누는 방법을 선택하는 것도 중요하게 다뤄야할 하이퍼파라미터이다.

2-40

  • Idea #1은 test set을 사용하지 않는다. K-NN에서 K=1로 설정하는 것이 그 예 중 하나인데, 이렇게 학습하게 되면 train dataset에 대해서만 완벽하게 학습되고 새로운 데이터에 대한 성능이 나오지 않게 된다.
  • Idea #2는 train, test로 나누는 것이다. 새로운 데이터에 대한 성능을 평가할 수 없다는 것이 단점이다.
  • Idea #3는 #2를 보완하기 위해 train dataset에서 일부를 validation set으로 사용한다. validation으로부터 얻어진 weight는 모델에 전혀 영향을 주지 않으며, 오로지 test전에 성능 평가척도로 사용된다.
    2-41
  • Cross-Validation : test를 제외한 dataset을 fold로 나눈다. 차례대로 하나의 fold를 validation으로 사용하면서, 전체 결과의 평균을 내는 방법이다. 5개의 fold로 나눴다면 5차례 학습을 진행한 후 평균을 낸다. 교차검증은 작은 데이터셋에서 유용하지만, 연산량이 늘어나기 때문에 데이터를 많이 사용하는 딥러닝에서는 잘 사용되지 않는다.

7. Curse of dimensionality : 차원의 저주

K-NN의 단점

2-43

같은 사진이지만 boxed, shifted, tinted등의 변형을 준 사진들이다. 하지만 네 장 모두 같은 L2 Distance를 갖고 있다. 이를 통해 L2 Distance가 제대로 된 정보를 주지 않는 것을 알 수 있다.

차원의 저주

2-44

학습 레이어가 많아지면 이미지의 차원이 늘어나게 된다. 차원이 늘어나게 되면 필요한 데이터의 수는 기하급수적으로 늘어나게 된다. 데이터가 적은 상황에서 차원의 저주를 마주치면, 학습 층이 깊어질 수록 학습할 수 있는 데이터(정보)가 부족하고, 이는 성능 저하로 이어진다.
차원의 저주를 해결하기 위해서는 차원을 너무 많이 증대시키지 않고, 데이터를 최대한 많이 학습에 사용하는 방법이 있다.

8. Linear Classification

2-47

Neural Network는 여러개의 linear classifier로 구성되어있다. 마치 위 슬라이드의 블록처럼! 위에서 설명한 차원의 저주를 피하기 위해 이 블록을 잘 쌓아햐하고, 블록을 어떻게 쌓는 지 조절하는 것 또한 6번에서 설명한 하이퍼파라미터에 해당된다.

9. Parametric Approach

2-54

linear classifier는 Parametric Model의 가장 단순한 형태이다. 위의 수식에서 우리가 Input으로 넣는 고양이 사진은 x이다. 3차원으로 되어있는 이미지를 1차원으로 만들어 계산한다. W는 Weights 혹은 Parameters라고 부른다. (10, 3072)로 나와있는데 label(class)의 갯수인 10과 input data 3072이다. K-NN에서는 학습할 때마다 모든 이미지를 불러와 정답과의 거리를 비교했지만, 이 과정을 Weights로 대신할 수 있다. W는 dataset의 정보를 요약한 가중치로, 이를 통해 계산을 할 수 있기 때문이다. 이렇게 W와 x를 곱하고 bias를 더하는 것이 linear classification이다. bias는 정보가 너무 한쪽으로 편향되는 것을 막기 위해 적용하는 장치이다. 정보가 편향되면 train dataset에만 완벽하게 맞는 모델이 될 것이고 이런 모델은 test에서의 성능이 현저히 떨어지는 overfitting(과적합)이 일어날 수 있기 때문이다.

2-55

Linear classification의 계산을 시각화하였다. 이렇게 계산된 score는 높을 수록 해당 label이라고 예측하는 것이다. 위의 모델은 제대로 오답을 예측하고 있는 것을 알 수 있다.

2-57

Linear Classification의 단점

Linear Classification은 각 class당 하나의 template만 학습한다는 단점이 있다. 만약 한 class의 모양의 variation이 있다면 모든 variations의 평균을 계산한 후에 그 평균 하나로만 분류를 한다. 여기서 말하는 template은 데이터의 특징이라고 말할 수 있다. 예를 들어 '말'을 분류한다고 할 때, 말에 해당하는 데이터들은 각자 갖고 있는 특징이 다를 것이다. 어떤 말은 밥을 먹고 있을 것이고, 옆모습 혹은 앞모습 등 보여지는 위치가 다를 수 있다. 말의 색상도 다 다를 수 있다. 이러한 특징들을 모두 학습하는 것이 아닌 이들의 평균을 계산해 그 하나의 template으로 학습하는 것이다.

2-58

Linear Classifier는 이렇게 선으로 데이터를 구분한다. multi class를 분류할 때는 하나의 class 당 하나의 classifier가 해당 class와 다른 모든 class를 구분한다. 그렇기 때문에, 선형으로 풀 수 없는 문제들은 해결할 수 없다는 단점이 존재한다.

2-59

위 슬라이드처럼 생활에서 우리가 해결하고자 하는 문제의 대부분은 비선형 문제들이다. 이런 문제들을 어떻게 풀어내는지는 다음 강의에서 설명될 것 같다!

반응형