티스토리 뷰

728x90
반응형

Object Dection API는 이미지에서 객체를 탐지해주는 딥러닝 모델을 사용하기 위한 API입니다. Tensorflow는 머신러닝 알고리즘을 사용하기 위한 프레임워크이며, 텐서 플로우의 Object Detection API를 사용하면, 인공지능 모델을 학습할 수 있을 뿐만 아니라, 이미지 내 객체를 탐지하는 추론기능까지 사용 가능합니다. 이번 포스팅에서는 Tensorflow를 설치하여 Object Detection API를 사용하는 방법에 대해 알아보겠습니다.

Ubuntu16.04에서 Tensorflow 설치

우분투에서 아래 명령어를 순차적으로 실행하면 텐서 플로우를 설치할 수 있습니다.

sudo apt-get install python-pip python-dev python-virtualenv 
virtualenv --system-site-packages tensorflow
source ~/tensorflow/bin/activate
easy_install -U pip
sudo pip install --upgrade tensorflow
sudo pip install --upgrade tensorflow-gpu  # for python 2.7 and GPU
pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.5.0-cp27-none-linux_x86_64.whl # for python 2.7 and GPU

명령어 별 세부 설명은 텐서 플로우 공식 홈페이지에서 확인할 수 있습니다.

 

pip를 사용하여 TensorFlow 설치

Google I/O is a wrap! Catch up on TensorFlow sessions View sessions pip를 사용하여 TensorFlow 설치 TensorFlow 2 패키지 사용 가능 tensorflow - CPU와 GPU 지원이 포함된 안정적인 최신 출시(Ubuntu 및 Windows) tf-nightly - 미리보

www.tensorflow.org

CUDA-8.0 환경변수 설정 

CUDA GPU 사용을 위해서는 bashrc 파일에서 환경변수를 아래와 같이 설정합니다.

export CUDA_HOME=/usr/local/cuda-8.0 # for nVidia GPU
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} # for nVidia GPU
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} # for nVidia GPU

Object Dection API 사용

Tensorflow Object Detection API를 사용하기 위해서는 protobuf를 설치해야 합니다. 아래 명령어를 통해 protobuf를 설치합니다.

mkdir protoc_3.3
cd protoc_3.3
wget wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip
chmod 775 protoc-3.3.0-linux-x86_64.zip
unzip protoc-3.3.0-linux-x86_64.zip
cd ../models/research/
/home/csh/tensorflow/protoc_3.3/bin/protoc object_detection/protos/*.proto --python_out=.
반응형

Tensorflow Object Detection API 사용법

이미지 내에서 Bounding Box 영역과 Labeling을 지정하여 딥러닝 모델에게 학습정보를 제공할 수 있습니다. Bounding Box는 이미지 내에서 딥러닝 모델이 학습할 데이터 영역입니다. Labeling은 Bounding Box로 지정된 영역을 텍스트로 정의한 것입니다. 딥러닝 모델이 학습할 데이터 모음을 DataSet이라고 부릅니다. DataSet은 이미지 파일, Bounding Box, Labeling 정보로 구성되고 Tensorflow Object Detection API는 3가지 정보를 바탕으로 추론 모델을 생성합니다. Dataset을 생성하는 과정은 아래 이미지를 참고하시면 됩니다.

Tensorflow Object Detection API에서 사용하는 TRRecord 생성하기

위 과정은 아래 명령어를 순차적으로 실행하면 학습용 데이터셋인 TFRecord를 생성할 수 있고,모델 트레이닝, 모델 추론까지 사용가능합니다.

xml_to_csv.py 소스 다운로드
- https://github.com/datitran/raccoon_dataset/blob/master/xml_to_csv.py

아래의 파이선 패키지 설치
- pip install wheel
- pip install pandas

labelimg로 image annotation 정보 추출
- *.xml 생성
- image annotation 정보 + image
- 학습을 위해 train set과 test set 두 개를 만들어야 함
- annotation정보를 입력한 이미지도 별도로 보관

 xml_to_csv.py 를 실행하여 *.xml -> *.csv 확장자 변형함
- python xml_to_csv.py 실행 (약간의 코드 수정 필요)
- class_text_to_int 에서 dataset 만들 때 분류한 class 명을 추가해 줄 것

generate_tfrecord.py를 이용해 TF Record를 생성함.
- 학습을 위해 train set과 test set 두 개를 만들어야 함

학습 모델 파라미터 설정
- sample 폴더에 있는 model config 파일에서 아래 내용 필드에서 훈련용 TF Recrod, 평가용 TF Record 경로를 지정해줄 것 
- model : num_classes 개수 조정 (학습할 클래스 개수 입력, 데이터 셋과 일치해야 함)
- train_config : fine_tune_checkpoint path 수정 (학습을 이어서 할 수 있게 해주는 파일)
- train_input_reader : input_path에 train.record 경로 입력, label_map_path에 label_map.pbtxt 경로 입력
- eval_input_reader : input_path에 test.record 경로 입력, label_map_path에 label_map.pbtxt 경로 입력

트레이닝 실행
- cd ~/models/research
- export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
- cd object_detection
- python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_pets.config --clone_on_cpu=true
- clone_on_cpu는 CPU로 트레이닝하겠다는 플래그

ckpt를 pb 확장자 파일로 변환 (Object Dection API에서 사용하기 위한 방법)
- cd ~/models/research
- export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
- python object_detection/export_inference_graph.py \
    --input_type image_tensor \
    --pipeline_config_path PIPELINE_CONFIG_PATH \
    --trained_checkpoint_prefix TRAIN_PATH \
    --output_directory DIRECTORY_PATH
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/exporting_models.md
- 샘플 예제
- python object_detection/export_inference_graph.py \
    --input_type image_tensor \
    --pipeline_config_path object_detection_training/ssd_mobilenet_v1_pets.config \
    --trained_checkpoint_prefix object_dection/training/model.ckpt-155 \
    --output_directory output_inference_graph

object_detection_tutorial.ipynb 코드 실행
pbtxt, pb 파일 경로를 코드 상에서 수정해 줄 것.

728x90
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함