Raspberry Pi AI Camera - це компактний модуль камери від Raspberry Pi, заснований на інтелектуальному датчику зору Sony IMX500.
IMX500 поєднує в собі 12-мегапіксельний CMOS-датчик зображення з вбудованим прискоренням виведення для різних поширених моделей нейронних мереж, що дозволяє користувачам розробляти складні програми штучного інтелекту на основі зору без потреби в окремому прискорювачі.
AI Camera прозоро доповнює захоплені нерухомі зображення або відео тензорними метаданими, залишаючи процесор хост-машини Raspberry Pi вільним для виконання інших операцій.
Підтримка тензорних метаданих у бібліотеках libcamera і Picamera2, а також у наборі додатків rpicam-apps спрощує використання камери для початківців, пропонуючи досвідченим користувачам неперевершену потужність і гнучкість.
Raspberry Pi AI Camera сумісна з усіма комп'ютерами Raspberry Pi (з підключенням камери CSI).
Контур друкованої плати та розташування монтажних отворів ідентичні з модулем камери Raspberry Pi Camera Module 3, тоді як загальна глибина більша, щоб вмістити більший сенсор IMX500 та оптичний вузол.
Камера поставляється з двома кабелями (15-контактним і 22-контактним), що дозволяє використовувати її з усіма комп'ютерами Raspberry Pi, які мають порт CSI, включаючи Raspberry Pi 5.
Особливості
12-мегапіксельний інтелектуальний датчик технічного зору Sony IMX500
Інтегрований малопотужний двигун виведення
Інтегрований RP2040 для управління нейронною мережею та прошивкою
Попередньо завантажена з моделлю машинного зору MobileNet
Режими сенсора: 4056×3040 при 10 кадрах в секунду, 2028×1520 при 30 кадрах в секунду
76-градусне поле зору
Ручне регулювання фокусу
Поставляється з 200-міліметровими кабелями для підключення до всіх комп'ютерів Raspberry Pi
Характеристики
| Датчик | Sony IMX500 |
| Роздільна здатність | 12.3 мегапікселя |
| Розмір датчика | 7.857 мм (тип 1/2.3) |
| Розмір пікселя | 1.55 μm × 1.55 μm |
| Горизонтальна/вертикальна | 4056 × 3040 пікселів |
ІЧ-фільтр Чутливість до інфрачервоного світла | Інтегрований Ні |
Система автофокусу Діапазон фокусу Фокусна відстань Фокусне число (F-стоп) | Регульований вручну фокус 20 см – ∞ 4.74 мм F1.79 |
Горизонтальне поле зору Вертикальне поле зору | 66 ±3 градуси 52.3 ±3 градуси |
Вихід | Зображення (Bayer RAW10) Вихід ISP (YUV/RGB)Метадані ROI |
| Максимальний розмір вхідного тензора | 640(Ш) × 640(В) |

| Тип вхідних даних | int8' або 'uint8' |
| Розмір пам'яті | 8388480 байт для прошивки, файлу ваги мережі та робочої пам'яті |
| Частота кадрів | 2×2 бінінг: 2028×1520 10-біт 30fps Повна роздільна здатність: 4056×3040 10-біт 10fps |
| Розміри | 25 × 24 × 11.9 мм |
| Довжина стрічкового кабелю | 200 мм |
| Роз'єм кабелю | 15 × 1 мм FPC або 22 × 0.5 мм FPC |
| Температура експлуатації | 0°C до 50°C |
| Сумісність | RPi3B RPi4B RPi5 RPi Zero |
| Тривалість виробництва | Камера Raspberry Pi AI залишиться в виробництві принаймні до січня 2028 року |
Камера IMX500 є потужним пристроєм, що має функціональність, необхідну для обробки зображень та виконання завдань комп'ютерного зору. Вона пропонує безліч допоміжних функцій, які дозволяють налаштовувати та оптимізувати процес обробки, такі як автоматичне обчислення областей інтересу (ROI), управління прошивкою та перетворення координат.
Інтеграція з бібліотекою Picamera2 спрощує використання камери в Python, надаючи розробникам доступ до зручних інтерфейсів для роботи з нейронними мережами та обробкою тензорів. Це робить IMX500 ідеальним вибором для проєктів у сфері штучного інтелекту та машинного навчання, забезпечуючи високу якість зображень та гнучкість у налаштуванні обробки.
В цілому, IMX500 — це високотехнологічне рішення, яке може суттєво покращити можливості обробки візуальної інформації в різних застосунках.
Комплектація:
- 1 камера Raspberry Pi AI
- 1 кабель CSI (15-контактний для Pi 2/3/4)
- 1 кабель CSI (22-контактний для Pi Zero/Pi 5)
- 1x інструмент для регулювання лінз
Немає відгуків про цей товар, станьте першим, залиште свій відгук.
Немає питань про даний товар, станьте першим і задайте своє питання.
Ми доставляємо замовлення по всій території країни (крім тимчасово окупованих теріторій).
Всі товари 100% є на складі, а тому ми відправимо їх сьогодні ж або завтра, якщо ви зробили замовлення після 18:00.
Способи оплати:
- Оплата карткою на сайті
- Оплата частинами
- Післяоплата у відділеннях НП
- Переказ на банківську картку
- Безготівковий розрахунок

У наведених нижче інструкціях описано, як запустити попередньо встановлені моделі нейронних мереж MobileNet SSD і PoseNet на Raspberry Pi AI Camera.
Передумови
Ця інструкція передбачає, що ви використовуєте AI Camera, підключену до плати Raspberry Pi 4 Model B або Raspberry Pi 5. З невеликими змінами ви можете слідувати цим інструкціям на інших моделях Raspberry Pi з роз'ємом для камери, включаючи Raspberry Pi Zero 2 W і Raspberry Pi 3 Model B+.
По-перше, переконайтеся, що на вашому Raspberry Pi встановлене найновіше програмне забезпечення. Запустіть наступну команду для оновлення:
sudo apt update && sudo apt full-upgrade |
Встановлення прошивки IMX500
Під час запуску AI-камера повинна завантажити прошивку для виконання на датчик IMX500.
Щоб встановити ці файли прошивки на Raspberry Pi, виконайте таку команду:
sudo apt install imx500-all |
Ця команда
- встановлює файли прошивки /lib/firmware/imx500_loader.fpk та /lib/firmware/imx500_firmware.fpk, необхідні для роботи датчика IMX500
- розміщує декілька файлів прошивки нейромережевої моделі в /usr/share/imx500-models/
- встановлює програмні етапи постобробки IMX500 у rpicam-apps
- встановлює інструменти пакування мережевих моделей Sony
Драйвер пристрою ядра IMX500 завантажує всі файли прошивки під час запуску камери. |
Перезавантаження
Тепер, коли ви встановили необхідні умови, перезавантажте Raspberry Pi:
sudo reboot |
Запуск прикладів програм
Після оновлення всіх системних пакетів і встановлення файлів прошивки ми можемо запустити деякі приклади програм.
Як згадувалося раніше, Raspberry Pi AI Camera повністю інтегрується з libcamera, rpicam-apps і Picamera2.
rpicam-apps
Додатки для камери rpicam-apps включають етапи виявлення об'єктів IMX500 і оцінки пози, які можна запускати в конвеєрі постобробки.
У прикладах на цій сторінці використовуються JSON-файли постобробки, розташовані в /usr/share/rpicam-assets/.
Виявлення об'єктів
Нейронна мережа MobileNet SSD виконує базове виявлення об'єктів, надаючи обмежувальні рамки і довірчі значення для кожного знайденого об'єкта. imx500_mobilenet_ssd.json містить параметри конфігурації для етапу постобробки виявлення об'єктів IMX500 з використанням нейронної мережі MobileNet SSD.
imx500_mobilenet_ssd.json оголошує конвеєр постобробки, який містить два етапи:
1) imx500_object_detection, який виділяє у вихідний тензор згенеровані нейронною мережею обмежувальні рамки та довірчі значення
2) object_detect_draw_cv, який малює обмежувальні рамки та мітки на зображенні
Тензор MobileNet SSD не потребує значної постобробки на вашому Raspberry Pi для створення кінцевого результату обмежувальних рамок.
Виявлення об'єктів відбувається безпосередньо на камері зі штучним інтелектом.
Наступна команда запускає rpicam-hello з постобробкою виявлення об'єктів:
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30
Після запуску команди ви побачите видошукач, який накладає обмежувальні рамки на об'єкти, розпізнані нейронною мережею:

Для запису відео з накладенням виявлення об'єктів використовуйте rpicam-vid:
rpicam-vid -t 10s -o output.264 --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --width 1920 --height 1080 --framerate 30Ви можете налаштувати етап imx500_object_detection різними способами.
Наприклад, max_detections визначає максимальну кількість об'єктів, які конвеєр виявить у будь-який момент часу. threshold визначає мінімальне значення достовірності, необхідне для того, щоб конвеєр вважав вхідні дані об'єктом.
Вихідні дані цієї мережі можуть бути досить зашумленими, тому на цьому етапі також виконується деяка часова фільтрація і застосовується гістерезис.
Щоб вимкнути цю фільтрацію, видаліть конфігураційний блок temporal_filter.
Оцінка пози
Нейронна мережа PoseNet виконує оцінку пози, позначаючи ключові точки на тілі, пов'язані з суглобами та кінцівками. imx500_posenet.json містить параметри конфігурації для етапу постобробки оцінки пози IMX500 за допомогою нейронної мережі PoseNet.
imx500_posenet.json оголошує конвеєр постобробки, який містить два етапи:
imx500_posenet, який отримує вихідний тензор від нейронної мережі PoseNet
plot_pose_cv, який малює накладання ліній на зображення
AI Camera виконує базове виявлення, але вихідний тензор потребує додаткової постобробки на вашому хості Raspberry Pi для отримання остаточного результату.
Наступна команда запускає rpicam-hello з постобробкою оцінки пози:
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_posenet.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30
Ви можете налаштувати етап imx500_object_detection різними способами.
Наприклад, max_detections визначає максимальну кількість об'єктів, які конвеєр виявить у будь-який момент часу. threshold визначає мінімальне значення достовірності, необхідне для того, щоб конвеєр вважав вхідні дані об'єктом.
Вихідні дані цієї мережі можуть бути досить зашумленими, тому на цьому етапі також виконується деяка часова фільтрація і застосовується гістерезис.
Щоб вимкнути цю фільтрацію, видаліть конфігураційний блок temporal_filter.
Оцінка пози
Нейронна мережа PoseNet виконує оцінку пози, позначаючи ключові точки на тілі, пов'язані з суглобами та кінцівками. imx500_posenet.json містить параметри конфігурації для етапу постобробки оцінки пози IMX500 за допомогою нейронної мережі PoseNet.
imx500_posenet.json оголошує конвеєр постобробки, який містить два етапи:
imx500_posenet, який отримує вихідний тензор від нейронної мережі PoseNet
plot_pose_cv, який малює накладання ліній на зображення.
AI Camera виконує базове виявлення, але вихідний тензор потребує додаткової постобробки на вашому хості Raspberry Pi для отримання остаточного результату.
Наступна команда запускає rpicam-hello з постобробкою оцінки пози:
sudo apt install python3-opencv python3-munkres |
Тепер завантажте репозиторій https://github.com/raspberrypi/picamera2 на ваш Raspberry Pi, щоб запустити приклади. Файли з прикладами ви знайдете у кореневому каталозі.
Запустіть наступний скрипт зі сховища, щоб запустити виявлення об'єктів YOLOv8.
python imx500_object_detection_demo.py --model /usr/share/imx500-models/imx500_network_yolov8n_pp.rpk --ignore-dash-labels -r
|
Щоб спробувати оцінити позу у Picamera2, запустіть наступний скрипт зі сховища
python imx500_pose_estimation_higherhrnet_demo.py |
Огляд
AI-камера Raspberry Pi працює інакше, ніж традиційні системи обробки зображень на основі штучного інтелекту, як показано на схемі нижче:

Ліва сторона демонструє архітектуру традиційної системи камер зі штучним інтелектом. У такій системі камера передає зображення на Raspberry Pi. Raspberry Pi обробляє зображення, а потім виконує ШІ-висновки. Традиційні системи можуть використовувати зовнішні прискорювачі ШІ або покладатися виключно на центральний процесор.
Праворуч показана архітектура системи, яка використовує IMX500. Модуль камери містить невеликий процесор сигналів зображення (ISP), який перетворює необроблені дані зображення з камери у вхідний тензор. Модуль камери надсилає цей тензор безпосередньо до прискорювача штучного інтелекту в камері, який створює вихідний тензор, що містить результати виведення. Прискорювач ШІ надсилає цей тензор на Raspberry Pi. Немає необхідності в зовнішньому прискорювачі, а також в Raspberry Pi для запуску нейромережевого програмного забезпечення на центральному процесорі.
Щоб повністю зрозуміти цю систему, ознайомтеся з наступними поняттями:
Вхідний тензор
Частина зображення з датчика, що передається до системи штучного інтелекту для виведення висновків. Створюється невеликим вбудованим провайдером, який також обрізає і масштабує зображення з камери до розмірів, очікуваних завантаженою нейронною мережею. Вхідний тензор зазвичай не є доступним для додатків, хоча до нього можна отримати доступ з метою налагодження.
Область інтересу (ROI)
Вказує, яка саме частина зображення з сенсора буде обрізана перед масштабуванням до розміру, необхідного нейронній мережі. Може запитуватися і встановлюватися програмою. Одиницями виміру завжди є пікселі у повній роздільній здатності датчика. За замовчуванням ROI використовує повне зображення, отримане з датчика, без обрізання даних.
Вихідний тензор
Результати висновків, зроблених нейронною мережею. Точна кількість і форма виходів залежить від нейронної мережі. Код програми повинен розуміти, як працювати з тензором.
Архітектура системи
На схемі нижче показані різні програмні компоненти камери, які використовуються в нашому прикладі використання для обробки зображень/висновків з апаратним забезпеченням модуля ШІ-камери Raspberry Pi.

Під час запуску сенсорний модуль IMX500 завантажує прошивку для запуску певної моделі нейронної мережі. Під час потокової передачі даних IMX500 генерує як потік зображення, так і потік висновків. Цей потік висновків містить входи та виходи нейромережевої моделі, також відомі як тензори входів/виходів.
Драйвери пристроїв
На найнижчому рівні драйвер ядра датчика IMX500 конфігурує модуль камери через шину I2C. Драйвер CSI2 (CFE на Pi 5, Unicam на всіх інших платформах Pi) налаштовує приймач на запис потоку даних зображення в буфер кадру, разом з потоками вбудованих даних і даних виведення в інший буфер в пам'яті.
Файли прошивки також передаються через дроти шини I2C. У більшості пристроїв для цього використовується стандартний протокол I2C, але Raspberry Pi 5 використовує власний високошвидкісний протокол. Драйвер RP2040 SPI в ядрі обробляє передачу файлів прошивки, оскільки для передачі використовується мікроконтролер RP2040. Мікроконтролер забезпечує передачу даних I2C від ядра до IMX500 через шину SPI. Крім того, RP2040 кешує файли прошивки у вбудованій пам'яті. Це дозволяє уникнути необхідності передавати цілі блоки прошивки по шині I2C, що значно прискорює завантаження прошивки для прошивок, які ви вже використовували.
libcamera
Після того, як libcamera отримає від ядра буфер зображення і буфер даних виводу, спеціальна бібліотека IMX500 (частина Raspberry Pi IPA в складі libcamera) аналізує буфер виводу, щоб отримати доступ до тензорів вводу/виводу. Ці тензори упаковані як специфічні для Raspberry Pi елементи керування libcamera. libcamera повертає наступні елементи керування:

rpicam-apps
rpicam-apps надає базовий клас етапу постобробки IMX500, який реалізує помічники для етапів постобробки IMX500: IMX500PostProcessingStage. Використовуйте цей базовий клас для створення нового етапу постобробки для будь-якої нейромережевої моделі, що працює на IMX500. Приклад дивіться у файлі imx500_object_detection.cpp:
|
Для кожного кадру, отриманого програмою, викликається функція Process() (ObjectDetection::Process() у наведеному вище випадку). У цій функції ви можете витягти вихідний тензор для подальшої обробки або аналізу:
|
Після завершення остаточні результати можуть бути візуалізовані або збережені в метаданих і використані або на наступному етапі, або в самому додатку верхнього рівня. У випадку об'єктного виведення:
|
Етап постобробки object_detect_draw_cv, що виконується далі, отримує ці результати з метаданих і наносить рамки на зображення у функції ObjectDetectDrawCvStage::Process():
|
Наступна таблиця містить повний перелік допоміжних функцій, які надає IMX500PostProcessingStage:
| ФУНКЦІЯ | ОПИС |
| Read() | Зазвичай ця функція викликається з <Похідного класу>::Read() і зчитує параметри конфігурації для розбору та збереження вхідного тензора. Ця функція також зчитує рядок файлу моделі нейронної мережі («network_file») і налаштовує прошивку для завантаження при відкритті камери. |
| Process() | Зазвичай ця функція викликається з <Похідний клас>::Process() і обробляє та зберігає вхідний тензор у файл, якщо цього вимагає конфігураційний файл JSON. |
| SetInferenceRoiAbs() | Задає абсолютну область інтересу (ROI) прямокутника обрізки на зображенні датчика для використання при побудові висновків на IMX500. |
| SetInferenceRoiAuto() | Автоматично обчислює прямокутник області інтересу (ROI) на зображенні з сенсора, щоб зберегти співвідношення сторін вхідного тензора для заданої нейронної мережі. |
| ShowFwProgressBar() | Відображає на консолі індикатор прогресу, що показує хід завантаження прошивки нейронної мережі на IMX500. |
| ConvertInferenceCoordinates() | Перетворення з вхідного тензорного простору координат у кінцевий простір вихідного зображення провайдера. |
Picamera2
Інтеграція IMX500 в Picamera2 дуже схожа на те, що доступно в rpicam-apps. Picamera2 має допоміжний клас IMX500, який забезпечує ту ж функціональність, що і базовий клас rpicam-apps IMX500PostProcessingStage. Його можна імпортувати до будь-якого скрипту Python:
from picamera2.devices.imx500 import IMX500 |
Щоб отримати вихідні тензори, витягніть їх з елементів керування. Після цього ви можете застосувати додаткову обробку у вашому скрипті Python.
Для більш повного набору інструкцій та додаткової інформації про інструменти, що використовуються, див. Інструкція
- Оплата частинами
- Післяоплата у відділеннях НП
- Переказ на банківську картку
- Безготівкова оплата
- 100% оригінальний товар
- Гарантія 12 міс.
- 14 днів на повернення