-
Tensorflow.lite / Tensorflow.js / CoreML(ML&DL) 프로젝트/머신러닝 App 탑재 2022. 3. 23. 13:40
차이점 비교
Tensorflow.lite Tensorflow.js CoreML 특징 1. iOS, Android 네이티브 언어와 호환
2. 모델 구현 & 학습코드는 존재X (앱 탑재가 목적이므로) -> 미리 학습시킨 모델을 변환하여 앱 내에서 추론만 실행함1. 자바스크립트 언어와 호환
-> 스크립트 언어를 사용하는 웹 프론트엔드, 하이브리드 앱 프레임워크에 탑재 가능
2. 모델 layer를 직접 구현 가능 (tenserflow와 문법 유사) & 모델 학습도 가능
- 웹 경우에는 학습시킬 서버가 있으므로..핵심 사전 학습된 모델을 TFLite포맷으로 변환
-> 추론 API활용 (Interpreter)사전학습된 keras모델 (.h)을 변환
-> 모델 로드 (tf.loadLayersModel )
-> 추론 코드 호출 (model.predict)차이점 어플에서 입력되는 데이터 전처리
& 추론 결과 전처리를 네이티브 언어 혹은 API를 통해 처리 가능어플에서 입력되는 데이터 전처리
& 추론 결과 전처리를 tensorflow코드로 구현 가능1. TensorFlow Lite
: TensorFlow 모델을 휴대폰, embedded 나 IOT 기기에서 구동하기 위한 ML 툴< workflow >
- 모델 선택
- TF Lite에서 구동할 TensorFlow 모델을 사전 학습한 모델을 선택하거나 직접 코드를 작성하고 학습을 시킨다.
- TensorFlow에서는 통상 pb 파일을 사용하는데, 이 pb 파일 형태의 모델을 만드는 단계이다.
- TFLite 모델로 변환
- TensorFlow용으로 작성한 pb 모델 파일을 TFLite 포맷은 tflite 파일로 변환(convert)한다.
- 몇가지 변환툴이 지원되니 상황에 맞게 선택할 수 있다.
- 배포(deploy)
- tflite 모델 파일을 실제 구동할 디바이스에서 inference 수행을 배포한다.
- Edge 단 배포는 Java, Swift, Objective-C, C++, Python과 같이 다양한 언어로 제공되는 API 세트가 있다.
- 모델 최적화
- tflite 모델 생성 완료 후, 모델 파일 최적화를 수행할 수 있다. 이 과정을 통해서 모델 사이즈를 더 작게 만들어서 inference 시간을 절약할 수 있다.
- 모델 사이즈를 줄이는 과정은 정확도를 희생시키는 이슈가 발생한다. 정확도를 지켜내면서 모델 사이즈를 줄이는 것이 목표가 된다
참고1 https://devinlife.com/tensorflow%20lite/intro-tflite/
참고2 https://pythonkim.tistory.com/131?category=703510 (안드로이드)
참고3 https://www.tensorflow.org/lite/guide?hl=ko (개발flow 공식 가이드라인)
참고4 https://www.tensorflow.org/lite/api_docs?hl=ko (API 공식 도큐멘트)
2. TensorFlow js
javaScript언어를 위한 tensorflow
※ 어플 내에서는 학습이 불가하므로 단독 keras모델로 사전학습 -> 모델 변환 -> 추론 코드 호출
Keras 모델의 경우 tensorflow.js 모듈에는 JSON 형식을 직접 출력하는 Python TF에서 호출 가능한 API가 포함되어 있습니다.
예:
# in Python code where the model is created and trained import tensorflowjs as tfjs … def train(…): model = keras.models.Sequential() # create a layered keras model … model.compile(…) model.fit(…) # train model tfjs.converters.save_keras_model(model, my_tfjsmodel_path)
// in JavaScript code inferring the converted model const model = await tf.loadGraphModel(‘myTfjsmodelPath/model.json’);
const model = await tf.loadLayersModel(‘myTfjsmodelPath/model.json’);
const prediction = model.predict(inputData);
참고1 https://www.tensorflow.org/js/guide (개발flow 공식 가이드라인)
참고3 https://www.youtube.com/watch?v=a9tD69fEX-U --> 따라하기에 제일 좋은듯
Q. tensorflow.js가 사용하기에 비교적 용이해 보임
-> 네이티브 앱에 머신러닝 기능을 넣고싶으면,
머신러닝 적용되는 부분(화면)만 웹뷰로 작성해서
웹앱을 심으면 안될지...?
-> 그럼 사용자가 입력한 데이터 (추론에 사용될 데이터)는 어떻게 받아올지
z
'(ML&DL) 프로젝트 > 머신러닝 App 탑재' 카테고리의 다른 글
추천시스템 알고리즘 선정 (0) 2022.06.19 tensorflow.js 관련 서적 (0) 2022.04.03 추천시스템 예제코드 (0) 2022.03.22 - 모델 선택