본문 바로가기

DeepLearning Specialization(Andrew Ng)/Convolutional Neural Networks

[Week 2] 2. Practical Advices for Using ConvNet

728x90

본 게시물은 andrew ng 교수님 deeplearning specialization 강좌의 강의노트입니다.

Practical Advices for Using ConvNet
1. Using Open-Source Implementation
2. Transfer Learning
3. Data Augmentation
4. State of Computer Vision

1. Using Open-Source Implementation

 

2. Transfer Learning

- Transfer Learning 할 때, 코드(network 구조) 뿐만 아니라 weights도 다운받아야 한다. 

- 코드와 W를 다운받았다면 freeze 한 layer의 마지막까지 activation값을 구해준다. 그러고 나서 그 다음부터는 freeze 되어 있지 않으니 gradient descent로 W를 update 시켜준다(그 전까지의 W는 고정).

- 만약 위와 같이 softmax 100이 다운받은 NN이라면 우리가 원하는 형태인 softmax 3으로 바꿔준다.

- 데이터가 적으면 가져온거 그대로 하고 output layer의 W만 최적화하고, 데이터가 많으면 많을 수록 freeze한 layer를 줄여 더 많은 parameter를 학습할 수 있도록 한다.

 

3. Data Augmentation

 

- Color Shifting : 이미지는 3개의 채널로 이루어져 있는데, 각각의 채널에 가중치를 달리하여 색조를 다르게 한다. 

- 참고로 PCA color augmentation이라 불리는 기법이 있는데, 최근에는 잘 사용하지 않음. pca 기법을 이용해 색조를 조절.

 

4. State of Computer Vision

1) Object Detection

 

 Object Detection은 사진 속에서 박스를 만들어 물체의 위치를 감지하는 기법이다. 특성상 image recognition에 비해 데이터의 수가 적다. image recognition은 사진과 label이 한세트로 만들어주기만 하면 되는데, object detection은 단순히 labeling하는게 아니고 위치를 맞춰야하기 때문.

 

2) Little data

 

 object detection처럼 데이터가 적은 분야에서는 알고리즘이 복잡해지고 hand-engineer을 하는 경향이 있다. 실제로 도움이 되기도 하고. 반면 데이터가 정말 많으면 알고리즘은 간단해지고 hand-engineer에 시간을 많이 할애하지 않는다. 차라리 learning system 자체에 집중함.

 

 앞서 살펴보았듯이 data가 적으면 transfer나 augmentation해야함.

 

3) Tips 

 

- 앙상블은 predict 값을 평균하는 것(not W). 이게 효과가 조금 있긴한데, production 단계에서는 잘 못 쓴다. 예를 들어 고객이 사진을 제공할 때마다 앙상블하면 computational cost가 너무 크기 때문. 게다가 평균을 내려는 network를 모두 저장해야하니 메모리도 많이 차지.

 

- Multi-crop at test time은 data augmentation을 test set에 적용하는 것. 속도 저하가 있지만, 앙상블에 비해 메모리 공간은 적게 차지한다. 1개의 네트워크만 저장하면 되기 때문. 물론 이것도 production 단계에서는 안됨.

 

비판과 질문은 언제나 환영입니다. 많이 꾸짖어주세요.

728x90