AI를 활용한 재밌는 것들을 개발합니다

2017년 5월 7일 일요일

(TF 1.1 & Slim) 2.3 딥러닝 모델 평가하기

*Tensorflow 1.9 버전 튜토리얼
1. 윈도우에 Tensorflow GPU 버전 설치하기
2 딥러닝 slim 라이브러리 설치, 학습, 평가하기
3. 내 이미지로 학습 하기 ( caltech 이미지 사용 )
4. 학습된 모델 사용하기

* Tensorflow 1.1 업그레이드 이후 Slim을 사용하기 위한 튜토리얼 리비전 입니다.

1. 윈도우에 Tensorflow GPU 버전 설치하기
2.1 딥러닝 slim 라이브러리 설치 및 이미지 셋 다운로드
2.2 딥러닝 모델 학습하기
2.3 딥러닝 모델 평가하기
3. 내 이미지로 학습 하기 ( caltech 이미지 사용 )
4. 학습된 모델 사용하기

 지난 포스팅에서 3가지 방식으로 딥러닝 모델을 학습 시켜 보았습니다이번 포스팅에서는 그 3가지 모델의 정확도를 평가해보겠습니다.

3가지 모델의 종류는 아래와 같고순서대로 평가 해 보겠습니다.

1번 모델 : Flowers로부터 새롭게 만든 모델
2번 모델 이미 잘 만들어진 모델로부터 Flowers로 마지막 layer만 학습해 만든 모델
3번 모델 : 2번에서 만든 모델로부터 전체 layer를 학습해 만든 모델


아나콘다에서 slim 폴더로 이동한 후 아래 명령어로 1번 모델을 평가해보겠습니다

python eval_image_classifier.py
--alsologtostderr
--checkpoint_path=\tmp\train_inception_v1_flowers_logs\
--dataset_dir=\tmp\flowers
--dataset_name=flowers
--dataset_split_name=validation
--model_name=inception_v1

python eval_image_classifier.py –alsologtostderr --checkpoint_path=\tmp\train_inception_v1_flowers_logs\ --dataset_dir=\tmp\flowers --dataset_name=flowers --dataset_split_name=validation --model_name=inception_v1
 eval_image_classifier.py 파일이 --checkpoint_path 로 지정된 폴더의 모델을 평가하는 명령어 입니다. 

모델 평가 결과를 확인해 보겠습니다.

 마지막 부분에 보면 eval/Recall_5[1] 이라고 나온 부분은 ImageNet 처럼 모델에서 예측 확률이 가장 높게 나온 5개 class 중에 하나가 맞으면 맞다고 보는 정확도 측정 방법입니다. [ ] 안에 있는 값이 예측 정확도인데 무려 1 -> 100% 라는 말입니다! 근데 놀라지 마세요. Flowers 이미지는 원래 5개 중에서 하나를 맞추는 것이기 때문에 당연히 100% 예측 정확도가 나옵니다. 그 앞 줄에 있는 eval/Accuracy[0.535] 에 있는 값이 실 예측 정확도 입니다. 53.5%가 나오는 것으로 평가 됩니다.

다음은 2번 모델을 평가하겠습니다.

python eval_image_classifier.py
--alsologtostderr
--checkpoint_path=\tmp\train_inception_v1_flowers_FineTune_logs\
--dataset_dir=\tmp\flowers
--dataset_name=flowers
--dataset_split_name=validation
--model_name=inception_v1
python eval_image_classifier.py –alsologtostderr --checkpoint_path=\tmp\train_inception_v1_flowers_FineTune_logs\ --dataset_dir=\tmp\flowers --dataset_name=flowers --dataset_split_name=validation --model_name=inception_v1
2번 모델의 위치만 --checkpoint_path에 지정해주고 실행시킵니다.


86% 분류 예측 정확도가 나옵니다.

3번 모델을 평가 하겠습니다.

python eval_image_classifier.py
--alsologtostderr
--checkpoint_path=\tmp\train_inception_v1_flowers_FineTune_logs\all\
--dataset_dir=\tmp\flowers
--dataset_name=flowers
--dataset_split_name=validation
--model_name=inception_v1
python eval_image_classifier.py –alsologtostderr --checkpoint_path=\tmp\train_inception_v1_flowers_FineTune_logs\all\ --dataset_dir=\tmp\flowers --dataset_name=flowers --dataset_split_name=validation --model_name=inception_v1

3번 모델은 88.75%의 분류 예측 정확도를 보였습니다.


정리



Steps
학습 시간
모델 정확도
1번 모델
5616
약 39 분
53.5 %
2번 모델
1000
약 2 분
86 %
3번 모델
500
약 3 분
88.75 %

 이미지 분류 학습에 있어서는 기존 잘 학습된 모델을 활용해서 그 위에 분류하고 싶은 추가적인 이미지를 학습 하는 것이 효과적이라는 것을 알 수 있습니다. 학습 시간을 단축하면서도 높은 모델 정확도를 얻을 수 있기 때문입니다.

 지금까지 Tensorflow slim (TF-Slim)을 이용한 딥러닝 이미지 분류기 모델의 이미지 준비부터 모델 학습평가 까지 실습을 다 해보았습니다.

 다음에는 예제에 포함되어 있지 않은 Caltech 이미지(257 label class)를 어떻게 TF-Slim을 사용해서 딥러닝 모델을 만드는지 실습해 보도록 하겠습니다.

댓글 없음:

댓글 쓰기

가장 많이 본 글