yongyong-e
[Tensorflow Object Detection API] Training a pet detector 본문
[Tensorflow Object Detection API] Training a pet detector
Yonghan Kim 2017. 8. 3. 12:20summary
Google Cloud ML을 사용하여 data traing 및 pet detection하는 방법에 대해 진행
▶ Setting up a Project on Google Cloud
1. Create a GCP project
참고 : https://cloud.google.com/resource-manager/docs/creating-managing-projects
2. Install the Google Cloud SDK
① 환경변수 설정
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
② Cloud SDK 배포 URI를 패키지 소스로 추가
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
③ Google Cloud 공개 키 가져오기
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
④ Cloud SDK 업데이트및 설치
sudo apt-get update && sudo apt-get install google-cloud-sdk
다음 추가 구성 요소 중 하나를 선택하여 설치
google-cloud-sdk-app-engine-python
google-cloud-sdk-app-engine-java
google-cloud-sdk-app-engine-go
google-cloud-sdk-datalab
google-cloud-sdk-datastore-emulator
google-cloud-sdk-pubsub-emulator
google-cloud-sdk-cbt
google-cloud-sdk-bigtable-emulator
kubectl
예를 들어 google-cloud-sdk-app-engine-python는 다음과 같음
sudo apt-get install google-cloud-sdk-app-engine-python
⑤ Run
gcloud init
3. Enable the ML Engine APIs
4. Set up a Google Cloud Storage (GCS) bucket
① Cloud Storage 브라우저 열기
https://console.cloud.google.com/storage/browser
② 버킷 요구사항 설정
③ 환경변수 설정
export YOUR_GCS_BUCKET=버킷이름
④ 환경변수 확인
echo $YOUR_GCS_BUCKET
▶ Installing Tensorflow and the Tensorflow Object Detection API
참고 : 2017/07/28 - [머신러닝/Tensorflow] - (Tensorflow Object Detection API) How to install
▶ Getting the Oxford-IIIT Pets Dataset and Uploading it to GCS
http://www.robots.ox.ac.uk/~vgg/data/pets/
1. images.tar.gz & annotations.tar.gz 다운로드 및 압축 풀기
# models/
wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/annotations.tar.gz tar -xvf images.tar.gz tar -xvf annotations.tar.gz
2. Tensorflow Object Detection API는 TFRecord 형식의 데이터를 필요로하므로 TFRecords로 변환 하는 스크립트를 실행
# models/
python object_detection/create_pet_tf_record.py \ --label_map_path=object_detection/data/pet_label_map.pbtxt \ --data_dir=`pwd` \ --output_dir=`pwd`
스크립트를 실행 후 몇 가지 표시되는 경고는 무시
*** 다음과 같은 오류 발생 시 ***
Protobuf 컴파일 & 환경변수 설정 :
# models/
protoc object_detection/protos/*.proto --python_out=.
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
이후 스크립트 실행을 하면 다음과 같이 models 디렉토리에 pet_train.record & pet_val.record 파일이 설치 됨
3. 데이터가 생성되었으므로 ML 엔진에서 데이터에 접근 할 수 있도록 다음과 같이 GCS 버킷에 데이터를 업로드
# models/
gsutil cp pet_train.record gs://${YOUR_GCS_BUCKET}/data/pet_train.record gsutil cp pet_val.record gs://${YOUR_GCS_BUCKET}/data/pet_val.record gsutil cp object_detection/data/pet_label_map.pbtxt gs://${YOUR_GCS_BUCKET}/data/pet_label_map.pbtxt
▶ Downloading a COCO-pretrained Model for Transfer Learning
여러 GPU를 사용하는 경우에도 object detection의 state를 처음부터 training하는 것은 오래 걸릴 수 있음
따라서 사전 training된 모델을 다운로드 하여 사용
1. faster_rcnn_resnet101_coco_11_06_2017.tar.gz 다운로드 및 압축 풀기
wget http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz tar -xvf faster_rcnn_resnet101_coco_11_06_2017.tar.gz
2. model.ckpt.* 파일을 GCS 버킷에 복사
gsutil cp faster_rcnn_resnet101_coco_11_06_2017/model.ckpt.* gs://${YOUR_GCS_BUCKET}/data/
▶ Configuring the Object Detection Pipeline
Tensorflow Object Detection API에서 모델 매개 변수, 학습 매개 변수 및 평가 매개 변수는 모두 구성 파일에 의해 정의됨
자세한 내용은 다음을 참고
https://github.com/tensorflow/models/blob/master/object_detection/g3doc/configuring_jobs.md
이 자습서에서는 object_detection/samples/configs폴더에서 소스코드와 함께 미리 정의 된 템플릿을 사용
PATH_TO_BE_CONFIGURED 설정 및 편집 한 템플릿 GCS 버킷으로 복사 :
# models/
sed -i "s|PATH_TO_BE_CONFIGURED|"gs://${YOUR_GCS_BUCKET}"/data|g" \ object_detection/samples/configs/faster_rcnn_resnet101_pets.config
gsutil cp object_detection/samples/configs/faster_rcnn_resnet101_pets.config \ gs://${YOUR_GCS_BUCKET}/data/faster_rcnn_resnet101_pets.config
▶ Checking Your Google Cloud Storage Bucket
다음과 같이 파일들이 버킷에 포함되어있어야 함
▶ Starting Training and Evaluation Jobs on Google Cloud ML Engine
Google Cloud ML 엔진에서 작업을 시작하려면 다음을 수행
1. Tensorflow 개체 검색 코드를 패키지화
# models/
python setup.py sdist (cd slim && python setup.py sdist)
이후 다음과 같이 파일이 존재
2. Google Cloud ML 작업을 위한 클러스터 구성
구성 파일은 object_detection/samples/cloud/cloud.yml 에서 찾을 수 있음
To start training :
# models/
gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` \ --job-dir=gs://${YOUR_GCS_BUCKET}/train \ --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz \ --module-name object_detection.train \ --region us-central1 \ --config object_detection/samples/cloud/cloud.yml \ -- \ --train_dir=gs://${YOUR_GCS_BUCKET}/train \ --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/faster_rcnn_resnet101_pets.config
Once training has started, we can run an evaluation concurrently :
# models/
gcloud ml-engine jobs submit training `whoami`_object_detection_eval_`date +%s` \ --job-dir=gs://${YOUR_GCS_BUCKET}/train \ --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz \ --module-name object_detection.eval \ --region us-central1 \ --scale-tier BASIC_GPU \ -- \ --checkpoint_dir=gs://${YOUR_GCS_BUCKET}/train \ --eval_dir=gs://${YOUR_GCS_BUCKET}/eval \ --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/faster_rcnn_resnet101_pets.config
Training
View Logs
▶ Monitoring Progress with Tensorboard
① GCS 버킷에 엑세스 할 수 있도록 실행 :
gcloud auth application-default login
② 로컬 컴퓨터에서 Tensorboard를 실행하여 Training 및 eval 작업 진행 상황 모니터링 :
tensorboard --logdir=gs://${YOUR_GCS_BUCKET}
③ ML엔진 작업 시작 후 30분 정도가 지나면 텐서보드에서 기록을 확인 할 수 있음
*** 어느 정도 loss값이 수렴하게 되면 구글 클라우드 ML 작업을 중지 ( 요금 절약 ) ***
▶ Exporting the Tensorflow Graph
① GCS 브라우저에서 버킷을 검색
model.ckpt-${CHECKPOINT_NUMBER}.data-00000-of-00001
model.ckpt-${CHECKPOINT_NUMBER}.index
model.ckpt-${CHECKPOINT_NUMBER}.meta
위의 파일에서 CHECKPOINT_NUMBER 확인 후
② 환경변수 설정
export CHECKPOINT_NUMBER=${CHECKPOINT_NUMBER}
③ 다음 명령어 실행
# models/
gsutil cp gs://${YOUR_GCS_BUCKET}/train/model.ckpt-${CHECKPOINT_NUMBER}.* . python object_detection/export_inference_graph.py \ --input_type image_tensor \ --pipeline_config_path object_detection/samples/configs/faster_rcnn_resnet101_pets.config \ --checkpoint_path model.ckpt-${CHECKPOINT_NUMBER} \ --inference_graph_path output_inference_graph.pb
output_inference_graph.pb 확인
Reference
https://github.com/tensorflow/models/blob/master/object_detection/g3doc/running_pets.md
'머신러닝 > Tensorflow - Models' 카테고리의 다른 글
[Tensorflow Object Detection API] 2. Training your own dataset (11) | 2017.08.30 |
---|---|
[Tensorflow Object Detection API] 1. Creating your own dataset (25) | 2017.08.29 |
[Tensorflow-Slim] Convert to TFRecord file (0) | 2017.08.16 |
[Tensorflow-Slim] Tutorial (0) | 2017.08.14 |
[Tensorflow Object Detection API] How to install (0) | 2017.07.28 |