1. Архитектура проекта и подготовка Raspberry Pi 4 и AI Camera
Архитектура проекта и подготовка Raspberry Pi 4 и AI Camera
Зачем нужна эта статья
Эта статья задаёт скелет всего курса: какую архитектуру проекта мы строим, какие роли у Raspberry Pi 4 и Raspberry Pi AI Camera, и как подготовить систему так, чтобы в следующих статьях вы без боли:> В рамках курса мы будем называть инференсом запуск уже обученной модели для получения предсказаний (например, координат рамок объектов и их классов).
Общая архитектура решения
В практических проектах на Raspberry Pi почти всегда есть две вычислительные зоны:Raspberry Pi 4 подходит для инференса лёгких моделей и для “склейки” системы (камера, логика, сеть, управление), но обучение YOLOv8 обычно выполняют на более мощной машине.
!Общая схема: обучение отдельно, применение на Raspberry Pi, два варианта инференса
Два сценария инференса: на Raspberry Pi или на AI Camera
Важно сразу выбрать, как вы планируете выполнять инференс (это влияет на зависимости и формат модели).Инференс на Raspberry Pi 4
Raspberry Pi получает кадры с камеры и запускает модель в Python.Плюсы:
Минусы:
Инференс на Raspberry Pi AI Camera
Часть вычислений выполняется на самой камере (в зависимости от возможностей конкретной модели/прошивки).Плюсы:
Минусы:
В этом курсе мы построим проект так, чтобы поддержать оба варианта: сначала поднимем базовый захват изображения и окружение на Raspberry Pi, затем добавим YOLOv8, а дальше перейдём к экспорту и запуску в выбранном режиме.
Минимальный состав оборудования
| Компонент | Зачем нужен | Примечания | |---|---|---| | Raspberry Pi 4 (желательно 4–8 GB) | управление камерой, инференс/логика, сеть | чем больше RAM, тем комфортнее разработка | | microSD (32–128 GB) | ОС, код, модели | лучше A1/A2, надёжный бренд | | Блок питания USB-C 5V 3A | стабильность под нагрузкой | нестабильное питание часто ломает всё | | Raspberry Pi AI Camera | источник изображения, возможный инференс на камере | подключение через CSI | | CSI-шлейф | соединение камеры и Raspberry Pi | подключать при выключенном питании | | Охлаждение (радиатор/вентилятор) | снижение троттлинга | важно при длительной нагрузке |Базовая структура проекта
С самого начала держите проект так, чтобы обучение, модели и код на Raspberry Pi не смешивались в одну папку.Рекомендуемая структура репозитория:
README.md — инструкции запускаrequirements.txt — Python-зависимости (если используете)src/ — основной код приложенияsrc/camera/ — захват кадров, работа с libcamerasrc/inference/ — обёртки инференса (YOLOv8 на Pi или результаты с AI Camera)src/logic/ — бизнес-логика (что делать при обнаружении объектов)models/ — модели для инференса (веса, экспортированные форматы)data/ — тестовые изображения/видео (не огромные датасеты)scripts/ — утилиты (конвертация, проверка камеры, замеры FPS)> Бизнес-логика — это код, который принимает решение: например, “если обнаружен человек в зоне — включить реле на GPIO и отправить уведомление”.
Подготовка Raspberry Pi OS
Выбор ОС
Рекомендуется ставить актуальную 64-битную Raspberry Pi OS (особенно если вы планируете современные Python-библиотеки).Официальное руководство по установке:
Прошивка microSD через Raspberry Pi Imager
В Raspberry Pi Imager удобно сразу включить базовые настройки:rpi-vision)Первые действия после первого запуска
Обновите систему:Установите базовые утилиты:
Подключение Raspberry Pi AI Camera (аппаратная часть)
Как подключать CSI-камеру правильно
CSI — это разъём для камер (шлейф), который подключается напрямую к Raspberry Pi.Правила подключения:
> Если камера периодически “отваливается”, очень часто причина — плохой контакт шлейфа или недостаточное питание.
Проверка, что камера видится системой (libcamera / rpicam)
На современных версиях Raspberry Pi OS камера работает через стек libcamera. Проверять лучше штатными утилитами.Официальная документация по программному стеку камеры:
Быстрый тест камеры
Попробуйте вывести тестовое изображение:Сделайте снимок:
Запишите короткое видео:
Если команды не найдены, установите приложения:
Подготовка Python-окружения под проект
Чтобы зависимости проекта не конфликтовали с системными, используйте виртуальное окружение (venv).Виртуальное окружение (venv) — это отдельная папка с Python и установленными пакетами, привязанными только к проекту.
Создание venv
В папке проекта:Установка базовых зависимостей
На Raspberry Pi иногда удобнее поставить OpenCV из репозиториев (готовая сборка), а venv создать с доступом к системным пакетам.Вариант А (удобно для Raspberry Pi): системный OpenCV + venv с доступом к системным пакетам
Далее ставим Ultralytics (YOLOv8):
Проверка:
> В следующих статьях мы зафиксируем зависимости проекта и добавим воспроизводимый запуск.
Проверка производительности и стабильности (минимум перед стартом)
Рекомендуемые быстрые проверки:Практический минимум:
Если vcgencmd отсутствует, установите пакет утилит (название может отличаться по версии ОС), либо пропустите этот шаг и вернитесь к нему позже.
Итог: что должно быть готово перед следующей статьёй
К концу этой статьи у вас должно быть:rpicam-hello и rpicam-still работаютultralytics