메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

초소형 머신러닝 TinyML

모델 최적화부터 에지 컴퓨팅까지 작고 빠른 딥러닝을 위한 텐서플로 라이트

한빛미디어

번역서

판매중

  • 저자 : 피트 워든 , 대니얼 시투나야케
  • 번역 : 맹윤호 , 임지순
  • 출간 : 2020-08-20
  • 페이지 : 568 쪽
  • ISBN : 9791162243411
  • 물류코드 :10341
초급 초중급 중급 중고급 고급
4.8점 (13명)
좋아요 : 18

텐서플로 라이트를 활용한 마이크로컨트롤러 머신러닝 

 

AI 음성비서 서비스를 만드는 구글 어시스턴트 팀은 불과 14KB짜리 모델을 사용해 “OK 구글”이란 말을 인식한다. 이는 마이크로컨트롤러에도 탑재 가능한 용량이다. 초소형 머신러닝 ‘TinyML’은 딥러닝과 임베디드 시스템의 결합으로 작은 기기에 음성 인식, 제스처 감지 등 놀라운 능력을 부여한다. 이 책은 어떠한 환경에도 적용할 수 있는 작은 모델을 훈련하는 방법을 담고 있다. 머신러닝이나 마이크로컨트롤러를 다룬 경험이 없어도 다양한 프로젝트를 단계별로 따라 하다 보면 실무 활용 능력을 키울 수 있을 것이다. 

 

 

▶ 출판사 리뷰

 

텐서플로 라이트로 알아보는 임베디드 머신러닝의 가능성 

 

마이크로컨트롤러에서 머신러닝을 실행할 수 있게 된 것은 비교적 최근 일이며 이 분야는 초기 단계에 있습니다. 머신러닝에는 여러 가지 접근 방식이 있지만 가장 인기 있는 방식은 딥러닝입니다. 이 책의 예제는 딥러닝을 중심으로 합니다. 딥러닝은 마이크로컨트롤러에 적합한 문제를 해결하기 위한 유연하고 강력한 도구입니다. 제한된 메모리와 저성능 장치에서도 딥러닝이 작동할 수 있다는 것을 알면 놀랄 수도 있습니다. 실제로 이 책을 통해 정말 놀라운 일을 해내면서도 작은 장치의 제약 조건에 맞는 딥러닝 모델을 만드는 방법을 배우게 될 것입니다.

 

이 책에는 딥러닝을 연구에서 끝내지 않고 제품까지 이어가기 위한 텐서플로 팀의 고민이 잘 녹아 있습니다. 정확도를 최대한 유지하면서 모델을 경량화하고, 저전력 환경에서 모델을 실행하고, 성능이 낮아 모델을 실행하기 어려운 컴퓨팅 환경에서 모델을 동작시키는 방법을 텐서플로 라이트로 예제를 실행하며 배워보세요. 

 

이 책을 다 읽고 덮을 때, 현재 임베디드 시스템에서 머신러닝을 사용하여 가능한 것이 무엇인지, 앞으로 몇 년 동안 무엇이 실현 가능할지에 대한 아이디어를 얻을 수 있기를 바랍니다.

 

 

이 책에서 다루는 내용

  • 마이크로컨트롤러용 텐서플로 라이트
  • 오디오, 이미지, 가속도계 데이터로 머신러닝(딥러닝) 모델 학습
  • 음성 인식, 제스처 인식 등 임베디드 기기에서 작동하는 머신러닝 애플리케이션 
  • 아두이노를 비롯한 저전력 마이크로컨트롤러에 머신러닝 탑재
  • 지연, 에너지 사용, 모델 크기, 바이너리 크기 최적화 기법
  • 머신러닝 필수 사항과 자신만의 모델 훈련 방법
  • 애플리케이션 디버깅, 개인 정보 보호, 보안을 고려한 설계 노하우

 

 

▶ 추천사

 

“자원이 제한된 장치에서 머신러닝을 구현하려는 이들을 위한 필독서다. AI 발전에 기념비적인 성취라 할 만하다.”

_마시모 밴지, 아두이노 창시자

 

“ARM 기반 마이크로컨트롤러에 머신러닝을 배포하는 예제를 명확하고 재미있게 알려준다.”

_젬 데이비스, ARM 머신러닝 그룹 부사장 

저자

피트 워든

구글의 모바일, 임베디드 텐서플로 기술 책임자다. 애플에서 근무한 이후 제트팩(Jetpac)의 CTO이자 창업자로 일하다가 2014년에 제트팩이 구글에 인수되며 구글에 합류했다. 피트 워든은 텐서플로 팀의 창립 멤버이며 트위터에서 @petewarden으로 활동 중이고 실용적인 딥러닝 블로그 https://petewarden.com을 운영하고 있다.

저자

대니얼 시투나야케

구글에서 텐서플로 라이트의 개발자 홍보를 이끌고 있다. 이전에는 대규모로 곤충 단백질을 자동으로 생산하는 기업 타이니 팜(Tiny Farms)을 공동 설립했다. 최근에는 버밍엄 시티 대학교에서 자동 식별과 데이터 캡처 분야 강의를 시작했다.

역자

임지순

낮에는 계약서와 코드를 두드리고 밤에는 신시사이저와 기타를 난도질하는 공학과 미디어의 주변인. 임베디드 프로그래머, 미들웨어 개발자, 프로젝트 매니저, 사업개발 등 다양한 직군에 종사해왔으며 최근에는 엔터테인먼트 산업에서 딥러닝을 활용하는 연구를 진행 중이다. 사회적인 덕후로 생존하기 위해 오늘도 코드, 글과 씨름하고 있다. 

 

역자

맹윤호

IBM Data & AI에서 엔지니어로 근무하고 있다. 연세대학교에서 데이터 분석 전공으로 석사 과정을 졸업하고 박사 과정을 밟고 있는 샐러던트다. SK C&C, KISTI, NRF, DBpia 등에서 프로젝트를 진행하고 Apache Zeppelin, Qiskit, KoGPT-2 등 오픈소스 프로젝트에 기여했다. 삼성, 현대, LG, 딜로이트 등 기업을 대상으로 강연하고 연세대학교, 중앙대학교, 상명대학교, 순천대학교 등에서도 강연한 바 있다. 참여 도서로는 『하이퍼레저 블록체인 개발』(한빛미디어, 2019), 『블록체인의 정석』(지앤선, 2019)이 있으며 IT 잡지 「마이크로 소프트웨어」에도 글을 실었다. 깃허브에서 @yunho0130으로 활동하고 기술 블로그(http://maengdev.tistory.com/)와 유튜브 채널(https://www.youtube.com/myh0130)을 운영하고 있다.

 

CHAPTER 1 서론

1.1 임베디드 장치

1.2 생태계 변화


CHAPTER 2 시작하기

2.1 이 책의 대상 독자

2.2 개발에 필요한 하드웨어

2.3 개발에 필요한 소프트웨어

2.4 이 책에서 배울 내용

 

CHAPTER 3 머신러닝 빠르게 훑어보기

3.1 머신러닝이란 무엇인가

3.2 딥러닝 워크플로

3.3 마치며

 

CHAPTER 4 TinyML ‘Hello World’ 시작하기: 모델 구축과 훈련

4.1 만들고자 하는 시스템

4.2 머신러닝 도구

4.3 모델 구축하기

4.4 모델 학습시키기

4.5 텐서플로 라이트용 모델 변환

4.6 마치며

 

CHAPTER 5 TinyML ‘Hello World’: 애플리케이션 구축

5.1 테스트 작성

5.2 프로젝트 파일 구조

5.3 소스 코드 살펴보기

5.4 마치며

 

CHAPTER 6 TinyML ‘Hello World’: 마이크로컨트롤러에 배포하기

6.1 마이크로컨트롤러란 무엇인가

6.2 아두이노

6.3 스파크펀 에지

6.4 ST마이크로 STM32F746G 디스커버리 키트

6.5 마치며

 

CHAPTER 7 호출어 감지: 애플리케이션 만들기

7.1 만들고자 하는 시스템

7.2 애플리케이션 아키텍처

7.3 테스트 코드

7.4 호출어 듣기

7.5 마이크로컨트롤러에 배포하기

7.6 마치며

 

CHAPTER 8 호출어 감지: 모델 훈련하기

8.1 새로운 모델 훈련

8.2 프로젝트에서 모델 사용

8.3 모델 작동 방식

8.4 나만의 데이터로 훈련하기

8.5 마치며

 

CHAPTER 9 인체 감지: 애플리케이션 만들기

9.1 만들고자 하는 시스템

9.2 애플리케이션 아키텍처

9.3 테스트 코드

9.4 인체 감지

9.5 마이크로컨트롤러 배포

9.6 마치며

 

CHAPTER 10 인체 감지: 모델 훈련하기

10.1 연산 환경 선택

10.2 구글 클라우드 플랫폼 인스턴스 설정

10.3 훈련 프레임워크 선택

10.4 데이터셋 구축하기

10.5. 모델 훈련하기

10.6 텐서보드

10.7 모델 평가하기

10.8 텐서플로 라이트로 모델 내보내기

10.9 다른 카테고리 훈련

10.10 아키텍처 이해

10.11 마치며

 

CHAPTER 11 마술 지팡이: 애플리케이션 만들기

11.1 만들고자 하는 시스템

11.2 애플리케이션 아키텍처

11.3 단계별 테스트

11.4 제스처 감지

11.5 마이크로컨트롤러에 배포

11.6 마치며

 

CHAPTER 12 마술 지팡이: 모델 훈련하기

12.1 모델 훈련하기

12.2 모델의 작동 방식

12.3 나만의 데이터로 훈련하기

12.4 마치며

 

CHAPTER 13 마이크로컨트롤러용 텐서플로 라이트

13.1 마이크로컨트롤러용 텐서플로 라이트란 무엇인가

13.2 빌드 시스템

13.3 새로운 하드웨어 플랫폼 지원

13.4 새로운 IDE나 빌드 시스템 지원

13.5 프로젝트와 저장소 간 코드 변경 사항 통합

13.6 오픈소스에 기여

13.7 새로운 하드웨어 가속기 지원

13.8 파일 포맷 이해

13.9 텐서플로 라이트 모바일 작업을 Micro에 포팅하기

13.10 마치며

 

CHAPTER 14 자신만의 TinyML 애플리케이션 설계하기

14.1 설계 과정

14.2 마이크로컨트롤러가 필요할까, 더 큰 장치가 필요할까?

14.3 무엇이 가능한지 이해하기

14.4 다른 사람의 발자취 따르기

14.5 훈련할 모델 찾기

14.6 데이터 관찰

14.7 오즈의 마법사 방법론

14.8 데스크톱에서 먼저 작동시키기


CHAPTER 15 지연 최적화

15.1 정말 중요한 문제인지 확인하기

15.2 하드웨어 변경

15.3 모델 개선

15.4 양자화

15.5 제품 설계

15.6 코드 최적화

15.7 연산 최적화

15.8 오픈소스에 기여

15.9 마치며

 

CHAPTER 16 에너지 사용 최적화

16.1 직관 기르기

16.2 실제 전력 소모 측정하기

16.3 모델의 전력 사용량 추정

16.4 전력 소모 개선

16.5 마치며

 

CHAPTER 17 모델과 바이너리 크기 최적화

17.1 시스템의 한계 이해

17.2 메모리 사용 측정

17.3 다양한 문제에 대한 모델 정확도와 크기

17.4 모델 선택

17.5 실행 파일 크기 줄이기

17.6 정말로 작은 모델

17.7 마치며

 

CHAPTER 18 디버깅

18.1 훈련과 배포 사이 정확도 손실

18.2 수치의 차이

18.3 알 수 없는 충돌과 중단

18.4. 마치며


CHAPTER 19 텐서플로에서 텐서플로 라이트로 모델 포팅하기

19.1 필요한 Op 이해

19.2 텐서플로 라이트의 기존 Op 범위 살펴보기

19.3 전처리 및 후처리를 애플리케이션 코드로 이동

19.4 Op의 구현

19.5 Op 최적화

19.6 마치며

 

CHAPTER 20 개인 정보, 보안, 배포

20.1 개인 정보

20.2 보안

20.3 배포

20.4 마치며

 

CHAPTER 21 파도를 따라잡기 위하여

21.1 TinyML 재단

21.2 SIG Micro

21.3 텐서플로 웹사이트

21.4 그 밖의 프레임워크

21.5 트위터

21.6 TinyML의 친구들

21.7 마치며

 

부록 A 아두이노 라이브러리 Zip 사용과 생성

부록 B 아두이노에서 오디오 받기

  • [나의 한줄 추천사]

    라즈베리파이에서 구동하는 머신러닝이겠지 선입견(?)으로 접근했는데, 전혀 아니였다. OS 없는 초전력 초경량 머신러닝에 입문하고 싶다면 이책을 보라

    [책을 구매한 이유]

    초경량화 Tensorflow Lite 로 변환 포팅하고, 서비스 구현(음성인식, 인체감지, 마술 지팡이) 까지 해볼 수 있다.

    ※ 마술 지팡이 : 지팡이에 가속도 센서를 달아서 지팡이를 휘드르면 LED 에 불을 켜는 프로젝트

    [내가 찾고자 했던 질문과 대답들]

    - 기존 ML과 어떤 차이점이 있나?

    1mW 코인배터리로 1년의 수명을 유지할수 있는 초전력, 초경량화 Edge 센서 동작하는 TinyML 이다. 기존 딥러닝같은 경우 추론하는 과정에서도 엄청난 컴퓨팅이 들어가는데, TinyML은 센서에 발생하는 원시적인 데이터를 추론시켜서 의미있는 데이터로 보여주기 때문에 그자체 하나만으로 초전력, 초경량화 가격도 싼 Edge 컴퓨팅이 가능하다.

    - TinyML 포팅하는 방법?

    앞단에 머신러닝 모델 방법은 똑같다. 뒷단에 Tensorflow Lite 변환하는 부분부터가 다르다.

    소형 마이크로컨트롤러에서 모델을 실행하려면 그것에 맞게 다른 인터프리터와 도구가 필요한데 바로 Tensorflow Lite

    이다. "Converter" 통해서 모델의 크기를 줄이고, 성능 저하시키지 않으면서 빠르게 실행하기 위한 특수 최적화 가능하다. 모델 변환이 끝나면, 모델을 배포하는데 마이크로컨트롤러용 "Tensorflow Lite C++ 라이브러리"를 사용하여 모델을 로드하고 추론할수 있다.

    - TinyML 무엇을 할수 있나?

    저자도 현재까지 "킬러앱" 없다고 한다. TinyML 생소한 이유도 그러한 이유인것 같다. 하지만 극한 작업이 필요한 소방관이나, 우주탐사 등 전력소모가 최소화하면서 오랫동안 꾸준히 동작해야하는 경우 적용해볼수 있을것 같다.

    그래서 더욱 끌리는 것인지도 모른다.

  • 바람이 부니 기술의 발전은 정말이지 엄청나다, 두어번의 침체기 끝에 새롭게 붐업된 인공지능 분야의 변화는 자고나면 새로운 내용 발표되고 실시간으로 전세계로 전파되는 가장 핫한 분야이다.

     

    머신러닝, 딥러닝 하면 떠오르는게 뭐가 있을까?

     

    알파고? 이런것 들먹이면 아재소리 들어야 하지 않을까 싶다.

     

    좀더 원론적으로 들어가보면 데이터 그것도 충분한 학습을 위한 소위 빅데이터가 필요할 것이고 학습을 위한 엄청난 컴퓨팅파워, 그렇기에 GPU도 필요하고 한 것이 아니겠는가...

    말그대로 딥러닝, 엄청난 레이어를 통과하며 엄청난 계산을 통해 최적화 해나가는 것 그래서 난 머신러닝, 딥러닝 하면 무겁다는 생각이 먼저 든다.

     

    요즘 한참 열과성의를 다하고 있는 20여만건의 텍스트 분석을 위해 이런저런 언어모델을 돌리자니 컴퓨팅 파워도 파워지만 메모리 리소스도 10~20GB는 그냥 우습게 잡아먹는다.

     

    이렇게 무거운데 4차산업혁명으로 지칭되는 초연결사회에서의 딥러닝은? 흔히들 말하는 이상적인 5G 세상은 아직도 요원하고 소위 IoT로 대변되는 초소형 디바이스들에서는 이 무거운걸 어떻게 돌려야 할까 하는 생각도 해봤다.

     

    사실 학습과 모델은 백엔드에서 만들겠지만 이 학습된 모델을 임베딩 하여 효과적으로 돌릴수 있다면 좀더 우리 주변에 현실적인 서비스로 와닿지 않을까

     

    TinyML은 그런 의문에 대한 비젼을 보여주는 책이다.

    이 책은 여타의 머신러닝, 딥러닝 책과는 다른 주제를 다룬다, 기 학습된 모델을 어떻게 압축하고 탑재할 수 있을지에 대한 방안을 제시하고 있다.

     

    에너지 비용이 1mW 미만의 하드웨어 플랫폼에서 돌아가는 ML이라 그것도 수백 KB의 메모리에서... 이 책은 Tensorflow Lite를 베이스로 그렇게 할 수 있는 방법에 대해서 알아가는 과정을 보여준다.

     

    지향하는 바가 그렇기에 이 책은 이 책만으로는 원하는 바를 달성하기 어렵다. 책에서 제시하는 임베디드 개발 보드가 필요하다.

     

    일반적인 머신러닝 보다 4차산업혁명으로 총칭되는 초연결시대에 필요한 머신러닝을 배우고자 하는 사람들에 매우 중요한 입문서가 될 것 이다.

     

    ※ 본 리뷰는 IT 현업개발자로서 한빛미디어 리뷰어로 출판사로부터 제공받아 읽고 작성한 글입니다.


     

  • 오늘 리뷰할 도서는 [초소형 머신러닝 TinyML] 이다.

     
     
    요즘 갑자기 IoT에 빠져 늘어나는 장비들에 얇아지는 내 지갑 ㅠ.ㅠ, 그러던 와중에 반갑게 나온 책!
     
     
    이 책이야 말로 IoT 넘어선 본격 "엣지 컴퓨팅" 을 다루는 몇 안되는 책이라 볼 수 있다.


    아래처럼 소개하고 있다.
     
     
    게다가 요즘 핫한 주제인 머신러닝/딥러닝을 이용하게 되는데, 책 소개 페이지에 보면 이 책은 "중급용" 이라고 되어 있다.
     
    또한 책에서는 기본적으로 임베디드 장비를 위한 C++ 코드와 텐서플로우 파이썬 코드 두가지로 주로 설명 한다.
     
    책 앞부분에 머신러닝/딥러닝, 텐서플로우에 대해 소개를 하고 있기는 하지만, 워낙 쉽지 않은 분야라서 이런 내용은

    다른 책을 참고해야 할 것이다.
     
    아래는 책의 앞부분에 나오는 예제를 구글 코랩에서 실행해본 것이다. 약간 아쉬운 점은 책이 흑백으로 출판되어
     
    아름다운 컬러를 볼 수 없다는 점. 하지만 책 내용에 크게 방해가 되지는 않는다.
     
     
    그리고 이 책은 주제상 실제 소형 임베디드 장비를 사용하는 부분이 대부분이다. 소형 임베디드 장비를 사용 해본 경험이

    없는 분들은 아마 이 부분에서도 상당히 허들 일거라 예상한다. 이 책에서는 이런 부분에 대해서는 자세히 설명하지

    않으므로 중급용 이다. 다른 기본 서적을 참고하도록 하자.
     
    아래는 이 책에서 실제 사용되는 장비인 "아두이노 나노 33 BLE Sense" 인데 책에서 사용하는 여러 장비들 중의 하나이다.
     
    사실 나는 구형 "라즈베리 파이"가 있지만 이사 하면서 도대체 어디 있는지 찾지 못하고 있고, 
     
    ESP32 칩을 사용하는 개발 보드가 두개나 있다. 
     
     
    그런데 이 책에서는 ESP32 장비에 대해서는 다루고 있지 않아, 아직 책에 있는 예제들이 실행 가능한지 확인을 못해봤다. 

    그래서 결국 아두이노를 주문했는데...

    하필 재고가 없는 상품을 주문해서 아마 추석 연휴 이후에나 도착할듯 =.=

    이 책을 전반적으로 살펴 본 결과, 책의 앞부분에서 설명했듯이 요즘 왠만한 집에 하나씩은 있을 듯한 "인공 지능 스피커" 개발에

    대한 밑바탕이 되는 기본 기술들을 배울 수 있다.

    그동안 머신러닝/딥러닝에 대한 책을 여러 권 봤는데 이론에서 그치는 책들이 있어 아쉬웠는데, 이 책은 소형 디바이스를

    아용해서 실무에서 사용 가능한 부분을 다루는 점이 장점이다. 그러나 내용이 쉽지 않을 수 있다는 점은 잊지 말자.
     
    그럼 오늘 리뷰 끝~!

  • AI 음성비서 서비스를 하면 "OK 구글" 구글 어시스턴트를 먼저 생각할 것입니다. 빠르게 발전하는 인공지능은 일상생활을 같이 할 정도로 많은 영역에서 사용되고 있습니다. 구글 어시스턴트 팀은 14KB짜리 모델을 사용해 “OK 구글”이란 말을 인식하게 했는데요. 이는 마이크로컨트롤러에도 탑재 가능한 용량입니다. 이처럼 초소형 머신러닝에 관련된 내용을 담고 있는 초소형 머신러닝 TinyML 저서를 소개합니다. 

     

    우선 사람들이 인공지능(AI), 기계학습(ML)에 대해 생각할 때 우리는 일반적으로 음성서비스 비서, 자율 로봇, 자율 주행차에 대해 구체적으로 생각합니다. 그러나 기계학습의 세계는 그 이상을 포괄하고 있는데요. 컴퓨터가 명시적으로 지시하지 않고 예측, 결정, 또는 분류를 수행할 수 있도록 수학적 모델을 학습할 때마다 기계학습(ML)을 사용합니다. 

     

    저서 초소형 머신러닝 TinyML은 딥러닝과 임베디드 시스템의 결합으로 작은 기기에 음성 인식, 제스처 감지 등 놀라운 능력을 부여하는데요. 어떠한 환경에도 적용할 수 있는 작은 모델을 훈련하는 방법론을 담고 있습니다. 머신러닝이나 마이크로컨트롤러를 다룬 경험이 없어도 다양한 프로젝트를 단계별로 따라 하다 보면 실무 활용 능력을 키울 수 있게 많은 예시가 있습니다. 

     

    처음에는 TinyML에 필요한 모든 머신러닝을 배웁니다. 기본 개념을 다루고 몇 가지 도구를 살펴본 후 간단한 머신러닝 모델을 훈련해보는데요. 소형 하드웨어에 중점을 둘 것이기에 딥러닝의 이론이나 그 배경이 되는 수학에는 지면을 그리면서 할애하지 않을 것 아닌 도구와 임베디드 장치에 대한 모델을 최적화하는 방법을 자세한 개념들을 설명해줍니다. 특히 주요 용어에 익숙해지도록 도와주며, 일반적인 워크플로우를 이해하게 되어 무엇을 모르는지 더 명확히 알게 될 것입니다.

     

    기본적으로 머신러닝은 컴퓨터를 사용하여 과거 관측치에 따라 사물을 예측하는 기술입니다. 또한, 이 저서에서는 텐서플로 팀의 고민을 반영해 모델의 정확도를 최대한 유지하면서 어떻게 모델을 경량화할 것인지, 저전력 상황 속에서 어떻게 전력을 최적화하여 모델을 실행할 것인지, 물리적 크기가 아주 작아 모델을 실행하기 어려운 컴퓨팅 환경에서는 어떻게 모델을 동작시킬지 등 상세한 설명과 예제 코드로 설명합니다.

     

    이뿐만 아니라 예제 코드는 소스 코드를 별도로 관리하기 위한 노력의 일환으로 텐서플로 라이트 프로젝트를 포크하여 깃허브( https://github.com/yunho0130/tensorflow-lite ) 공개해 국내 많은 개발자가 손쉽게 텐서플로 라이트에 접근하고 각종 이슈를 공유하며, 해결할 수 있는 공간으로 만들어 일종의 오픈소스 커뮤니티로 가능하고 많은 정보가 있습니다. 그리고 저서 별로도 추가 내용은 추후 유튜브 채널( https://www.youtube.com/myh0130 )에서 영상을 다룰 예정인 점도 있습니다.

     

    대부분의 경우 유용한 기계 학습 알고리즘에는 많은 양의 컴퓨팅 리소스(CPU주기 및 RAM)가 필요하는데요. TensorFlow Lite는 여러 마이크로 컨트롤러에서 실행되는 실험 버전을 출시함으로써 제한된 리소스가 있는 장치에 맞는 모델을 만들 수 있다고 가정하면 임베디드 시스템을 작은 기계 학습 (TinyML) 장치로 전환할 수 있는 점도 있습니다. 

     

    이 저서는 Pete Warden과 Daniel Situnayake 가 모든 환경에 맞도록 충분히 작은 모델을 훈련시킬 수 있는 방법, 기계 학습을 사용해 임베디드 시스템을 구축하려는 소프트웨어 및 하드웨어 개발자에게 이상적으로 활용할 수 있는 TinyML 프로젝트를 단계별로 만드는 과정을 안내하는데요. 이 저서를 통해 기계 학습이나 마이크로 컨트롤러 경험이 없어도 음성 인식기, 사람을 감지하는 카메라, 제스처에 반응하는 경험하시기를 권유 드립니다. 소스 코드 내용을 상세하게 설명해서  딥러닝 지식이 부족하더라도 소스 코드를 이해했는데 무리 없습니다. 

     

    가장 먼저 TinyML을 이해하려면 임베디드 장치의 세계를 이해해야 합니다. 보통 임베디드 장치는 8bit 프로세서를 사용하고 잘 알려지지 않은 독점적인 툴 체인을 사용했기 때문에 이를 시작하는 것은 꽤 막막한 일인데 하지만 아두이노가 표준화된 하드웨어와 함께 사용자 친화적인 통합 개발 환경(IDE)을 도입하면서 크게 진전되는 점 등 개발에 필요한 하드웨어, 소프트웨어, 기본적인 개념이론들을 자세한 설명과 그림, 사진 도형 등으로 독자들에게 쉽게 다가갈 수 있게 보여줍니다. 

     

    Arduino 및 초 저전력 마이크로 컨트롤러로 작업

    ML의 필수 사항과 자신의 모델을 훈련하는 방법

    오디오, 이미지 및 가속도계 데이터를 이해하도록 모델 학습

    TinyML 용 Google 도구 키트 인 마이크로 컨트롤러 용 TensorFlow Lite 살펴보기

    애플리케이션을 디버그하고 개인 정보 및 보안을위한 보호 장치를 제공

    대기 시간, 에너지 사용량, 모델 및 바이너리 크기 최적화

     

    어떠한 환경에도 적용할 수 있을 정도로 작은 모델을 훈련하는 방법을 알려줍니다. TinyML이라는 새로운 영역에서 더 많은 애플리케이션이 등장하도록 돕는 것이며, TinyML에는 아직 킬러 앱이 없으며 앞으로도 없을 수도 있습니다. 하지만 우리는 TinyML이 해결할 수 있는 문제가 세상에 많이 있다는 사실을 경험으로 알고 있는 점을 생각하면 저서는 독자분들이 문제의 해결책에 익숙해지도록 돕습니다. 농업, 우주 탐사,  의약품, 소비재 등 각 분야의 도메인 전문가에게 문제를 스스로 해결하는 방법에 대해 이해하고 최소한 이러한 기술로 해결할 수 있는 문제가 무엇인지 인식하게 만들어 줍니다. 이처럼 리소스가 제한된 기기에서 기계 학습에 관심 있는 사람이라면 반드시 읽어야 할 책이라고 생각합니다.

  •  

    이책은 사실 특수한 관심이 있는 책이었다.

     머신러닝을 통해 임베디드 소프트웨어 적용한다는 것이 현재 관련업무랑도 좀 떨어지고, 어려운분야로 생각했는데,


    막상 이책을 접하고 거기에 대한 두려움이 없어졌다.


    번역서라 다소 어려울수도 있을것이라 생각했는데


    전체 소스는 github로 제공되고 실행도 개발환경에서도 일단 가능 하기 때문에 무난하게 배울수가 있고, 기초 모델부터 접할수있기 때문에


    매우 기본기부터 탄탄히 익힐수있고, 흥미로운 책이다.


     

     


     

     


    모델 실습화면.

     

     


     

     


    모델을 실습하기 원하면 아래와 같은 장비에서 실행이 가능한데 보드에 따라 실습이 가능하거나, 불가능한부분이 있기때문에 아래표를 꼭확인하고

     

     


    보드를 구매 하기 바란다.

     

    프로젝트

    스파크 에지

    아두이노 나노 33LBE센스

    STM32F746G 디스커버리 키트

    Hello World

    5장

    포함

    포함

    포함

    음성 인식

    7장

    포함

    포함

    포함

    인체감지

    9장

    포함

    포함

    불포함

    마술지팡이

    11장

    포함

    포함

    불포함

     


    아두이노 나노 33 센스 BLE센스가 10만원이하에서 구매 가 가능한것같다.

     

     


    이책을 아직 다실습해보 지는 못했는데 어느정도 학습이되면 곧 구매해서 포팅해볼 계획이다.

     

     


    평소 머신러닝과 임베디드 소프트웨어 에 관심이 많다면 꼭 접해볼만한 책이다.

     

     


     


  •  

    

     

    KakaoTalk_20200927_181917919.jpg

     

    한빛미디어에서 나는 리뷰어다 활동을 통해 제공받은 책을 읽고작성하였습니다.

     

    글에 나온 아두이노는 책을 이해하는데 필요해서 메카솔루션의 베타리워즈를 통해 필자가 직접 신청 후 제공받았습니다.

     

    려고 보니까GTX1080TI는 가성비 GPU라는데 오케이 구글 하는 음성인식은 왜 라즈베리파이에서도잘돌아가나요?

    솔직히 머신러닝도 연구나 업무를 위해 사용되는게 아니라 단순히공부목적이라면 고성능의 GPU까지는 필요가 없긴 하다.

    그래도 논문이나 이번PYCON2020같은 곳에서 발표된 것을 보면 GPX 1080혹은 RTX2080, Titan 같은거를 사용했다는 것을 자주 볼 수 있다.

    그러면 클로바나 구글 홈 미니 같은 것들은?

    음성이 인식되면 인터넷을 통해 멀리 연결된 서버에서 인식을 한후, 결과에 따라 사용자의 요구를 처리한다.

    이때, 우리가 구글어시스턴트를 부르기 위해 사용하는 'OK Google'이라는 트리거 워드는 사용자의 음성을 인식하기위해 고성능의 GPU처럼 엄청난 전력을 소비해서도 안되고 용량또한 작아야 하며 인식 속도 또한 중요하다.

    이 책의 저자 중 1명피트 워든 또한 서론에서 밝혔듯이 구글에 입사했을때 14KB짜리 신경망이 전력도 mW단위로 먹고 '오케 구글'도잘 인식하는 것을 보며 놀랐다고 한다.

    이 책은 이런거 만드는 것에 관한 책이다.

     

    저자:

    피트워든

    맨날 내가 설치하고 재설치하고 이책 저책 찾아보고, 검색도 많이하고, 공부도 많이 하게 하는 Tensorflow의 창립 맴버라고 한다.

    대니얼 시투나야케

    텐서플로 라이트의 개발자 홍보를 이끌고 있고, 미국 최초 자동화를 사용한 대규모 곤충 단백질 생산기업 타이니 팜의 공동설립자라고 한다.

    예전에 학교 대회 때문에 밀웜 블루베리 쉐이크랑 곤충 쿠키같은거먹으러 간적이 있는데 꽤 맛있었다!!!

     

     

    재미있는 내용이 많다.

    아두이노! 하면 전까진간단한 회로 작동 키거나 더 해봐야 node mcu같은거로 IOT를만들거나 레오나르도 계열 보드로 HID장치, 로봇 등등등뿐이고,

    얼굴인식! 머신러닝! 딥러닝! 이런거는 최소 라즈베리파이는 되야 간단하게 만들수 있다고생각했고 작년쯤 ble sense나왔을때도 그냥 조금 비싼 아두이노가 나왔나보다 했다.

    그런데 이번에 책을 읽어보니 아두이노가 조금더 지능적이게 됐구나하는 느낌이 들었다.

    이번 서평도서목록에는 신간이 많았는데 다른 재밌는 책들말고 이책을 고른 이유는 '14KB만으로 작동되는 구글어시스턴트 같은거에 관한책!' 이라는 문구 때문이었다.

    아이언맨을 보고 대부분의 사람들이 느끼는 것처럼 나도 자비스가갖고싶어졌고, '그래서 어떻게 하면 만들까?' 해서 '라즈베리파이에 음성인식 기능을 넣어서 내말을 알아듣게 만든 후, 다양한 API를 연동시켜서 처리한뒤, 음성합성을 하면 되겠다!. 그리고 API를 불러올 인터넷은 휴대폰 핫스팟으로 하면 어디서든돌아가겠네!' 라는 생각을 했다.

    차라리 휴대폰에 구글어시스턴트나 빅스비 대신 내가 앱을 만들어도되긴 했지만 자바나 코틀린을 따로 배우긴 귀찮기도 했고, python의 경우 텐서플로나 파이토치로 이러쿵저러쿵 하면 되겠지만 한번도 안써본 자바는 어떻게 해야할지 몰랐었기도 하다.(요즘엔 자바에서도 아마돌아가는 듯 하다.)

    그래서 이때부터 음성인식이나 음성합성 분야에 대해 항상 찾아보다발견한게 tacotron이라던지 그런건데 아시는 분들은 아시다시피 라즈베리파이에서 돌아갈 수준은 아닌것같다.

    어쨌든 이책에 나온TinyML이면 비슷하게 뭐라도 되지 않을까 하는 생각에 읽게 되었다.

     

    그래서 TinyML이뭐냐 하면

    에너지 비용이 1mW 미만인하드웨어 플랫폼

    이라고 한다.

    책에선 이정도면 동전모양 베터리로 1년은 버틸 수 있다고도 하고, 실제로 책에서도 모델 용량을 아두이노의작은 머리속에 들어갈 크기로 줄이기 위해 양자화라던지 많은 내용을 다루고 있다.

    책에서 다루는 보드는 내가 사용한 아두이노 나노 33 ble sense 말고도 sparkfun edge나 stm32의 보드를 사용한다.

     

    예전에 Node MCU보다느리다는 말을 들어서 별로 쓰고 싶지 않은 보드라는 생각이 들어 쓸일이 없을 줄 알았고, ble sense에달린 센서를 통한 간단한 예제를 돌려볼때도 이정도는 아니라 나쁘지 않다는 생각이 들었는데

    아니었다.

    업로드 과정도 길고, 컴파일과정은 더 길다. 그리고 버그인지 업로드가 끝나면 포트연결이 바뀌는등의 문제로 다시 포트를 선택해줘야한다.

     

    그리고 이건 책읽다가 아두이노ble sense를 구해야겠다!는 생각을 들게한 예제를 돌려본 결과다.

    tensorflow lite로 학습된 모델을 바탕으로'yes'가 인식되면 초록색, 'no'가 인식되면 '빨간색', 뭔소리는 들렸는데 무슨말인지 모르겠으면 파란불을 켜는 예제인데 한마디로 아두이노에서 간단한 음성인식을 돌려보는예제다.

    아무래도 아두이노에 작고 다양한 센서들을 내장해야하기 때문에센서의 성능이 respeaker모듈에 달린것 많큼 좋은것 같지 않아서인지 닥터후 보고 배운 내 발음이별로라 그런지 너무 가깝거나 너무 먼거리에선 인식되지 않기도 하고 ( 아마 말할 때 나오는 바람이센서에 노이즈로 작용할 수도 있겠다.) 하지만 아두이노 치곤 꽤 빠릿빠릿 한 편이다!

    책을 읽기 전에

    'tensorflow가 c++에서 돌아가는건아는데 파일 시스템이 없는 아두이노 같은 마이크로 컨트롤러에 python에서 작성한 코드를 어떻게 아두이노에집어넣지?',

    '학습은 아두이노에서 이루어 지는가?'

    라는 의문이 있었는데 해답은 이렇다.

    colab 혹은 자신의 컴에서python으로 코드 작성 및 학습을 한다.

    양자화를 통해 정확도손실을 최대한 줄여가며 모델의 크기를 줄인다.

    tensorflow lite형식으로 변환한다.

    모델을 저장한다.

    xxd로 저장된 모델을 c 소스파일로저장한다.(모델은 바이트 배열로 정의된다고 한다.)

    아두이노에 넣어준다!

    책에서 이 과정을 통해 저장된c 소스파일을 보여주는데 별로 잘생기진 않았다..

     

    이건 Sin함수 근사예제에서 학습된 모델이다.

    사실 이건 일부고,

     

     

    여기 커다란 직사각형 덩어리가 변환된 모델이다..

    그렇다면 yes no 음성인식의경우엔?

     

     

    이만큼 있다. +로스크롤바 크기를 보면 알 수 있듯이 내리면 더있다!!!

    저거를 바탕으로 음성인식을 하는걸 보면 참 신기하다.

     

    혹시 이 책에 나온 코드를 돌려보고 싶다면

    Tensorflow micro 공식 튜토리얼이나

    역자분께서 번역하신 깃헙을 참고해보면 좋을 것 같다.

     

    tensorflow lite로 ios나 app watch에서 만든 앱이나 라즈베리파이에서 coral을 사용한프로젝트 소개도 있다!

     

    업로드용량때문에 세부 사진은 삭제했습니다..

    

  • SAM_8778.JPG

     
    이 책이 나오자마자 많은 분들의 관심가졌던 책을 오늘 리뷰합니다.
    다만, 많은 분들이 책 내용 자체에 대한 서평을 많이 올리실 것 같아서, 전 좀 다른 측면에서 이야기 해보고자 합니다.
    그동안 말만 들었지, 엣지 컴퓨터단에서 머신러닝을 돌리는 것을 실제로 본적이 없다가, 이 책을 보고서 아하! 이런식으로 돌아가는구나 하는 것을 느꼈습니다.
    기본 딥러닝 모델 만들고 학습하는 것은 거의 비슷합니다.
    이 책에서도 앞 부분 도입부분에 텐서플로, 케라스로 설명하는데, 복습 정도로 좋은 것 같습니다. 

     

    소스 코드 내용을 상세하게 설명하는 편이라서, 딥러닝 지식이 조금 약하더라도, 소스 코드를 통한 이해에 별 무리가 없어요.
     

    SAM_8779.JPG

     

    이 책을 구입하시는 분들에게 실제로 도움이 되시는 부분을 알려드리겠습니다.
    엣지 컴퓨터를 다루어본 분들은 아시겠지만, IOT 에서는 실제 기기로 연습해보는 것이 좋습니다.
    일단 기기에 불이 들어오는 것을 봐야, iot에서는 'Hello, World'를 찍은 것이랑 같은 것이죠.

     

    아무리 책으로 읽어봐야, 실제로 감이 잘 안 잡히는 경우가 많죠. 그래서 저는 책 배송 알림 시점에 미리보기에 나온대로 개발에 필요한 하드웨어를 주문하였습니다.
     
     
    < 사진 누락>
     
    책에서는 이렇게 구입하라고 되어있었습니다.
    그럼 실제로 기기가 작동 될까요? 네, 안됩니다. 
     
     

     

     

    SAM_8779-3.jpg

    에잉, 컴퓨터랑 iot 기기랑 연결하는 기기를 사야 했습니다. 해외 배송이라서 시간이 걸립니다. 한 1주일 정도...

     

    이런 부분은 책의 흥미를 확 떨어뜨리죠. 이런 부분은 좀 더 신경쓰면 좋겠습니다.
     

    SAM_8779-4.JPG

     

    구입하는 김에 아두이노까지 그래서 이렇게 완전체를 구성하였습니다.
    이렇게 구입하기를 잘하였습니다. 왜냐하면, iot나 초소형 기기를 잘 모르는 입장에서 실습하기에 아두이노가 훨씬 좋았습니다. 아두이노 IDE 가 따로 있어서 편하거든요.
    Make 설치하는데, 제 컴퓨터는 윈도우, 노트북은 맥북인데... 책 실습에 필요한 설치 프로그램때문에 노트북에서 하는 것이 더 좋아보였습니다.

     

    윈도우에서 하신다면 구글 검색을 좀 하셔야 해요.
     

    SAM_8779-5.jpg

     

    책에는 아두이노랑 카메라 연결에 대해서 텍스트로 설명되어 있어서, 아두이노를 처음하시면 이게 무슨 소린가 싶은데, 이렇게 연결 사진이나 삽화 등을 올려주셨으면 얼마나 좋았을까요? 아는 사람들이 보면 무척 쉬운 이야기이지만, 딥러닝 배워서 이제 처음 아두이노를 다루는 사람에게는 힘든 면이 있습니다.

     

    SAM_8781.JPG

     

    TinyML 을 하려면, C++ 은 필수인 것 같아요. 저도 책보면서 대충 이런 기능이구나 하면서 눈짐작으로 이해하였는데, C++ 언어를 좀 알고 있으면, 도움이 많이 될 것 같아요.

     

    SAM_8784.JPG

     

    사실은 케라서, C++ 을 잘 몰라도, 아두이노 IDE 에서 실행하는 방법만 잘 따라하면,

     

    http://blog.naver.com/eonnow/222101071611 <하단 동영상 참조>

     

    위와 같이 결과물이 잘 나옵니다.
    책에서는 yes는 잘 인식하고, No는 잘 인식하지 못한다고 했는데, 저는 No를 더 잘 인식하는 것 같아요.
    그동안 아두이노 같은 초소형 기기 다루는 수업을 들으면서 느낀 점은, 일단 기기를 한번 제대로 작동시켜 보는 것이 정말 중요한 것 같아요.
    불 들어오고, 내 목소리 알아듣고, 내가 사람인지, 나의 행동 패턴을 읽는 것을 보고 나면,
    그 이후 필요에 따라, 조금 힘들지만, 재미나게 깊게 파고 들어가면서 공부할 수 있거든요. C++ 도 필요하니까 배우게 되구요.
    불 안 들어오면, 그 수업은 망했다고 봐야 합니다.
    이번 TinyML 책은 기존 딥러닝 책에서 보여주는 화려한 것은 없지만, 그 간단한 것을 학습하기 위해서 가장 중요한 핵심 기술을 보여주고, iot 변환에 필요한 기술은 또 무엇이며, 어느 정도 공부하면 할 수 있는지 보여주는 매우 소중한 책이라고 봅니다.
     

     

    장치 빠짐 없이 잘 챙기시고, 한번 목소리 인식시켜보세요. 그때부터 TinyML 시작이라고 봅니다.
     
    이 서평은 교재를 제공받아 작성되었으며, Yes24, 한빛 홈 사이트에도 같이 등록됩니다.
     

     

  •  

    

    초소형머신러닝, 즉 Tiny Machine Learning에 대한 내용을 담고 있는 책이다.

    우리가흔히 접하는 머신러닝 알고리즘은 고성능의 데스크탑, 서버에서 돌아가는 것들이 대부분이다. 이런 알고리즘을 임베디드 보드에 그냥 올리기에는기존의 하드웨어 플랫폼에 비해서 스펙이 상당히 부족하다는 것을 감안한 새로운 접근이 필요하다. 이를 위한 것이 TinyML이고 이 책에서는이것에 대해서 여러 프로젝트를 경험하면서 익숙하지 않은 임베디드 환경과 그 환경에서의 ML 개발에 대해 다룬다. 딱 한 문장으로, 이 책은TinyML로 무언가를 해보려는 사람들을 적합하다.

     

    사전준비물

    TinyML프로젝트를 직접 활용해보기 위해서는 아무래도 간단한 임베디드 보드가 필요하다. 이 책에서는 진행되는 프로젝트에 따라 포함 장치가 다른데,책에서 권장하는 임베디드 보드와 센서를 미리 구비해두는 것이 좋으며 기본적으로는 SparkFun Edge를 사용하고, Arduino Nano33 BLE Sense나, Mbed 기반의 STM32F2746G 디스커버리 키트를 활용한다. 경험 상 가장 속 편하게 활용할 수 있는 건아무래도 SparkFun과 Arduino다.

     

    모두를위한 책

    적은컴퓨팅 자원에서, 특히 임베디드 플랫폼에서 ML에 대해 학습하는 책이기 때문에 큰 틀에서 보면 ML을 좀 더 중점적으로 다루는 편이긴 하지만,임베디드 관련 내용을 제외할 수는 없는 것이 사실이다. 이 책에서도 초반부에 언급되는 내용대로, 임베디드 개발자가 ML을 활용하려는 경우와ML 개발자가 임베디드 환경을 활용하려는 경우, 둘 다 경험이 적은 경우를 고려하여 필요한 경우 두 분야 모두를 다루며, 두 분야에 처음입문하는 사람들을 기준으로 작성하였다고 되어 있다. 임베디드 보드를 활용할 수 있는 터미널 경험 정도가 사전 지식으로 작용할 수 있다.

     

    프로젝트형구조

    책목표가 ML을 주로 다루긴 하지만, 목적은 임베디드 환경에서 사용할 수 있는 TinyML을 개발하는 것이 목표다 보니, 무작정 개념만 다루는게 아니라 실습형 프로젝트를 따라가며 배운다. Hello World을 포함해서 음성 인식, 인체 감지, 마술 지팡이 총 4개의 프로젝트를진행할 수 있고, 개발 과정에서 막히는 부분에 대해서는 별도로 설명도 되어 있고 GitHub Repository를 적극적으로 활용해서 해결할수 있을 것이라 기대된다.

     

    총평

    기술서적이라고 하면, 그 책을 읽고 나서 어떤 하나의 목표를 반드시 달성해야 한다고 생각한다. 그것이 이론적인 기초를 닦는 것이 될 수도 있고프로젝트 기반의 결과물을 내는 것일 수도 있다. 이 책은 Hello World를 제외하고서도 3개의 프로젝트를 진행하여 실질적인 결과물을 낼수 있고, 그 과정에서 익숙하지 않은 환경에서의 다양한 경험을 가지고 갈 수 있도록 해준다. 지금까지 다양한 기술의 입문서와 활용서를접해보면서 ML 관련 서적도 많이 접해보았는데, TinyML이라는 확고한 목표가 있다면 다른 책을 찾아볼 필요 없이 이 책을 강력 추천해 줄수 있을 것 같다.

     

    추천독자

    임베디드환경에서 머신러닝도 하고 싶은 개발자

    프로젝트,졸업 프로젝트를 고민하고 있는 관련 전공 학생

     

  • O'REILLY에서 나온 머신러닝, 딥러닝 신간이 나왔습니다.

     

    20년 회사에서 빅데이터, 딥러닝 미니프로젝트 교육을 장기간 참여하고 있습니다. 이미 수료가 되어야 하는데, 코로나로 비대면 수업이 온라인으로 일정이 순연되고 있는 사항이고, 10월에 마무리가 됩니다. 하여 나름 최신 책으로 딥러닝 내용을 한번 정리하고 싶고, 해당 프로젝트에 적용할 항목이 있는지 한번 더 확인해 봅니다. 그래서 접하게 된 책입니다.

     

    책이름이 "초소형 머신러닝 TinyML"입니다.

    생각보다 책이 다루고 있는 범위가 넓습니다. 일찌기 이런 책을 접해본 적이 없었는데, 딥러닝 실습이 장치까지 진행됩니다.

     

    20200927_102738.jpg

     

    책의 부제가 바로 모델 최적화부터 에지 컴퓨팅까지 작고 빠른 딥러닝을 위한 텐서플로 라이트 입니다.

    2020-09-27-10-18-57-102.jpg

    -마이크로컨트롤러용 텐서플로 라이드

    -오디오,이미지,가속도계 데이터로 머신러닝(딥러닝) 모델 학습

    -음성 인식, 인체 감지, 제스처 인식 등 임베디드 기기에서 작동하는 머신러닝 애플리케이션

    -아두이노를 비롯한 저전력 마이크로컨트롤러에 머신러닝 탑재

    -지연, 에너지 사용, 모델 크기, 바이너리 크기 최적화 기법

    -머신러닝 필수 사항과 자신만의 모델 훈련 방법

    -애플리케이션 디버깅, 개인 정보 보호, 보안을 고려한 설계 노하우

    2020-09-27-10-19-12-817.jpg

     

    머신러닝과 딥러닝 기초부터 진행이 됩니다.

     

    차원, 벡터/행렬/고차원텐서

    2020-09-27-10-19-39-216.jpg

    딥러닝 네트워크

    2020-09-27-10-19-53-117.jpg

     

    모델 추론을 통해 예측을 포함하는 출력 데이터 생성, 이런 장표가 이제는 익숙합니다.

    2020-09-27-10-20-05-354.jpg

    훈련 손실, 검증 손실

    2020-09-27-10-20-18-573.jpg

    마이크로콘트롤러에 배포

    2020-09-27-10-21-27-533.jpg

     

     

    익숙하지 않은 부문이지만, 마이크로컨트롤러입니다.

     

    2020-09-27-10-21-42-727.jpg

    아두이노는 자주 들어보았습니다.

    2020-09-27-10-21-52-000.jpg

    마술 지팡이 애플리케이션 구성요소, 책이 이런 구성으로 실습을 시작합니다.

    2020-09-27-10-22-16-472.jpg

    스파이크펀 에지

    2020-09-27-10-24-55-496.jpg

     

    TinyML재단

    20200927_103042.jpg

    실습 절차, 프로세스

    20200927_103111.jpg

     

    한빛미디어 미리보기에서 책의 내용을 상세히, 책처럼 알 수 있습니다.

    Screenshot_20200927-084614_Chrome.png

     

    Screenshot_20200927-084624_Chrome.png

     

    Screenshot_20200927-084630_Chrome.png

     

    Screenshot_20200927-084642_Chrome.png

     

    전체적으로 보드까지 다룬 책입니다.

    이렇게 구성하려면 실제 보드까지 활용이 가능한 사람만이 책을 쓸 수 있을거고, 실제로 요새는 대학에서도 취미로 보드, 아두이노를 활용하는 사례가 많아서 깊이 파보는 좋은 계기가 될 듯합니다. 보통은 제어, 로봇 이런 것에만 관심이 높았는데, 학습 딥러닝 개념으로 새로운 장을 열게 된 것 같습니다. 그리고 저용량 바이러니와 저전력에도 관심을 가질 수 있는 대목입니다.

     

    특별히 실습항목이 첨부터 끝까지라는 것이 맘에 듭니다.

    1.간단한 데이터셋 얻기

    2.딥러닝 모델 훈련시키기

    3.모델 성능 평가하기

    4.장치에서 실행되도록 모델 변환하기

    5.장치에서 추론하는 코드 작성하기

    6.코드를 바이너리로 빌드하기

    7.바이너리를 마이크로컨트롤러에 배포하기

     

    앞으로 Iot로 향하는 수순이기도 합니다. 좀더 더 확대 될 부문이라도 봅니다.

  • [한줄평]

    임베디드에 머신러닝을 구현한다면 꼭 봐야 하는책


    [목차구성]

    CHAPTER 1 서론

    CHAPTER 2 시작하기

    CHAPTER 3 머신러닝 빠르게 훑어보기

    CHAPTER 4 TinyML ‘Hello World’ 시작하기: 모델 구축과 훈련

    CHAPTER 5 TinyML ‘Hello World’: 애플리케이션 구축

    CHAPTER 6 TinyML ‘Hello World’: 마이크로컨트롤러에 배포하기

    CHAPTER 7 호출어 감지: 애플리케이션 만들기

    CHAPTER 8 호출어 감지: 모델 훈련하기

    CHAPTER 9 인체 감지: 애플리케이션 만들기

    CHAPTER 10 인체 감지: 모델 훈련하기

    CHAPTER 11 마술 지팡이: 애플리케이션 만들기

    CHAPTER 12 마술 지팡이: 모델 훈련하기

    CHAPTER 13 마이크로컨트롤러용 텐서플로 라이트

    CHAPTER 14 자신만의 TinyML 애플리케이션 설계하기

    CHAPTER 15 지연 최적화

    CHAPTER 16 에너지 사용 최적화

    CHAPTER 17 모델과 바이너리 크기 최적화

    CHAPTER 18 디버깅

    CHAPTER 19 텐서플로에서 텐서플로 라이트로 모델 포팅하기

    CHAPTER 20 개인 정보, 보안, 배포

    CHAPTER 21 파도를 따라잡기 위하여


    부록 A 아두이노 라이브러리 Zip 사용과 생성

    부록 B 아두이노에서 오디오 받기


    [이 책의 특징]

    ㆍ 마이크로컨트롤러용 텐서플로 라이트

    ㆍ 오디오, 이미지, 가속도계 데이터로 머신러닝(딥러닝) 모델 학습

    ㆍ 음성 인식, 제스처 인식 등 임베디드 기기에서 작동하는 머신러닝 애플리케이션

    ㆍ 아두이노를 비롯한 저전력 마이크로컨트롤러에 머신러닝 탑재

    ㆍ 지연, 에너지 사용, 모델 크기, 바이너리 크기 최적화 기법

    ㆍ 머신러닝 필수 사항과 자신만의 모델 훈련 방법

    ㆍ 애플리케이션 디버깅, 개인 정보 보호, 보안을 고려한 설계 노하우


    [대상 독자]

    ㆍ마이크로컨트롤러에서 머신러닝을 구현하려는 개발자

    ㆍ머신러닝을 사용해서 실제 제품을 만들고 싶은 기획자 및 개발자

    ㆍ아두이노에 머신러닝 기능을 사용하고 싶은 개발자

    ㆍIoT에 딥러닝을 적용하고 싶은 개발자


    [서평]

    알파고가 나온지 벌써 4년이 지났다. 알파고 이후 머신러닝, 딥러닝등 AI에 대한 투자 및 관심도가 엄청나게 증가하게 되었다. 이제 연구에 대한 성과가 나와야 할 시기가 된것이다. 지금까지는 딥러닝, 머신러닝을 하려면 엄청난 컴퓨팅 파워가 필요 했다. 하지만 실제 제품에 사용할때는 그런 엄청난 컴퓨팅 파워 보다는 저전력에서 돌아갈수 있는 인공지능 기능이 필요 하다. 이책에서는 TinyML로 마이크로컨트롤러, 임베디드 환경에서 딥러닝, 머신러닝을 사용할수 있는 방법을 배울수 있다. 먼저 이책으로 tinyML 프로젝트를 구축하려면 하드웨어 장비가 필요하다. 머신러닝 모델을 훈련할 때는 구글의 코랩으로 무료로 이용 할수 있다. 하지만 프로그램을 실제로 테스트하려면 임베디드 개발 보드가 필요하다. 보통 딥러닝 책들은 수학 모델을 학습 하고 컴퓨터만 있으면 해결이 되는데 TinyML은 모델학습에서 끝나는게 아니라 제품으로 만드는것이라서 모델을 경량화하고 저전력 환경에서도 실행하고, 텐서플로 라이트를 배울수 있습니다. 이책을 학습 하면서 임베디드 시스템에서 딥러닝을 사용하여 가능한 것이 무엇이며 앞으로 어떤것들이 만들수 있는지 좋은 아이디어를 얻을수 있었습니다. 아마 IoT를 하면서 딥러닝을 도입하고 싶다면

    이책이 해답이 될것이다.

  • IMG_7962.jpg

    저자는 서두에서 다음과 같이 말했습니다.

     

    이 책은 그동안의 딥러닝&머신러닝 '모델 성능 향상' 패러다임 속에서  이를 어떻게 잘 '활용'할지에 대한 단서를 제공하는 책입니다.

     

    이 한 문장이 이 책을 있는 그대로 설명해 주는 문장인 것 같습니다. 

     

    딥러닝과 머신러닝은 에지 컴퓨팅부터 대용량 GPU 클러스터까지 그 역할이 다릅니다. 

    그렇지만 그동안 에지 컴퓨팅에서 딥러닝과 머신러닝을 활용하는 방법에 대한 책은 그렇게 많이 보지 못했습니다. 

     

    그런 면에서 이 책은 의미가 남다르다고 생각합니다. 이 책에서 다루는 TinyML 초소형 마이크로컨트롤러에서 동작하는 딥러닝의 새로운 분야라고 합니다.

    실제로 이 책은 임베디드 개발 보드에서 동작하는 여러 가지 간단한 프로젝트를 제공하고 있습니다.

     

    앞부분에는 일반적인 머신 러닝의 개념과 마이크로컨트롤러에서 동작하는 애플리케이션 머신러닝/딥러닝 개발 방법, 배포 방법에 대해 설명을 합니다.

    그리고 임베디드에서 머신러닝, 딥러닝을 구현하기 위해 고려해야 할 주제들을 다루고 있습니다.

    사실, 이런 주제는 머신러닝, 딥러닝뿐만 아니라 임베디드에서 애플리케이션을 개발할 때 반드시 고려해야 할 주제입니다.

     

    • 지연시간에 대한 최적화
    • 에너지 사용에 대한 최적화 
    • 모델과 바이너리 크기 최적화 
    • 디버깅 방법

     

    등입니다.

     

     

    저는 개인적으로 이 부분이 실제로 마이크로 컨트롤러에서 동작하는 딥러닝용 애플리케이션을 개발할 때 가장 중요한 부분이라 생각합니다.

    뒷부분에서는 텐서플로로 학습한 모델을 텐서플로 라이브로 모델 포팅 하는 방법을 설명하고 반드시 고려해야 할 개인 정보, 보안에 대해서 설명하면서 마무리를 하고 있습니다.

     

    이 책에서 제공하고 있는 각 단계별 프로젝트는 실제 응용 프로그램을 개발하는 개발자에게는 좋은 가이드가 될 것 같습니다.

  • 요새는 소위 말하자면 인공지능 관련 주제들이 관심을 많이 받는 세상이다. 현업에서도 과제 제안 내용을 받아보면 적어도 어딘가에는 인공지능 기술을 반영하겠다거나, 빅데이터를 통해서 사용자 패턴을 분석하겠다는 내용이 들어있다. 소비자가 생각하는 인공지능 기술이랑 개발자/기획자가 생각하는 인공지능 기술간에는 약간의 괴리가 있겠지만, 요새는 인공지능으로 기존에 못 풀었던 문제들을 해결하고자 하는 시도를 해보고 있다. 

     그런데 인공지능 기술, 짧게 머신러닝/딥러닝을 실생활에 적용하려면 적어도, 학습하려는 데이터와 어느정도 모사화시킨 모델이 필요하고, 그 모델이 "잘" 동작하게 하려면 데이터를 가지고 모사화시킨 모델을 사전에 많이 학습시켜야 한다. 물론 이에 필요한 computation power도 있을 것이고, 잘 동작하는 모델일수록 이런 computation power도 더 많이 필요할 것이다. 그래서 사람들이 많이 알고 있기론 딥러닝/머신러닝을 하기 위해서는 고성능 GPU/CPU가 달린 서버용 컴퓨터가 필요하다고 한다.

     그런데 최근의 동향을 살펴보면, 그런 기술들을 저성능 임베디드 장치에 탑재하려는 노력을 많이 하고 있다. 사실 임베디드 장치에 해당 기술들이 올라갈 수 있으면 그 효과는 파급적이 된다. 제조업체 입장에서는 저렴한 비용으로 인공지능 기술을 구현할 수 있게 되고, 그런 장치들이 TV, 냉장고, 세탁기, 에어콘에 들어가므로, 더 확장시킬 수 있는 것이다. 그래서 많이 시도하고 있는 방법론으로는 

    - 임베디드 장치 자체 성능으로 학습/추론
    - 고성능 컴퓨터에서 학습한 후, 임베디드 장치에서 추론
    - 임베디드 장치에 가속기를 장착한 후 학습/추론

     표현은 on-Device AI, Edge AI라고 표현하는 것 같은데, 학회까지 나온것으로 보면 tinyML이라는 명칭이 조금 더 보편적으로 쓰이는 것 같다. 아무튼 이번 포스트에서 다룰 책도 이 tinyML에 대한 책이다.

     

    20200925_194749.jpg

     

     

    이 책은 작년말에 출간된 "TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low Power Microcontrollers"의 번역본이며, Google에서 Tensorflow Lite 개발 업무를 하는 Pete Warden이 썼다. 사실 이 책은 머신러닝/딥러닝에 대한 이론적인 내용을 다룬다기 보다는 사전에 학습시킨 모델이 있을때, 어떤식으로 모델을 압축하고 탑재할 수 있는지에 대한 노하우를 전달하는 책이다. 아마 아는 사람은 알겠지만, Tensorflow Lite는 Tensorflow 1.x대에서 experimental feature로 들어가 있다가 2.x로 올라가면서 정식으로 반영된 기능으로, 소위 말하면 quantization을 통한 학습 모델을 압축시키고, 임베디드 장치에 최적화된 Layer들을 제공해준다. 간단하게 quantization에 대해서 얘기하자면, 딥러닝 모델 구현시 출력으로 나오는 것이 각 layer별 weight들이다. 그런데 이런 weight들이 소수점으로 표현되고, 실제 데이터 형식상 소수점을 표현하기 위해서는 32bit 자료형이 필요하다. 그런데 만약 이 weight들을 정수로 표현할 수 있으면 어떨까? 특히 8bit 정수형으로 weight들을 표현할 수 있으면 자료형이  1 4  으로 줄게 되므로 사이즈를 많이 줄일 수 있다. 상세한 내용은 다음 링크를 참고하면 좋을거 같다.

     전체 책들이 어떻게 하면 모델을 잘 설계하고, layer를 tuning할 수 있다를 설명하기 보다는 tensorflow lite를 사용해서 임베디드 기기에 넣는 방법을 설명하고 있다. 보통 임베디드 기기에는 OS가 없는 케이스가 많기 때문에 C/C++로 개발하는 케이스가 많으며, 이 때문에 (모델학습을 제외한) 책내의 코드들이 대부분 C/C++으로 제공되고 있다. 

     그래서 어떻게보면 여타 인공지능 관련 서적과 다르고, 전혀 새로운 내용을 다룬다. 어떻게 보면 임베디드 장치에 머신러닝 모델을 올리고 싶은 사람한테는 딱 적당한 책이다. 단 유의할 점이라면, 이 책은 단순히 책만 가지고 있으면 무슨 내용인지 모를 부분이 많다. 그렇기 때문에 여기서 예제에 활용하는 데모보드 (Arduino Nano 33 BLE Sense나 Sparkfun Edge)는 하나 구비하고 실습하면서 같이 볼 것을 권한다. 내용이 그렇다보니 도식화를 통한 설명보다는 코드의 구성이나 기능 설명에 많이 치중되어 있다.

     

    그림 2. Sparkfun Edge

     

    책에서 다루는 예제는 다음과 같다. (참고로 해당 예제는 Tensorflow lite 에서도 공식적으로 제공하는 예제이기도 하다.

    - Linear Regression 모델 학습 (Hello World)
    - 호출어 감지 (Visual Wake Word)
    - 인체 감지 (Person Detection)
    - 마술 지팡이 (Magic Wand)

    개인적으로는 임베디드에 관심이 많은 입장에서 이런 책이 나온 것 같아 매우 흥미가 있었고, 책에 들어있던 내용 역시 그런 기대를 저버리지 않았다. 더구나 TinyML이 개발되는 전체적인 process를 이 책을 통해서 이해할 수 있던 부분이 좋았다. 특히 여타 인공지능 책들이 절대 다루지 않을만한 주제가 잘 담겨있어서, 아마 동일한 시도를 해보려는 사람한테는 최고의 책이 되지 않을까 싶다.

     참고로 아직 tinyML 분야가 많이 활성화되지 않아서 일부 공부 자료는 학회 논문이나 MIT Song Han 교수 랩, 혹은 (추후에 열릴) harvard tinyML Lecture를 참조하면 좋을거 같다. 관련링크는 하단부를 참고하면 좋을 듯 싶다.

    - 학회: https://www.tinyml.org/summit/

     

    tinyML Summit | Home

    Endowed Chair Professor, School of Electrical Engineering, KAIST Hoi-Jun Yoo is the KAIST ICT Endowed Chair Professor, School of Electrical Engineering, KAIST. He was the VCSEL pioneer in Bell Communications Research at Red Bank, NJ. USA and Manager of DRA

    www.tinyml.org

    - MIT Prof. Song Han (Han Lab): https://songhan.mit.edu/

     

    Song Han – Assistant Professor, MIT EECS

    Song Han is an assistant professor in MIT’s Department of Electrical Engineering and Computer Science. He received his PhD degree from Stanford University. His research focuses on efficient deep learning computing. He proposed “deep compression” te

    songhan.mit.edu

    - Havard TinyML lecture: https://sites.google.com/g.harvard.edu/tinyml/home

     

    TinyML

    College Calculus, Linear Algebra, Basic Probability, and Statistics: Many ML topics revolve around taking derivatives, understanding matrix vector operations and notation, and the concepts of gaussian distributions, means, standard deviations, etc.

    sites.google.com

    - edX Lecture (2020.10 open): https://www.edx.org/professional-certificate/harvardx-tiny-machine-learning

     

    Tiny Machine Learning (TinyML) Professional Certificate

     

    www.edx.org

     

    출처: https://talkingaboutme.tistory.com/entry/Book-TinyML [자신에 대한 고찰]

  • 임베디드 소프트웨어에 머신러닝을 적용하는 방법에 대해 다룬다. 

    책은 음성인식, 모션 센서를 이용한 제스처 감지, 카메라 센서를 이용한 인체 감지 프로젝트를 실제 예시로 보여준다.

    프로그램을 테스트하려면 프로젝트에 따라 조금 다르긴 하지만 3개의 하드웨어 장치가 필요하다.

    스파크펀 에지, 아두이노 나노 33 BLE 센스, STM32F746G 디스커버리 키트.

     

    ML의 세부 원리에 대해서는 다루지 않는다. 대신 딥러닝 모델 훈련 및 제작, 오류 해결, 프로세스 커스터마이징 등이 담겼다. 예시로 공장 기계의 고장 여부 예측이 나오며 딥러닝 워크플로를 소개한다. 기본적으로 코랩을 사용한다는 설정이므로 다른 환경 등에 대한 고려는 안해도 된다. 대신 모델 제작 외에 모델 실행 환경 설정, 입력 제공, 출력으로 동작을 생성하는 코드 또한 필요한데 이 부분은 C++로 되어 있다. 처음부터 테스트 코드를 훑으며 설명하니 간단하게 이해하기 좋았다. 각 보드마다 필요한 IDE 등과 USB 가 명시되어 있으니 참고해서 프로젝트를 빌드하고 장치에 배포할 수 있다.

결재하기
• 문화비 소득공제 가능

배송료 안내

  • 책, 아이템 등 상품을 1만원 이상 구매시 무료배송
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
초소형 머신러닝 TinyML
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
초소형 머신러닝 TinyML
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
초소형 머신러닝 TinyML
구입처*
구입일*
부가기호*
부가기호 안내

* 회원가입후 도서인증을 하시면 마일리지 500점을 드립니다.

* 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한됩니다.

* 절판도서, eBook 등 일부 도서는 도서인증이 제한됩니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실