[CS231n/#02] Image Classification

2023. 3. 19. 19:26AI Study/CS231n

2강에서는 이미지 분류에 대해서 다루고 있다.

 

이미지 분류는 컴퓨터에게 어려울 수 있는데, 어렵게 하는 요인으로는 다음과 같다.

▪️ Semantic gap : 컴퓨터는 우리가 보는 이미지를 0~255 사이 숫자의 픽셀로 본다.

▪️ Viewpoint variation : 카메라가 이동하면 모든 픽셀 값이 바뀌게 된다.

▪️ Image illumination : 조명에 따라 달라지는 이미지

▪️ Deformation

▪️ Occlusion

▪️ Background clutter : 배경이랑 물체랑 색깔이 비슷해서 이미지를 분류하기 어려워짐

▪️ Intraclass variation


📌 Data-Driven Approach

1.     이미지와 레이블의 데이터를 모은다.

2.     머신러닝을 사용하여 분류기를 훈련시킨다.

3.     새로운 이미지들을 이용하여 분류기의 성능을 평가한다.

 

CS231n 2강 슬라이드

위 이미지에서 볼 수 있듯이 data와 해당 데이터의 레이블을 학습(train) 후 이를 바탕으로 새로운 이미지들의 레이블을 예측(predict)한다.


📌 Distance Metric

 

Distance Metric으로 이미지를 비교할 수 있다. L1 distance, L2 distance 두 가지 방법에 대해서 강의는 다루고 있다.

아래 슬라이드는 L1 distance에 대한 내용을 담고 있다.

 

CS231n 2강 슬라이드

L1 distance는 단순히 두 이미지의 같은 위치의 픽셀 값의 차이를 구하여 이 차이 값들을 모두 더하는 방식으로 구해진다.


📌 Nearest Neighbor Classifier

 

🔸 K-Nearest Neighbors

CS231n 2강 슬라이드

- 가장 가까운 K개의 포인트를 비교하여 가장 많이 속하는 것으로 결정한다.

- K값이 커질수록 결정 경계(decision boundary)가 smooth해지는 것을 확인할 수 있다.

- 흰색의 경우 neighbor가 애매한(?), 없는 경우를 의미한다.

 

 

🔸 K-Nearest Neighbors : Distance Metric

CS231n 2강 슬라이드

L1의 경우는 coordinate가 바뀌면 frame이 달라지는 특징이 있다.

반면 L2의 경우에는 coordinate가 바뀌어도 항상 원이다.

 

만약 벡터 안의 개별 엔트리들이 테스크를 위한 특정 의미를 가지는 경우에는 L1을 이용하는 것이 더 적합할 수 있다.

그러나 특정 공간의 generic vector이거나 다른 요소, 의미 등을 제대로 알지 못하는 경우에는 L2를 사용하는 것이 낫다.

(정리하자면 보통은 L2를 사용하는데, 특정 의도를 가진 경우에는 L1을 사용하는 것이 더 낫다 이런 의미인듯..?)


📌 Hyperparameter

▪️ training을 하는 과정에서 우리가 임의로 지정할 수 있는 parameter를 hyperparameter라고 한다.

▪️ K-NN의 경우에는 K값과 distance metric(L1, L2)은 우리가 training할 때 값을 임의로 정할 수 있으므로 하이퍼파라미터이다.

 

🔸 Setting Hyperparameters

 

▪️ 가장 좋은 방법은 train, test ,validation data로 나눠서 hyperparameter 값을 정하는 것이다.

CS231n 2강 슬라이드

▪️ Idea #1 

- training에 사용하는 데이터로 하이퍼파라미터 값을 정하는 것이므로 training data에 오버피팅된다.

- 항상 K = 1이 될 것이다. (100% training data와 일치하게 되는 값)

 

▪️ Idea #2

- test data에서 가장 잘 맞는 값을 K값으로 설정하는 경우이다.

- 새로운 데이터데서도 제대로 작동할 지에 대해서 알 수 없음, 성능을 제대로 파악하기 어렵다.

 

▪️ Idea #3

- validataion을 기준으로 K값으로 설정 후 test data로 성능까지 측정할 수 있으므로 새로운 데이터들에 대해서 대략 어느 정도의 성능인지 알 수 있다!

 

 

🔸 Cross - Validation

CS231n 2강 슬라이드

▪️ 적은 데이터에서 유용하게 쓰인다.

▪️ K값을 정한 후 각자 fold validation 바꿔가면서 성능을 측정한 후 평균 값을 최종 성능으로 평가한다.

 

 

🔸 k-NN 단점

▪️ K-NN은 이미지에서 쓰이지 않는다.

▪️ 테스트 시간이 매우 오래 걸린다.

▪️ 차원의 저주 : dimension이 하나씩 증가할 때 exponential growth

 

▪️ 그리고 distance metrics on pixels are not informative, 아래 슬라이드 사진에서 오른쪽 3개의 사진과 original 사진의 L1 값이 같은 값을 가진다.

CS231n 2강 슬라이드

 


📌 선형 분류(Linear Classification)

🔸 Parametric Approach

CS231n 2강 슬라이드

 

2개의 구성요소로 이루어져 있다.

x:인풋, W:가중치

 

▪️ 결과는 10class에 대한 점수가 나오고 가장 높은값으로 분류하게 된다.

▪️ Bias의 경우 data independent (data가 불균형할 때 발생하는 문제를 컨트롤하기 위한 것)

 

 

CS231n 2강 슬라이드

Parametric Approach를 계산하는 예시는 위 슬라이드에서 볼 수 있다.

여기서 강아지 점수가 가장 높으므로 강아지라고 분류할 것이다.

 

CS231n 2강 슬라이드

각 class의 classifier는 다음과 같이 선형으로 분류하는 경계가 만들어진다.

 

아래 슬라이드에서 볼 수 있듯이, 선형 분류는 다음과 같은 케이스에서는 분류를 제대로 해내기 어렵다.

(class를 분류하는 경계를 선형으로 나타내기 어렵다.)

CS231n 2강 슬라이드