reklama - zainteresowany?

TinyML. Wykorzystanie TensorFlow Lite do uczenia maszynowego na Arduino i innych mikrokontrolerach - Helion

TinyML. Wykorzystanie TensorFlow Lite do uczenia maszynowego na Arduino i innych mikrokontrolerach
Autor: Pete Warden, Daniel Situnayake
Tytuł oryginału: TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers
TÅ‚umaczenie: Anna Mizerska
ISBN: 978-83-283-8362-3
stron: 486, Format: 168x237, okładka: miękka
Księgarnia: Helion

Książka będzie dostępna od listopada 2021

Tagi: Arduino | Uczenie maszynowe

Może siÄ™ wydawać, że profesjonalne systemy uczenia maszynowego wymagajÄ… sporych zasobów mocy obliczeniowej i energii. Okazuje siÄ™, że niekoniecznie: można tworzyć zaawansowane, oparte na sieciach neuronowych aplikacje, które doskonale poradzÄ… sobie bez potężnych procesorów. Owszem, praca na mikrokontrolerach podobnych do Arduino lub systemach wbudowanych wymaga pewnego przygotowania i odpowiedniego podejÅ›cia, jest to jednak fascynujÄ…cy sposób na wykorzystanie niewielkich urzÄ…dzeÅ„ o niskim zapotrzebowaniu na energiÄ™ do tworzenia zdumiewajÄ…cych projektów.

Ta książka jest przystÄ™pnym wprowadzeniem do skomplikowanego Å›wiata, w którym za pomocÄ… techniki TinyML wdraża siÄ™ gÅ‚Ä™bokie uczenie maszynowe w systemach wbudowanych. Nie musisz mieć żadnego doÅ›wiadczenia z zakresu uczenia maszynowego czy pracy z mikrokontrolerami. W książce wyjaÅ›niono, jak można trenować modele na tyle maÅ‚e, by mogÅ‚y dziaÅ‚ać w każdym Å›rodowisku — również Arduino. DokÅ‚adnie opisano sposoby użycia techniki TinyML w tworzeniu systemów wbudowanych opartych na zastosowaniu ucze nia maszynowego. Zaprezentowano też kilka ciekawych projektów, na przykÅ‚ad dotyczÄ…cy budowy urzÄ…dzenia rozpoznajÄ…cego mowÄ™, magicznej różdżki reagujÄ…cej na gesty, a także rozszerzenia możliwoÅ›ci kamery o wykrywanie ludzi.

W książce między innymi:

  • praca z Arduino i innymi mikrokontrolerami o niskim poborze mocy
  • podstawy uczenia maszynowego, budowy i treningu modeli
  • TensorFlow Lite i zestaw narzÄ™dzi Google dla TinyML
  • bezpieczeÅ„stwo i ochrona prywatnoÅ›ci w aplikacji
  • optymalizacja modelu
  • tworzenie modeli do interpretacji różnego rodzaju danych

Ograniczone zasoby? Poznaj TinyML!

Spis treści

TinyML. Wykorzystanie TensorFlow Lite do uczenia maszynowego na Arduino i innych mikrokontrolerach -- spis treści

  • WstÄ™p
    • Konwencje typograficzne przyjÄ™te w tej książce
    • Korzystanie z przykÅ‚adowych kodów
    • PodziÄ™kowania
  • RozdziaÅ‚ 1. Wprowadzenie
    • UrzÄ…dzenia z systemem wbudowanym
    • CiÄ…gÅ‚y rozwój
  • RozdziaÅ‚ 2. Informacje wstÄ™pne
    • Do kogo skierowana jest ta książka?
    • Jaki sprzÄ™t bÄ™dzie Ci potrzebny?
    • Jakie oprogramowanie bÄ™dzie Ci potrzebne?
    • Czego nauczysz siÄ™ dziÄ™ki tej książce?
  • RozdziaÅ‚ 3. Wprowadzenie do uczenia maszynowego
    • Czym wÅ‚aÅ›ciwie jest uczenie maszynowe?
    • Proces uczenia gÅ‚Ä™bokiego
      • OkreÅ›lenie celu
      • Zebranie zestawu danych
        • Wybór danych
        • Zbieranie danych
        • Etykietowanie danych
        • Nasz gotowy zestaw danych
      • Zaprojektowanie architektury modelu
        • Generowanie atrybutów z danych
          • Tworzenie okien czasowych
          • Normalizacja
        • MyÅ›lenie z uczeniem maszynowym
      • Trenowanie modelu
        • Niedotrenowanie i przetrenowanie
        • Trening, walidacja i testowanie
      • PrzeksztaÅ‚cenie modelu
      • Uruchomienie procesu wnioskowania
      • Ocena i rozwiÄ…zanie ewentualnych problemów
    • Podsumowanie
  • RozdziaÅ‚ 4. Witaj, Å›wiecie TinyML: budowa i trenowanie modelu
    • Co bÄ™dziemy budować?
    • Nasz zestaw narzÄ™dzi do uczenia maszynowego
      • Python i Jupyter Notebooks
      • Google Colaboratory
      • TensorFlow i Keras
    • Budowa naszego modelu
      • Importowanie pakietów
      • Generowanie danych
      • Rozdzielanie danych
      • Definiowanie podstawowego modelu
    • Trenowanie naszego modelu
      • Wskaźniki treningu
      • Wykres historii
      • Ulepszenie naszego modelu
      • Test
    • Konwertowanie modelu na potrzeby TensorFlow Lite
      • Konwertowanie na plik C
    • Podsumowanie
  • RozdziaÅ‚ 5. Witaj, Å›wiecie TinyML: budowanie aplikacji
    • Omówienie testów
      • Dodawanie zależnoÅ›ci
      • Przygotowanie testów
      • Przygotowanie do rejestrowania danych
      • Mapowanie naszego modelu
      • Klasa AllOpsResolver
      • Alokacja pamiÄ™ci dla modelu
      • Tworzenie interpretera
      • Sprawdzenie tensora wejÅ›cia
      • Uruchamianie procesu wnioskowania
      • Odczytywanie danych wyjÅ›ciowych
      • Uruchamianie testów
        • Pobieranie kodu
        • Uruchamianie testów za pomocÄ… Make
    • Budowa pliku z projektem
    • Omówienie kodu źródÅ‚owego
      • PoczÄ…tek pliku main_functions.cc
      • ObsÅ‚uga wyjÅ›cia za pomocÄ… output_handler.cc
      • Koniec pliku main_functions.cc
      • Omówienie pliku main.cc
      • Uruchomienie aplikacji
    • Podsumowanie
  • RozdziaÅ‚ 6. Witaj, Å›wiecie TinyML: uruchomienie aplikacji na mikrokontrolerze
    • Czym wÅ‚aÅ›ciwie jest mikrokontroler?
    • Arduino
      • ObsÅ‚uga wyjÅ›cia na Arduino
      • Uruchomienie przykÅ‚adu
      • Wprowadzanie wÅ‚asnych zmian
    • SparkFun Edge
      • ObsÅ‚uga wyjÅ›cia na SparkFun Edge
      • Uruchomienie przykÅ‚adu
        • Kompilacja
        • Podpis pliku binarnego
        • Wgrywanie pliku binarnego
          • PodÅ‚Ä…czenie konwertera USB do pÅ‚ytki
          • PodÅ‚Ä…czenie konwertera do komputera
          • Uruchomienie skryptu do wgrania nowego programu na pÅ‚ytkÄ™
      • Testowanie programu
      • Sprawdzanie danych o przebiegu programu
      • Wprowadzanie wÅ‚asnych zmian
    • Zestaw ST Microelectronics STM32F746G Discovery
      • ObsÅ‚uga wyjÅ›cia na STM32F746G
      • Uruchomienie przykÅ‚adu
      • Wprowadzanie wÅ‚asnych zmian
    • Podsumowanie
  • RozdziaÅ‚ 7. Wykrywanie sÅ‚owa wybudzajÄ…cego: budowanie aplikacji
    • Co bÄ™dziemy tworzyć?
    • Architektura aplikacji
      • Wprowadzenie do naszego modelu
      • Wszystkie elementy aplikacji
    • Omówienie testów
      • Podstawowy przepÅ‚yw danych
      • Element dostarczajÄ…cy dane audio
      • Element dostarczajÄ…cy cechy
        • Sposób przetwarzania dźwiÄ™ku na spektrogram przez element dostarczajÄ…cy dane audio
      • Element rozpoznajÄ…cy polecenia
      • Element reagujÄ…cy na polecenia
    • NasÅ‚uchiwanie słów wybudzajÄ…cych
      • Uruchomienie naszej aplikacji
    • Uruchomienie aplikacji na mikrokontrolerach
      • Arduino
        • Element reagujÄ…cy na polecenia dla Arduino
        • Uruchomienie przykÅ‚adu
        • Wprowadzanie wÅ‚asnych zmian
      • SparkFun Edge
        • Element reagujÄ…cy na polecenia dla SparkFun Edge
        • Uruchomienie przykÅ‚adu
          • Kompilacja
          • Podpis pliku binarnego
          • Wgrywanie pliku binarnego
          • PodÅ‚Ä…czenie konwertera USB do pÅ‚ytki
          • PodÅ‚Ä…czenie konwertera do komputera
          • Uruchomienie skryptu do wgrania nowego programu na pÅ‚ytkÄ™
        • Testowanie programu
        • Sprawdzanie danych o przebiegu programu
        • Wprowadzanie wÅ‚asnych zmian
      • Zestaw ST Microelectronics STM32F746G Discovery
        • Element reagujÄ…cy na polecenia dla STM32F746G
        • Uruchomienie przykÅ‚adu
        • Testowanie programu
        • PodglÄ…d informacji o przebiegu programu
        • Wprowadzanie wÅ‚asnych zmian
    • Podsumowanie
  • RozdziaÅ‚ 8. Wykrywanie sÅ‚owa wybudzajÄ…cego: trenowanie modelu
    • Trenowanie naszego nowego modelu
      • Trenowanie w Colab
        • Trenowanie z użyciem GPU
        • Konfiguracja treningu
        • Instalacja pakietów
        • NarzÄ™dzie TensorBoard
        • RozpoczÄ™cie treningu
        • Oczekiwanie na zakoÅ„czenie treningu
          • Pilnowanie, by Colab siÄ™ nie wyÅ‚Ä…czyÅ‚
          • Zamrażanie grafu
        • Konwertowanie na format TensorFlow Lite
        • Utworzenie tablicy C
    • Wykorzystanie modelu w naszym projekcie
      • ZastÄ™powanie modelu
      • Zmiana etykiet
      • Zmiany w kodzie command_responder.cc
        • Arduino
        • SparkFun Edge
        • STM32F746G
      • Inne sposoby uruchamiania skryptów
    • Zasada dziaÅ‚ania modelu
      • Wizualizacja danych wejÅ›ciowych
      • Zasada dziaÅ‚ania generowania cech
      • Architektura modelu
      • Dane wyjÅ›ciowe modelu
    • Trenowanie modelu z wÅ‚asnymi danymi
      • Zestaw danych Speech Commands
      • Trenowanie modelu na wÅ‚asnych danych
      • Nagrywanie wÅ‚asnych dźwiÄ™ków
      • PowiÄ™kszenie zestawu danych
      • Architektury modeli
    • Podsumowanie
  • RozdziaÅ‚ 9. Wykrywanie osoby: budowanie aplikacji
    • Co bÄ™dziemy budować?
    • Architektura aplikacji
      • Wprowadzenie do naszego modelu
      • Wszystkie elementy aplikacji
    • Omówienie testów
      • Podstawowy przepÅ‚yw danych
      • Element dostarczajÄ…cy obrazy
      • Element reagujÄ…cy na wykrycie czÅ‚owieka
    • Wykrywanie ludzi
    • Uruchomienie aplikacji na mikrokontrolerach
      • Arduino
        • Wybór moduÅ‚u kamery
        • Przechwytywanie obrazów na Arduino
        • Reagowanie na wykrycie czÅ‚owieka na Arduino
        • Uruchomienie przykÅ‚adu
        • Wprowadzanie wÅ‚asnych zmian
      • SparkFun Edge
        • Wybór moduÅ‚u kamery
        • Przechwytywanie obrazów na SparkFun Edge
        • Reagowanie na wykrycie czÅ‚owieka na SparkFun Edge
        • Uruchomienie przykÅ‚adu
          • Kompilacja
          • Podpisanie pliku binarnego
          • Wgrywanie pliku binarnego
          • PodÅ‚Ä…czenie konwertera USB do pÅ‚ytki
          • PodÅ‚Ä…czenie konwertera do komputera
          • Uruchomienie skryptu do wgrania nowego programu na pÅ‚ytkÄ™
        • Testowanie programu
        • Sprawdzanie danych o przebiegu programu
        • Wprowadzanie wÅ‚asnych zmian
    • Podsumowanie
  • RozdziaÅ‚ 10. Wykrywanie osoby: trenowanie modelu
    • Wybór maszyny
    • Konfiguracja instancji Google Cloud Platform
    • Wybór platformy programistycznej do treningu
    • Tworzenie zestawu danych
    • Trenowanie modelu
    • TensorBoard
    • Ocena modelu
    • Eksportowanie modelu do TensorFlow Lite
      • Eksportowanie do pliku GraphDef Protobuf
      • Zamrażanie wag
      • Kwantyzacja i konwertowanie na potrzeby TensorFlow Lite
      • Konwertowanie na plik źródÅ‚owy C
    • Trenowanie dla innych kategorii
    • Architektura MobileNet
    • Podsumowanie
  • RozdziaÅ‚ 11. Magiczna różdżka: budowanie aplikacji
    • Co bÄ™dziemy tworzyć?
    • Architektura aplikacji
      • Wprowadzenie do naszego modelu
      • Wszystkie elementy aplikacji
    • Omówienie testów
      • Podstawowy przepÅ‚yw danych
      • Element obsÅ‚ugujÄ…cy akcelerometr
      • Element przewidujÄ…cy gesty
      • Element reagujÄ…cy na wykrycie gestu
    • Wykrywanie gestu
    • Uruchomienie aplikacji na mikrokontrolerach
      • Arduino
        • StaÅ‚e Arduino
        • Odczytywanie pomiarów z akcelerometru na Arduino
        • Reagowanie na gesty za pomocÄ… Arduino
        • Uruchomienie przykÅ‚adu
        • Wprowadzanie wÅ‚asnych zmian
      • SparkFun Edge
        • Odczytywanie pomiarów z akcelerometru na SparkFun Edge
        • Reagowanie na gesty za pomocÄ… SparkFun Edge
        • Uruchomienie przykÅ‚adu
          • Kompilacja
          • Podpis pliku binarnego
          • Wgrywanie pliku binarnego
          • PodÅ‚Ä…czenie konwertera USB do pÅ‚ytki
          • PodÅ‚Ä…czenie konwertera do komputera
          • Uruchomienie skryptu do wgrania nowego programu na pÅ‚ytkÄ™
        • Testowanie programu
        • Wprowadzanie wÅ‚asnych zmian
    • Podsumowanie
  • RozdziaÅ‚ 12. Magiczna różdżka: trenowanie modelu
    • Trenowanie modelu
      • Trening w Colab
        • Trenowanie z użyciem GPU
        • Instalacja pakietów
        • Przygotowanie danych
        • Uruchomienie TensorBoard
        • RozpoczÄ™cie treningu
        • Ocena wyników
        • Utworzenie tablicy C
      • Inne sposoby uruchamiania skryptów
    • Zasada dziaÅ‚ania modelu
      • Wizualizacja danych wejÅ›ciowych
      • Architektura modelu
    • Trenowanie modelu z wÅ‚asnymi danymi
      • Przechwytywanie danych
        • SparkFun Edge
        • Rejestrowanie danych
      • Modyfikacja skryptów trenujÄ…cych
      • Trening
      • Wykorzystanie nowego modelu
    • Podsumowanie
      • Uczenie siÄ™ uczenia maszynowego
      • Co dalej?
  • RozdziaÅ‚ 13. TensorFlow Lite dla mikrokontrolerów
    • Czym jest TensorFlow Lite dla mikrokontrolerów?
      • TensorFlow
      • TensorFlow Lite
      • TensorFlow Lite dla mikrokontrolerów
      • Wymagania
      • Dlaczego model potrzebuje interpretera?
      • Generowanie projektu
    • Kompilatory
      • Wyspecjalizowany kod
      • Pliki Makefile
      • Pisanie testów
    • ObsÅ‚uga nowej platformy sprzÄ™towej
      • WyÅ›wietlanie rejestru zdarzeÅ„
      • Wdrożenie funkcji DebugLog()
      • Uruchamianie wszystkich plików źródÅ‚owych
      • Integracja z plikami Makefile
    • ObsÅ‚uga nowego IDE lub kompilatora
    • Integrowanie zmian w kodzie projektu z repozytoriami
    • Wnoszenie swojego wkÅ‚adu do kodu z otwartym źródÅ‚em
    • ObsÅ‚uga nowego akceleratora sprzÄ™towego
    • Format pliku
      • Biblioteka FlatBuffers
    • Przenoszenie operacji TensorFlow Lite Mobile na wersjÄ™ dla mikrokontrolerów
      • Oddzielanie kodu odniesienia
      • Utworzenie kopii operatora dla mikrokontrolera
      • Tworzenie wersji testów dla mikrokontrolerów
      • Tworzenie testu Bazel
      • Dodanie swojego operatora do obiektu AllOpsResolver
      • Kompilacja testu pliku Makefile
    • Podsumowanie
  • RozdziaÅ‚ 14. Projektowanie wÅ‚asnych aplikacji TinyML
    • Projektowanie
    • Czy potrzebny jest mikrokontroler, czy może być wiÄ™ksze urzÄ…dzenie?
    • Co jest możliwe?
    • Podążanie czyimiÅ› Å›ladami
    • Podobne modele do trenowania
    • Sprawdzenie danych
    • Magia Czarnoksiężnika z krainy Oz
    • Poprawnie dziaÅ‚ajÄ…ca wersja na komputerze jako pierwszy etap
  • RozdziaÅ‚ 15. Optymalizacja prÄ™dkoÅ›ci dziaÅ‚ania programu
    • PrÄ™dkość modelu a prÄ™dkość ogólna aplikacji
    • Zmiany sprzÄ™tu
    • Ulepszenia modelu
      • Ocena opóźnienia modelu
      • Przyspieszanie modelu
    • Kwantyzacja
    • Etap projektowania produktu
    • Optymalizacje kodu
      • Profilowanie wydajnoÅ›ci
        • Miganie
        • Metoda strzelby
        • WyÅ›wietlanie informacji z przebiegu programu
        • Analizator stanów logicznych
        • Licznik
        • Profilowanie
    • Optymalizowanie operacji
      • Implementacje już zoptymalizowane
      • Tworzenie wÅ‚asnej zoptymalizowanej implementacji
      • Wykorzystanie funkcjonalnoÅ›ci sprzÄ™tu
      • Akceleratory i koprocesory
    • Wnoszenie swojego wkÅ‚adu do kodu z otwartym źródÅ‚em
    • Podsumowanie
  • RozdziaÅ‚ 16. Optymalizacja poboru mocy
    • Rozwijanie intuicji
      • Pobór mocy standardowych elementów
      • Wybór sprzÄ™tu
    • Pomiar rzeczywistego poboru mocy
    • Oszacowanie poboru mocy modelu
    • Ulepszenia zwiÄ…zane z zużyciem energii
      • Cykl pracy
      • Projektowanie kaskadowe
    • Podsumowanie
  • RozdziaÅ‚ 17. Optymalizacja modelu i rozmiaru pliku binarnego
    • Zrozumienie ograniczeÅ„ wÅ‚asnego systemu
    • Oszacowanie zużycia pamiÄ™ci
      • Zużycie pamiÄ™ci flash
      • Zużycie pamiÄ™ci RAM
    • Szacunkowe wartoÅ›ci dokÅ‚adnoÅ›ci i rozmiaru modelu przy różnych problemach
      • Model rozpoznajÄ…cy sÅ‚owa wybudzajÄ…ce
      • Model predykcyjnego utrzymania
      • Wykrywanie obecnoÅ›ci czÅ‚owieka
    • Wybór modelu
    • Zmniejszenie rozmiaru pliku wykonywalnego
      • Mierzenie rozmiaru kodu
      • Ile miejsca zajmuje TensorFlow Lite dla mikrokontrolerów?
      • OpResolver
      • Rozmiar pojedynczych funkcji
      • StaÅ‚e w platformie TensorFlow Lite
    • NaprawdÄ™ malutkie modele
    • Podsumowanie
  • RozdziaÅ‚ 18. Debugowanie
    • Różnica w dokÅ‚adnoÅ›ci miÄ™dzy treningiem a wdrożeniem
      • Różnice we wstÄ™pnym przetwarzaniu danych
      • Debugowanie wstÄ™pnego przetwarzania danych
      • Ocena dziaÅ‚ania programu na urzÄ…dzeniu docelowym
    • Różnice liczbowe
      • Czy różnice stanowiÄ… problem?
      • Ustalenie wskaźnika
      • Punkt odniesienia
      • Zamiana implementacji
    • Tajemnicze awarie
      • Debugowanie na pulpicie
      • Sprawdzanie rejestru
      • Debugowanie metodÄ… strzelby
      • BÅ‚Ä™dy zwiÄ…zane z pamiÄ™ciÄ…
    • Podsumowanie
  • RozdziaÅ‚ 19. Przenoszenie modelu z TensorFlow do TensorFlow Lite
    • OkreÅ›lenie wymaganych operacji
    • Operacje obsÅ‚ugiwane w TensorFlow Lite
    • Przeniesienie wstÄ™pnego i koÅ„cowego przetwarzania do kodu aplikacji
    • Implementacja niezbÄ™dnych operacji
    • Optymalizacja operacji
    • Podsumowanie
  • RozdziaÅ‚ 20. Prywatność, bezpieczeÅ„stwo i wdrażanie
    • Prywatność
      • PDD
        • Zbieranie danych
        • Wykorzystanie danych
        • Dzielenie siÄ™ danymi i ich przechowywanie
        • Zgoda
      • Używanie PDD
    • BezpieczeÅ„stwo
      • Ochrona modeli
    • Wdrożenie
      • PrzejÅ›cie od pÅ‚ytki do produktu
    • Podsumowanie
  • RozdziaÅ‚ 21. Poszerzanie wiedzy
    • Fundacja TinyML
    • SIG Micro
    • Strona internetowa TensorFlow
    • Inne platformy programistyczne
    • Twitter
    • Przyjaciele TinyML
    • Podsumowanie
  • Dodatek A Używanie i tworzenie biblioteki Arduino w formacie ZIP
  • Dodatek B Przechwytywanie dźwiÄ™ku na Arduino
    • O autorach
    • Kolofon

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.