본문 바로가기
공부/ML&DL

[머신러닝 공부] Tiny ML -20 / TF Lite

by 로디네로 2022. 4. 28.
반응형

 

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년 구글 에서는 아래 요구사항을 파악했다.

  1. 운영체제 종속성이 없어야 한다. (OS상관없이 동작)
  2. C/C++ 라이브러리에 대한 종속성이 없어야 한다. (간단한 함수조차 큰 용량 차지 / C math 라이브러리는 제외)
  3. 하드웨어가 부동소수점을 처리할 수 없다. (성능에 영향)
  4. 동적 메모리 할당이 없어야 한다. (heap이 조각나 충돌 발생 위험이 있다.)
  5. C+11이 필요하다. (범용성을 위해)
  6. 32bit 프로세스를 기준으로 한다. (최근 추세 따라 32bit 사용 - 2018기준)

 


 

1. 모델을 인터프리터로 해석하는 이유는?

 

모델을 미리 코드화 하지 않고 런타임에 모델을 인터프리터로 해석한다.

  1. 빌드 용이성 (외부 라이브러리에 의존X)
  2. 수정 용이성 (코드를 단계별로 검토하고 변경하는 것이 간단하다)
  3. 인라인 데이터 (추가 파일이 필요없어 로드나 파싱 단계가 필요없다)
  4. 코드 크기 (프로그램 세그먼트의 크기를 최소화할 수 있다)

 

이로인한 단점은 아래와 같다.

  1. 업그레이드 불편 (전체를 재 생성하고 로컬 변경사항을 다시 패치해야한다)
  2. 다중 모델 - 모델 교체 불편 (하나의 소스가 하나의 모델만 지원하므로 변경 시 모두 변경해야 한다)

 

위를 해결하기 위해 Project generation 방식을 사용한다.

이 프로세스는 모델을 빌드하는데 필요한 소스파일의 사본을 생성하고 IDE종속적인 프로젝트 파일을 선택 설정하여 쉽게 빌드할 수 있는 프로세스이다.

 


 

3. Makefile?

 

Make 빌드 시스템의 역사는 40년이 넘었고 많은 기능이 혼동을 유발한다.

 

따라서 구글은 Cmake 와 같은 유연한 도구를 사용하기로 결정했고 사용자는 Makefile 직접 수정이 아닌 IDE에서 프로젝트를 작성할 수 있게 됐다.

 

 


 

이후 내용 추가 예정

  • 단위테스트 작성
  • 하드웨어 플랫폼 지원
  • IDE 지원
  • 하드웨어 가속기 지원
  • Micro에 포팅

(다음 내용이 더 재밌어보여서 먼저 공부하고 오겠다)

 

 

 

 

반응형

댓글