본문 바로가기

수업 정리(개인용)/cs231n

CS231N Spring 2020 Assignment1 : Features

yun905.tistory.com/5?category=878116

 

CS231n 2017 Lecture 3 : Loss Functions and Optimization

Lecture 2에서 배운 내용의 review로 시작하는 Justin. Linear classifier는 W를 가지고 있었고, 각 W 값은 해당 픽셀이 얼마나 score에 영향을 끼칠지 결정한다. 이번 시간에 배울 loss function과 optimizatio..

yun905.tistory.com

 

Lecture 3에서도 다루었듯이 image의 raw pixels를 바로 linear classifier에 넣는 것은 좋은 생각은 아니었다.

 

Color Histogram
Histogram of Oriented Gradients

이런 feature extraction 방법을 통해 얻은 feature를 neural network에 넣어주면 더 좋은 성능을 기대할 수 있다. 이번 과제는 이것에 대해 다룰 것이다.

 

HOG와 color histogram을 이용해 각각 feature를 뽑은 후 concatenate해서 사용할 것이다. HOG는 이미지의 전반적인 texture에 관한 정보를 뽑아낸다면 color histogram은 색 정보를 뽑아내니, 둘을 같이 사용하면 하나만 사용했을 때 보다 좋은 성능을 기대할 수 있다. 다행히 두 방식을 직접 구현하라고 하지는 않는다.

 

SVM의 hyperparameter를 grid search 하고 있다. Hyperparameter를 잘 고르면 0.44의 accuracy도 가능하다고 하는데, 0.419가 나왔다. 어차피 기존 svm보다 잘 나온다는걸 보이는게 포인트니까 더이상 건들지는 않았다. 기존에는 0.382가 나왔었다.

 

괜찮은 결과가 나왔다. Raw pixels를 넣었을 때 0.365가 나왔던걸 생각하면 상당히 좋아진 결과이다.

 

SVM이 잘못 분류한 이미지이다. 실수할 만 했다고 생각되는 이미지도 있지만, 전혀 다른 이미지를 오분류한 경우도 보인다.

 

이번엔 2 layer net에 적용할 것이다. 우선 bias trick을 풀고, hyperparameter를 최적화 한다. Learning rate와 regularization strength만 조절했다. 다른 hyperparameter도 건드려 보면 더 좋은 결과를 얻을 수 있을 것이다.

 

 

적당한 hyperparameter를 찾은 후 좋은 모델을 best_net에 저장하고 추가로 학습을 더 시킨다. Validation accuracy는 0.592, test 시에는 0.58이 나왔다. Raw pixels를 넣었을 때 validation에서 0.56, test시에 0.531이 나왔다. Hidden size라던가 decay를 더 만져줬다면 더 좋은 성능을 보였을 것이다.

 

이런 비교적 단순한 HOV나 color histogram이 5~6%정도의 성능 향상을 가져다 주는 걸 보면, cnn을 이용한 feature extraction을 적용했을 때 꽤나 좋은 결과를 기대할 수 있을 것 같다.