
image classification 이 선행되면 detection, captioning,segmentation 이 가능하다.
예를들어 고양이 그림에서 300 x 100 x 3 이라면
300 : height
100 : width
3 : color channel rgb

image classification 난제
보는 시각에따라 이미지는 다르게 보인다
light : 조명이 요인이 될 수 있다.
deformation 형태의 변형
occlusion 은폐,은닉 숨어있는것들이 기계들이 인식들 어렵게 한다.
background cluter 배경과 비슷한 사물을 어떻게 구별?
intraclass variation :같은 클래스에서 어떻게 구분할것인가?

위 난제들을 해결하기위해 image를 인자로 받아 예측을 한다.
결과값으로는 어떤 클래스에 속하는지 label을 return 해준다.
숫자를 정렬해주는 알고리즘과 다르게 고양이 같은 클래스로 인식하는데 있어서 명백한 알고리즘이 존재하지않음.

lena라는 그림에서 이미지를 보고 이미지의 특징 엣지,쉐이프,정션을 라이브러리화하고 이미지를 비교하며 탐색하는 방식을 썼다. 하지만 스케일럽을 하지않아 많은 한계가 있다.

데이터 기반으로한 접근방법
1. 이미지와 레이블로 구성된 데이터셋을 수집
2. 이 데이터셋에 대해 이미지 classifier를 학습
3. 학습시킨 이미지 classifier 평가

첫 번째 분류기 : nearest neighbor classifier
지금은 안쓰지만 학습용으로 사용,매우 간단한 학습기
학습단계 : 모든 학습용 이미지와 레이블을 메모리상에 기억하도록함
예측단계 : 테스트이미지를 트레인 이미지와 하나하나 비교하여 테스트 이미지를 예측함

왼쪽그림
cifar-10 을 사용해서 첫 번째 분류기를 사용해보겠다.
10 레이블
50000 트레인 이미지
10000 테스트 이미지
오른쪽 그림
왼쪽열에 테스트 이미지 -> nnc에서 오른쪽 열에 10개의 근접한 이미지를 보여줌
트럭을 보였지만 말이나옴 그다지 정확하지않다.

동작방식: l1 distance ,manhattn distance를 사용한다 .
학습단계 : 모든데이터를 메모리상에 올려 기억하도록한다.
예측단계 : test이미지를 distance 줄에서 l1 distance를 구한다. numpy이용

코드로 구현하면 이렇게 표현할수 있다.



10-nearest neighbor를 사용해서 보면
10개의 레이블이 생성

답을 알고 문제를 푸는것과 같기 때문에 정확도는 100%가 나온다.

not necessary 상황에 따라 다르다.

지금까지 본것중에
어떤 디스턴스를 사용할것인가?
knn에서는 어떤 k를 사용할것인가?
-> 이 같은 하이퍼 파라미터 설정을 어떻게 해야할것인가?
여러 파라미터들을 실험해보고 가장 좋은 파라미터를 선정한다.

테스트셋의 데이터는 마지막에 적용해야함 함부로 적용하면 안됨

그래서 우리는 하이퍼 파라미터 설정을 하기위해 validation data를 설정한다.

traindata수가 적을때는 cross-validation을 이용한다.

knn은 현실에서는 사용해서는 안됨
테스트 타임에서 성능은 매우 안좋음
distance만으로 예측을 할 수가 없음.

nearest 의 매커니즘은 distance만 같다면 같은 이미지로 판단하므로
다른 이미지라도 같은이미지로 판단 할수 있음

이미지 캡셔닝이란 것은 해당 오브젝트를 클래시파이 한다음에
그것을 텍스트로 표현을 해준다.

이미지 캡셔닝은 RNN과 CNN을 이루어져있다.
CNN으로 CLASSIFI하고 RNN으로 텍스트화 한다.
RNN은 Sequence처리에 강하다.

linear classification
CIFAR 10을 이용해 다시 한번 분류를 해보자
앞으로 배울 것들은 parametric approach를 사용한다.
f(x,W) x = 이미지 , W =parameter

32x32x3 을 행렬의 형태로 펴주게 되면 f(x,W) =Wx 일때,
f(x,W)는 10x1 / x 는 3072x1
W 는 행렬 곱에 의해 10x3072 가 된다.
parameter(W) or “weight”의 차원을 맞춰주고 우리가 컨트롤해야할 대상은 30720개 이다 .

원래의 식에는 b(bias)도 있지만 여기서는 계산를 외 해주고, b값 또한 최적의 값을 찾아야한다.
위에 모델은 고양이 점수가 매우 낮으므로 성능이 저조한 상태이다.

q1. what does the linea classifier do,in english?

linear classifier 학습 가중치들을 보여준그림
각 분류 레이블의 주요 색과 형태를 보여준다.
좋은 성능을 보여주지는 못한다.
linear classfier 또다른 해석 공간으로 분할하여 표현 해준다.

q2. what would be a very hard set of classes for a linear classifier to distinguish?
그레이 색상분류 , 텍스쳐가 형태는 같지만 색이 다양한 경우 지금까지 score function 을 사용한것임
그러나 제대로 분류 하진 못했다.
강의를 실수로 2016년도 것을 게재했습니다. 다음부턴 2017로 하겠습니다..
