본문 바로가기

tensorflow-machine learning

jetson board 환경설정 및 saved_model ,frozen_graph 생성

이전의 과정들로 생성했던 annotation data 들로 모델의 학습을 완료했을 것이며 검증 또한 완료하였을 것이다

해당 결과는 tensorboard로 확인할 수 있을 것이며 

이번에는 이 학습된 모델을 활용할 수 있는 방안에 대하여 알아 볼 것이다

우선 saved_model.pb파일이나 frozen_graph.pb파일에 대하여 알아 두어야 하는데

간단히 말하면 pb파일은 우리가 학습한 모델을 사용하기 위하여 해당 가중치들의 값과 모델의 모양을 저장한 파일이라

생각하면 이해가 빠를듯 하다

활용방안으로는 해당 pb파일을 이용해 소형 컴퓨터인 jetson board에서 모델을 이용하여 detection을 진행 해 볼 것이다

jetson board역시 tensorflow 및 가상환경을 사용하여야 하기에 우선 환경설정부터 진행하겠다

필자의 경우 이전 서버에서 모델학습 진행에는 miniconda 를 이용하여 진행하였지만

2021-11-10 추후 어떤 지원이 될 지는 모르겠지만 현재는 jetson board는 conda를 지원하지 않아

virtualenv를 이용하여 가상환경 구성을 진행하였다

https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html

 

Installing TensorFlow For Jetson Platform :: NVIDIA Deep Learning Frameworks Documentation

Installing TensorFlow for Jetson Platform provides you with the access to the latest version of the framework on a lightweight, mobile platform without being restricted to TensorFlow Lite.

docs.nvidia.com

해당 링크를 참고하여 설치를 진행하였고 tensorflow 1 과 tensorflow 2환경을 모두 진행할 예정이기 때문에 

따로 jetson board에다 가상환경을 구성해 주었다

https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform-release-notes/tf-jetson-rel.html#tf-jetson-rel

 

Release Notes For Jetson Platform :: NVIDIA Deep Learning Frameworks Documentation

This document describes the key features, software enhancements and improvements, and known issues regarding Tensorflow 1.15.5 and 2.5.0 on the Jetson platform. Key Features and Enhancements This release includes the following key features and enhancements

docs.nvidia.com

해당 링크는 자신의 jetpack version에 맞는 tensorflow 버전을 확인할 수 있는 링크이며 이를 참고해서 virtualenv를 설치한다

virtualenv 설치 시에는 위의 링크에서 2.2를 먼저 진행한 이후에 필자의 경우 3.1 multiple tensorflow version을 설치하였으며

이는 자신에 맞게 찾아서 설치하면 될 듯 하다

 

$ sudo apt-get install python3-pip
$ sudo pip3 install -U pip testresources setuptools==49.6.0 

$ sudo apt-get install virtualenv
$ python3 -m virtualenv -p python3 <chosen_venv_name>

$ source <chosen_venv_name>/bin/activate

$ pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker six mock requests gast h5py astor termcolor protobuf keras-applications keras-preprocessing wrapt google-pasta setuptools testresources
$ pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v46 tensorflow==1.15.4+nv20.12

 

이런식으로 설치를 진행하였다

위의 경우 tensorflow 1.15에 대한 설치이며 맨 마지막 명령어를 수정해 필자의 경우 tensorflow 2.3.1 버전 또한

설치해 두었다

이렇게 했으면 jetsonboard 역시 환경설정이 완료된 것이며

 

이제 해당 jetsonboard에서 동작시키기 위한 pb파일 생성에 대하여 알아보겠다

saved_model.pb은 tensorflow 2버전의 pb파일이며

frozen_graph.pb는 tensorflow 1버전의 pb파일이다

각각 사용법과 생성이 조금씩 다르기에 따로 알아보겠다

 

우선 frozen_graph.pb파일 생성에 대해 알아보자면

models_r1.13/research/object_detection 디렉토이 속의 export_inference_graph.py를 사용하여 생성한다

해당 디렉토리들은 이전 포스팅에서 맏은 models_r1.13 디렉토리를 사용하였다

export_inference_graph.py --help를 이용하면 파라미터들을 확인할 수 있는데

이중에서 input_type, pipeline_config_path, output_directory, trained_checkpoint_prefix 를 사용하겠다

input_type은 image_tensor

pipeline_config_path은 pipeline.config의 위치

output_directory 은 frozen_graph.pb가 생성될 위치
trained_checkpoint_prefix는 model.ckpt-100000까지만 주기 100000번째 ckpt들 사용한다는 의미이다
코드를 실행서켜 생성된 frozen_infernece_graph.pb    graph.pbtxt  가 앞으로 사용될 것이다

 

saved_model.pb파일 같은경우

같은 맥락으로 

models/reasearch/object_detection/python exporter_main_v2.py

로 생성할 것이며 --help옵션을 주어 파라미터를 살펴보면 tensorflow1과 거의 동일 한 것을 알 수있다

이부분에서도 

input_type은 image_tensor

output_directiry - 출력 경로
pipline_config_path - pipeline 경로
trained_checkpoint_dir - 학습시켰던 checkpoint 경로 ckpt 가 저장된 파일까지만 주면 완성된다

tf2의 경우 해당 코드를 실행시키면 saved_model 디렉토리가 생성될 것인데

이 디렉토리 전체를 사용할 것이다