전공관련/Deep Learning

[TensorFlow] Slim을 써보자 - 예제

매직블럭 2017. 12. 6. 16:40

Tensorflow-slim 은 기존의 tensorflow를 보다 사용하기 쉽게 만들어 놓은 high-level API 이다.


오리지널 텐서플로우가 사용하기에 간단하지많은 않았던 만큼 

API로 만들어 놓은 slim은 상대적으로 사용하기 쉬운 편이다.


다음에 사용 할 때를 대비하여 사용법을 정리 해 두자.


====================================================

우선 예제 실행 방법부터 확인.


1. tensorflow-model을 다운로드

$ mkdir tfslim

$ cd tfslim

$ git clone https://github.com/tensorflow/models/


slim은 tfslim/models/research/slim 에 위치해 있다 ( 2017. 12. 06 기준)


2. 데이터 셋을 다운로드

기본적으로 flowers / mnist / cifar10 / imagenet 의 네가지 데이터셋에 대한 코드가 포함되어 있다.

가장 데이터가 적은 flowers set에 대하여 예제를 진행


$ python download_and_convert_data.py \

    --dataset_name=flowers \

    --dataset_dir=./datasets/flowers


위 명령어를 수행하면 datasets 폴더에 tfrecord 파일과 label 파일이 생성된다

tfrecord 파일은 tensorflow에서 학습을  위해 사용하는 포멧이고 변환 되기 전 원본 영상을 보고싶으면

datasets/download_and_convert_flowers.py 파일 하단에 있는

_clean_up_temporary_files(dataset_dir) 이 부분을 주석처리 해 주면 된다.


3. architecture 선택하기

기본적으로 inception / resnet / vgg / alexnet 등 유명한 구조와 그 시리즈들이 포함되어 있다.

원하는 architecture를 선택


4. training

학습은 train_image_classifier.py 파일을 통해 시작하며 해당 파일 안에 다양한 Flag가 선언되어 있으니

확인 해 볼 것. 코드상에서 필요한 부분 수정하거나 옵션으로 추가 해 주고 아래 코드를 통해 학습 시작


$ python train_image_classifier.py \

    --train_dir=./output/flowers_train_result \

    --dataset_name=flowers \

    --dataset_split_name=train \

    --dataset_dir=./datasets/flowers \

    --batch_size=50 \

    --model_name=inception_v1 \

    --max_number_of_steps=5000 # 1epoch = 50 step(2500장) / 총 100 epoch 학습


5. evaluation

eval_image_classifier.py 파일을 이용해 학습 된 모델의 성능을 확인 해 볼 수 있다.


$ python eval_image_classifier.py \

    --alsologtostderr \

    --checkpoint_path=./output/flowers_train_result \

    --dataset_dir=./datasets/flowers \

    --dataset_name=flowers \

    --dataset_split_name=validation \

    --model_name=inception_v1





참고 : https://github.com/tensorflow/models/blob/master/research/slim/README.md