Что такое Grove Vision AI V2?!
Grove Vision AI V2 — это компактный модуль компьютерного зрения и искусственного интеллекта, разработанный компанией Seeed Studio. Он предназначен для запуска моделей машинного обучения прямо на устройстве (Edge AI) без отправки данных в облако.
Вот ключевые сведения об этом оборудовании:
1. Основной процессор и ИИ-ускоритель
- Сердце устройства: Модуль построен на базе высокопроизводительного ИИ-акселератора Hailo-8L. Это специализированный чип для нейросетей, обеспечивающий высокую производительность при низком энергопотреблении.
- Управляющий МК: В качестве управляющего контроллера используется ESP32-S3. Он отвечает за обработку данных с камеры, взаимодействие с периферией и управление питанием.
- Производительность: Акселератор Hailo-8L обеспечивает вычислительную мощность до 13 TOPS (триллионов операций в секунду), что позволяет запускать сложные модели (например, YOLOv8) с высокой частотой кадров.
2. Возможности камеры и видеовхода
- Интерфейс: Поддерживает камерный интерфейс CSI (Camera Serial Interface).
- Совместимость: Идеально сочетается с камерами Seeed (например, Grove Vision AI Module Camera) или другими стандартными CSI-камерами.
- Разрешение: Способен обрабатывать видеопоток высокого разрешения (обычно до 1080p) в реальном времени для задач детекции.
3. Интерфейсы и подключение
- Grove Interface: Оснащен стандартным разъемом Grove I2C/UART, что позволяет мгновенно подключать его к огромной экосистеме совместимых датчиков и микроконтроллеров (Seeed Studio XIAO, Arduino и др.).
- USB-C: Наличие порта USB-C упрощает прошивку, отладку и питание устройства.
- Расширение: Имеет слот для карты microSD (для локального хранения данных или логов) и контакты GPIO для дополнительной гибкости.
4. Энергоэффективность
- Низкое энергопотребление является ключевым преимуществом архитектуры Hailo. Модуль может работать от батарей или портативных источников питания, что критично для IoT-устройств и носимой электроники.
5. Программное обеспечение и экосистема
- Поддержка моделей: Устройство оптимизировано для работы с популярными фреймворками и моделями, включая TensorFlow Lite, PyTorch и модели семейства YOLO (You Only Look Once — для детекции объектов).
- Инструменты разработки: Поддержка через Edge Impulse (платформа для обучения ML моделей) и SDK Hailo.
- Совместимость: Легко интегрируется с платами на базе ESP32, Arduino, Raspberry Pi (через UART/I2C).
6. Ключевые применения
Благодаря сочетанию мощности и компактности, модуль используется в таких задачах, как:
- Распознавание и детекция объектов (люди, автомобили, животные).
- Распознавание лиц и эмоций.
- Контроль доступа (Smart Lock).
- Индустриальный контроль качества (дефектоскопия).
- Умный дом и автоматизация.
Резюме
Grove Vision AI V2 — это решение "всё в одном", которое снимает нагрузку по обработке ИИ с основного микроконтроллера. Он делает внедрение компьютерного зрения доступным даже для начинающих разработчиков благодаря простому интерфейсу Grove и мощной, но энергоэффективной начинки.
Будем использовать модель YOLOv8 и вот почему
YOLOv8 (You Only Look Once version 8) — это одна из самых популярных и производительных архитектур нейросетей для задач компьютерного зрения, разработанная компанией Ultralytics. Она была выпущена в начале 2023 года и быстро стала стандартом де-факто в индустрии благодаря балансу между скоростью и точностью.
Вот ключевые сведения о моделях YOLOv8, структурированные по категориям:
1. Архитектурные новшества
В отличие от предыдущих версий (например, YOLOv5), YOLOv8 претерпела значительные изменения в структуре:
- Anchor-Free (Безъякорный подход): Это самое важное изменение. Предыдущие версии использовали предопределенные «якоря» (anchor boxes) для определения размеров объектов. YOLOv8 от них отказалась, что упрощает архитектуру и улучшает способность модели находить объекты необычных форм и размеров.
- Модуль C2f: В «шее» (neck) и «спине» (backbone) сети используется новый модуль C2f (Cross Stage Partial with 2 convolutions), который заменил C3 в YOLOv5. Он обеспечивает лучшую градиентную информацию и более богатые признаки при меньших потерях производительности.
- Decoupled Head (Разделенная голова): Архитектура «головы» (где происходит финальное предсказание) разделена на две независимые ветви: одну для классификации (какой это объект) и другую для регрессии bounding box (где он находится). Это улучшает точность.
2. Поддерживаемые задачи
YOLOv8 — это универсальная модель, обученная на одном фреймворке для выполнения пяти различных задач:
- Object Detection (Детекция): Обнаружение объектов и рисование прямоугольных рамок.
- Instance Segmentation (Сегментация): Обнаружение объектов с точным выделением их контуров (маски).
- Image Classification (Классификация): Определение того, что находится на изображении целиком.
- Pose Estimation (Оценка позы): Нахождение ключевых точек на теле человека (суставы, конечности).
- Oriented Object Detection (OBB): Детекция вращающихся объектов (важно для аэрофотосъемки, текста и т.д.).
3. Модели разных масштабов
Как и предыдущие версии, YOLOv8 доступна в 5 размерах, чтобы пользователь мог выбрать лучший баланс между скоростью и точностью под свое оборудование (от CPU до мощных GPU):
- YOLOv8n (Nano): Самая быстрая и легкая. Идеальна для мобильных устройств и Edge AI.
- YOLOv8s (Small): Немного тяжелее и точнее.
- YOLOv8m (Medium): Золотая середина для использования на обычных GPU.
- YOLOv8l (Large): Высокая точность для мощных серверов.
- YOLOv8x (Extra Large): Максимальная точность, требует очень ресурсов.
4. Обучение и оптимизация (Loss Functions)
В YOLOv8 полностью переработана функция потерь:
- Task Aligned Assigner: Новый метод назначения положительных образцов во время обучения, который лучше согласовывает классификацию и локализацию.
- Loss Functions:Для классификации используется BCE Loss (Binary Cross Entropy).
Для боксов используется CIoU Loss + DFL (Distribution Focal Loss). DFL помогает лучше предсказывать координаты, особенно если объекты расположены близко друг к другу или имеют размытые границы.
5. Экосистема и использование
YOLOv8 славится своей удобностью для разработчиков:
- Единый Python API: Простой и интуитивный интерфейс (from ultralytics import YOLO).
- Поддержка CLI: Возможность обучать и тестировать модели прямо из командной строки.
- Экспорт моделей: Легкая конвертация в различные форматы для деплоя: ONNX, OpenVINO, TensorRT, CoreML, TorchScript, TFLite.
- Ultralytics HUB: Облачная платформа для обучения моделей, мониторинга метрик и деплоя без написания кода.
6. Сравнение с конкурентами
На момент релиза и по сей день YOLOv8 превосходит многие другие модели (включая YOLOv5 и YOLOv7) по метрике mAP (mean Average Precision) при сопоставимой или более высокой скорости (FPS).
Резюме: зачем выбирают YOLOv8?
- Точность: Одна из самых высоких среди моделей реального времени.
- Удобство: Очень проста в установке и запуске (pip install ultralytics).
- Гибкость: Одна модель решает задачи от детекции до оценки позы.
- Сообщество: Огромное количество tutorials, готовых датасетов и предобученных весов (COCO, VOC и др.).
Примечание: В 2024 году вышли обновленные версии (YOLOv9, YOLOv10, YOLO11), которые предлагают небольшие приросты в эффективности или архитектуре, но YOLOv8 остается самой стабильной и широко внедренной версией в производство.
Данные для обучения
Источник:
Установка инструментов для YOLOv8
Установка YOLOv8:
>>pip install ultralytics
Детали по инструменту: https://pypi.org/project/ultralytics/
Проверка версии:
>>yolo -v
Подготовка
Откройте консоль от имени администратора, разархивируйте папку с датасетом для обучения и перейдите в консоли в разархивированную папку.
В моем случае при обучении используется видеокарта NVIDIA GeForce GTX 1050 Ti, 4096MiB. Для ее использования в системе должна быть установлена система CUDA: https://developer.nvidia.com/cuda-downloads
Проверка CUDA:
>>nvcc --version
Также понадобится инструментарий cuDNN (NVIDIA® CUDA® Deep Neural Network library): https://developer.nvidia.com/cudnn
Потребуется PyTorch с поддержкой GPU:
>>pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
Обучение
yolo detect train data=data.yaml model=yolov8n.pt epochs=100 imgsz=640 batch=16 workers=8
- model=yolov8n.pt: Берем легчайшую базу. Т.е. обучаем на предобученной модели.
- imgsz=640 : Хотим сравнить с оригинальной моделью.
- batch=16: Стандартный размер, можно увеличить если при обучении используется не вся память GPU.
- epochs=100: Стандартное количество.
- workers=8: Достаточно чтобы нагрузить GPU
Результат обучения:
Результирующий фал *.pt будет по пути runs\detect\train*\weights.
Оценка качества модели
На сотой эпохе метрика mAP50 = 0.369 (36.9%): Это значит, что в 36.9% случаев модель правильно находит объект и перекрывает его рамкой хотя бы на 50%.
Итоговый результат: mAP50 = 36.9%, mAP50-95 = 24.3%
Это хорошо или плохо?
Для сравнения: Официальная предобученная модель YOLOv8n на полном датасете COCO показывает mAP50-95 около 37-40%.
Мы обучились на кусочном датасете (7000 картинок против 118,000 в оригинале) и получили 24.3%.
Вердикт: Это отличный результат для кастомного обучения на урезанном датасете. Модель работает.
Анализ по классам (Кто хорошо, а кто плохо)
Модель отлично справляется с крупными объектами и плохо с мелкими, это видно из результирующих логов.
✅ Отлично справляется (Крупные объекты):
- Giraffe (Жираф): 82.1% (mAP50)
- Elephant (Слон): 83.0%
- Bus (Автобус): 58.4%
- Person (Человек): 65.9%
- Cat (Кот): 69.9%
- Почему: Они занимают много места на картинке 640px, легко различимы.
❌ Плохо справляется (Мелкие/Тонкие объекты):
- Spoon (Ложка): 6.5%
- Orange (Апельсин): 11.2%
- Apple (Яблоко): 9.7%
- Fork (Вилка): 13.9%
- Почему: Они слишком маленькие даже для 640px или сливаются с фоном. Нашего датасета (7000 фото) недостаточно, чтобы научить nano-модель таким тонким деталям.
⚠️ Не хватило данных:
- Hair drier (Фен): 0% (Всего 5 изображений в валидации — модель просто не выучила).
- Toaster (Тостер): 2.3% (Всего 2 изображения).
Вывод по сравнению с оригиналом
Мы хотели сравнить свое обучение с оригиналом.
- Оригинальная YOLOv8n: Обучена на 118к картинок, разрешение 640.
- Наша модель: Обучена на 7к картинок, разрешение 640.
Наша модель уступает оригиналу в точности (24% vs 37%), но она специализирована на нашем наборе данных. Если в нашем датасете есть специфические условия освещения или углы съемки, наша модель может работать на них лучше оригинала.
Обучение под Grove Vision AI V2
yolo train detect model=yolov8n.pt data=data.yaml imgsz=192 batch=128 epochs=100 workers=8
Для того чтобы использовать файл модели на Grove Vision AI V2, результирующий файл после обучения *.pt нужно конвертировать в *.tflite
yolo export model="runs\detect\train31\weights\best.pt" format=tflite imgsz=192 int8
После экспорта в корне вы найдете папку yolov8n_saved_model и нужный файл это yolov8n_full_integer_quant.tflite.
Оптимизация графа модели
Установка инструмента:
>>pip3 install ethos-u-vela
После установки в корте папки нужно создать файл vela_config.ini с содержимым:
; file: my_vela_cfg.ini ; -----------------------------------------------------------------------------
; Vela configuration file ; -----------------------------------------------------------------------------
; System Configuration
; My_Sys_Cfg
[System_Config.My_Sys_Cfg]
core_clock=400e6
axi0_port=Sram
axi1_port=OffChipFlash
Sram_clock_scale=1.0
Sram_burst_length=32
Sram_read_latency=16
Sram_write_latency=16
Dram_clock_scale=0.75
Dram_burst_length=128
Dram_read_latency=500
Dram_write_latency=250
OnChipFlash_clock_scale=0.25
OffChipFlash_clock_scale=0.015625
OffChipFlash_burst_length=32
OffChipFlash_read_latency=64
OffChipFlash_write_latency=64
; -----------------------------------------------------------------------------
; Memory Mode
; My_Mem_Mode_Parent
[Memory_Mode.My_Mem_Mode_Parent]
const_mem_area=Axi1
arena_mem_area=Axi0
cache_mem_area=Axi0
Команда на оптимизацию:
vela --accelerator-config ethos-u55-64 \
--config vela_config.ini \
--system-config My_Sys_Cfg \
--memory-mode My_Mem_Mode_Parent \
--output-dir "папка размещения результата" \
"путь до файла tflite который требуется оптимизировать"
Установка модели на Grove Vision AI V2
Один из вариантов установки модели на железо, это использование официального онлайн конфигуратора: https://sensecraft.seeed.cc/ai/device/local/36
Купить