понедельник, 31 мая 2021 г.

Начало работы с TinyML от Edge Impulse

Узнайте, как использовать платформу TinyML Edge Impulse для сбора данных, обучения модели и развертывания ее на устройстве по вашему выбору.

 

Что такое TinyML?

Представьте, что вы хотите почувствовать, когда на микроконтроллере происходит определенный жест. Обычно это достигается путем сбора обучающих данных с датчика, маркировки его, а затем использования сценария для обучения модели и ее последующего развертывания. Этот рабочий процесс занимает много времени и может быть очень сложным для новичков.

TinyML - это сервис от Edge impulse, который позволяет легко создавать эти модели, просто подключив микроконтроллер к их сервису, нажав кнопку, а затем развернув его после того, как их серверы сделают тяжелую работу. Их интерфейс перетаскивания позволяет легко добавлять дополнительные датчики или возможности обучения.

 Возможные приложения

Как упоминалось ранее, Edge Impulse TinyML отлично подходит для быстрого создания проектов, которые полагаются на большие объемы данных для обнаружения и / или прогнозирования, когда события произойдут или происходят. Отличным примером этого является распознавание горячих слов, когда можно настроить устройство, которое прослушивает определенную фразу, а затем выполняет на ее основе действие, такое как «открыть жалюзи» или «включить свет». Еще одно отличное применение платформы - это распознавание движения, например, способ подсчета шагов или проверки того, используется ли элемент в данный момент.

 

 Создание учетной записи

Для начала сначала создайте учетную запись, перейдя на https://studio.edgeimpulse.com/signup.


 После ввода вашей информации и проверки электронной почты вас встретит начальная страница. Это проведет вас через процесс подключения устройства, сбора данных и, наконец, развертывания модели. Свой первый проект я назвал PhoneTest-1, но это может быть что угодно.


 Подключение мобильного телефона

TinyML поддерживает множество устройств, включая ESP32, многие платы ST ARM Cortex-M3 и несколько комплектов с поддержкой Arduino WiFi. Однако многие из тех же задач можно выполнить, просто используя смартфон через веб-браузер, поскольку он содержит микрофон и акселерометр. Чтобы подключить свой телефон, просто нажмите кнопку «Использовать свой мобильный телефон», после чего откроется QR-код.

 После сканирования вы попадете на их веб-сайт и автоматически подключитесь к их API через ключ API. Убедитесь, что телефон включен, а окно браузера открыто на протяжении всего руководства.

Сбор данных

Пришло время по-настоящему погрузиться в создание модели. Но сначала должны быть данные, на которых можно его обучить. Убедитесь, что у вас есть телефон под рукой, потому что вы будете использовать его датчики для сбора данных. Для начала перейдите на вкладку сбора данных и убедитесь, что ваш телефон выбран. Выберите датчик акселерометра и частоту, а затем нажмите «Начать выборку». После того, как вы закончите перемещать телефон, вы можете просмотреть собранные данные в виде графика.

суббота, 15 мая 2021 г.

Защитите торфяники для людей и планеты с помощью SensiML

Сохраняйте торфяники, прогнозируя ранние признаки высыхания, засухи или пожара, используя ML на краю, используя SensiML, Ubidots и гелий [СОЛНЕЧНАЯ ЭНЕРГИЯ]

Предыстория

     В результате пожара в Индонезии 1997 года было сожжено 9,7–11,7 млн га на Борнео и Суматре, в результате чего были уничтожены 4,5–6 млн га богатых видами диптерокарповых лесов (в том числе 1,5–2,1 млн га на торфяных почвах). Расчетные выбросы углерода в результате этих пожаров на торфяниках в 1997–1998 гг. Составили 0,81–2,57 Пг, что эквивалентно 13–40% годовых глобальных выбросов от ископаемого топлива [источник в Интернете]

Торфяники и изменение климата

Торфяники - это тип водно-болотных угодий, которые являются одними из самых ценных экосистем на Земле. Они имеют решающее значение для сохранения глобального биоразнообразия, обеспечения безопасной питьевой водой, минимизации риска наводнений и помощи в решении проблемы изменения климата.

Торфяники являются крупнейшим природным хранилищем углерода на суше. Площадь, покрытая почти естественными торфяниками во всем мире (> 3 миллиона квадратных километров), поглощает 0,37 гига тонн углекислого газа (CO2) в год, накапливая больше углерода, чем все другие типы растительности в мире вместе взятые.

    Поврежденные торфяники являются основным источником выбросов парниковых газов, ежегодно выделяя почти 6% глобальных выбросов CO2. Таким образом, восстановление торфяников может привести к значительному сокращению выбросов.

Важность торфяников

Леса торфяных болот - это низменная растительность на тропических торфяниках, где большая часть флоры и фауны уникальным образом адаптирована к окружающей среде, то есть к заболоченной и кислой воде. Торфяные болота важны по многим причинам, главным образом как источник пресной воды, смягчения последствий наводнений, поглотителя и накопления углерода, а также для защиты биоразнообразия.

К сожалению, Западная Европа потеряла почти 90% торфяников, в то время как Центральная Европа имеет только 50% действующих торфяников. В Азии потеряно 70% торфяных болот. Сейчас, более чем когда-либо, охрана и восстановление торфяников являются важными усилиями на благо планеты и ее жителей.

1. Торфяники как поглотители углерода

Один очень удивительный факт о торфяниках заключается в том, что в этих лесах хранится около 30% всего углерода на суше. Это около 500 миллиардов тонн углерода! Только торфяники в Юго-Восточной Азии содержат 14% или примерно 68 миллиардов тонн углерода в мире. Обеспечение того, чтобы углерод в торфяниках оставался нетронутым, является ключом к регулированию климата, поскольку неправильно управляемые торфяники могут вызвать массовый выброс углерода в воздух, что даже фундаментальная наука скажет вам очень и очень плохо.

2. Торфяники и водное регулирование.

Помимо хранения огромного количества углерода, торфяники примерно на 90% состоят из воды в почве, хранящейся среди разлагающихся пористых органических веществ (высушенных листьев и т. Д.). Это придает лесной подстилке грязный оттенок, который обычно ассоциируется с болотами и болотами, которые являются разными типами торфяников.

Здоровые влажные торфяники поглощают загрязнители из атмосферы, включая азот, диоксид серы, тяжелые металлы и углерод. Эти загрязнители делают торфяную почву кислой. Поскольку загрязняющие вещества поглощаются почвой, вода, которая вытекает из торфяников в землю или реки, выходит чистой - как естественная система фильтрации.

Когда торфяники осушаются, они не смогут регулировать загрязняющие вещества в атмосфере так, как должны, и это приведет к увеличению содержания углерода в воде. Воду с высоким содержанием углерода необходимо будет обработать, прежде чем ее можно будет безопасно использовать, а процесс очистки является дорогостоящим и приводит к образованию вредных побочных продуктов.

Помимо регулирования загрязнителей, торфяники также регулируют избыток воды. Торфяники могут уменьшить затопление вниз по течению, поскольку действуют как губка, впитывая излишки воды. А в засушливые сезоны торфяники медленно высвобождают воду, обеспечивая таким образом источник пресной воды для окружающих сообществ. Торфяники - прекрасные водоемы для орошения, гидроэнергетики, отдыха, водного земледелия и как источник чистой воды.

Процесс дренажа

Причины слива

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

В Юго-Восточной Азии торфяники осушены для преобразования в плантации (для пальмового масла и бумажной массы); в Европе и Северной Америке низинные торфяники осушались для выращивания овощей, зерновых и пастбищ для домашнего скота.

На сегодняшний день сельское хозяйство, лесное хозяйство и горнодобывающая промышленность затронули около 25% торфяников на Земле. Хотя большие части огромных торфяников Северной Америки и России все еще относительно нетронуты, во многих частях Европы, Центральной и Юго-Восточной Азии, Аргентины и Чили торфяники значительно деградировали. Растет интерес к защите и восстановлению торфяников с целью сохранения существующих запасов углерода, помощи в смягчении последствий изменения климата и сохранения экосистемных выгод.

Дренаж и торфяной пожар

Как вы видели в процессе осушения выше, сухие торфяники склонны к возгоранию и ускоряют процесс осушения.

Когда торфяники осушаются, они становятся очень уязвимыми для торфяного пожара. Простой выброшенный окурок или спичка может привести к огромным разрушениям, ухудшению ресурсной базы, ускоренному выбросу углерода и множеству проблем со здоровьем для местных сообществ. Сухой торф очень легко воспламеняется и может гореть в течение нескольких дней или недель, даже тлея под землей и всплывая вдали от первоначального источника. Это делает эти пожары невероятно трудными для тушения, а также очень непредсказуемыми и неконтролируемыми.

Как ИИ может помочь защитить торфяники?

Если вы до сих пор следили за статьей, то поняли, что сухие торфяники подвержены пожарам. Когда разжигается пожар или даже когда торфяники высыхают, весь CO2 выделяется в атмосферу. Иногда люди преднамеренно поджигают торфяники для расширения сельскохозяйственных угодий. Искусственный интеллект может помочь предсказать, когда торфяники высыхают или загораются, собирая данные датчиков, такие как уровень влажности почвы, выбросы CO2 в воздухе, повышение температуры, а затем анализируя эти данные для прогнозирования таких ситуаций, как засуха, пожар и т. Д.

    Основываясь на предварительном прогнозе, мы можем предпринять некоторые превентивные и упреждающие меры, такие как тушение пожара до того, как он сожжет торфяник, или повторное заболачивание торфяников, когда оно высохнет.

Торфяная гвардия

Представляем Peat Guard - устройство на солнечной энергии, работающее под управлением модели tinyML на доске Quick Feather, оснащенное датчиком влажности почвы, аналоговым датчиком температуры и датчиком газа MQ7 CO2. У него есть узел LoRa - Heltec Wireless Stick Life, который отправляет данные UPLINK в Helium, People Network, которая передает данные на панель управления Ubidots.

Я собираюсь глубоко погрузиться в это, чтобы подробно объяснить различные компоненты моего устройства.

Доска Quick Feather и SensiML

Пакет SensiML Analytics Toolkit автоматизирует каждый этап процесса создания оптимизированного кода распознавания датчиков AI IoT. Общий рабочий процесс использует растущую библиотеку передовых алгоритмов машинного обучения и искусственного интеллекта для создания кода, который может учиться на новых данных либо на этапе разработки, либо на этапе разработки

Я настоятельно рекомендую вам посетить веб-сайт https://sensiml.com/ и посмотреть видео о рабочем процессе, которое даст вам довольно хороший обзор программного обеспечения SensiML.

QuickFeather основан на оборудовании с открытым исходным кодом, совместим с форм-фактором Adafruit Feather и основан на 100% программном обеспечении с открытым исходным кодом (включая инструменты Symbiflow FPGA).

QuickFeather работает на базе QuickLogic EOS ™ S3, первого микроконтроллера Arm Cortex®-M4F с поддержкой FPGA, который полностью поддерживает Zephyr RTOS. Прочие функции включают в себя:

    GigaDevice 16 Мбит флеш-памяти # GD25Q16CEIGR
    Акселерометр mCube MC3635
    Датчик давления Infineon DPS310
    Цифровой микрофон Infineon IM69D130 PDM
    Питание от USB или от одного Li-Po аккумулятора
    Встроенное зарядное устройство
    Сигналы данных USB привязаны к программируемой логике

Посетите https://www.quicklogic.com/products/eos-s3/quickfeather-development-kit/ для получения дополнительной информации об этой доске.

Сбор данных с помощью лаборатории сбора данных SensiML (DCL)


Прежде чем начать сбор данных, вам необходимо подключить датчик I2C к плате Quick Feather и внести некоторые изменения в программное обеспечение. Вы найдете мой код в разделе кода этого проекта. Я рекомендую вам посетить эту страницу руководства, где вы найдете очень полезные уроки, чтобы начать работу с новым датчиком I2C и процессом сбора данных.

На изображениях выше вы можете увидеть, как я подключил 3 датчика к плате Quick Feather и начал сбор данных. Я установил QF поверх Huzzah ESP32, чтобы я мог собирать данные по Wi-Fi.

qorc_ssi_adc.begin();
qorc_ssi_adc.setSampleRate(sensor_ssss_config.rate_hz);
int16_t *p_adc_data = (int16_t *)p_dest;
int16_t channel_A0 = qorc_ssi_adc.getSingleEnded(0); //MQ7
int16_t channel_A1 = qorc_ssi_adc.getSingleEnded(1); //Soil Moisture
int16_t channel_A2 = qorc_ssi_adc.getSingleEnded(2); //Temperature

 

Обучите свою модель с помощью SensiML Analytic Studio

После того, как вы соберете достаточно данных и проведете сегментацию, перейдите в Analytic Studio, чтобы обучить свою модель. 

Интегрировать пакет знаний с прошивкой

Следуйте этому красивому руководству на YouTube, опубликованному Крисом Кноровски, или выполните следующие простые шаги.

     Загрузите пакет знаний из аналитического инструмента SesniML.
     Скопируйте весь qf_ssi_ai_app как qf_ssi_ai_myapp (не хотите портить существующее приложение)
     Зайдите в папку qf_ssi_ai_myapp и удалите папку knowledgepack
     Разархивируйте загруженный КП, и вы увидите папку с именем knowledgepack_project. Скопируйте эту папку в qf_ssi_ai_myapp и переименуйте в knowledgepack
     Откройте файл sensor_ssss.h и установите SENSOR_SSSS_RECOG_ENABLED на 1 и SENSOR_SSSS_LIVESTREAM_ENABLED на 0
     Удалить выходную папку из qf_ssi_ai_myapp
     Скомпилируйте программу с помощью команды make
     Это сгенерирует файл output / bin / qf_ssi_ai_myapp.bin
     Прошить файл, и все готово!

Поиск проблемы

Если вы видите `dcl_commands.h: Нет такого файла или каталога` при компиляции библиотеки KP, вы находитесь на той же странице, что и я. Вам необходимо удалить этот заголовочный файл и включить «sensor_ssss.h» в файл sml_recognition_run.c. Методы sml_recognition_run_batch и sml_recognition_run_single могут иметь пустую реализацию. Вам нужно предоставить реализацию. Раздел кода оформления заказа для справки. Оформить заказ по ссылке ниже для получения дополнительной информации

https://sensiml.com/documentation/knowledge-packs/building-a-knowledge-pack-library.html

После компиляции и прошивки бункера на плату QF вы можете подключиться к приложению шлюза SensiML для проверки распознавания.

Отправить данные в сеть Helium

Helium - первая в мире одноранговая беспроводная сеть, которая обеспечивает безопасный и экономичный способ для маломощных устройств Интернета вещей отправлять данные в Интернет и из Интернета. Сеть позволяет компаниям сосредоточиться на приложениях и сценариях использования, не беспокоясь о тарифных планах сотовой связи для устройств или управлении сетевой инфраструктурой. Чтобы быстро сравнить стоимость, возьмем пример.

Отправка GPS-координат каждую минуту обойдется вам всего в 43 цента в месяц! Да, всего 43 цента по сравнению с 5 долларами США при использовании обычного GSM.

Я использовал маломощный Heltec Wireless Stick Life в качестве узла LoRa, который отправляет данные в гелиевую сеть каждые 2 минуты. См. Раздел кода ниже для эскиза Arduino. Также ознакомьтесь с моим проектом для получения дополнительной информации о том, как начать работу с гелиевой сетью.

Интегрируйте гелий с убидотами

Приятно видеть данные, поступающие на консоль Helium, но что бы вы с этим сделали? Вам нужна какая-то панель инструментов для визуализации данных и прогнозов. Я решил использовать Ubidots STEM, который является бесплатным и самым элегантным решением для приборной панели, с которым я когда-либо сталкивался.

Отправка данных с консоли Helium в Ubidots очень проста и понятна. Следуйте этому руководству.

Когда-то важно расшифровать сообщение перед отправкой в Ubidots. Я создал функцию декодера в консоли гелия для извлечения данных из массива байтов и преобразования в формат JSON.

function Decoder(bytes, port) {
var clas =  bytes[0] | bytes[1] << 8;
var lat = ( bytes[2] | bytes[3] << 8 | bytes[4] << 16 | (bytes[4] & 0x80 ? 0xFF << 24 : 0)) / 10000;
var lon = ( bytes[5] | bytes[6] << 8 | bytes[7] << 16 | (bytes[7] & 0x80 ? 0xFF << 24 : 0)) / 10000;
var temperature =  (bytes[8] | bytes[9] << 8);
var moisture = bytes[10] | bytes[11] << 8;
var pressure = bytes[12] | bytes[13] << 8;
var gas = bytes[14] | bytes[15] << 8;
var bat = (bytes[16] | bytes[17] << 8)/1000;
bat = bat * 2.3857143;
var decoded = {
clas: 0,
temperature: temperature,
moisture: moisture,
gas: gas,
bat:bat,
position:{
latitude: lat,
longitude: lon

}
};
return decoded;
}

Визуализировать данные на панели управления Ubidots - это хорошо. Но кто будет постоянно смотреть в экран и действовать, когда прогнозируется пожар? Вот и хорошие новости! Ubidots может отправлять оповещения в реальном времени по электронной почте, тексту или даже в резервной форме.

 Смотреть гармонию

 
 Demo
 
 
X-факторы

1. Низкое энергопотребление.

Узел Heltec Lora просыпается на 10 секунд каждые 2 минуты и питает датчики и плату QF. Это значительно экономит электроэнергию. Используя аккумулятор LiPo емкостью 5000 мА, он может проработать устройство в течение нескольких дней.
 
 2. Солнечная энергия


Наряду с низким энергопотреблением, LiPo аккумулятор заряжается солнечной энергией в дневное время, что позволяет устройству работать в течение очень длительного периода времени без замены аккумулятора или подключения к розетке.
 
 3. Нет сотовой связи / Wi-Fi

Нет необходимости в подключении к сотовой сети или Wi-Fi, что значительно снизило стоимость передачи данных. Это устройство использует протокол LoRaWan для отправки данных в Helium Network.
 
Перевод:
 https://www.hackster.io/mithun-das/protect-peatlands-for-people-and-planet-with-help-of-sensiml-af2d49?fbclid=IwAR2m7nd2FlJ2Mlb3O44m65kfpL2BLuCk_JHcjSQBNFpCrXlz-w4oPokcIrI
 

пятница, 14 мая 2021 г.

Создание приложения TinyML с помощью TF Micro и SensiML.

Создание приложения TinyML с помощью TF Micro и SensiML.

Общим фактором для всех этих приложений является низкая стоимость и энергопотребление оборудования, на котором они работают. Конечно, мы можем обнаруживать звуковые и визуальные слова пробуждения или анализировать данные датчиков для профилактического обслуживания настольного компьютера. Но для того, чтобы многие из этих приложений были жизнеспособными, оборудование должно быть недорогим и энергоэффективным (чтобы оно могло работать от батарей в течение длительного времени). 

 К счастью, оборудование сейчас приближается к тому моменту, когда аналитика в реальном времени становится возможной. Безумно думать об этом, но процессор Arm Cortex-M4 может выполнять больше БПФ в секунду, чем процессор Pentium 4, при этом потребляя на порядки меньше энергии. Аналогичный выигрыш в мощности / производительности был достигнут в датчиках и беспроводной связи. TinyML позволяет нам использовать преимущества этих достижений в области оборудования для создания всевозможных новых приложений, которые раньше были просто невозможны. 

В SensiML наша цель - дать разработчикам возможность быстро добавлять искусственный интеллект к своим собственным периферийным устройствам, позволяя их приложениям автономно преобразовывать необработанные данные датчиков в содержательную информацию. Мы извлекли годы уроков, извлеченных из создания продуктов, основанных на машинном обучении, оптимизированном для периферийных устройств, и объединили эти знания в единую платформу, SensiML Analytics Toolkit, которая обеспечивает платформу сквозной разработки, охватывающую сбор данных, маркировку, разработку алгоритмов и т. Д. генерация прошивки и тестирование.

 Итак, что нужно для создания приложения TinyML?

 Создание приложения TinyML затрагивает набор навыков, начиная от аппаратной инженерии, встроенного программирования, разработки программного обеспечения, машинного обучения, науки о данных и знания предметной области о приложении, которое вы создаете. Шаги, необходимые для создания приложения, можно разбить на четыре части:

     Сбор и аннотирование данных
     Применение предварительной обработки сигнала
     Обучение алгоритму классификации
     Создание прошивки, оптимизированной под бюджет ресурсов периферийного устройства.

Это руководство проведет вас через все этапы, и к концу вы создадите оптимизированное для ребер приложение TinyML для Arduino Nano 33 BLE Sense, которое способно распознавать различные боксерские удары в реальном времени с помощью датчика гироскопа и акселерометра. данные от бортового датчика IMU.

Что вам нужно для начала

Мы будем использовать SensiML Analytics Toolkit для сбора и аннотирования данных датчиков, создания конвейера предварительной обработки датчиков и создания микропрограмм. Мы будем использовать TensorFlow для обучения нашей модели машинного обучения и TensorFlow Lite Micro для логических выводов. Перед тем, как начать, мы рекомендуем подписаться на SensiML Community Edition, чтобы получить доступ к SensiML Analytics Toolkit.


Программное обеспечение

     Мы будем использовать SensiML Open Gateway, приложение Python с открытым исходным кодом для потоковой передачи данных с пограничных устройств.
     Мы будем использовать лабораторию захвата данных SensiML (Windows 10) для записи и маркировки данных датчика.
     Мы будем использовать Google Colab для обучения нашей модели с помощью TensorFlow Lite для микроконтроллеров.
     Мы будем использовать SensiML Analytics Studio для автономной проверки и генерации кода прошивки.
     Мы будем использовать Visual Studio Code с расширением Platform IO для прошивки прошивки.

Аппаратное обеспечение

    Arduino Nano 33 BLE Sense
    Надстройка для литий-ионного рюкзака Adafruit (необязательно)
    Литий-ионный полимерный аккумулятор (3,7 В 100 мАч)
    Чехол Zebra Byte
    Перчатка и двусторонняя лента

Arduino Nano 33 BLE Sense имеет микроконтроллер Arm Cortex-M4, работающий на частоте 64 МГц, с 1 МБ флэш-памяти и 256 КБ ОЗУ. Если вы привыкли работать с облаком / мобильными устройствами, это может показаться крошечным, но многие приложения могут работать в такой среде с ограниченными ресурсами.

Nano 33 BLE Sense также имеет множество встроенных датчиков, которые можно использовать в ваших приложениях TinyML. В этом уроке мы используем датчик движения, который представляет собой 9-осевой IMU (акселерометр, гироскоп, магнитометр).

Для беспроводного питания мы использовали литий-ионный аккумулятор Adafruit. Если у вас нет аккумуляторной батареи, вы все равно можете пройти через это руководство, используя подходящий длинный кабель micro USB для питания платы. Хотя собирать данные о жестах не так весело, когда вы подключены к сети. На изображениях ниже показано подключение аккумулятора к Nano 33 BLE Sense.

Создание вашего набора данных

Для каждого проекта машинного обучения качество конечного продукта зависит от качества вашего набора данных. Данные временного ряда, в отличие от изображения и звука, обычно уникальны для каждого приложения. Из-за этого вам часто нужно собирать и аннотировать свои наборы данных. В следующей части этого руководства вы узнаете, как подключиться к Nano 33 BLE Sense для беспроводной потоковой передачи данных через BLE, а также пометить данные, чтобы их можно было использовать для обучения модели TensorFlow.

Для этого проекта мы собираемся собрать данные для 5 различных жестов, а также некоторые данные для отрицательных случаев, которые мы обозначим как «Неизвестно». 5 жестов бокса, для которых мы собираемся собирать данные: Jab, Overhand, Cross, Hook и Uppercut.


Мы также будем собирать данные как о правой, так и о левой перчатке. Дает нам в общей сложности 10 различных классов. Чтобы упростить задачу, мы построим две отдельные модели: одну для правой перчатки, а другую - для левой. В этом уроке основное внимание будет уделено левой перчатке.


Передача данных датчика с Nano 33 через BLE

Первая задача проекта TinyML часто состоит в том, чтобы выяснить, как получить данные с датчика. В зависимости от ваших потребностей вы можете выбрать Wi-Fi, BLE, последовательный или LoRaWAN. В качестве альтернативы вы можете найти хранение данных на внутренней SD-карте и последующую передачу файлов - лучший способ сбора данных. В этом руководстве мы воспользуемся встроенным радиомодулем BLE для потоковой передачи данных датчиков от Nano 33 BLE Sense.

Мы собираемся использовать открытый шлюз SensiML, работающий на нашем компьютере, для получения данных датчиков. Чтобы загрузить и запустить шлюз, откройте терминал и выполните следующие команды:

git clone https://github.com/sensiml/open-gateway

cd open-gateway
pip3 install -r requirements.txt
python3 app.py
 

 Теперь шлюз должен работать на вашем компьютере.

Затем нам нужно подключить сервер шлюза к Nano 33 BLE Sense. Убедитесь, что вы установили прошивку для сбора данных на свой Nano 33. Эта прошивка реализует спецификацию Simple Streaming Interface, которая создает две темы, используемые для потоковой передачи данных. Тема / config возвращает JSON с описанием данных датчика, а тема / stream передает необработанные данные датчика в виде байтового массива значений Int16.

Чтобы настроить шлюз для подключения к датчику:

     Перейдите на адрес шлюза в вашем браузере (по умолчанию localhost: 5555)
     Щелкните вкладку "Главная"
     Установить режим устройства: сбор данных
     Установить тип подключения: BLE
     Нажмите кнопку «Сканировать» и выберите устройство с именем Nano 33 DCL.
     Нажмите кнопку Подключиться к устройству.

 

Шлюз получит конфигурацию с вашего устройства и будет готов начать пересылку данных датчика. Вы можете убедиться, что он работает, перейдя на вкладку Test Stream и нажав кнопку Start Stream.

Настройка проекта лаборатории сбора данных

Теперь, когда мы можем передавать данные в потоковом режиме, следующим шагом будет запись и маркировка жестов бокса. Для этого мы будем использовать лабораторию сбора данных SensiML. Если вы еще этого не сделали, загрузите и установите Data Capture Lab для записи данных датчиков.

Для начала мы создали шаблонный проект. Проект предварительно заполнен метками жестов и информацией метаданных, а также некоторыми предварительно записанными файлами примеров жестов. Чтобы добавить этот проект в свой аккаунт:

     Загрузите и распакуйте демонстрационный проект Boxing Glove Gestures
     Откройте лабораторию сбора данных
     Нажмите Загрузить проект.
     Нажмите Обзор, чтобы открыть окно проводника файлов.
     Перейдите в папку демонстрации жестов боксерских перчаток, которую вы только что разархивировали, и выберите файл «Жесты боксерских перчаток Demo.dclproj».
     Нажмите Загрузить

Подключение к шлюзу

После загрузки проекта вы можете начать сбор данных с датчиков. В этом руководстве мы будем передавать данные в лабораторию сбора данных со шлюза через TCP / IP. Чтобы подключиться к Nano 33 BLE Sense из лаборатории сбора данных через шлюз:

     Открыть демонстрацию жестов боксерских перчаток Project
     Нажмите Switch Modes -> Capture Mode.
     Выберите способ подключения: Wi-Fi
     Нажмите кнопку "Найти устройства".
     Введите IP-адрес вашего шлюза и порт, на котором работает сервер (обычно 127.0.0.1:5555)
     Нажмите "Добавить устройство".
     Выберите только что добавленное устройство
     Нажмите кнопку Подключить


Вы должны увидеть поток данных датчика на экране. Если у вас возникли проблемы с этим шагом, см. Полную документацию здесь для устранения неполадок.


Сбор данных датчика жестов бокса

Лаборатория сбора данных также может воспроизводить видео, записанные вместе с данными вашего датчика. Если вы хотите снимать видео и синхронизировать их с данными датчика, см. Документацию здесь. Это может быть чрезвычайно полезно на этапе аннотации, чтобы помочь интерпретировать то, что происходит в заданный момент на осциллограммах датчика временного ряда.

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

    Выберите «Jab» в раскрывающемся списке «Ярлык» на экране «Свойства захвата». (это будет имя файла)
    Выберите метаданные, которые отражают контекст (предмет, перчатка, опыт и т. Д.)
    Затем нажмите кнопку «Начать запись», чтобы начать запись данных датчика.
    Выполните несколько жестов «джеба».
    По завершении нажмите кнопку «Остановить запись».

После того, как вы нажмете кнопку «Остановить запись», захваченные данные будут сохранены локально и синхронизированы с облачным проектом. Вы можете просмотреть файл, перейдя в Project Explorer и дважды щелкнув только что созданный файл.
GIF показывает мужской бокс, пока программа собирает данные


В следующем видео рассказывается о сборе данных с датчиков.


Аннотирование данных датчика

Чтобы классифицировать данные датчиков в режиме реального времени, вам необходимо решить, сколько и какую часть потока датчиков следует передать классификатору. На пограничных устройствах это становится еще сложнее, так как вы ограничены небольшим буфером данных из-за ограниченной оперативной памяти. Определение правильного алгоритма сегментации для приложения может сэкономить заряд батареи за счет ограничения количества выполняемых классификаций, а также повышения точности путем определения начала и конца жеста.

Алгоритмы сегментации работают, принимая входные данные от датчика и буферизуя данные, пока они не определят, что новый сегмент был найден. В этот момент они передают буфер данных результату конвейера. Простейший алгоритм сегментации - это скользящее окно, которое непрерывно передает заданный фрагмент данных классификатору. Однако у скользящего окна для распознавания дискретных жестов есть много недостатков, таких как выполнение классификации при отсутствии событий. Это расходует заряд батареи и рискует разбить события на несколько окон, что может снизить точность.
Сегментирование в лаборатории сбора данных

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

Лаборатория сбора данных предлагает два метода маркировки событий: ручной и автоматический. В ручном режиме вы можете вручную перетащить сегмент на график, чтобы идентифицировать событие в данных вашего датчика. В автоматическом режиме используется алгоритм сегментации для автоматического обнаружения событий на основе настраиваемых параметров. В этом руководстве мы собираемся использовать алгоритм сегментации в автоматическом режиме. Алгоритмы сегментации, которые мы используем для определения событий, также будут скомпилированы как часть прошивки, так что модели на устройстве будут получать те же сегменты данных, с которыми она была обучена.

Мы уже создали алгоритм сегментации для этого проекта на основе набора данных, который мы уже собрали. Чтобы выполнить автоматическое обнаружение событий для вновь записанного файла данных:

     Выберите файл в Project Explorer
     Нажмите кнопку "Определить сегменты".
     Алгоритм сегментации будет запущен для захвата, и найденные им сегменты будут добавлены в файл.

Примечание. Если события не соответствуют реальным сегментам в вашем файле, вам может потребоваться настроить параметры алгоритма сегментации.
Маркировка событий в лаборатории сбора данных

Имейте в виду, что автоматическое обнаружение событий определяет только то, что событие произошло, но не определяет, какой тип события произошел. Для каждого обнаруженного события вам нужно будет присвоить ему метку. Для этого:

     Выберите один или несколько сегментов на графике
     Нажмите кнопку Изменить или (Ctrl + E)
     Укажите, какая метка связана с этим событием
     Повторите шаги 1-3 для всех сегментов захвата.
     Нажмите кнопку "Сохранить".


Построение модели TinyML

Мы собираемся использовать Google Colab для обучения нашей модели машинного обучения, используя данные, которые мы собрали из Nano 33 BLE Sense в предыдущем разделе. Colab предоставляет блокнот Jupyter, который позволяет нам запускать обучение TensorFlow в веб-браузере. Откройте блокнот Google Colab и следуйте инструкциям, чтобы обучить свою модель.
Автономная проверка модели

После сохранения модели перейдите в Analytic Studio, чтобы выполнить автономную проверку. Чтобы проверить модель на любом из файлов захваченных данных

     Откройте демонстрационный проект «Жесты боксерских перчаток» на вкладке «Сводка».

Перейдите на вкладку Test Model
Выберите свою модель из раскрывающегося списка "Название модели".
Выберите один или несколько файлов захвата, щелкнув по ним
Нажмите кнопку «Вычислить точность», чтобы классифицировать снимки с использованием выбранной модели.


Когда вы нажимаете кнопку «Вычислить точность», алгоритм сегментации, шаги предварительной обработки и модель TensorFlow компилируются в единый пакет знаний. Затем результаты классификации и точность для каждого из выбранных вами захватов вычисляются с использованием скомпилированного пакета знаний. Нажмите кнопку «Результаты» для отдельного захвата, чтобы увидеть классификации для всех обнаруженных событий и их сравнение с метками наземной достоверности.

Развертывание и тестирование Nano 33 BLE Sense
Скачивание модели в виде прошивки

Теперь, когда вы проверили модель в автономном режиме, пора посмотреть, как она работает на краю. Для этого мы загружаем и прошиваем модель в Nano 33 BLE Sense.

     Перейдите на вкладку Download Model в Analytics Studio.
     Выберите HW Platform: Arduino CortexM4
     Выберите Формат: Библиотека
     Нажмите кнопку "Загрузить".
     Скомпилированный файл библиотеки должен загрузиться на ваш компьютер.

Прошивка прошивки

После загрузки библиотеки мы соберем и загрузим прошивку в Nano 33 BLE Sense. Для этого шага вам понадобится прошивка Nano 33 Knowledge Pack. Для компиляции прошивки мы используем код Visual Studio с плагином Platform IO. Чтобы скомпилировать вашу модель и прошить Nano 33 BLE Sense с помощью этой прошивки:

     Откройте свой терминал и запустите

git clone https://github.com/sensiml/nano33_knowledge_pack/

 

Разархивируйте загруженный пакет знаний.
В папке вы найдете следующие каталоги:

knowledgepack_project /

libsensiml /
Скопируйте файлы из libsensiml в nano33_knowledge_pack / lib / sensiml. Вы перезапишете файлы, включенные в репозиторий.
Скопируйте файлы из knowledgepack_project в nano33_knowledge_pack / src /

Перейдите на вкладку расширения ввода-вывода платформы в VS Code
Подключите Nano 33 BLE Sense к компьютеру с помощью кабеля micro USB.
Щелкните Загрузить и контролировать под nano33ble_with_tensorflow на вкладке PlatformI / O.

Когда устройство перезагрузится, оно загрузится, и ваша модель будет работать автоматически. Видео ниже демонстрирует эти шаги.


Просмотр результатов классификации

Чтобы увидеть результаты классификации в режиме реального времени, подключитесь к устройству через BLE с помощью Android TestApp или SensiML Open Gateway. При поиске устройств устройство будет отображаться с именем Nano33 SensiML KP. Мы обучили две модели, одну для левой перчатки и одну для правой перчатки. Вы можете увидеть демонстрацию работы обеих моделей одновременно в следующем видео.


Заключение

Мы надеемся, что этот блог предоставил вам инструменты, необходимые для начала создания сквозного приложения TinyML с использованием TensorFlow Lite для микроконтроллеров и набора инструментов SensiML Analytics. Для получения дополнительных руководств и примеров приложений TinyML ознакомьтесь с примерами приложений в нашей документации. Следуйте за нами в LinkedIn или свяжитесь с нами, нам нравится слышать обо всех удивительных приложениях TinyML, над которыми работает сообщество!


https://blog.tensorflow.org/2021/05/building-tinyml-application-with-tf-micro-and-sensiml.html

суббота, 23 мая 2020 г.

перевод источник

Информационные Технологии в сельском хозяйстве в горах Менгдин для мониторинга ключевых экологических данных с помощью SenseCAP LoRaWAN для повышения эффективности и лояльности клиентов

 

Продукты SenseCAP LoRaWAN, развернутые на высокогорных чайных плантациях в провинции Сычуань, помогают производителям чая повысить эффективность и лояльность клиентов.

 

В то время как выращивание чая имеет давнюю историю в Китае, новое поколение фермеров считает, что трудным является сохранение своего семейного наследия традиционными способами. Дэн - тысячелетний фермер, который завладел чайной плантацией его семьи площадью 3,3 га, расположенной на высоте 1100 метров над уровнем моря в горе Менгдин недалеко от города Яань в провинции Сычуань на юго-западе Китая.

Дэн столкнулся со следующими проблемами:
  • низкая плотность посадки, высокая стоимость управления
  • неравномерное почкование с низкой урожайностью
  • трудности с демонстрацией органической среды чая в высоких горах, что затрудняет получение хорошей цены или признания за его бренд YI YE SHENG.
 Чтобы решить эти проблемы, Дэн был готов использовать интеллектуальные технологии ведения сельского хозяйства. Он сразу же стал идеальным кандидатом, когда мы начали поиск пилотной фермы для тестирования SenseCAP от Seeed, решения для беспроводной сенсорной сети IoT. Интеллектуальное сельскохозяйственное решение, которое остроумно называют «IoTea» для этого пилотного чайного проекта, было внедрено на плантации Дэна в высокогорной горе Менгдин в 2018 году.

The IoT application consists of LoRa gateways and sensor nodes:

 С помощью решения, развернутого на чайной плантации, Дэн может отслеживать следующие экологические данные, которые имеют решающее значение для качества чая. Среди этих данных влажность воздуха, температура и атмосферное давление являются основными параметрами, подтверждающими высокогорную среду чая.

 (IoTea Real-time Data)

  • Температура воздуха
  • Влажность воздуха
  • Барометрическое давление
  • Интенсивность света
  • СО2
  • Влажность почвы
  • Температура почвы


 


Собранные данные об окружающей среде позволяют Денгу понять, как управлять фермой более эффективно и с меньшими затратами на рабочую силу.

Что еще более важно, исторические данные в реальном времени о ферме, из которой производится их чай, предоставляются конечным клиентам, которые просто сканируют QR-код на упаковке чая, чтобы получить доступ к веб-странице, содержащей данные в виде графиков. Таким образом, среда для выращивания чая прослеживается потребителями, доказывая, что зеленый чай, которым они наслаждаются, на самом деле из высоких гор.

Таким образом, Дэн может постепенно создавать свой бренд с постоянными клиентами и поставлять конечным пользователям напрямую по более выгодной цене, а не только продавать крупным чайным компаниям, которые доминируют на рынке.

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

 О высокогорном чае

Высокогорный чай относится к чаям, выращенным в высоких горах, которые находятся выше 1000 метров над уровнем моря. Из-за большой разницы температур между днем и ночью, высокой влажности воздуха и густого тумана чаи, выращиваемые в этой среде, обычно содержат больше хлорофилла и аминокислот в чайных листьях, которые отвечают за качество чая, включая его цвет и цвет. вкус. Высокогорные чайные листья имеют толщину текстуры, свежий зеленый цвет и плотность в трихомах, что приводит к богатым молочным вкусам и приятным цветочным ароматам.

Партнеры: Йи Е Шенг





Обновление апреля 2020

Вот несколько фотографий, сделанных на чайной плантации в конце марта. И вы можете видеть, что SenseCAP, выдерживающий непогоду, все еще работает как шарм после того, как его развернули на чайной плантации г-на Дэна на горе Менгдин (1000 метров над уровнем моря) в течение почти 2 лет!






Начнем работу с FPGA программированием на MATRIX устройстве.

Требуемое железо

Перед началом нам понадобится
  • Raspberry Pi 3 (рекомендуется) or Pi 3 Model B+ (поддерживается).
  • MATRIX Voice or MATRIX Creator - Оба устройства содержат Spartan 6 FPGA - Купить MATRIX Voice или MATRIX Creator.
  • Micro-USB power adapter for Raspberry Pi.
  • Micro-SD Card (Minimum 8 GB)
  • Micro-USB Cable
  • PersonalComputer to SSH into your Raspberry Pi.
  • Internet connection (Ethernet or WiFi)

Начинаем

Первый шагом надо установить Xilinx ISE Design Suit который поможет скомпилировать Verilog code для Sartan-6.  Есть инструкции для Linux, Windows и Mac.

Для Linux

Кликнуть здесь чтобы загрузить Xilinx вебсайт и скачать полную ISE WebPack установщик для Linux. 

....


sudo tar -xvf Xilinx_ISE_DS_Lin_14.7_1015_1.tar
 cd Xilinx_ISE_DS_Lin_14.7_1015_1
sudo ./xsetup

Изменить, Компилировать и загрузка Verilog файлов MATRIX Creator

Склонировать MATRIX Creator FPGA код из репозитория.

Чтобы иметь возможность изменить MATRIX Creator  FPGA код, наберите следующие команды в вашем терминале на компьютере

git clone https://github.com/matrix-io/matrix-creator-fpga.git 
Если Git не установлен на вашем компьютере установите его с помощью следующих команд:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
Вы можете перейти в matrix-creator-fpga > creator-core и редактировать Verilog файлы по желанию. Простой пример с MATRIX Voice будет показан ниже.

Компиляция и прошивка MATRIX Creator FPGA код

 Чтобы компилировать модифицированный FPGA код, открыть ваш terminal, перейти в matrix-creator-fpga > creator-core директорию и выполнить команду ниже. Убедитесь что Xilinx ISE запущен и выполняется в фоне.

Для Linux, вы выполняете settings64.sh файл каждый раз перед компиляцией и вставкой следующих команд в ваш терминал. Иначе, вы можете вставить строку в ваш ~/.bashrc  файл и он будет выполнятся каждый раз вы запускаете терминальную сессию, но это может создать проблемы с некоторыми программами когда вы пробуете выполнить их.

source /opt/Xilinx/14.7/ISE_DS/settings64.sh
make clean
make
Это создаст system.bit файл.

Прошить system.bit файл в ваш FPGA следующие инструкции в документации здесь.


Общие комментарии.


Вы можете использовать текстовый редактор по вашему выбору для редактирования Verilog файлов. На наш взгляд лутше использовать Visual Studio Code в котором вы можете устанавливать расширения для выделения цветом кода вашего файла.

Чтоб загрузить system.bit файл в ваш Raspberry Pi:

Для Mac и Windows вы можете использовать Cyberduck к SFTP в вашем Raspberry Pi и загрузить system.bit файл.

Для Linux вы можете примонтировать ваш Raspberry Pi как сетевой диск используя SFTP.

Помните что вы должны загрузить system.bit  файл в /home/pi директорию и потом переместить его в соответвующее место для прошивки через терминал используя sudo команду.