이전 포스팅(한참 지났다.) 이후 개인적인 사정으로 텐서플로우를 들여다보지 못했다. 그래서 다시 시작해보려고 한다.
우선 이번 포스팅은 TensorFlow 에서 제공하는 tutorial 중에서 모바일 및 엣지용 디바이스(MCU or MPU로 구동되는 장치들)에서 사용하는 모델 파일인. tflite 파일을 배포하는 방법을 따라한 것이다.
아래 링크에 들어가면 쉽게(?) 따라할 수 있을 것이다.
https://www.tensorflow.org/lite/models/modify/model_maker/image_classification?hl=ko
vsc를 열고 tutorial을 실행할 가상환경을 구축! 혹시 모르시는 분이 있다면 아래 포스팅 참고!
import os
import numpy as np
import tensorflow as tf
assert tf.__version__.startswith('2')
from tflite_model_maker import model_spec
from tflite_model_maker import image_classifier
from tflite_model_maker.config import ExportFormat
from tflite_model_maker.config import QuantizationConfig
from tflite_model_maker.image_classifier import DataLoader
import matplotlib.pyplot as plt
우선 필요한 패키지들을 가져오는 작업을 해야한다. 새롭게 가상 환경을 구축했기 때문에 아마 다 새로 설치해야 될 것이다. 오래 걸리지는 않는다. 순서대로 입력해보면
pip install numpy
넘 파이 설치, 다음으로 tensor flow 설치 이건 시간이 조금 걸린다.
pip install tensorflow
다음으로 tflite_model_maker 설치, 이건 처음 보는 거다. 뭐하는 패키지인지는 나중에 찾아봐야겠다.
pip install tflite-model-maker
tensorflow tutorial 페이지에는 pip install -q tflite-model-maker 이렇게 입력하고 나오는데 별 차이는 없다. 마지막으로 matplotlib을 설치
pip install matplotlib
여기까지 설치하고 제공하는 코드를 순서 대록 입력해보자.
모델 학습, 훈련, 평가에 사용할 이미지 데이터가 있는 링크다. 여기서 데이터를 가져오는데 tutorial에서 제공하는 데이터는 꽃 이미지 데이터다.
image_path = tf.keras.utils.get_file(
'flower_photos.tgz',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
extract=True)
image_path = os.path.join(os.path.dirname(image_path), 'flower_photos')
DataLoader 클래스에서 데이터를 가져온다. image_path는 위 코드를 참고, 가져온 데이터를 훈련데이터와 테스트 데이터로 나누는 코드
data = DataLoader.from_folder(image_path)
train_data, test_data = data.split(0.9)
Tensorflow 모델을 지정하고 훈련 데이터를 전달한다.
model = image_classifier.create(train_data)
훈련된 모델을 평가
loss, accuracy = model.evaluate(test_data)
평가까지 완료된 모델을 .tflite 파일로 내보냄
model.export(export_dir='.')
이렇게 정상적으로 실행된다!
model 파일도 정상적으로 생성. 후. 그럼 이제 내가 원하는 데이터로 모델을 학습시키고 .tflite 파일을 만들어서 cubeAI를 통해 MCU에 올리고 동작시키는 과정을 해봐야지.