[머신러닝 공부] Tiny ML -20 / TF Lite
Chapter20. TF Lite
"
그래서 앞장까지 계속 썼던 TF Lite 는 뭘까
"
목차 :
- 마이크로컨트롤러용 TF Lite란?
- 모델을 인터프리터로 해석하는 이유는?
- Makefile?
앞장에서 했던 TFLite 프로젝트들
[머신러닝 공부] Tiny ML -8 / 음성인식 어플리케이션-1
Chapter8. 음성인식(호출어 감지) 어플리케이션 만들기 " 이번 챕터에서는 TinyML을 좀더 생활에 밀접한 부분에 사용해본다. " 목차 : TinyML을 이용한 호출어감지는 왜 필요할까? 만들고자 하는 시스템
dbstndi6316.tistory.com
[머신러닝 공부] Tiny ML -13 / 인체감지 어플리케이션-1
Chapter13. 인체감지 어플리케이션 " 카메라로 인체를 감지해보자 (CNN) " 목차 : 개요 만들고자하는 시스템 어플리케이션 아키텍처 코드 기본흐름 -> 다음장 핵심 함수 분석 -> 다음장 마이크로컨트
dbstndi6316.tistory.com
[머신러닝 공부] Tiny ML -17 / 제스처인식 어플리케이션 -1
Chapter17. 제스처인식 어플리케이션 " 자이로센서를 이용해 간단한 제스처를 인식하는 어플리케이션을 만들어보자 " 목차 : 개요 만들고자 하는 시스템 기본흐름 코드 제스처 감지 -> 다음장 MCU에
dbstndi6316.tistory.com
1. 마이크로컨트롤러용 TF Lite란?
Tensorflow Lite for Microcontroller ⊂ Tensorflow Lite ⊂ Tensorflow
텐서플로는 구글의 오픈소스 머신러닝 라이브러리이다.
- 장점 : 방대한 커뮤니티와 오픈소스, 배포와 관련된 많은 도구, 예제, 최적화 등 제공
- 단점 : 클라우드를 벗어난 플랫폼에 적합하지 않음. 스마트폰 플랫폼 등
▼
텐서플로 라이트는 저사양 모바일 플랫폼을 충족하기 위한 텐서플로의 하위 프로젝트로 시작된 라이브러리이다.
- 장점 : 수백 킬로바이트 안에 들어갈 수 있으며 어플리케이션에 쉽게 적용될 수 있다. 8비트 양자화 지원.
- 단점 : 모델 훈련기능은 지원하지 않으며, 추론을 실행하는 기능만을 지원한다.
▼
마이크로컨트롤러용 텐서플로 라이트는 임베디드 플랫폼에서 사용할 수 있는 라이브러리이다.
- 장점 : 20KB 이하의 용량으로 소화할 수 있는 바이너리.
- 단점 : 임베디드플랫폼에서 사용할때 기존 텐서플로 라이트는 여전히 용량 문제 존재.
마이크로컨트롤러용 텐서플로 라이트를 위해서 2018년 구글 에서는 아래 요구사항을 파악했다.
- 운영체제 종속성이 없어야 한다. (OS상관없이 동작)
- C/C++ 라이브러리에 대한 종속성이 없어야 한다. (간단한 함수조차 큰 용량 차지 / C math 라이브러리는 제외)
- 하드웨어가 부동소수점을 처리할 수 없다. (성능에 영향)
- 동적 메모리 할당이 없어야 한다. (heap이 조각나 충돌 발생 위험이 있다.)
- C+11이 필요하다. (범용성을 위해)
- 32bit 프로세스를 기준으로 한다. (최근 추세 따라 32bit 사용 - 2018기준)
1. 모델을 인터프리터로 해석하는 이유는?
모델을 미리 코드화 하지 않고 런타임에 모델을 인터프리터로 해석한다.
- 빌드 용이성 (외부 라이브러리에 의존X)
- 수정 용이성 (코드를 단계별로 검토하고 변경하는 것이 간단하다)
- 인라인 데이터 (추가 파일이 필요없어 로드나 파싱 단계가 필요없다)
- 코드 크기 (프로그램 세그먼트의 크기를 최소화할 수 있다)
이로인한 단점은 아래와 같다.
- 업그레이드 불편 (전체를 재 생성하고 로컬 변경사항을 다시 패치해야한다)
- 다중 모델 - 모델 교체 불편 (하나의 소스가 하나의 모델만 지원하므로 변경 시 모두 변경해야 한다)
위를 해결하기 위해 Project generation 방식을 사용한다.
이 프로세스는 모델을 빌드하는데 필요한 소스파일의 사본을 생성하고 IDE종속적인 프로젝트 파일을 선택 설정하여 쉽게 빌드할 수 있는 프로세스이다.
3. Makefile?
Make 빌드 시스템의 역사는 40년이 넘었고 많은 기능이 혼동을 유발한다.
따라서 구글은 Cmake 와 같은 유연한 도구를 사용하기로 결정했고 사용자는 Makefile 직접 수정이 아닌 IDE에서 프로젝트를 작성할 수 있게 됐다.
이후 내용 추가 예정
- 단위테스트 작성
- 하드웨어 플랫폼 지원
- IDE 지원
- 하드웨어 가속기 지원
- Micro에 포팅
(다음 내용이 더 재밌어보여서 먼저 공부하고 오겠다)