안녕하세요
tensorflow zoo와 tensorflow detection api를 사용하여 tflite파일을 만드는 과정에 대해서 설명드리고자 합니다.
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2.md
-> Object Detection API with TensorFlow 2
하나의 디렉토리를 만듭니다.(~디렉토리에 만든다고 가정할게요, 계속 나올거니까 유의하세요~)
mkdir ~/tensorflow
그리고 Object Detection API를 설치하기 위해서는 protobuf-compiler를 설치해야합니다.
(tensorflow는 파일 저장 포맷을 프로토콜 버퍼를 사용하고, 컴파일 하기위해서 포토콜 버퍼가 필요합니다..)
sudo apt install protobuf-compiler
cd ~/tensorflow
git clone https://github.com/tensorflow/models.git
cd models/research
# Compile protos.
protoc object_detection/protos/*.proto --python_out=.
# Install TensorFlow Object Detection API.
cp object_detection/packages/tf2/setup.py .
python -m pip install .
-> Object Detection API 설치가 완료 되었습니다.
# Test the installation.
python object_detection/builders/model_builder_tf2_test.py
-> 정상적으로 설치되었는지 확인 할 수 있습니다.
-----------------------------------------------------------------------------------------------------------------------------------
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md
-> TensorFlow2 Detection Model Zoo
해당 사이트에서 사용하고싶은 모델을 다운해옵니다. (저의 경우 SSD MobileNet v2 320x320를 해보겠습니다.)
다운받을 디렉토리를 만들기 위해 처음에 만들었던 tensorflow디렉토리로 돌아와서
mkdir ~/tensorflow/my_model
cd ~/tensorflow/my_model
wget http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_320x320_coco17_tpu-8.tar.gz
그리고 다운받은 tar.gz파일을 풀어줍니다.
tar xvzf ssd_mobilenet_v2_320x320_coco17_tpu-8.tar.gz
----------------------------------------------------------------------------------------------------------------------------------
자 다시 Object Detection API with TensorFlow로 돌아옵니다.
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_mobile_tf2.md
-> 참고자료
Step 1: Export TFLite inference graph
export TFLiter inferenc graph의 결과를 저장할 디렉토리를 하나 만듭니다.
mkdir ~/tensorflow/my_model/ssd_mobilenet_v2_320x320_coco17_tpu-8/ssd_export
research디렉토리로 돌아옵니다.
cd ~/tensorflow/models/research
python3 object_detection/export_tflite_graph_tf2.py --pipeline_config_path ../../my_model/ssd_mobilenet_v2_320x320_coco17_tpu-8/pipeline.config --trained_checkpoint_dir ../../my_model/ssd_mobilenet_v2_320x320_coco17_tpu-8/checkpoint --output_directory ../../my_model/ssd_mobilenet_v2_320x320_coco17_tpu-8/ssd_export
Step 2: Convert to TFLite
cd ~/tensorflow/my_model/ssd_mobilenet_v2_320x320_coco17_tpu-8
mkdir tflite
tflite_convert --output_file tflite/ssd_mobilenet_v2_320x320.tflite --saved_model_dir ssd_export/saved_model
cd tflite
그러면 ssd_mobilenet_v2_320x320.tflite 파일이 생성되었음을 확인 할 수있습니다.
해당 파일은 Netron을 통해서 모델의 구조를 확인 할 수 있습니다.
Netron을 통해 확인 한 구조 첨부합니다
감사합니다~