[CS231n] 강의2. Image Classification 리뷰
본 글은 2021년 4월에 강의한 스탠포드 대학의 “Convolutional Neural Networks for Visual Recognition” 2021년 강의를 듣고 정리한 내용입니다. 개인 공부 목적으로 작성되었으며, 설명이 맞지 않거나 글 오타가 있으면 알려주시길 바랍니다.
- 원본 링크 : cs231n.stanford.edu
- 한글 번역 링크 : aikorea.org - cs231n
- 강의 링크 : youtube - 2017 Spring (English)
Image Classification
- 이미지 분류 문제 : 입력 이미지를 미리 정해진 카테고리 중 하나인 라벨로 분류하는 문제
- 이미지는 0~255 정수 범위의 값을 가지는 Width(너비) x Height(높이) x Channel(채널)의 크기의 3차원 배열이다.
-
3은 Red, Green, Blue로 구성된 3개의 채널을 의미

-
- 하지만, 이미지는 3차원 배열의 값으로 나타내기 때문에 몇 가지 해결해야 할 문제점들이 있다.
Challenges
- 시점 변화(Viewpoint variation)
- 고양이를 촬영하는 카메라를 조금만 옆으로 옮겨도 모든 픽셀값들은 달라진다.

- 배경 혼잡(Background Clutter)
- 물체가 배경과 유사한 색상이나 텍스처를 가져 구분이 모호한 경우

- 조명 상태(Illumination)
- 광원의 방향이나 조도 변화로 동일 객체의 픽셀 강도가 크게 변하는 경우

- 폐색(Occlusion)
- 물체의 일부분이 다른 물체에 가려져 전체 윤곽이 드러나지 않는 경우

- 변형(Deformation)
- 생명체나 유연한 물체의 포즈 변화로 외형이 달라지는 경우

- 내부클래스의 다양성(Intraclass variation)
- 동일 클래스 내에서도 개체마다 크기, 형태, 색상 등이 크게 다른 경우


- 과거 규칙 기반 접근법에서는 이미지의 가장자리(edge)나 그레이디언트(gradient) 패턴을 수작업으로 정의하여 특정 부위를 탐지하려는 시도가 있었다.
- 이러한 시도는 특정 변형(deformation)에 일부 대응할 수 있으나, 다양한 환경 변화에 취약하고 위치(location) 정보 손실 등 확장성의 한계가 존재한다.
결론 : A good image classification model must be invariant to the cross product of all these variations, while simultaneously retaining sensitivity to the inter-class variations.
Data-Driven Approach
- 데이터 기반 방법론(Data-Driven Approach) : 컴퓨터에게 각 클래스에 대해 많은 예제를 주고 나서 이 예제들을 보고 시각적으로 학습할 수 있는 학습 알고리즘을 개발하는 과정
- 이미지와 라벨의 데이터셋을 수집한다.
- 분류기를 학습할 머신 러닝 알고리즘을 사용한다.
- 분류기를 새로운 이미지에 평가해본다.

Nearest Neighbor Classifier
- 첫 번째 머신러닝 접근법으로 최근접 이웃(Nearest Neighbor; NN) 분류기가 있다.1
- 실제 응용 환경에서는 학습에 다소 시간이 걸리더라도(slow train), 테스트 단계에서 빠른 예측(fast predict)을 수행할 수 있는 분류기를 선호한다.
-
최근접 이웃법(Nearest Neighbor; NN): 새로운 입력 데이터가 주어졌을 때 학습 데이터셋에서 거리가 가장 가까운 이웃의 라벨을 예측값으로 할당하는 데이터 중심(data-driven) 분류 알고리즘이다.12
- 최근접 이웃 분류기는 테스트 이미지를 분류하기 위해 메모리에 저장된 모든 학습 이미지와 1:1로 픽셀 거리를 계산하고 가장 가까운 라벨을 찾는다.
- 두 이미지 $I_1, I_2$를 벡터로 표현했을 때, 벡터 간 거리를 계산하는 대표적 방법으로 L1 distance(Manhattan 거리)가 있다.
-
$d_1(I_1,I_2)=\sum_p I_1^p-I_2^p $ -
두 이미지의 모든 대응 픽셀값 차이의 절댓값을 합산한다.

-
- 다음으로는 두 벡터 간의 기하학적 직선 거리를 측정하는 L2 distance(Euclidean 거리)를 활용할 수도 있다.
- $d_2(I_1,I_2)=\sqrt{\sum_p(I_1^p-I_2^p)^2}$
k - Nearest Neighbor (kNN)

- 위 그림의 색칠된 영역은 L2 거리를 기준으로 분류기가 형성한 결정 경계(decision boundaries)를 나타낸다.1
-
가장 가까운 1개의 이웃만 참조하는 NN과 달리, kNN은 가장 가까운 $k$개의 이웃 중 다수결 투표(majority vote)를 통해 라벨을 결정하므로 이상치에 덜 민감하고 경계가 부드러워진다.
- kNN 모델 적용 시 다음 두 가지 핵심 하이퍼파라미터를 결정해야 한다.
- 이웃의 개수 $k$를 몇으로 설정할 것인가?
- 어떤 거리 척도(L1 vs L2)를 사용할 것인가?
하이퍼파라미터(hyperparameter) : 모델 학습 알고리즘이 자동으로 결정하지 못하고, 사용자가 직접 지정해 주어야 하는 설정값

- 전체 데이터셋을 훈련 세트(training set)와 검증 세트(validation set)로 분할하고, 검증 세트에서 하이퍼파라미터를 튜닝한 후 최종 테스트 세트(test set)에서 단 1회 성능을 평가한다.1
Cross-Validation

- 학습 데이터셋의 크기가 작을 경우, 통계적 신뢰도를 높이기 위해 교차 검증(cross-validation) 기법을 사용한다.1
- 학습 데이터를 $K$개의 폴드(fold)로 균등하게 분할한다.
- 각 폴드를 번갈아가며 검증용으로 사용하고 나머지를 훈련에 활용한 뒤, 측정된 정확도를 평균하여 최종 평가한다.

- 위 그래프는 파라미터 $k$에 대한 5-fold 교차 검증 예시이다.
- 각 $k$값마다 검증 세트로 활용한 5개 분할의 정확도 점과 평균 추세선이 나타난다.
- 해당 실험에서는 $k=7$ 부근에서 교차 검증 평균 정확도가 가장 높게 도출되어 최적점으로 선택된다.
Pros and Cons
-
NN/kNN 분류기 장단점
- 장점(Pros)
- 알고리즘 구조와 구현이 직관적이고 간단하다.
- 학습 단계에서는 단순히 훈련 데이터를 메모리에 저장하기만 하므로 시간 복잡도가 $O(1)$이다.
- 단점(Cons)
- 새로운 테스트 이미지 1장을 분류할 때 모든 학습 이미지 $N$장과 거리를 전수 비교해야 하므로 테스트 시간 복잡도가 $O(N)$으로 계산 비용이 크다.
- 모든 학습 데이터를 메모리에 상주시켜야 하므로 공간 복잡도 역시 $O(N)$에 달한다.
- 실제 이미지 분류 실무에서 원본 픽셀 간 거리를 직접 비교하는 kNN은 거의 사용되지 않는다.
-
픽셀 단위 L1/L2 거리는 시각적 인지나 의미론적 유사도(semantic similarity)를 반영하지 못한다. 동일한 객체라도 이동, 밝기 변화, 가림 등에 의해 픽셀 거리가 크게 증가할 수 있다.

-
고차원 공간을 조밀하게 채우려면 필요한 데이터 수가 차원에 비례하여 지수적으로 증가하는 차원의 저주(curse of dimensionality)가 발생한다.

-
Linear Classifier
- 이미지의 픽셀 값들을 각 클래스에 대한 신뢰도 점수(confidence score)로 매핑하는 함수를 정의한다.3
- $x_i \in \mathbb{R}^D$: 입력 이미지 벡터 ($D$는 픽셀 차원)
- $y_i$: 각 해당 정답 라벨 ($K$는 클래스 수)
- 입력 픽셀값을 클래스 스코어로 사상하는 함수:
- $f: \mathbb{R}^D \to \mathbb{R}^K$
- 선형 분류기(Linear Classifier):
- $f(x_i, W, b) = Wx_i + b$
- 여기서 가중치 매개변수(weight parameter) $W$는 학습 데이터셋의 시각적 패턴을 클래스별로 요약(summarize)한 템플릿 정보를 담고 있다.34
- 편향(bias) $b$는 입력 데이터 $x_i$와 독립적인 오프셋을 부여하여, 입력 데이터 분포와 무관한 클래스 사전 확률(prior probability)을 반영할 수 있게 한다.
- 분류기(classifier): 학습 데이터를 단순히 외우는 것이 아니라, 이전에 관측하지 못한 새로운 테스트 데이터에 대해 일반화(generalization) 성능을 확보하는 것을 목표로 한다.34
- 즉, 선형 분류기는 파라미터 $W$와 $b$를 학습시켜 새로운 입력에 대해서도 올바른 클래스 스코어를 산출하도록 설계된다.

- CIFAR-10 데이터셋의 이미지 크기는 $32 \times 32 \times 3$이다. 이를 1차원으로 펼치면(flatten) 크기는 3072가 되며, 입력 $x$는 $3072 \times 1$ 크기의 열벡터가 된다.
- 10개 클래스를 분류할 때 가중치 행렬 $W$는 $10 \times 3072$ 크기이고, 편향 벡터 $b$는 $10 \times 1$ 크기이다.
-
따라서 계산은 $Wx + b = (10 \times 3072) \times (3072 \times 1) + (10 \times 1) = (10 \times 1)$이 되어, 10개 클래스 각각에 대응하는 스코어가 산출된다.
- 선형 분류기는 클래스 스코어를 이미지의 모든 픽셀 값에 대한 가중치 합(linear combination)으로 계산한다.
- 3개 색상 채널(R, G, B)의 모든 픽셀에 각기 다른 가중치가 부여되어 클래스별 스코어에 기여한다.


- 위 그림은 원리를 직관적으로 이해하기 위한 2x2 단일 채널(4차원 벡터) 토이 예시이다.
- 입력 벡터 $x$는 $[56, 231, 24, 2]^T \in \mathbb{R}^{4 \times 1}$ 형태의 열벡터이다.
- 3개 클래스(고양이, 개, 배)에 대한 가중치 행렬 $W \in \mathbb{R}^{3 \times 4}$ 및 편향 벡터 $b \in \mathbb{R}^{3 \times 1}$를 사용하여 스코어를 계산한다: $Wx + b = (3 \times 4) \times (4 \times 1) + (3 \times 1) = (3 \times 1)$.
- 실제 컬러 이미지($32 \times 32 \times 3$)에서는 채널별로 따로 계산하여 평균 내는 것이 아니라, 3채널의 전체 픽셀을 한 번에 평탄화한 3072차원 벡터와 $10 \times 3072$ 가중치 행렬의 단일 행렬 곱을 통해 각 클래스 스코어를 도출한다.
Hard cases for a linear classifier

- 선형 분류기는 단일 선형 초평면(hyperplane)으로 클래스를 분리하기 때문에, 다음과 같이 비선형성이 나타나는 세 가지 대표적 사례에서 한계를 보인다.3
- 사분면에서 대각선 반대 위치에 동일 클래스가 존재하는 경우(XOR 문제 형태)
- 한 클래스가 다른 클래스를 원형으로 둘러싸고 있는 경우(동심원 경계)
- 한 클래스가 3개 이상의 분리된 다중 모드 영역(islands)으로 흩어져 있는 경우
한계 및 트레이드오프
- kNN의 계산 및 메모리 복잡도: 학습 시간은 $O(1)$로 즉각적이지만, 테스트 단계에서 모든 학습 데이터 $N$개와 거리를 계산해야 하므로 추론 복잡도가 $O(N)$에 달해 실시간 서비스 적용이 어렵다. 또한 전체 학습 데이터를 메모리에 상주시킨 상태로 유지해야 하므로 공간 복잡도 역시 $O(N)$으로 크다.1
- 차원의 저주와 픽셀 거리 척도의 비일관성: 고차원 이미지 공간 전체를 조밀하게 채우려면 필요한 데이터의 양이 차원에 따라 지수적으로 증가한다. 게다가 픽셀 단위 L1/L2 거리는 시각적 인지나 의미론적 유사성을 담보하지 못해 실무 이미지 분류에는 부적합하다.1
- 선형 분류기의 단일 템플릿 제약: 선형 분류기 $f(x, W, b) = Wx + b$는 클래스당 오직 단 하나의 가중치 템플릿(template)만을 학습한다. 따라서 동일 클래스 내에서 다양한 시점(viewpoint), 색상, 자세(pose) 등 클래스 내 다양성(intraclass variation)이 존재할 경우 이를 단일 선형 가중치로 포섭하지 못하고 평균화된 모호한 템플릿만 생성된다.3
- 비선형 결정 경계 분리 한계: XOR 구조나 동심원 형태처럼 비선형적으로 분포된 데이터는 단일 선형 초평면으로 선형 분리가 불가능하다. 이러한 한계를 극복하기 위해 특징 변환(feature transform)이나 비선형 활성화 함수를 결합한 심층 신경망(MLP, CNN) 구조가 필수적으로 요구된다.3
References
-
Stanford CS231n. (2017). “Lecture 2: Image Classification with Linear Classifiers”. Stanford University. Slides / Course Notes: Image Classification ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Stanford CS231n. (2017). “Linear Classification: Support Vector Machine, Softmax”. Stanford University. Course Notes: Linear Classification ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
cs231n (2017) - lecture2 _ 2 (linear classifier) - Worth spreading ↩ ↩2
댓글남기기