Image Classification : Computer Vision 에 있어서 가장 핵심이 되는 작업
ex) 고양이, 개, 트럭, 비행기 등 정해진 Label 이 있을 때 이미지를 보고 어떤것인지 판단
Image Classfication 이 이루어지면 Detection, Segmentation, Image captioning이 손쉽게 이루어진다.
Image Classfication 을 할때 Semantic gap 이란 문제가 있다.
Image는 숫자로 구성된 3D array. (0 ~ 255) Ex) 300 x 100 x 3 ( Height, Width , Color Channel )
Viewpoint Varation : 이미지는 보는 시각에 따라 다르게 보인다.
Illumintaion : 조명때문에 다르게 보일 수 있다.
Deformation : 형태의 변형
Occlusion : 은폐, 은닉 ( 물체가 전체가 안보이고 가려진 경우 )
Background clutter : 물체가 배경색과 비슷하여 구분이 힘든 경우
Intraclass variation : 같은 형체의 물체를 어떻게 구분 할 것인가?
Image Classfier 할때 명백한 알고리즘은 존재하지 않는다. ( Hard code )
Image 의 Edge , shape 를 찾아 Library 화 하고 Image가 어떻게 arrange되어있나 배열상태를 비교하여 탐색하여 Classfication 하려했다. 하지만 Stable 하지 않은 접근 방법이다.
Data에 기반한 기법 : 이미지와 레이블로 구성된 데이터셋을 구성을 하고 데이터셋에 대해 Image Classfication 을 학습시킨다. 그 후 Test Image Dataset 에 대해 학습시킨 Image Classfication 을 평가
학습 : Image 와 Label을 받아 model 을 도출
예측 : 모델과 test image을 받아 test label 을 반환
-Neareast Neighbor Classifier :
학습 : 모든 학습용 이미지와 레이블을 메모리상에서 기억
예측 : 테스트 이미지를 학습용 이미지 하나하나 비교 -> 가장 비슷한 train label 을 test label 이라고 예측 ( 정확도는 높지 않다. )
이미지를 비교하는 방법
L1 distance :
NearestNeibor
distances : test 이미지 한장을 train images를 비교 ( L1 distance) broad casting 기법 사용
질문 : Training data 의 size 에 따라서 분류작업의 속도는 어떻게 변하는가 ?
답 : Linearly 하게 증가한다.
메모리상에 Training image 와 label 을 올려놓고 각각에 대해서 distance를 살펴보기 때문에 training set 의 data 가 증가하면 분류작업의 시간이 늘어난다. Test 속도가 결과가 빠르게 나오지 않기 때문에 좋지 않다. ( CNN 과 반대상황 )
L1 , L2 : Hyperparmeter
k-Nearset Neighbor : k 개의 가장 가까운 image를 찾고 k 개의 image들이 다수결로 투표하여 test image 를 정한다.
Nearset Neighbor 보다 성능이 좋다.
질문 : testset 에 있는 image 를 Nearest neighbor classifier 로 분류하는데 training data 을 nearest neighbor classifier 를 사용하면 정확도는 얼마인가 ?
100 % 이다. 이미 training data 내에 존재하기 때문에 100%가 나온다. ( 자기자신과 비교하게 된다. )
질문 : k-nearest neighbor classifier 를 trainind data 에 적용시키면 정확도는 얼마가 나오는가 ?
상황에 따라 다르다. 1위는 정확한 class 를 예측 2위 3위 4위가 다른 class 를 예측하면 다수결로 인해 다른 class를 선택하게 된다.
어떤 distance 를 사용? ( L1, L2 ) KNN일때 K를 어떤것을 골라야 하는가 ? ( Hyperparameter)
하이퍼 파라미터 선택 기준 : 문제에 따라 다르다. 그렇기 때문에 주어진 환경에서 각각의 paramteter를 실험하고 그 중 가장 정확도가 높은 하이퍼 파라미터 선택
하이퍼 파라미터를 바꾸면서 test data 에 적용하면 절대 안된다. Test dataset은 성능평가를 위한 데이터셋이므로 함부로 사용하면 안된다. 모든 작업이 끝나고 마지막에 적용해야 한다.
따라서 우리는 Validation data 를 사용한다. ( train data 의 20% ) 하이퍼 파라미터 조정
train data 의 크기가 작을 때 cross validation(교차 검증) 을 사용한다.
KNN은 사용하지 않는다. 왜냐하면 test data set에 대해 성능이 매우 안좋다. distance는 정확한 예측 불가
2,3,4, 번째 사진은 동일한 L2값을 가진다. 하지만 다른 이미지인데도 불구하고 같은 L2를 가지기 때문에 현실에 서 쓰이지 않는다.
CIFAR - 10 : 10 labels , 50000 train images , 10000 - test images
Linear Classifiaction : CNN의 시작점
Neural Network : 레고 블럭을 쌓아가는 과정
이미지 Captioning model : 해당이미지에 있는 Obejct를 Classify 한후 Text로 표현
CNN : Classify
RNN : 문장구성 ( Sequence 처리에 강하다. )
Parameter 접근 방식
input data 32 * 32 * 3 행렬을 펴서 한개의 Column 으로 만든다. x = 3072 * 1 , W = 10 * 3072 = 30720
Cat score 가 가장낮으므로 모델 성능이 나쁘다.
질문 : linear classifier 를 말로 표현한다면 ?
답 : 이미지내에 모든 pixel 값들에 대하여 가중치를 곱하여 처리한 것들의 합이다. ( Just a weighted sum of all the pixel values in the image)
각각 다른 공간적 위치에 있는 color들을 counting 한것이다. ( Counting colors at different spatial position )
질문 : Linear classifer 가 구별하기 어려운 class set은 어떤것일까?
답 : Texture가 형태는 다르지만 색상은 동일한 경우
Linear Classifier 을 사용하여 score function 을 정의
classifier 가 제대로 되지 않았다. ( cat, frog )
loss function : 결과로 score 값들이 좋거나 나쁜것을 정량화
앞으로 해야하는것 : loss function 으로 score를 loss 로 만드는 작업
다음 강의 : loss function ,optimization ,CNN
'딥러닝 공부' 카테고리의 다른 글
[cs231n 강의 정리] Lecture 7 : CNN (0) | 2021.06.20 |
---|---|
[cs231n 강의 정리] Lecture 6 : Training NN part 2 (0) | 2021.05.19 |
[cs231n 강의 정리] Lecture 5 : Training NN part 1 (0) | 2021.05.17 |
[cs231n 강의 정리] Lecture 4 : Backpropagation and Neural Networks part 1 (0) | 2021.05.16 |
[cs231n 강의 정리] Lecture 3 : Loss functions and Optimization (1) | 2021.05.15 |