-
VGG16 - Keras Training / Finetuning 교육때 물어보기AI-video&image/Classification 2020. 2. 19. 23:37
Training
1. 데이터셋 설정
img_size - 224
dataset - train 1000(cat 500 dog 500) / test 400(cat 200 dog 200)
2. 이미지 전처리
ImageDataGenerator를 이용해 이미지 개수를 세배로 늘림
- shear_range #시계반대방향으로 밀림 강도 범위내에서 임의로 원본이미지 변형
- zoom_range # 지정된 확대/축소 범위내에서 임의로 원본 이미지 확대/축소
- horizontal_flip=True # 수평방향으로 뒤집기
(하지만 내 PC에 이미지가 저장되는것은 아님. 이미지를 저장하려면 따로 어플리케이션을 사용해야함)
3. Keras내 Vgg 코드 호출
개와 고양이 만 분류하고 싶기 때문에 초기 5 개의 회선 블록 만 사용(include_top=false)
4. 미니 네트워크를 추가
고양이와 개에 대한 확률을 나타내는 두 개의 최종 출력으로 미니 네트워크를 추가
Finetuning
모든절차는 위와 같고 하기 두줄 weight 부분만 변경및 추가 해주면 됨
-VGG16.VGG16(include_top=False, weights=None) : Imagenet 사전 훈련 된 가중치를 로드하지 않음
-model.load_weights("cv-tricks_pretrained_model.h5") : tricks_pretrained_model.h5라는 훈련 된 자체 가중치를로드
중요사항이라고 설명되어있던데 이부분도 모르겠음
Finetuning 중에 우리는 이미 매우 좋은 모델을 가지고 있으므로 무게를 너무 많이 바꾸고 싶지 않습니다. 따라서 학습 속도가 매우 느린 옵티 마이저를 사용합니다. 일반적으로 SGD는 Adam 등과 같은 적응 방법과 달리이 방법에 적합합니다.
OUTPUT
1. Activation함수는 softmax와 sigmoid의 큰 차이는 없었지만 Optimizer는 확실히 Adam을 사용한 것 보다 SGD가 정확도가 훨씬 높음
2. Training, Finetuning (pretrained 자료 : imagetnet) 결과 비교 : pretrained된 가중치로 finetuning을 하는것이 훨씬 빠르게 정확도를 높일수 있음
Citiation
VGG 16 실행 코드
legolas123/cv-tricks.com
Repository for all the tutorials and codes shared at cv-tricks.com - legolas123/cv-tricks.com
github.com
ImageDataGenerator 을 통한 다양한 증식 방법
Image Preprocessing - Keras Documentation
Image Preprocessing [source] ImageDataGenerator class keras.preprocessing.image.ImageDataGenerator(featurewise_center=False, samplewise_center=False, featurewise_std_normalization=False, samplewise_std_normalization=False, zca_whitening=False, zca_epsilon=
keras.io
Optimizer에 SGD가 쓰인 이유에 대한 구체적 설명
SGD > Adam?? Which One Is The Best Optimizer: Dogs-VS-Cats Toy Experiment
Few days ago, an interesting paper titled The Marginal Value of Adaptive Gradient Methods in Machine Learning (link) from UC Berkeley came out. In this paper, the authors compare adaptive optimizer…
shaoanlu.wordpress.com
Activation의 다양한 함수에 대한 설명
Activation Functions in Neural Networks
Sigmoid, tanh, Softmax, ReLU, Leaky ReLU EXPLAINED !!!
towardsdatascience.com
How To Use
1.pretraining
python 1_vgg16_pretrain.py -train ../tutorial-2-image-classifier/training_data/ -val ../tutorial-2-image-classifier/testing_data/ -num_class 2
2.finetuning
python 2_vgg16_finetune.py -train ../tutorial-2-image-classifier/training_data/ -val ../tutorial-2-image-classifier/testing_data/ -num_class 2
3.predict
python 3_predict.py --image test.jpg
'AI-video&image > Classification' 카테고리의 다른 글
MobileNet V3 - Fine tuning (0) 2020.03.08 Tf-slim fine tuning - VGG16 (Cat & Dog) (0) 2020.02.17 Tensorflow Slim 실행하기-inception_v1 (0) 2020.02.16