Skocz do zawartości

Sztuczna inteligencja na STM32? Przykład użycia X-CUBE-AI


Pomocna odpowiedź

(edytowany)

Zastanawia mnie jedno:

"przygotować własną sieć neuronową"

Gdzie niby jest ta sieć neuronowa, gdzie są te ""neurony". Pewnie to zwykły brak wiedzy u mnie lub pomieszanie pojęć.

Zaglądając do wiki można wyczytać, że właściwie chodzi o "sztuczną sieć neuronową" - czemu pomijany jest przedrostek "sztuczną"?

Takim tokiem to za parę lat te "kilka bramek" będzie się nazywało neuronami 🙂

Poza tym ciekawie poczytać o takich nowoczesnych zagadnieniach.

Edytowano przez Zealota
(edytowany)

Mam kłopot z uruchomieniem kodu w JupyterLab:

import math
import numpy as np
from keras import models
from keras import layers
from keras.utils import to_categorical

Pojawia się błąd:

Using TensorFlow backend.
ERROR:root:Internal Python error in the inspect module.
Below is the traceback from this internal error.

ERROR:root:Internal Python error in the inspect module.
Below is the traceback from this internal error.

Czy to chodzi o wersje bibliotek? Jak w Anaconda zdowngradeować  np. Tensorflow?

Edit: Udało mi się wgrać wersję 1.13, 1.14, próbuję z innymi wersjami pozostałych bibliotek, ale to nie pomaga.

Czy mógłbym prosić o dokładniejsze omówienie instalacji wszystkiego, co dotyczy Pythona, z zaznaczeniem wersji i innych szczegółów, które są potrzebne do zadziałania?

Edytowano przez radek04

Udało mi się (chyba) rozwiązać problem.

Jeśli wersje bibliotek nie współgrają ze sobą, zamiast

from keras...

należy pisać

from tensorflow.keras...

 

Z mojej strony mogę zaproponować takie usprawnienia:

  • wczytywanie i obróbkę danych przez bibliotekę Pandas. Zdecydowanie wygodniejsze rozwiązanie niż filereader. Ewentualnie Pythonowy csvreader.
  • do podziały na zbiór treningowy i testowy można użyć train_test_split z sklearn
  • zdecydowanie zwiększyłbym ilość epok w trakcie uczenia. Spokojnie mogłoby być ich 100 albo i 500.
(edytowany)

@Harnas dziękuję za uwagi. Odczyt z plików, jak i samo przygotowanie danych jest oczywiście zrobione absolutnie nieprofesjonalnie. To co opisałem powstawało jako "dłubanina" metodą prób i błędów, a moim celem było uruchomienie przykładu z X-CUBE-AI, planowałem później wszystko zrobić od początku, ładniej, lepiej, i poprawniej oraz z ciekawszym czujnikiem (chciałem użyć czujnik gestów https://botland.com.pl/pl/czujniki-gestow/3065-apds-9960-czujnik-rgb-i-wykrywacz-gestow-33v-i2c-sparkfun-sen-12787.html). Plan był dobry, ale zabrakło czasu, więc opisałem po prostu to co udało mi się zrobić, za niedoskonałości bardzo przepraszam.

Edytowano przez Elvis
(edytowany)

@Harnas, jak zmodyfikować kod w Pythonie, jeśli chcę wykorzystać wprost wszystkie 6 wejść (3 osie akcelerometru oraz 3 żyroskopu), a układ ma rozpoznawać 3 różne wzorce (i brak konkretnego wzorca jako 4. stan)?

Edytowano przez radek04

@Elvis, a może Ty mógłbyś pomóc? Kupiłem książkę Deep Learning, ale mimo to, słabo mi idzie. Zadanie mam bliźniacze do Twojego, tylko tych kategorii więcej. Twój sposób wprowadzania danych wejściowy mi odpowiada, ale w książce podobnych nie znajduję. A może chociaż nakierujesz mnie, gdzie poszukać dobrego rozwiązania mojego problemu?

Dlaczego u Ciebie batch_size=8?

  • 1 miesiąc później...

thank you so much for sharing your project . ı couldn't find anything about x-cube-ai except your project . do you have any github page , I really would like to take a look

  • 2 miesiące później...
  • 3 miesiące później...
(edytowany)

Na wstępie muszę podziękować za super artykuł! Mam też jedno pytanie, które nie daje mi spać. W pliku main.c mam główny program (konkretnie jest to regulator PI do silnika DC z nadrzędną regulacją prędkości i podrzędną prądu) i chcę wykorzystać sieć do neuroestymacji prędkości. Zebrałem dane pomiarowe, nauczyłem sieć estymować prędkość, zaimplementowałem ją w projekcie... ale nie potrafię jej wywołać.

W pętli while jest funkcja MX_X_CUBE_AI_Process i przez nią mógłbym to zrobić jednak nie przyjmuje ona parametrów, które mam w pliku main.c (próba zmiany w pliku gdzie jest definiowana powodowało błędy przy kompilacji). Próbowałem też bezpośrednio dołączyć do main.c plik app_x-cube-ai.c w którym jest definiowana wspomniana funkcja ale efekt był podobny - błędy podczas kompilacji.

Czy jest jakiś sposób na wywołanie funkcji aiRun() w głównym pliku? albo jak przekazać parametry ( pomiary ) z pliku main.c do funkcji MX_X_CUBE_AI_Process a "odpowiedź" sieci z powrotem do main?

Z góry dzięki za odpowiedź i pozdrawiam.

EDIT

Bo dłuższej chwili "grzebania" w kodzie udało się podpiąć aiRun() w main.c. Gdyby ktoś miał podobny problem to trzeba:

- odleźć plik (z rozszerzeniem *.c ) w którym jest definicja funkcji aiRun (w najnowszej wersji jest to ai_Run)

- wrzucić odwołanie do niej w pliku nagłówkowym (ta sama nazwa ale z rozszerzeniem *.h)

- usunąć znacznik static przy deklaracji funkcji w pliku *.c

Na koniec można z pętli while usunąć wywołanie MX_X_CUBE_AI_Process. 

Edytowano przez damian49841
  • Lubię! 1
  • 1 rok później...

Cześć, czy jest tutaj na forum ktoś kto miałby wiedzę i trochę doświadczenia z uruchomieniem sztucznej sieci neuronowej, której zadaniem nie jest jak w artykule wykrywanie pewnego wzorca jakim jest charakterystyczny ruch akcelerometru ale regulacja prędkości obrotowej silnika elektrycznego?

  • 6 miesiące później...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...