computer vision 분야의 기본은 이미지를 분류하는 것 -> 개, 고양이, 강아지

기타 파생된 분야가 detection, segmentation, image captioning

 

분류를 하는데 semantic gap이라는 문제점이 생김

이미지는 기본적으로 height x width x channel의 곱으로 이루어짐 (여기서 channel이란 색상=RGB)

이미지의 도전과제

- Viewpoint Variation (보는 시각에 따라서 이미지가 다르게 보임)

- Illumination (조명)

- Deformation (형태의 변형)

- Occulusion (숨어있는 이미지)

- Background clutter (배경하고 구분이 안 되는 형체)

- Intraclass variation (비슷한 형태 간의 구분)

 

기본적인 이미지의 분류

함수의 input값으로 image를 넣으면 class label을 output으로 출력함

-> 하지만 이미지는 hard coding이 안 되는 단점

 

허나 rule-based(edge, 배열상태)로 비교하는 시도가 있긴 했음

 

이 점을 해결하고자 Data-driven apporach가 나옴

data와 label을 통해 학습을 시키고 test image set에 대해 학습시킨 것들을 평가함

+ model에 학습이라는 것이 추가된 것(image, label -> model 도출)

 

 

First Classifier : NN Classifier(거리기반 분류기)

l1 distance로 제대로 분류했는지 판별함

l1 distance : 거리 차이의 절대값의 합(맨해튼 거리)

 

model 학습의 코드 - l1 distance가 가장 작은 image 셋을 찾는 것

Q. train data와 분류 작업은 linear한 관계가 있음(train data가 늘어나면 분류작업도 비례해서 늘어남)

 

최적의 하이퍼파라미터를 찾아야 함(distance)

 

k-NN : k개의 가장 가까운 이미지들을 찾아서, 보팅함

일반적인 NN Classifier로 train data를 평가척도로 삼으면 정확도 100%가 나옴(해서는 안 되는 것 - 비교를 위해)

하지만 k-NN으로 판단하면 k의 개수에 따라 정확도가 달라짐

 

best distnace는?

k개의 개수는?

-> 이런 것들은 하이퍼 파라미터

-> 하이퍼 파라미터는 여러 개를 실험해보고 퍼포먼스 비굥

 

하이퍼 파라미터 비교 실험

validation data를 따로 설정하여 하이퍼 파라미터를 체크함(test data는 건들면 안됨 -> 일반화 성능)

 

train data가 적으면 cross-validation (n번 반복해서 정확도 평균)

 

정확도가 가장 높은 값 -> k가 7

 

kNN은 거리기반이기 때문에 위 사진들이 모두 거리 값이 같게 나옴

 

Linear Classification

- 파라미터를 유추하는 것(W)

 

- weight의 차원은 맞춰줘야 함

- 10x1의 아웃풋이 나옴

- x는 image의 pixel 값

 

위와 같은 행렬 곱 형태

linear classifier의 의미 : weighted sum of image / 공간적 위치의 컬러를 카운팅

 

결국에는 데이터의 분산 공간을 분류하는 것

 

어려운 점

1) negative color(정반대의 색상) 구분

2) gray image 구분

3) 형태는 다르지만 색상은 동일

결국 우리가 한 것은 score function을 정의한 것

-> 점수를 기반으로 loss function을 정의해야 함(score가 어느정도 좋고 나쁘냐 정량화)

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기