본문 바로가기
Graduate Lectures(2024-2)/딥러닝영상인식1

[Lecture 1] Image Classification and Classifiers

by BangGeuk 2024. 9. 6.

딥러닝영상인식1 강의를 정리하고 복습하고자 이 글을 작성한다.


Image Classification

 

다음과 같은 내용을 중심으로 강의를 진행한다.

  • Regression vs Classification
  • What is Image Classfication?
  • Why is image classification important?
  • Challenges of Image Classification

 

Regression vs Classification

Regression(회귀) : input x로부터 continous한 output y를 출력

Classification(분류) : input x로부터 discrete한 output y를 출력

 

Types of Classification

  • Binary Classification
  • Multi-class Classification (이번 강의에서 중점적으로 다룰 부분)
  • Multi-label Classification

Multi-class Classification : 여러 개의 class 중에서 하나의 class로 분류하는 task. ex) 고양이 사진

Mutl-label Classification : 여러 개의 정답 중에서 여러 개의 정답이 있는 task. ex) 고양이와 새가 같이 있는 사진

 

Why Image Classification?

computer vision 분야에서 가장 기초적인 task로 foundation 역할을 하여 object detection과 segmentation과 같은 더 복잡한 task를 풀 수 있다.

 

Challenges of Image Classification

기초적인 task더라도 인간과 컴퓨터가 이미지를 처리하는 방식이 다르기 때문에 어렵다.

카메라 각도에 따라 이미지 픽셀 값들이 다르며

Deformation : 고양이가 누워있거나 앉아있거나 기대어 있는 경우에도 인간은 똑같은 고양이라는 것을 알지만 컴퓨터는 다르게 처리하며

Illumination changes : 빛의 세기에 따라도 다르며

Background clutter : 고양이 색깔 혹은 무늬가 배경과 비슷한 경우에도 인간은 그 구분선을 바로 알지만 컴퓨터는 정확하게 구분하기 어려우며

Occlusion : 고양이가 숲에 가려져 있거나 쇼파에 가려진 경우에도 인간은 알지만 컴퓨터는 판단하기 어렵다.

 

그리고 Intra-class variation 및 Inter-class similarities의 이유에서도 어렵다.

Intra-class variation : 특정 하나의 클래스 내에서의 변화

같은 고양이 클래스에서도 다양한 모습들이 있다.

 

Inter-class similarities : 서로 다른 클래스들 사이에서의 유사성

다른 클래스인데 비슷한 모습을 가진 클래스가 있다.

 

왼쪽 : Intra-class variation, 오른쪽 : Inter-class similarities

 

Image Classifier

다음과 같은 내용을 중심으로 강의를 진행한다.

  • K-Nearest Neighbor (KNN) Classifier
  • Linear Classifier

 

Machine Learning: Data-Driven Approach

1. Collect a dataset of images and labels

2. Use Machine Learning to train a classifier

3. Evaluate the classifier on new images

 

K-Nearest Neighbor (KNN) Classifier

1. Memorize all training data and labels

2. Find similar training images to the image we need to classify

분류해야 할 이미지와 학습한 이미지들 간의 distance를 모두 계산하여 가장 가까운 이미지부터 정렬하여 k개를 참고하여 label을 분류

 

How Do We Compute the Distance?

Distance Metric은 많은 것들이 있는데 L1 및 L2 distance를 가장 흔히 사용한다.

아래는 L1 distance example

 

아래 그림은 training dataset으로 학습하고 K=1인 경우, decision boundary를 보여준다.

 

k를 증가시켜 decision boundary를 좀 더 부드럽게 만들어줘서 outlier를 처리할 수 있다. 하지만, 아래 그림에서 흰색 부분과 같이 class를 분류하려고 할 때 무승부(예를 들어, 빨간색 초록색 파란색 점이 1개씩)일 경우가 생긴다. 이런 경우, 알고리즘을 추가하여 k=1인 상황으로 만들어 부분적으로 빨간색 초록색 파란색으로 덮는 방법도 있다.

 

그러면 가장 좋은 k값은 무엇일까? => 문제마다 다름.

가장 좋은 distance metric은 무엇일까? => 문제마다 다름.

 

How Do We Find the Optimal K?

1. Evaluate the performance for all K candidates

2. Then calculate the mean and standard deviation

3. Find the K with the highest mean and the lowest standard deviation

 

아래 그림과 같이 k를 0부터 100까지 실험을 총 5번 한 결과이다. k가 7일 때, 표준편차는 조금 높지만 평균이 가장 높아서 선택할 수 있는 근거가 된다.

 

10개의 클래스를 가지고 50,000개의 학습 데이터셋을 가지고 있는 CIFAR10 dataset을 KNN으로 분류한 예이다. 성능은 좋지 않지만 간단한 알고리즘치고는 나름 어느정도 나오는 성능을 볼 수 있다.

 

Problems of a K-NN

test data 개수만큼 for문이 돌아가고 train data가 50,000개가 있다고 치면 각 test data마다 50,000개의 train data와의 거리를 모두 계산해야한다. 그래서 test 시, 엄청 느린 속도를 가지고 있다. (사실 잘 안사용하는 방법이다..!)

 

Linear Classifier

이미지 x가 주어지면 파라미터 혹은 가중치에 의해 각 class에 대한 score가 나오도록 한다.