딥러닝영상인식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 : 서로 다른 클래스들 사이에서의 유사성
다른 클래스인데 비슷한 모습을 가진 클래스가 있다.
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를 가장 흔히 사용한다.
아래 그림은 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가 나오도록 한다.
'Graduate Lectures(2024-2) > 딥러닝영상인식1' 카테고리의 다른 글
[Lecture 6] Convolutional Neural Network & Training Neural Network (0) | 2024.12.16 |
---|---|
[Lecture 5] Convolutional Neural Network (CNN) (1) | 2024.10.21 |
[Lecture 4] Convolution (1) | 2024.10.21 |
[Lecture 3] Backpropagation (2) | 2024.10.20 |
[Lecture 2] Neural Network and Loss Function (0) | 2024.09.24 |