Запуск приложений компьютерного зрения (или приложений ИИ в целом) может создать нагрузку на пограничное устройство, особенно при объединении моделей. Использование радиатора в сочетании с вентилятором, вероятно, достаточно, чтобы предотвратить дросселирование устройства, но было бы полезно получить уведомление до того, как ваше устройство станет таким горячим. Предупреждение о потенциально небезопасной температуре позволяет вам остановить приложение до того, как устройство сгорит, и продолжить следить за температурой, давая вам возможность перезапустить программу, когда устройство достаточно остынет.
С этой целью мы создали служебный класс, который позволяет отслеживать и записывать показания температуры и предоставляет сводку собранных данных.
В этом руководстве используется Raspberry Pi 4 и пакет gpiozero, который по умолчанию установлен в образе ОС Raspbian. Подробнее об этом пакете смотрите по следующей ссылке.
Чтобы пройти обучение, у вас должны быть:
- Аккаунт AlwaysAI (бесплатно!)
- alwaysAI настроить на вашу машину (также бесплатно)
- Текстовый редактор, такой как sublime, или IDE, такая как PyCharm, или что-то еще, что вы предпочитаете кодировать.
Посетите блог alwaysAI, чтобы узнать больше о компьютерном зрении, разработке моделей, изменении моделей и многом другом.
Весь код из этого руководства доступен на GitHub.
Этот урок будет состоять из двух основных частей:
- Добавление требований GPIO Zero
- Инициализация трекера температуры в файле app.py
Начнем!
После того, как вы получите бесплатную учетную запись и настроите среду разработки, вам нужно будет загрузить все начальные приложения; сделайте это используя эту ссылку, прежде чем переходить к остальной части руководства.
Приложением, которое было изменено для этого руководства, было приложение «Детектор объектов», поэтому перейдите в папку начальных приложений, а затем в папку «realtime_object_detector».
- Добавление нулевых требований GPIO:
- Сначала добавьте в папку файл requirements.txt.
- Добавьте содержимое gpiozero в файл requirements.txt. Это будет установлено при развертывании вашего приложения. См. документацию alwaysAI для получения дополнительной информации о зависимостях.
ПРИМЕЧАНИЕ: если ваш Pi не подключен к Wi-Fi, он не сможет загрузить требования в файле requirements.txt
2. Обновление файла app.py для использования TemperatureTracker:
- Импортируйте код TemperatureTracker, добавив следующую строку в самый верх app.py:
from temperature_tracker import TemperatureTracker
- После операторов печати, описывающих модель, движок, ускоритель и метки, мы создадим экземпляр TemperatureTracker. Добавьте следующую строку кода:
temperature_tracker = TemperatureTracker()
- Теперь нам нужно отметить время начала записи данных о температуре. Внутри блока try/with, но перед циклом while, добавьте следующий код сразу после запуска экземпляра FPS:
temperature_tracker.start()
- Чтобы получить данные о температуре, вызовите метод update. Поместите следующий код внутрь цикла while:
temperature_tracker.update()
ПРИМЕЧАНИЕ. Я добавил пустую строку для удобства чтения после цикла «для предсказания в предсказаниях» и перед операторами температуры. Это можно сделать в любое время, когда вы хотите повысить читабельность вывода текста стримера с помощью ‘text.append(“”)’.
- Чтобы получить только текущие показания, а не изменять сохраненные данные, вы можете использовать метод «сейчас». Это вернет температуру и соответствующую метку времени. Сделайте это, добавив следующую строку сразу после вызова обновления, который вы добавили на предыдущем шаге:
now = temperature_tracker.now()
- Мы можем дополнить текст, отправленный стримеру, текущей температурой, а также проверить, была ли возвращенная температура безопасной (по крайней мере, для Raspberry Pi 4). Добавьте следующий код под изменениями, которые вы сделали на предыдущих двух шагах:
# log block showing current temperature text.append(“{:1.2f}C/{:1.2f}F at time {}\n”.format(now[0], ((now[0]*(9 / 5)) + 32),time.strftime(‘%Y-%m-%d %H:%M:%S’, now[1]))) # details whether the temperature is safe for a Raspberry Pi 4 if now[0] < temperature_tracker.MAX_TEMP_RASP4: text.append(“Temperature is safe”) else: text.append(“TEMPERATURE IS NO LONGER SAFE”)
ПРИМЕЧАНИЕ. Если вы не видите предупреждающее сообщение на стримере до остановки приложения, это означает, что лента браузера не обновлялась до остановки приложения. Вы по-прежнему будете видеть это предупреждающее сообщение на консоли после остановки программы.
- После вызова fps.update() добавьте следующую проверку:
if now[0] >= temperature_tracker.MAX_TEMP_RASP4: print(“Maximum safe temperature reached, stopping program”) break
- Наконец, в последнем блоке отметьте время, когда вы остановили трекер после остановки экземпляра FPS, добавив:
temperature_tracker.stop()
- Соберите и распечатайте сводные данные о температуре, добавив следующие строки непосредственно перед оператором печати «Окончание программы»:
summary = temperature_tracker.summary() print(summary)
Вот и все! Теперь вы можете создать и запустить свое приложение, чтобы увидеть его в действии. Возможно, вы захотите сначала настроить приложение, особенно если вы сменили пограничные устройства или создали новую папку с нуля. Вы можете сделать это с помощью следующей команды и ввести желаемый ввод конфигурации при появлении запроса:
aai app configure
Теперь, чтобы увидеть ваше приложение в действии, сначала создайте его, введя в командной строке:
aai app deploy
И как только сборка будет завершена, запустите приложение с помощью команды:
aai app start
Откройте в браузере адрес localhost:5000, чтобы увидеть приложение в действии, и посмотрите на консоль после закрытия программы, чтобы просмотреть сводку данных о температуре, как показано ниже.