cs231n 2017 lecture 2 : image classification pipeline 리뷰

changdaeoh·2021년 7월 3일
0

Lecture Review

목록 보기
5/6
post-thumbnail

cs231n - Convolutional Neural Networks for Visual Recognition / 2017 spring
Lecture2. Image Classification pipeline 내용을 요약/정리한 글입니다.

Materials


Topics

  1. Image Classification
  2. Nearest Neighbor Classifier
  3. Linear Classification
  • 본문에 삽입된 이미지들은 전부 cs231n lecture slide에서 가져온 것임을 미리 밝힙니다.


1. Image Classification

  • 이미지 분류는 주어진 이미지가 어떤 label의 이미지인지 맞추는 작업으로 컴퓨터 비전에서 가장 기본적이고 핵심적인 task이다.
  • 컴퓨터에게 컬러 이미지는 R, G, B 3개의 채널에 대해 각각 2차원 행렬로 표현된 3차원 텐서이며, 행렬의 각 원소들은 0 ~ 255 사이의 정수값을 갖는다.

1.1 Challenges in Image Classification

이미지 분류에서 대표적인 어려운 점들은 다음과 같다.

  1. Viewpoint Variation : 대상이 촬영된 각도에 따라 동일한 object임에도 표현된 픽셀값들이 전혀 다를 수 있다.
  2. Illumination : 조명 및 명암에 따라 동일한 대상이 전혀 다른색으로 촬영될 수 있음
  3. Deformation : 동일한 대상이라도 물리적으로 전혀다른 자세를 취할 수 있음.
  4. Occlusion : 인식해야할 대상이 다른 object에 둘러쌓여 가려진 경우가 있을 수 있음.
  5. Background Clutter : 대상의 색상이 주변 배경과 너무 흡사하여 잘 분리되거나 구분되지 않을 수 있음.
  6. Intraclass Variation : 동일한 범주에 속하는 대상들 간에도 특징들에 차이가 있다.

1.2 Data-Driven Approch

현대에는 이미지를 성공적으로 분류하기 위한 classifier를 구축하기 위해 Data-Driven 접근법으로써 Machine Learning 방법론을 활용한다. 이 방식의 전반적인 pipeline은 다음과 같다.

  1. 이미지들과 대응되는 label들을 모아 데이터셋을 구축
  2. classifier를 설정하고 Machine Learning 테크닉을 활용해 훈련시킨다.
  3. 훈련된 classifier를 새로운 이미지들에 대해 평가(evaluate)한다.



2. Nearest Neighbor Classifier

본 강의에서 처음으로 소개하는 분류기는 최근접이웃(Nearest Neighbor) 분류기이다.

  • 이 분류기에게 훈련이란, 단순히 모든 train 데이터셋(image-label pairs)을 기억하는 것을 의미한다.
  • 때문에 이 모델은 모델 자체가 가진 trainable한 parameter가 없으며, non-parametric approach(비모수적 접근법)에 속한다.
  • 이 분류기의 예측은, test image가 주어졌을 때, 훈련과정에서 기억해둔 전체 데이터셋 중 해당 이미지와 가장 유사한 train image를 찾고 그것의 label로 test image의 label을 예측한다.

이때, 두 이미지간에 '유사성'을 측정할 수 있는 metric이 필요하게되는데, 쉽게 생각할 수 있는 방법은 두 이미지의 모든 픽셀값들을 element-wise하게 뺀 절댓값들을 구하고 전부 summation하는 것이다. 이를 두 벡터간 L1 distance라고 표현한다.

최근접 이웃 분류기 구현의 전체 파이썬 코드는 다음과 같다.


2.1 Hyperparameters of Nearest Neighbor classifier

  • Number of Neighbors
  • Distance Metric

테스트 이미지데이터와 가장 유사한 훈련 이미지데이터 단 하나의 label 값으로만 예측을 수행하는 대신에, 유사한 k개의 이미지를 찾고, 그 k개의 이미지들의 label들에 대해 다수결 투표방식(majority vote)으로 가장 많이 나온 label을 test image의 레이블로써 예측할 수 있다. 이에 일반적으로 최근접 이웃 알고리즘은 k-NN classifier / k-NN regressor 라고 불린다.

여기서 k는 조율가능한 파라미터로, 모델은 k가 작을수록 specific해지며 k가 클수록 general 해진다.

k-NN에서 조율 가능한 또 다른 옵션으로는 유사도 측정의 기준인 '거리 측도(distance metric)'이다.
대표적으로 L1, L2 거리가 있으나, 다른 측도의 사용도 고려해볼 수 있다.

이웃의 수와 거리 측도 등의 조절가능한 옵션을 하이퍼파라미터(hyperparameter)라고 부르며, 이 하이퍼파라미터의 튜닝을 위한 데이터셋으로 validation set을 사용한다. 전통적인 ML 알고리즘의 하이퍼파라미터 튜닝을 위해 흔히 사용되는 방법은 (k-fold) cross validation으로, 이는 훈련 데이터셋을 k개의 fold로 나눈뒤 k-1개는 model training 용으로 사용하고 남은 1개는 학습된 모델을 evaluation 하는 용으로 사용하는 것을 k번 반복하는 방법이다.결과적으로 모든 데이터포인트들이 훈련에 사용될 수 있고, 하나의 validation set만을 활용할 때보다 일반화 성능을 더 잘 측정할 수 있지만, 한 학습 과정을 k번 반복해야하기 때문에 대규모 데이터셋이나 모델에 대해서는 적용하기 힘들다.


2.2 flaws of kNN

  • 모든 train 데이터셋을 기억해야하므로(메모리에 올려놓아야함) 대용량 데이터 처리 시 기술적 이슈가 있을 수 있다.
  • train 단계의 복잡도는 O(1) 이지만, prediction/inference 단계의 복잡도는 O(N)이다.
  • (이미지 한정) pixel wise하게 유사도가 계산되기 때문에 shifting, rotation등의 변환에 대한 variation이 매우 심할 수 있다.

위의 단점들이 너무나도 critical하기 때문에, kNN 알고리즘만 단독으로 쓰이는 경우는 별로 없지만(특히 이미지 데이터에 대해서는 절대 안쓰인다고 함), 다른 알고리즘과 혼합하여 사용되는 경우는 아직까지도 꽤 있다고 한다.

(첫 번째 단점의 경우 train 데이터를 메모리에 올릴 때 차원을 축소기법을 이용하여 축소된 차원의 데이터를 올리는 등의 방법으로 우회 가능)



3. Linear Classification

앞에서 살펴본 kNN은 training 과정에서 업데이트되는 모델 파라미터가 따로 없는 non-parametric한 알고리즘이었다. 이번에 살펴보는 linear classifier는 업데이트되는 파라미터를 사용하는 parametric한 방법이다.

  • x : 32*32*3를 flatten한 3072*1 열벡터
  • W : (# of class, # of pixels) 차원의 weight matrix
  • b : train set에서 특정 class의 출현 빈도에 따른 class score bias를 위한 term
  • f : input으로 W와 x를 받아 (# of class, 1) 차원의 output 벡터를 출력하는 함수. 이 출력의 개별 원소들은 각 클래스에 속할 score를 의미.

실제 수치를 대입해본 예시는 다음과 같다.

W와 b는 training 과정에서 특정한 criterion 하에 자동적으로 iterative하게 update된다.

위 슬라이드를 잘 살펴보면, weight matrix W의 각 row가 오직 하나의 class score에만 관계된다는 것을 눈치챌 수 있다. 그렇다면, 학습된 W의 각 row를 따로 때서 원본 이미지 차원(CIFAR10의 경우 32*32*3)으로 reshape 한 뒤, 이를 마치 이미지처럼 시각화 해볼 수 있다. 그 결과는 다음과 같다.



개인적인 메모

  • kNN이 치명적인 단점에도 불구하고 차원축소나 다른 딥러닝 알고리즘들과 함께 쓰일 수 있다.
  • kNN의 distance metric으로 dot product 등을 사용할 수도 있으려나?
  • linear layer의 가중치를 저렇게 시각화 하는구나,, 딥러닝 반년 공부했는데 첨알았네;; 반성해야겠다.
profile
말보다는 행동

0개의 댓글