brunch

You can make anything
by writing

C.S.Lewis

by 서진호 Oct 13. 2020

TinyML 세계에 여러분을 초대합니다!

TinyML 플랫폼의 최신 동향과 전문가 과정, 번역서 소개

이번 주 HarvardX로부터 TinyML 전문가 과정이 생겼다는 뉴스레터를 받고 TinyML에 대해 정리를 해야겠다는 생각이 들었습니다! 백문이 불여하고, 일단 TinyML은 무엇일까요? 여러분들이 짐작하시는 대로 아마 맞을 것입니다. 


Tiny Machine Learning (TinyML)은 최신 임베디드 소프트웨어 기술로 엣지에서 컴퓨팅을 더 비용은 저렴하게 성능은 우수하게 인공지능으로 예측 가능하게 만드는 것입니다. 따라서 초 저전력 시스템에서 머신러닝(ML)을 가장 잘 구현하는 방법과 플랫폼들을 말합니다. 

아직까지 어느 특정한 회사의 플랫폼에 지배되지 않습니다만 하드웨어와 소프트웨어가 잘 결합된 제품들이 현재 널리 사용되고 있습니다. 또한 임베디드 하드웨어는 별도로 구매를 해야 합니다.  


TinyML 플랫폼

현재 널리 사용할 수 있는 하드웨어 플랫폼으로서는 다음과 같이 제품들을 개발자들과 연구자들이 많이 사용하고 있습니다.  


1. 아두이노(Arduino): 오픈 소스 하드웨어로 알려진 아두이노(Arduino)는 수백만 개발자들이 TinyML을 사용할 수 있도록 지원해 주고 있습니다. 특히, Arduino Nano 33 Blutotooth Sensor 마이크로 컨트롤러에서 PC나 맥환경에서 아두이노 개발환경 1.8.10 버전부터 Arduino nRF528x Boards (Mbed OS) 와 Arduino_LSM9DS1, Arduino_TensorFlowLite 라이브러리를 설치하시면 하면 쉽게 사용할 수 있습니다.  


[그림1 - Arduino Nano 33 BLE Sense 보드]


2. NVIDIA Jetson Nano Development Kit: NVIDIA의 솔루션으로 제작자, 학습자 및 임베디드 개발자가 최신 AI를 사용할 수 있도록 해줍니다. 특히, 이 키트는 이미지 분류, 물체 감지, 세분화 및 음성 처리와 같은 애플리케이션을 위해 여러 신경망을 병렬로 실행할 수 있는 작고 강력한 컴퓨터입니다. 시스템 이미지가 있는 microSD 카드를 삽입하고 개발자 키트를 부팅한 다음, 전체 NVIDIA Jetson 제품에 사용하는 동일한 NVIDIA JetPack SDK 사용하면 간단하게 쓸 수 있는 장점을 가지고 있습니다. 또한 JetPack은 AI 소프트웨어 교육 및 배포를 위한 NVIDIA의 세계 최고의 AI 플랫폼과 호환되어 개발자의 복잡성과 노력을 줄여줍니다.


[그림 2 - Jetson Nano Developer Kit]

3. Coral: Coral은 로컬 AI로 제품을 구축하기 위한 구글의 개발 도구로 온 디바이스 추론 기능을 사용하면 효율적이고 데이터를 비공개로 빠르고 오프라인으로 제품을 구축하는데 도움을 줍니다. 따라서, Coral 하드웨어 및 프로젝트에 기기 내 인텔리전스를 쉽게 구축할 수 있도록 하며, 프로토타입에서 프로덕션까지 아이디어를 쉽게 성장시킬 수 있는 완전한 로컬 AI 툴킷(SW 및 HW 포함)을 제공합니다. 특히, Google의 첫 번째 HW 제품은 Coral Dev Board와 USB Accelerator로, 두 제품 모두 Google의 Edge TPU를 지원하는 데 타 플랫폼과 차별성을 두었습니다. 


[그림 3 - 구글 코럴 하드웨어 보드]


4. TensorFlow Lite for Microcontrollers: 구글이 주도하는 마이크로 컨트롤러용 TensorFlow Lite 플랫품으로서 C++ 언어의 버전 11로 작성되었으며 32 비트 플랫폼이 필요합니다. 또한 Arm Cortex-M 시리즈 아키텍처를 기반으로 하는 많은 프로세서로 광범위하게 테스트되었으며 ESP32를 포함한 다른 아키텍처로 이식되었고, Arduino 라이브러리로 제공되며 Mbed와 같은 개발 환경을 위한 프로젝트를 생성할 수 있습니다. 지원하는 하드웨어 플랫폼은 Arduino Nano 33 BLE SenseSparkFun EdgeSTM32F746 Discovery kitAdafruit EdgeBadgeAdafruit TensorFlow Lite for Microcontrollers KitAdafruit Circuit Playground BluefruitEspressif ESP32-DevKitCEspressif ESP-EYE 등등 지원하고 있습니다.


[그림 4 - ARM Cortex-M 시리즈]

5. 텐서플로우용 라즈베리 파이(Raspberry Pi): 라즈베리 파이에서도 당연히 구글의 TensorFlow 1.9 부터 공식적으로 지원하고 있습니다. 라즈베리 파이는 아두이노 처럼 영국 잉글랜드의 라즈베리 파이 재단이 학교와 개발도상국에서 기초 컴퓨터 과학의 교육을 증진시키기 위해 개발한 싱글 보드 컴퓨터 오픈소스 프로젝트 입니다. 다양한 리눅스 운영체제와 윈도우10 IoT Core 등을 지원합니다. 


[그림 5 - Raspberry Pi 3 모델B 보드]

6. Google AIY Projects : Google의 AIY 프로젝트는 DIY 인공 지능 키트 모음 입니다. 보고 듣고 이해할 수있는 지능형 장치를 구축할 수 있는 데, Google AIY의 키트는 수정 및 실험을 위해 확장 가능합니다. 모든 것을 분해하고 더 나은 것을 창조할 수 있도록 Vision Kit 와 Voice Kit 를 제공해 줍니다. Vision Kit는 DIY 지능형 카메라 프로젝트, 신경망을 사용한 이미지 인식 실험을 제공하고, Raspberry Pi ZWH 와 Raspberry Pi Camera v2 및 SD 카드를 포함하고 있습니다.

[그림 6 - 구글의 Vision Kit]  

또한 Voice Kit는 DIY 지능형 스피커, 음성 인식 및 Google Assistant로 실험 할 수 있습니다. 참고로 Raspberry Pi ZWH 및 SD 카드만 지원되며, 인터넷이 연결할 수 있어야 Google Assistant 와 연결할 수 있습니다.  


[구글 7 - 구글의 Voice Kit]

TinyML을 배우기 위한 전문가 인증 과정


그렇다면, 앞서 제가 받았다는 하버드 대학교에서 온 뉴스레터 내용을 소개하겠습니다. 이번 강의는 Harvard University의 John A. Paulson School of Engineering and Applied Sciences (SEAS) 교수진들과 Google TensorFlow 팀의 엔지니어들이 제공하여 3개의 코스를 마스터하면 Professional 인증서를 받을 수 있는 프로그램입니다. 


[그림 8 - HarvardX 의 TinyML Professional Certificate 과정]

물론 인증서를 받기 위해서는 전체 $537.30 가격을 내어야 하고 영어로만 강의가 제공된다는 점을 유의하기 바랍니다. 그러나 들어보면 내용이 어렵지 않고 강의 스크립트 들을 제공하니 번역해서 이해할 수 있는 수준입니다. 강사의 영어 발음도 그렇게 빠르지 않은 평범한 수준이므로 너무 걱정 안 하셔도 됩니다. 

   

특히, 이번에는 흥미스러운 점은 Tiny Machine Learning이라는 새로운 분야를 실제 응용 프로그램을 핸즈-온 랩으로 해 볼 수 있는 혁신적인 기술의 미래 가능성에 대해 배울 수 있다는 점입니다. 다시 말해, TinyML은 머신러닝 (ML)의 혁신적인 힘을 임베디드 시스템의 성능 및 전력 제한 영역에 제공하는 최첨단 분야입니다. 물론 TinyML 기술을 사용하려면 응용 프로그램, 알고리즘, 하드웨어 및 소프트웨어에 대한 자세한 지식이 필요합니다.


이 시리즈를 통해 TinyML 개념의 기초를 익히고 실습 경험 교육을 습득하고 소형 임베디드 장치에 머신 러닝을 배포합니다. 온-보드 센서(on-board sensors)가 있는 Arduino 보드와 ARM Cortex-M4 마이크로 컨트롤러가 포함된 TinyML 프로그램 키트를 사용하여 이미지 인식, 오디오 처리 및 제스처 감지와 관련된 애플리케이션을 구축하는 방법을 배우고 전체적으로 소형 기기의 머신러닝 애플리케이션을 구현합니다. 또한 TinyML용 앱을 어떻게 배포하는지 실제 애플리케이션 사례 연구를 들어서 설명합니다. 


1. TinyML의 기초 이해하기 (Fundamentals of TinyML)


TinyML Certificate 시리즈의 첫 번째 과정인 TinyML의 기초 이해하기(Fundamentals of TinyML)은 머신 러닝, 딥 러닝, 스마트 폰 및 기타 소형 장치와 같은 임베디드 장치 및 시스템의 기본 사항에 중점을 둡니다. 단계별 과정을 통해 데이터 수집을 위한 데이터 과학 기술을 배우고, 기본적인 머신러닝 모델을 훈련하기 위한 학습 알고리즘에 대한 이해를 개발합니다. 이 과정을 마치면 TinyML의 "언어"를 이해하고 향후 과정에서 TinyML을 적용할 준비를 할 수 있습니다.


2. TinyML의 애플리케이션 개발 (Applications of TinyML)


Tiny Machine Learning (TinyML)은 딥 러닝에서 가장 빠르게 성장하는 영역 중 하나이며 점점 더 접근성이 높아지고 있습니다. TinyML Professional Certificate 프로그램의 두 번째 과정인 TinyML의 애플리케이션 개발(Applications of TinyML)은 세계에서 가장 널리 사용되는 TinyML 기기의 이면에 있는 코드를 보여줍니다.


이 과정에서는 가장 널리 사용되는 Tiny ML 애플리케이션의 이면에 있는 코드를 보여주는 실제 사례 연구를 제공합니다. 좀 더 상세히 말하자면, 제스처 감지 및 음성 인식과 같은 작업에 센서 데이터를 사용하기 위한 코드를 자세히 살펴볼 수 있으며, 훈련 및 추론과 같은 애플리케이션의 신경망에 중점을 두고 Android 및 Apple의 'OK Google', 'Hey, Siri', 'Alexa' 및 스마트  기능의 이면에 있는 코드를 검토하여 TinyML의 Keyword Spotting, Visual Wake Words, Anomaly Detection, Dataset Engineering 및 책임성 있는 인공지능(Responsible Artificial Intelligence)에 대해 이해합니다. 


3. TinyML 배포하기 (Deploying TinyML)


TinyML Professional Certificate 프로그램의 세 번째 과정 인 Deploying TinyML은 물리적 장치에 TinyML을 배포하는 실무 경험을 제공하는 데, 이 과정에서는 소프트웨어를 배우고, 코드를 작성하고, 소형 마이크로 컨트롤러 기반 장치에 모델을 배포합니다.


특별한 과정인 세 번째의 TinyML 배포하기(Deploying TinyML)는 컴퓨터 과학과 전기 공학이 혼합된 과정입니다. 마이크로 컨트롤러용 TensorFlow Lite를 사용하여 임베디드 시스템, 머신 러닝 교육, 머신 러닝 배포에 대한 실무 경험을 쌓고 음성 인식, 소리 감지, 제스처 감지와 같은 애플리케이션을 구현하기 위해 자체 마이크로 컨트롤러를 운영할 수 있습니다.


이 과정은 온보드 센서가 있는 Arduino 보드와 ARM Cortex-M4 마이크로 컨트롤러가 포함된 TinyML 프로그램 키트를 기반으로 하는 프로젝트를 제공합니다. 이 키트에는 이미지 인식, 오디오 처리 및 제스처 감지와 관련된 애플리케이션을 구축하는 데 필요한 모든 것이 포함되어 있습니다. 알기 전에 전체 소형 머신 러닝 애플리케이션을 구현하게 됩니다.


끝으로 페이스북 타임라인과 그룹에 유료 강의라 부담된다는 메시지를 많이 보아서 무료로 강의를 들을 수 있는 방법을 소개합니다. 주어진 기간 내에 인증서를 받지 않고 이 코스를 검증을 할 수 있습니다. eDX에서는 모든 기능을 제공하므로 충분히 여러분들이 시간을 투자한다면 완료할 수 있습니다. 


그렇기 하기 위해서는 첫 enroll 버튼을 누른 후, 아래의 그림처럼 아래의 Audit This Course(No Certificate) 부분의 Audit This Course 버튼을 누르면 무료로 한정된 기간 내에 공부를 할 수 있습니다. (기간이 넘어가면 유료로 계속 공부할 수 있음)


[그림 9] eDX에서 제한된 기간에서 코스를 무료로 공부하는 방법

초소형 머신러닝 TinyML 책 소개


공교롭게도 이번 주에 국내에 소개된 것을 보았습니다. 한빛미디어에서 출간되었는지는 두 달이 넘었지만 널리 알려지지 않은 것 같습니다. 사실 제가 이 책을 보았을 때는 올해 초 1월쯤에 O'Reilly Online에서 보았던 것 같습니다. 위의 온라인 강의가 부담스러운 분들이라면 비슷한 내용으로 구성되어 있는 초소형 머신러닝 TinyML 번역서를 보면서 따라 해 보면 쉽게 할 수 있을 것 같습니다. 더 자세한 내용과 목차는 여기에 잘 나왔으니 한번 살펴 보시기 바랍니다.


[그림 10] 한빛미디어 TinyML 번역서 


초소형 머신러닝 TinyML 번역서: https://www.hanbit.co.kr/store/books/look.php?p_code=B3963656224
TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low Power Microcontrollers 책 - https://www.oreilly.com/library/view/tinyml/9781492052036/
Get Started with machine learning on Arduino 블로그: https://blog.arduino.cc/2019/10/15/get-started-with-machine-learning-on-arduino/?queryID=undefined
Fruit identification using Arduino and TensorFlow 블로그: https://blog.arduino.cc/2019/11/07/fruit-identification-using-arduino-and-tensorflow/?queryID=undefined
Google Coral Project 의 Edge TPU : https://cloud.google.com/edge-tpu?hl=ko
How to install TensorFlow on Raspberry Pi: https://magpi.raspberrypi.org/articles/tensorflow-ai-raspberry-pi
Windows 10 IoT Core 개요: https://docs.microsoft.com/ko-kr/windows/iot-core/windows-iot-core
Google AIY Projects - Artificial intelligence: https://aiyprojects.withgoogle.com/
Google AIY Projects - Vision Kit: https://aiyprojects.withgoogle.com/vision/
Google AIY Projects - Voice Kit: https://aiyprojects.withgoogle.com/voice/
Google AIY Projects - Edge TPU (Coral Devices): https://aiyprojects.withgoogle.com/edge-tpu/

ARM Cortex-M Series Processors : https://developer.arm.com/ip-products/processors/cortex-m


 






매거진의 이전글 브런치, 조회수 10만 회에 감사드립니다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari