Image Classification
Image Classification을 진행할 때 시스템이 input image를 받으면 이것이 dog인지 cat인지 구분하여 고정된 category 라벨을 할당한다.
컴퓨터는 이미지를 gigantic한 grid로 나타낸다.
ex. (800 x 600 x 3) -> 이때 3이 들어가는 이유는 red, green, blue를 할당하기 때문
문제
Viewpoint variation
카메라의 방향이 바뀌면 모든 픽셀의 값이 변화된다.
-> 우리의 알고리즘은 이것에 단호해야 한다.
Illumination
밝기에 따라 알고리즘은 이것에 단호해야 한다.
Deformation
같은 객체의 position이 변화할 때 알고리즘은 이것에 단호해야 한다.
Occlusion
고양이의 얼굴만 나와 있거나, 풀 속, 쇼파에 숨어 있을 때를 확인하여 알고리즘은 이것에 단호해야 한다.
Background Clutter
고양이의 색이 background랑 비슷할 경우
Intraclass variation
다른 외모, 모양, 크기, 색, 나이 등을 다뤄야 한다.
Data-Driven Approach
- image들의 dataset과 label를 수집한다.
- Machine Learning을 이용해 classifier를 수집한다.
- 새로운 image로 classifier를 평가한다.
Image를 비교하는 방법
Distance metric 이용
- L1 distance
import numpy as np
class NearestNeighbor:
def __init__(self):
pass
def train(self, X, y):
self.Xtr = X
self.ytr = y
def predict(self, X):
num_test = X.shape[0]
Ypred = np.zeros(num_test, dtype=self.ytr.dtype)
for i in range(num_test):
distances = np.sum(np.abs(self.Xtr - X[i, :]), axis=1)
min_index = np.argmin(distances)
Ypred[i] = self.ytr[min_index]
return Ypred
Train : O(1)
Predict : O(N)
우리는 빠른 predict이 필요하고, training은 느려도 괜찮다.
- L2 distance
hyperparameters
knn 알고리즘에서
- 우리는 어떤 distance를 사용해야 하는가?
- 우리는 어떤 k 값을 사용해야 하는가?
hyperparameter는 문제에 따라 다르다.
test data는 함부로 사용하면 안됨
-> 이를 위해 validation data를 사용 (cross validation 사용)
현실에서 KNN알고리즘은 이미지 분류에서 사용하지 않음
KNN 알고리즘에서 위 3개의 사진은 같은 L2 distance를 가지므로 분류가 제대로 되지 않는다.
Linear Classification
파라미터 방식의 형식을 사용
f(x, W) : x(이미지), W(parameters)
여기서 이미지는 우리가 controll 하지 못하므로 W를 조정한다.
만약 class가 10개가 있고 f(x, W) = Wx 를 만족하고, 이미지가 [32x32x3]이 있다.
- 처음으로 행렬을 쭉 편다. -> 이미지는 [3072x1]이 된다.
- W는 자동으로 [10x3072]가 된다.
- 즉 우리가 control 해야 하는 것은 3072가 된다.
만약 고양이 사진의 행렬이 [4x1]일 때,
위 모델은 학습이 잘 되지 않은 상태
Linear classifier의 경우 색에 영향을 많이 받으므로 구분이 제대로 되지 않을 수도 있다.
앞으로 우리는 loss function을 다뤄야 한다.
'AI > CS231n' 카테고리의 다른 글
[CS231n] Lecutre 5. Convolutional Neural Networks (0) | 2024.07.12 |
---|---|
[CS231n] Lecture 4. Introduction to Neural Networks (1) | 2024.07.12 |
[CS231n] Lecture 3. Loss function, optimization (0) | 2024.07.10 |