TensorFlow Lite for Microcontrollers는 메모리가 몇 KB만 있는 마이크로 컨트롤러 및 기타 기기에서 머신러닝 모델을 실행하도록 설계되었습니다. 코어 런타임이 Arm Cortex M3에서 16KB로 적합하며 여러 기본 모델을 실행할 수 있습니다. 운영체제 지원, 표준 C 또는 C++ 라이브러리 또는 동적 메모리 할당이 필요하지 않습니다.
마이크로 컨트롤러가 중요한 이유
마이크로 컨트롤러는 일반적으로 기본적인 컴퓨팅이 필요한 하드웨어에 삽입되는 소형 저전력 컴퓨팅 기기입니다. 소형 마이크로 컨트롤러에 머신러닝을 도입하면 흔히 대역폭 및 전력 제약이 적용되어 지연 시간이 길어지는 안정적인 인터넷 연결이나 값비싼 하드웨어에 의존하지 않고도 가전제품, 사물 인터넷 기기 등 생활 속에서 사용하는 수십억 기기의 인텔리전스를 강화할 수 있습니다. 기기에서 나가는 데이터가 없으므로 개인정보도 보호할 수 있습니다. 일상 업무에 적응할 수 있는 스마트 가전, 문제와 일반 작업의 차이를 파악하는 지능형 산업 센서, 어린이가 신나고 재미있게 배우도록 돕는 마술 장난감을 상상해 보세요.
지원되는 플랫폼
TensorFlow Lite for Microcontrollers는 C++ 11로 작성되었으며 32비트 플랫폼이 필요합니다. Arm Cortex-M 시리즈 아키텍처를 기반으로 하는 여러 프로세서를 통해 광범위하게 테스트되었으며 ESP32를 포함한 다른 아키텍처로 이전되었습니다. 프레임워크는 Arduino 라이브러리로 제공됩니다. 또한 Mbed와 같은 개발 환경을 위한 프로젝트를 생성할 수 있습니다. 오픈소스이며 C++ 11 프로젝트에 포함될 수 있습니다.
다음과 같은 개발 보드가 지원됩니다.
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery 키트
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite for Microcontrollers 키트
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal: ATSAMD51
- Himax WE-I Plus EVB 엔드포인트 AI 개발 보드
- Synopsys DesignWare ARC EM 소프트웨어 개발 플랫폼
- Sony Spresense
예 살펴보기
각 애플리케이션 예는 GitHub에 있으며 지원되는 플랫폼에 배포할 수 있는 방법을 설명하는 README.md
파일이 있습니다. 다음과 같이 특정 플랫폼을 사용하는 엔드 투 엔드 튜토리얼이 있는 예도 있습니다.
- Hello World - TensorFlow Lite for Microcontrollers 사용에 관한 기본사항을 보여줍니다.
- 마이크로 음성 - 마이크로 오디오를 캡처하여 '예' 및 '아니요'라는 단어를 감지합니다.
- 마술 지팡이 - 가속도계 데이터를 캡처하여 세 가지 신체 동작을 분류합니다.
- 사람 감지 - 이미지 센서로 카메라 데이터를 캡처하여 사람의 유무를 감지합니다.
워크플로
다음 단계는 마이크로 컨트롤러에 TensorFlow 모델을 배포하고 실행하는 데 필요합니다.
- 모델 학습:
- 대상 기기에 적합하고 지원되는 작업을 포함하는 소형 TensorFlow 모델을 생성합니다.
- TensorFlow Lite 변환기를 사용하여 TensorFlow Lite 모델로 변환합니다.
- 표준 도구를 사용하여 C 바이트 배열로 변환해 기기의 읽기 전용 프로그램 메모리에 저장합니다.
- C++ 라이브러리를 사용하여 기기에서 추론을 실행하고 그 결과를 처리합니다.
제한사항
TensorFlow Lite for Microcontrollers는 마이크로 컨트롤러 개발의 특정 제약을 위해 설계되었습니다. 더 강력한 기기(예: Raspberry Pi와 같은 내장형 Linux 기기)에서 작업하는 경우에는 표준 TensorFlow Lite 프레임워크가 통합하기에 더 쉬울 수 있습니다.
다음 제한사항을 고려해야 합니다.
- TensorFlow 작업의 제한된 하위 집합 지원
- 제한된 기기 세트 지원
- 수동 메모리 관리가 필요한 하위 수준 C++ API
- 기기 내 학습은 지원되지 않음
다음 단계
- 마이크로 컨트롤러 시작하기를 참고하여 애플리케이션 예를 사용해 보고 API 사용 방법을 알아보세요.
- C++ 라이브러리 이해를 참고하여 자체 프로젝트에서 라이브러리를 사용하는 방법을 알아보세요.
- 모델 빌드 및 변환을 참고하여 마이크로 컨트롤러에서 배포용 모델의 학습 및 변환에 관해 자세히 알아보세요.