Научите свой BME688 чувствовать запах

Полное руководство по обучению датчика BME688

Привет, друзья-энтузиасты техники! Компания Bosch выпустила BME688, новый удивительный датчик, который может различать до четырех различных запахов. Это руководство объяснит все детали обучения вашего BME688 различать запахи. Не волнуйтесь, если вы новичок в искусственном интеллекте или Python. Это руководство подходит для начинающих.

Итак, давайте сразу перейдем к делу.

Пререквизиты

Шаги

  1. Выберите свое приложение
  2. Запись данных
  3. Обучение алгоритма
  4. Обнаружение запахов

1. Выберите приложение

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

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

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

После того как вы определились с выбором, пришло время создать новый проект AI Studio. Откройте AI Studio и нажмите кнопку Создайте проект ... Кнопка. Нажмите Настройка платы BME если вы хотите записать данные с определенной конфигурацией.

2. Запись данных

Этот процесс варьируется в зависимости от того, используете ли вы BME688 Breakout Board или Bosch BME688 Комплект для разработчиков датчиков газа (далее "челночная плата"). Плата-шаттл проще в использовании и позволяет собирать данные в восемь раз быстрее, чем плата-разветвитель, но она намного дороже. Я подробно объясню оба метода в следующих разделах.

Примечание: Датчику BME688 требуется некоторое время для адаптации к окружающей среде и сгорания. Перед записью данных тренировки обязательно оставьте его работать не менее чем на 24 часа.

Запись данных с помощью челночной платы BME688

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

Если вы записываете много образцов за один сеанс, возможно, вы захотите записать последовательность образцов, чтобы избежать путаницы. Вы всегда можете обрезать данные в AI Studio позже, поэтому не бойтесь записывать много данных.

Запись данных с помощью платы BME688 Breakout Board

Если вы используете BME688 Breakout Board Я все еще советую вам посмотреть Учебное пособие Bosch поскольку он предоставляет полезную информацию о процессе обучения в AI Studio. Но для записи данных обучения необходимо выполнить некоторые дополнительные действия.

Мы в pi3g создали библиотеку python для датчиков BME68X, которую вы можете обновить с помощью Boschs BSEC 2.0. Поэтому будет полезно, если у вас есть некоторый опыт работы с python, но это не обязательно.

Примечание: Смотрите инструкции по установке и использованию непосредственно на нашем GitHub.

Начните с клонирования нашего bme68x-python-library. Это можно сделать, выполнив следующую команду в терминале bash.

git clone https://github.com/pi3g/bme68x-python-library.git

Теперь вам нужно собрать и установить python-модуль bme68x. ЧЭС 2.0 является проприетарным программным обеспечением, поэтому вам необходимо загрузить версию 2.0.6.1 непосредственно с сайта Bosch и согласиться с их лицензией. Распакуйте ее в папку bme68x-python-library и выполните следующие команды.

cd path/to/bme68x-python-library
sudo python3 setup.py install

Теперь вы можете запустить bmerawdata.py сценарий с настройками по умолчанию.

cd tools/bmerawdata
python3 bmerawdata.py

Сценарий будет отображать записанные данные после каждого измерения. Завершите сценарий и сохраните данные в файле, совместимом с AI Studio, нажав кнопку Ctrl+c.

3. Обучить алгоритм

Импортные данные

Независимо от того, используете ли вы BME688 Breakout Board или Bosch BME688 Комплект для разработчиков датчиков газаСледующим шагом будет импорт данных в AI Studio. Нажмите кнопку Импортные данные Кнопка и выберите файл .bmerawdata.

Диалоговое окно Импорт данных

Вашей сессии необходимо осмысленное имя. Уместно выбрать перечисление образцов.

Вы можете увидеть график ваших данных, например, для канала данных о газе, как показано ниже.

Канал передачи данных о газе

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

Примечание: В большинстве случаев для обучения следует использовать только газовый канал данных.

Теперь нам нужно пометить наши образцы. Если вы записывали данные с помощью платы шаттла и использовали бортовые кнопки для маркировки образцов, вы уже сможете увидеть шаблон для каждого из них. Вы также можете обрезать образцы и создать новые (например, если вы записали несколько образцов с помощью нашей платы).

Этикетки образцов и временные штампы

После завершения редактирования сеанса нажмите кнопку Импортные данные в правом нижнем углу диалога.

После того как вы импортировали и промаркировали все образцы, пришло время создать и обучить алгоритм.

Создайте алгоритм

Выберите Мои алгоритмы вверху и нажмите на + Новый алгоритм . Дайте своему алгоритму имя, которое отражает то, что он должен делать, в моем случае AirMeatCheese. Затем добавьте классы. Я назвал свои классы NormalAir, Meat и Cheese. Выберите, какие образцы принадлежат к какому классу, и выберите цвет для каждого класса.

Назовите свой алгоритм
Назовите свой алгоритм
Редактируйте свои классы
Редактируйте свои классы

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

Вид на класс "Мясо
Вид на класс "Мясо

Ниже классов вы можете увидеть некоторые дополнительные данные об алгоритме.

Дополнительные данные алгоритма
Дополнительные данные алгоритма

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

Примечание: Обязательно ознакомьтесь с документацией BME688 AI Studio для получения дополнительной информации.

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

Обучение и экспорт

Обучите свой алгоритм
Обучите свой алгоритм

Здесь вы можете выбрать метод обучения, максимальное количество раундов и разбиение данных. Если вы новичок в нейронных сетях, вам лучше оставить все настройки по умолчанию. Тем не менее, я постараюсь кратко объяснить каждую из этих настроек.

Единственным методом обучения, доступным на момент написания этой статьи, является оптимизатор ADAM. Это особый способ поиска минимума в функции ошибки (меньшая ошибка означает более точные прогнозы). Вы можете выбрать различные размеры партии для повышения скорости и стабильности обучения.

Увеличение максимального числа раундов обучения - еще один способ повысить производительность алгоритма. За каждый раунд (часто называемый эпохой) AI Studio пропускает через нейронную сеть весь набор обучающих данных. Это означает, что большее количество максимальных раундов увеличит время, необходимое для обучения алгоритма. Чаще всего AI Studio определяет, достигнут ли минимум, и завершает обучение до достижения максимального числа раундов. Это сокращает время обучения и позволяет избежать перебора.

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

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

Нажмите Обучение нейронной сети чтобы начать обучение. Вы увидите расчетное оставшееся время тренировки и линейный график точности и потерь.

Ход обучения
Ход обучения

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

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

Матрица запутанности и результаты обучения
Матрица запутанности и результаты обучения

Вы редко сможете добиться точности более 90%, поэтому, если точность выше 80%, вам следует экспортировать алгоритм для его проверки. Мы будем обнаруживать запахи, используя наш PiCockpit веб-интерфейс. Убедитесь, что экспортирован алгоритм для BSEC версии 2.0.6.1, поскольку PiCockpit пока поддерживает только эту версию.

Примечание: В большинстве случаев обучение будет завершено до истечения расчетного срока.

4. Обнаружение запахов

Для обнаружения запахов просто установите PiCockpit клиент и подключите его к своей учетной записи. Если у вас нет PiCockpit пока просто зарегистрируйтесь бесплатно и следуйте приведенным там инструкциям. Наше приложение Digital Nose App позволяет загружать обученный алгоритм и просматривать прогнозы в режиме реального времени через веб-интерфейс. Проверьте Цифровая носовая помощь для получения полного объяснения, как пользоваться приложением.

Другим способом обнаружения запахов является использование нашего Расширение BME68X Python. Это требует некоторого кодирования на языке python, но обеспечивает больший контроль и позволяет создавать собственные приложения с использованием вашего алгоритма. См. README.md, the Документация.md и примеры папку, чтобы узнать, как установить и использовать расширение.

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

Свяжитесь со мной по адресу nathan@pi3g.com

8 комментариев

  1. [...] Дальнейшее чтение [...]

  2. Siroj42 Март 30, 2022 в 8:14 дп

    Для меня обучение алгоритма не работает. Вместо этого программа выдает ошибку "Алгоритм не удалось обучить. Отсутствуют либо обучающие, либо тестовые данные". Однако я собрал около одного часа данных для каждого из моих классов с помощью платы BME688 Breakout Board. Есть ли у вас идеи, что я могу делать неправильно?

    • Nathan Busler Март 31, 2022 в 10:09 дп

      Похоже, что файл .bmerawdata может быть поврежден. Вы можете попробовать взглянуть на файл, чтобы увидеть, нет ли в нем плохих значений. Он имеет формат json

    • tomm Апрель 11, 2022 в 3:13 пп

      Вы нашли решение этой проблемы?

  3. Thomas Апрель 10, 2022 в 4:51 пп

    Привет, Натан
    Я также только что попробовал ваш код и получил ошибку samme при создании алгоритма.
    " Похоже, что отсутствуют либо обучающие, либо тестовые данные".

    возможно, в вашем коде есть какая-то проблема?

    • Nathan Busler Апрель 14, 2022 в 1:00 пп

      Привет, Томас
      Я пока не смог воссоздать ошибку.
      Какую версию AI Studio dp вы используете? Скрипт был протестирован с AI Studio версии 1.6.0

      • Thomas Апрель 14, 2022 в 9:11 пп

        Привет, Натан
        Я использовал новейшую версию (1.6.0), также я отправил вам письмо об этом, так что вы хотите, чтобы я отправил вам файлы примера?
        Пробовал много тестов, но каждый раз одна и та же ошибка 🙁

      • Thomas Апрель 17, 2022 в 6:28 пп

        да, я также использую 1.6.0, пожалуйста, проверьте эти файлы из коллекции данных один - дым, другой - нормальный воздух https://we.tl/t-PwfkYXjnGP

Комментировать