RSS блога
Подписка
OpenMV - "Ардуино" для машинного зрения
- Цена: 40.09$ + доставка
- Перейти в магазин
Какой ардуинщик не хотел подключить камеру к ардуино и получать изображение также легко и просто, как мигать светодиодом? Вот и я из тех, кто хотел, но увы все нет так просто. Однако не ардуино единым ограничивается DIY и есть множество куда более мощных микроконтроллеров способных справиться с этой задачей. В очередной раз изучая новинки с сфере DIY, я наткнулся на интересный проект — OpenMV. Вот официальная страница проекта — openmv.io.
OpenMV Cam это небольшая плата с низким энергопотреблением, содержащая видеокамеру и микроконтроллер, предназначенная для бюджетной реализации машинного зрения. OpenMV работает под управлением MicroPython, который позволяет программировать OpenMV с использованием Python (точнее, Python 3). Это облегчает работу за счет применения языка высокого уровня с большим количеством уже готовых библиотек компьютерного зрения. Также с помощью Python можно управлять портами ввода-вывода OpenMV.
Характеристики OpenMV
Процессор STM32F765VI ARM Cortex M7 с рабочей частотой 216 МГц;
512 Кбайт оперативной памяти;
2 МБ флеш-памяти;
Все порты ввода/вывода с напряжением логического уровня 3,3В толерантны к 5В;
Процессор имеет следующие интерфейсы ввода/вывода:
Интерфейс USB с полной скоростью (12 Мбит) для подключения к компьютеру. При подключении OpenMV отображается в системе как виртуальный COM-порт и USB-накопитель.
Разъем μSD Card, обеспечивающий скорость чтения/записи в 100 Мбит/с, что дает возможность OpenMV записывать видео и легко переносить объекты машинного зрения с карты μSD.
Шина SPI, которая может работать на скорости до 54 Мбит, позволяя передавать изображение на LCD, по WiFi на другой микроконтроллер или передавать композитное видео по радиоканалу 5,8 ГГц.
Шина I2C, шина CAN и асинхронная последовательная шина (TX / RX) для взаимодействия с другими микроконтроллерами и датчиками.
12-разрядный АЦП и 12-разрядный ЦАП.
Три порта вывода ввода/вывода для управления серводвигателями.
Прерывания и ШИМ доступны на всех портах ввода/вывода (на плате имеется 10 контактов ввода/вывода).
RGB LED и два мощных ИК-светодиода с длиной волны излучения 850 нм.
Матрица OV7725 способна выдавать 8-битные изображения в оттенках серого разрешением 640x480 или 16-битные изображения RGB565 разрешением 640x480, FPS при разрешении выше 320x240 составляет 60 кадров в секунду и 120 кадров в секунду, при разрешении ниже 320x240. Большинство простых алгоритмов будут работать с частотой выше 30 FPS.
Камера OpenMV поставляется с 2.8-миллиметровым объективом на стандартном креплении M12. Можно использовать более специализированные объективы.
Возможности OpenMV:
Разделение кадров для обнаружения движение в сцене.
Отслеживание цвета — до 16 цветов за один раз в изображении.
Отслеживание маркеров — обнаружение групп цветов вместо независимых цветов.
Обнаружение лиц с помощью Haar Cascades.
Трекинг глаз.
Оптический поток.
Обнаружение/декодирование QR-кодов.
Декодирование линейных штрих-кодов.
Отслеживание AprilTag.
Обнаружение линий, кругов, прямоугольников.
Обнаружение шаблонов изображений.
Захват изображения — разрешение до 640x480 в оттенках серого/RGB565 формат изображений — BMP/JPG/PPM/PGM.
Запись видео — разрешение до 640x480 в оттенках серого/RGB565, формат видео — MJPEG или GIF (или RAW-видео).
OpenMV поддерживает предварительно обученные нейронные сети, позволяющие реализовать распознавание лиц, текста и пр.
На официальном сайте OpenMV продается по цене 65$, на Aliexpress много предложений по цене от 60$ и выше, нет никакой уверенности, что это оригинальные платы.
Интересное предложение по цене около 40$ удалось найти на Banggood, после этого уже не было никакой возможности внутренней жабе противостоять желанию попробовать OpenMV в деле. Также пришлось смириться с тем, что цена в 40$ является акционной и никакие другие скидки не действуют.
OpenMV поставляется в простом антистатическом пакете. В комплекте сама камера OpemMV, шилд для прототипирования с набором гребенок с возможностью сквозного подключения, а также добротный USB-MicroUSB кабель.
При первом осмотре платы в глаза сразу бросились спаянные между собой ножки микроконтроллера, на странице товара получить вразумительный ответ не удалось. Пришлось смотреть схему с официального сайта, которая убедила, что так и должно быть.
Версия платы M7 от 15.10.2016г. Размер OpenMV — 36x45 мм.
OpenMV программируется с помощью IDE OpenMV, которая имеет текстовый редактор, средство просмотра кадрового буфера, позволяющее видеть то, что видит камера, последовательный терминал для отладки и отображение гистограммы для облегчения отслеживания цвета. OpenMV IDE поддерживает русский язык и интуитивно понятна.
При первом подключении платы к OpenMV IDE, она предлагает обновить встроенную прошивку до актуальной версии, занимает процесс обновления не более пары минут.
Одним из не очень приятных моментов является то, что OpenMV IDE просит зарегистрировать вашу плату OpenMV, регистрация естественно не бесплатная. Сообщение о необходимости регистрации появляется трижды при каждом подключении платы, после их закрытия функциональность никак не ограничивается.
OpenMV IDE содержит множество примеров. Детектирование линий, кругов, лиц работает удовлетворительно.
Пример отслеживания глаз почему-то не заработал. Я впервые столкнулся с языком Python и для меня не стало проблемой разобраться в примерах и редактировать их на свое усмотрение.
Пример сохраненного изображения с камеры (в оригинальном разрешении).
Примеры обнаружения линий и кругов (в оригинальном разрешении)
Неожиданным моментом стало сильное искажение цветов в режиме изображения RGB565, и высокая чувствительность камеры к ИК-излучению. Я предположил, что на камере не установлен ИК-фильтр, хотя на странице товара об этом ничего не сказано и другие обзоры данного товара этого не подтверждают. С одной стороны это даже является плюсом, так как благодаря наличию на плате ИК-светодиодов есть возможность использования OpenMV в темноте, с другой стороны минус, так как примеры по отслеживанию цвета естественно не работают. Я также задумался дополнительно приобрести или вытащить откуда-нибудь объектив с ИК-фильтром.
Пример детектирования лица работает с разрешением 240*160 и FPS порядка 22, при этом следует учесть, что параллельно выводится буфер кадра и это замедляет обработку. При блокировке буфера кадра, FPS возрастает более чем в 2 раза, это справедливо для всех алгоритмов.
OpenMV поддерживает широкий набор периферии: дисплей, wi-fi модуль, ИК-матрицы, AV-шилд, сервоприводы и прочее. Однако цены на дополнительные модули на официальном сайте на мой взгляд весьма не гуманны, а на других площадках ничего найти не удалось.
Так Wi-Fi-шилд основан на ATWINC1500 и стоит 30$ на официальном сайте, поэтому возникает закономерное желание использовать более дешевые ESP8266 и ESP32. На Aliexpress в продаже есть wi-fi шилд на базе ESP8266, но по цене он не уступает оригинальному, схему же и прошивку продавец не дает. Я планирую купить отдельно ATWINC1500, благо он есть в продаже по цене около 12$ и сделать Wi-Fi-шилд самостоятельно.
Официальный LCD-шилд основан ан 1,8 TFT с разрешением 160*128 на базе контроллера ST7785, у меня есть в наличии есть лишь дисплей 2,2" 320*240 на контроллере ILI9343, поддержка которого реализована пользователями OpenMV. К сожалению заставить работать данный дисплей с OpenMV мне не удалось.
У меня в наличии имеется ИК-матрица AMG8833 с разрешением 8*8, поддержка которой заявлена в OpenMV. На прото-шилде был собрана простая подключения AMG8833 к OpenMV по шине I2C. К сожалению, при сборке схемы я не учел необходимость соосного расположения камеры и ИК-матрицы.
Есть несколько примеров работы с AMG8833: с выводом на дисплей, с наложением термального изображения на изображение камеры и прочие. Примеры работают, как ожидалось. К сожалению, в примерах не реализована интерполяции изображения с AMG8833, реализовать которую можно лишь на низком уровне, редактируя соответствующую библиотеку.
Я еще только изучаю возможности OpenMV и языка Python, в планах разработка собственных плат расширения. Я хочу реализовать на OpenMV следующие проекты:
1. Самонаводящаяся водяная/лазерная пушка.
2. Счетчик машин (с измерением скорости при использовании допплеровского радара).
3. GPRS-камера с использованием GPRS-модема.
4. Тепловизионная камера для удаленного наблюдения.
Резюмируя можно отметить главные достоинства OpenMV:
1. Низкий порог вхождения.
2. Обширная документация и большое количество примеров.
3. Широкий набор периферийных устройств.
4. Открытая архитектура.
Одним из главных недостатков, на мой взгляд, является высокая цена на саму OpenMV и на платы расширения, однако открытость ПО и железа в некоторой степени компенсирует этот недостаток. Также на рынке появились достойные конкуренты OpenMV — Esp32-Cam, Sipeed Maix и прочие, которые однозначно заслуживают внимания.
P.S
Недавно на Kickstarter успешно завершилась компания по сбору средств на новую, более мощную версию OpenMV — OpenMV H7, сердцем которой является микроконтроллер STM32H743VI. OpenMV H7 уже доступна для предзаказа на официальном сайте, надеюсь и копии от китайских производителей не заставят себя долго ждать.
OpenMV стала некоторого рода стандартом в машинном зрении для микроконтроллеров и портирована сторонними разработчиками на другие платформы, такие как i.mx1060 (NXP), k210 (Sipeed).
OpenMV Cam это небольшая плата с низким энергопотреблением, содержащая видеокамеру и микроконтроллер, предназначенная для бюджетной реализации машинного зрения. OpenMV работает под управлением MicroPython, который позволяет программировать OpenMV с использованием Python (точнее, Python 3). Это облегчает работу за счет применения языка высокого уровня с большим количеством уже готовых библиотек компьютерного зрения. Также с помощью Python можно управлять портами ввода-вывода OpenMV.
Характеристики OpenMV
Процессор STM32F765VI ARM Cortex M7 с рабочей частотой 216 МГц;
512 Кбайт оперативной памяти;
2 МБ флеш-памяти;
Все порты ввода/вывода с напряжением логического уровня 3,3В толерантны к 5В;
Процессор имеет следующие интерфейсы ввода/вывода:
Интерфейс USB с полной скоростью (12 Мбит) для подключения к компьютеру. При подключении OpenMV отображается в системе как виртуальный COM-порт и USB-накопитель.
Разъем μSD Card, обеспечивающий скорость чтения/записи в 100 Мбит/с, что дает возможность OpenMV записывать видео и легко переносить объекты машинного зрения с карты μSD.
Шина SPI, которая может работать на скорости до 54 Мбит, позволяя передавать изображение на LCD, по WiFi на другой микроконтроллер или передавать композитное видео по радиоканалу 5,8 ГГц.
Шина I2C, шина CAN и асинхронная последовательная шина (TX / RX) для взаимодействия с другими микроконтроллерами и датчиками.
12-разрядный АЦП и 12-разрядный ЦАП.
Три порта вывода ввода/вывода для управления серводвигателями.
Прерывания и ШИМ доступны на всех портах ввода/вывода (на плате имеется 10 контактов ввода/вывода).
RGB LED и два мощных ИК-светодиода с длиной волны излучения 850 нм.
Матрица OV7725 способна выдавать 8-битные изображения в оттенках серого разрешением 640x480 или 16-битные изображения RGB565 разрешением 640x480, FPS при разрешении выше 320x240 составляет 60 кадров в секунду и 120 кадров в секунду, при разрешении ниже 320x240. Большинство простых алгоритмов будут работать с частотой выше 30 FPS.
Камера OpenMV поставляется с 2.8-миллиметровым объективом на стандартном креплении M12. Можно использовать более специализированные объективы.
Возможности OpenMV:
Разделение кадров для обнаружения движение в сцене.
Отслеживание цвета — до 16 цветов за один раз в изображении.
Отслеживание маркеров — обнаружение групп цветов вместо независимых цветов.
Обнаружение лиц с помощью Haar Cascades.
Трекинг глаз.
Оптический поток.
Обнаружение/декодирование QR-кодов.
Декодирование линейных штрих-кодов.
Отслеживание AprilTag.
Обнаружение линий, кругов, прямоугольников.
Обнаружение шаблонов изображений.
Захват изображения — разрешение до 640x480 в оттенках серого/RGB565 формат изображений — BMP/JPG/PPM/PGM.
Запись видео — разрешение до 640x480 в оттенках серого/RGB565, формат видео — MJPEG или GIF (или RAW-видео).
OpenMV поддерживает предварительно обученные нейронные сети, позволяющие реализовать распознавание лиц, текста и пр.
На официальном сайте OpenMV продается по цене 65$, на Aliexpress много предложений по цене от 60$ и выше, нет никакой уверенности, что это оригинальные платы.
Интересное предложение по цене около 40$ удалось найти на Banggood, после этого уже не было никакой возможности внутренней жабе противостоять желанию попробовать OpenMV в деле. Также пришлось смириться с тем, что цена в 40$ является акционной и никакие другие скидки не действуют.
OpenMV поставляется в простом антистатическом пакете. В комплекте сама камера OpemMV, шилд для прототипирования с набором гребенок с возможностью сквозного подключения, а также добротный USB-MicroUSB кабель.
При первом осмотре платы в глаза сразу бросились спаянные между собой ножки микроконтроллера, на странице товара получить вразумительный ответ не удалось. Пришлось смотреть схему с официального сайта, которая убедила, что так и должно быть.
Версия платы M7 от 15.10.2016г. Размер OpenMV — 36x45 мм.
OpenMV программируется с помощью IDE OpenMV, которая имеет текстовый редактор, средство просмотра кадрового буфера, позволяющее видеть то, что видит камера, последовательный терминал для отладки и отображение гистограммы для облегчения отслеживания цвета. OpenMV IDE поддерживает русский язык и интуитивно понятна.
При первом подключении платы к OpenMV IDE, она предлагает обновить встроенную прошивку до актуальной версии, занимает процесс обновления не более пары минут.
Одним из не очень приятных моментов является то, что OpenMV IDE просит зарегистрировать вашу плату OpenMV, регистрация естественно не бесплатная. Сообщение о необходимости регистрации появляется трижды при каждом подключении платы, после их закрытия функциональность никак не ограничивается.
OpenMV IDE содержит множество примеров. Детектирование линий, кругов, лиц работает удовлетворительно.
Пример отслеживания глаз почему-то не заработал. Я впервые столкнулся с языком Python и для меня не стало проблемой разобраться в примерах и редактировать их на свое усмотрение.
Пример сохраненного изображения с камеры (в оригинальном разрешении).
Примеры обнаружения линий и кругов (в оригинальном разрешении)
Неожиданным моментом стало сильное искажение цветов в режиме изображения RGB565, и высокая чувствительность камеры к ИК-излучению. Я предположил, что на камере не установлен ИК-фильтр, хотя на странице товара об этом ничего не сказано и другие обзоры данного товара этого не подтверждают. С одной стороны это даже является плюсом, так как благодаря наличию на плате ИК-светодиодов есть возможность использования OpenMV в темноте, с другой стороны минус, так как примеры по отслеживанию цвета естественно не работают. Я также задумался дополнительно приобрести или вытащить откуда-нибудь объектив с ИК-фильтром.
Пример детектирования лица работает с разрешением 240*160 и FPS порядка 22, при этом следует учесть, что параллельно выводится буфер кадра и это замедляет обработку. При блокировке буфера кадра, FPS возрастает более чем в 2 раза, это справедливо для всех алгоритмов.
OpenMV поддерживает широкий набор периферии: дисплей, wi-fi модуль, ИК-матрицы, AV-шилд, сервоприводы и прочее. Однако цены на дополнительные модули на официальном сайте на мой взгляд весьма не гуманны, а на других площадках ничего найти не удалось.
Так Wi-Fi-шилд основан на ATWINC1500 и стоит 30$ на официальном сайте, поэтому возникает закономерное желание использовать более дешевые ESP8266 и ESP32. На Aliexpress в продаже есть wi-fi шилд на базе ESP8266, но по цене он не уступает оригинальному, схему же и прошивку продавец не дает. Я планирую купить отдельно ATWINC1500, благо он есть в продаже по цене около 12$ и сделать Wi-Fi-шилд самостоятельно.
Официальный LCD-шилд основан ан 1,8 TFT с разрешением 160*128 на базе контроллера ST7785, у меня есть в наличии есть лишь дисплей 2,2" 320*240 на контроллере ILI9343, поддержка которого реализована пользователями OpenMV. К сожалению заставить работать данный дисплей с OpenMV мне не удалось.
У меня в наличии имеется ИК-матрица AMG8833 с разрешением 8*8, поддержка которой заявлена в OpenMV. На прото-шилде был собрана простая подключения AMG8833 к OpenMV по шине I2C. К сожалению, при сборке схемы я не учел необходимость соосного расположения камеры и ИК-матрицы.
Есть несколько примеров работы с AMG8833: с выводом на дисплей, с наложением термального изображения на изображение камеры и прочие. Примеры работают, как ожидалось. К сожалению, в примерах не реализована интерполяции изображения с AMG8833, реализовать которую можно лишь на низком уровне, редактируя соответствующую библиотеку.
Я еще только изучаю возможности OpenMV и языка Python, в планах разработка собственных плат расширения. Я хочу реализовать на OpenMV следующие проекты:
1. Самонаводящаяся водяная/лазерная пушка.
2. Счетчик машин (с измерением скорости при использовании допплеровского радара).
3. GPRS-камера с использованием GPRS-модема.
4. Тепловизионная камера для удаленного наблюдения.
Резюмируя можно отметить главные достоинства OpenMV:
1. Низкий порог вхождения.
2. Обширная документация и большое количество примеров.
3. Широкий набор периферийных устройств.
4. Открытая архитектура.
Одним из главных недостатков, на мой взгляд, является высокая цена на саму OpenMV и на платы расширения, однако открытость ПО и железа в некоторой степени компенсирует этот недостаток. Также на рынке появились достойные конкуренты OpenMV — Esp32-Cam, Sipeed Maix и прочие, которые однозначно заслуживают внимания.
P.S
Недавно на Kickstarter успешно завершилась компания по сбору средств на новую, более мощную версию OpenMV — OpenMV H7, сердцем которой является микроконтроллер STM32H743VI. OpenMV H7 уже доступна для предзаказа на официальном сайте, надеюсь и копии от китайских производителей не заставят себя долго ждать.
OpenMV стала некоторого рода стандартом в машинном зрении для микроконтроллеров и портирована сторонними разработчиками на другие платформы, такие как i.mx1060 (NXP), k210 (Sipeed).
Самые обсуждаемые обзоры
+37 |
1191
41
|
+39 |
1818
50
|
+37 |
1200
27
|
Да и сенсор так себе…
Честно говоря мне Esp32-Cam по технике нравится больше, там PSRAM есть, хотя оно вероятно медленное… Так что нормальное разрешение тоже под вопросом…
я знаю только по одной фирме 2 млн девайсов в год поставка в сша была)
и это только штаты, а есть ещё и сам китай
интересно бы знать статистику по stm32. для сравнения
ну надо ещё плюсануть народный мониторинг тогда)
есть же всякие пироги + усб камеры с подобными разрешениями, где мощь намного больше и так же есть питон и интерфейсы
лучше бы занялись портированием питона и опенцв на соки, что в камерах стоят
китайцы никак не переделают дизайн, чтобы сок через резинку крепился к металлическому корпусу камеры
www.nvidia.com/en-gb/autonomous-machines/embedded-systems/jetson-nano/
Впрочем, у меня ребёнок проекты с opencv.org/ и Кинектом успешно крутил и на древнем, как говно мамонта, нетбуке Asus с 512Мб памяти и Атомом, вкрутив в него не менее древнюю вебкамеру Creative…
Нвидию на рынке deep-learning accelerators они не догонят никогда, всё.
Хотя я, если честно, отношусь к новой моде крайне скептически
Ну и, учитывая текущий уровень даже не таких китов, а того, что ставят в Тесла, "
проекты:
1. Самонаводящаяся водяная/лазерная пушка" — выглядят не очень. Разве что водяная
Возможно, проекты носят чисто развлекательный характер.
Деньги сравнимые с сабжем, но вот возможности вообще даже близко не стояли рядом…
mysku.club/blog/usa-stores/72573.html
Нельзя так по цене сравнивать и возможностям. Стм кушает меньше орандж пи, и тем более Атома, и лишен ненужных тормозов-помогаек в виде ОС
Например эта плата и ESP32 Cam. Кто лучше и хуже и в каких задачах. А также Jetson Nano и Intel Atom. Неужели от Атома есть толк?
Вернусь к вопросу о железе, чем обсуждаемая плата хороша, а ESP32 Can плоха? Почему Jetson Nano хуже Атома по вашему утверждению?
Так то прикольно, но как использовать не понимаю
Здесь — больше: www.themtank.org/a-year-in-computer-vision#heading-detection
У меня на работе над ML в видео-аналитике десятки людей сейчас трудятся, заказчиков масса, больше всего — из ритейла крупного.
А вообще я сейчас в процессе написания довольно объемного обзора платформ для разработчиков с поддержкой камеры, но вряд ли он будет опубликован на этом ресурсе, так как из более чем 30 позиций у меня в наличии только 3 и обзор по большей части будет чисто теоретический.
Покажите практическое применение этой штуки в 21 веке?