Научете как да създадете TinyML модел и да го стартирате на MCU за откриване на химически газове

Неща, използвани в този проект:

Хардуерни компоненти

Arduino Mega 2560×1

Софтуерни приложения и онлайн услуги

„Neuton Tiny ML“

История

Бих искал да споделя своя експеримент за това как лесно да създадете свой собствен малък модел за машинно обучение и да направите изводи на микроконтролер за откриване на концентрацията на различни газове. Ще илюстрирам целия процес с моя пример за откриване на концентрацията на бензен (С6H6(GT)) въз основа на концентрацията на други регистрирани съединения.

Според мен такива прости решения могат да допринесат за подобряване на проблема със замърсяването на въздуха, който сега предизвиква сериозни опасения. Всъщност Световната здравна организация изчислява, че над седем милиона души умират преждевременно всяка година от болести, причинени от замърсяването на въздуха. Можете ли да си представите това?

Поради това все повече и повече организации, отговорни за мониторинга на емисиите, трябва да разполагат с ефективни инструменти за своевременно наблюдение на качеството на въздуха, а TinyML решенията изглеждат най-добрата технология за това. Те са доста нискоенергийни и евтини за производство, както и не изискват постоянна интернет връзка. Вярвам, че тези фактори ще насърчат масовото внедряване на TinyML като чудесна възможност за създаване на базирани на AI устройства и успешно решаване на различни предизвикателства.

Затова в моя експеримент вземам най-примитивния 8-битов MCU, за да покажа, че дори такова устройство днес може да има ML модели в него.

Описание на набора от данни:

Моят набор от данни съдържаше 5875 реда осреднени за час отговори от масив от оксидни химически сензори, които бяха разположени на полето в замърсен район в Италия, на нивото на пътя. Бяха предоставени осреднени почасови концентрации за CO, неметанови въглеводороди, бензен, общи азотни оксиди (NOx) и азотен диоксид (NO2).

Това е регресионен проблем.

Целеви показател— MAE (средна абсолютна грешка). Цел — C6H6(GT).

Информация за атрибута:RH — Относителна влажност

AH — Абсолютна влажност

T — температура в °C;

PT08.S3(NOx) — Волфрамов оксид. Осреднен за час отговор на сензора (номинално насочен към NOx);

PT08.S4(NO2) — Волфрамов оксид. Осреднен за час отговор на сензора (номинално насочен към NO2);

PT08.S5(O3) — Индиев оксид. Осреднен за час отговор на сензора (номинално насочен към O3);

PT08.S1(CO) — (калаен оксид) осреднен за час отговор на сензора (номинално насочен към CO);

CO(GT) — Истинска осреднена почасова концентрация на CO в mg/m³ (референтен анализатор);

PT08.S2(NMHC) — Титания. осреднен за час отговор на сензора (номинално насочен към NMHC);

Можете да видите повече подробности и да изтеглите набора от данни тук: https://archive.ics.uci.edu/ml/datasets/air+quality

Процедура:

Стъпка 1: Обучение на модели

Моделът беше създаден и обучен с безплатен инструмент Neuton TinyML, тъй като имах нужда от супер компактен модел, който да се побере в малък микроконтролер с 8-битова точност. Опитах се да направя такъв модел с помощта на TensorFlow преди, но беше твърде голям, за да изпълнява операции на 8 бита.

За да обуча модела, преобразувах набора от данни в CSV файл, качих го в платформата и избрах колоната, която трябва да бъде обучена да прави прогнози.

Обученият модел имаше следните характеристики:

Моделът се оказа супер компактен, само с 38 коефициента и 0.234 KB размер!

Освен това създадох модели с TF и ​​TF Lite и измерих показатели на същия набор от данни. Сравнението говори повече от думите. Освен това, както казах по-горе, TF моделите все още не могат да изпълняват операции на 8 бита, но ми беше интересно да използвам точно такова примитивно устройство.

Стъпка 2: Вграждане в микроконтролер

След завършване на обучението изтеглих архива, който съдържаше всички необходими файлове, включително мета-информация за модела в два формата (двоичен и HEX), калкулатор, библиотека Neuton и файл за изпълнение.

Тъй като не можах да проведа експеримента в полеви условия с реални газове, разработих прост протокол за поточно предаване на данни от компютър.

Стъпка 3: Изпълнение на извод на микроконтролера

Свързах микроконтролер, на който беше извършено прогнозирането, към компютър чрез сериен порт, така че сигналите бяха получени в двоичен формат.

Микроконтролерът е програмиран да включва червения светодиод, ако концентрацията на бензен е превишена, и зеления светодиод - ако концентрацията е в допустимите граници. Вижте видеоклиповете по-долу, за да видите как работи.

Заключение

Моят пример ясно илюстрира как всеки може лесно да използва подхода TinyML за създаване на компактни, но интелигентни устройства, дори с 8-битова точност. Убеден съм, че ниските производствени разходи и високата ефективност на TinyML разкриват огромни възможности за внедряването му в световен мащаб.

Поради липсата на необходимост от включване на технически специалисти, в този конкретен случай дори не-учените с данни могат бързо да изградят супер компактни модели и да локализират интелигентни устройства, управлявани от AI в цялата област, за да наблюдават качеството на въздуха в реално време. Според мен е наистина вдъхновяващо, че такива малки решения могат да ни помогнат да подобрим екологичната ситуация в глобален мащаб!