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).
Планирую купить +34 Добавить в избранное +61 +85
+
avatar
+3
Жаль на плате нет RAM, то есть с нормальным разрешением не поработаешь…
Да и сенсор так себе…

Честно говоря мне Esp32-Cam по технике нравится больше, там PSRAM есть, хотя оно вероятно медленное… Так что нормальное разрешение тоже под вопросом…
+
avatar
  • Xylene
  • 13 мая 2019, 20:43
0
Esp32 как и Броадкомм в Малине — из серии на тебе боже что нам негоже. Без нормальных док, с изначально иной задумкой… esp32 лежит в столе — нет желания, потеря времени на проц, о котором забудят через год два
+
avatar
+3
esp8266 ни разу не забыли. и esp32 не забудут)
+
avatar
  • Xylene
  • 13 мая 2019, 20:56
0
И то и то классные для любителей, непригодные для промышленности (если ты не в Китае и не 5 млрд тираж)
+
avatar
+2
)) вы даже не представляете какие у esp8266 тиражи))
я знаю только по одной фирме 2 млн девайсов в год поставка в сша была)
+
avatar
  • Xylene
  • 13 мая 2019, 21:03
0
2 тысячи фирм по 2 млн девайсов, что не так? Вполне трезво оценил
+
avatar
+1
2x2 = 4) ну вроде раньше было)
и это только штаты, а есть ещё и сам китай

интересно бы знать статистику по stm32. для сравнения
+
avatar
  • Xylene
  • 13 мая 2019, 21:42
+1
Миллиард на Али лбителям «дошло быстро, еще не пробовал» :)
+
avatar
+1
))
ну надо ещё плюсануть народный мониторинг тогда)
+
avatar
  • Lvenok
  • 14 мая 2019, 14:39
0
Зачем людям ESP32, когда им esp8266 в большинстве случаев хватает…
+
avatar
0
К esp8266 камеру не подлючишь
+
avatar
0
Esp32-Cam убогая ерунда. Во-первых греется как печка, и начинает от этого жутко лагать. Во-вторых помехи на этой камере такие, словно она находится в другом районе и подключена фиговым киллометровым кабелем. Да ивообще жуть какая тормозная конструкция даже на разрешении 128p.
+
avatar
+5
непонятно предназначение этого поделия по такой цене
есть же всякие пироги + усб камеры с подобными разрешениями, где мощь намного больше и так же есть питон и интерфейсы

лучше бы занялись портированием питона и опенцв на соки, что в камерах стоят
+
avatar
0
согласен, правда соки что в камерах и без опенцв греются не хило)
+
avatar
0
дык как бы обработка 2мпх требует приличных ресурсов
китайцы никак не переделают дизайн, чтобы сок через резинку крепился к металлическому корпусу камеры
+
avatar
  • Sanja
  • 13 мая 2019, 20:22
+4
«Ардуино для машинного зрения» называется Nvidia Jetson Nano, ценник — $99

www.nvidia.com/en-gb/autonomous-machines/embedded-systems/jetson-nano/



Впрочем, у меня ребёнок проекты с opencv.org/ и Кинектом успешно крутил и на древнем, как говно мамонта, нетбуке Asus с 512Мб памяти и Атомом, вкрутив в него не менее древнюю вебкамеру Creative…
+
avatar
  • Xylene
  • 13 мая 2019, 20:55
-4
Как они считают гигафлопсы? Сферический FFT4096 по кругу что ли? А давайте к реальному миру подключим… и окажется, что Интел столько лет не зря хлеб ел, и на выскочек nvidia смотрит… ну как вы на детвору в садике. Набор одинаковых блоков как в cuda, или то, что так легко на фпга делается? Отличные примеры бесполезного железа для добычи МММ этого века биткойнов.
+
avatar
  • Sanja
  • 14 мая 2019, 00:57
+2
Единственное светлое, что Intel может предъявить миру по части машинного обучения, это Mobileye и Movidius, и те они не сами сделали, а купили готовыми.

Нвидию на рынке deep-learning accelerators они не догонят никогда, всё.
+
avatar
0
есть за 35 баксов в таком формате на атоме старом з83хх
+
avatar
  • Xylene
  • 13 мая 2019, 21:44
0
Где?
+
avatar
  • fps
  • 13 мая 2019, 20:26
+3
Какая-то несуразная цена для камеры с VGA разрешением без WIFi и корпуса.
+
avatar
  • Xylene
  • 13 мая 2019, 20:45
0
Вы себе представляете трудоемкость по колву операций задач AI? Там и 8*8 точек — вот реально самое то. Фулл ХД для распознавания никто не использует — нет смысла и нереально технически
+
avatar
-1
а если кроме AI надо иногда фоточку в full hd на флэшку сохранить, ой?
+
avatar
+1
Тогда поставьте рядом китайский видеорегистратор за 10 долларов и по мере необходимости замыкайте на нём контакты кнопки «Сохранить фото».
+
avatar
-1
и рюкзак с аккумулятором рядом)
+
avatar
+1
Для этого есть другие решения. Не надо микроскопом забивать гвозди.
+
avatar
0
не называйте это AI. AI не существует и нет даже предпосылок к появлению. а мы тут не маркетингом занимаемся
+
avatar
  • Xylene
  • 13 мая 2019, 20:37
0
Sipeed K210 с RISC-V не рассматривали? Там вроде есть заточка на машинное обучение
Хотя я, если честно, отношусь к новой моде крайне скептически
Ну и, учитывая текущий уровень даже не таких китов, а того, что ставят в Тесла, "
проекты:
1. Самонаводящаяся водяная/лазерная пушка" — выглядят не очень. Разве что водяная
+
avatar
0
Sipeed K210 с RISC-V не рассматривали?
Да, тоже интересны проекты на базе K210, прошивка OpenMV под них уже портирована.
1. Самонаводящаяся водяная/лазерная пушка" — выглядят не очень. Разве что водяная
Возможно, проекты носят чисто развлекательный характер.
+
avatar
0
Ты гля, сам буквально пару месяцев назад заморочился сделать прото-шилд для d1, а у них как раз такое готовое. Надо свой все ж доделать.
+
avatar
0
Только в прошлом месяце цеплял к Orange Pi PC Plus HD камеру по CSI.
Деньги сравнимые с сабжем, но вот возможности вообще даже близко не стояли рядом…
+
avatar
  • Xylene
  • 13 мая 2019, 21:38
0
9 баксов добавили бы и Интел был бы… но вчера… по 49
mySKU.me/blog/usa-stores/72573.html
Нельзя так по цене сравнивать и возможностям. Стм кушает меньше орандж пи, и тем более Атома, и лишен ненужных тормозов-помогаек в виде ОС
+
avatar
+2
Xylene, вот Вы в каждом коменте откликнулись, но совсем не информативно. Если у Вас есть опыт, может расскажите подробнее?

Например эта плата и ESP32 Cam. Кто лучше и хуже и в каких задачах. А также Jetson Nano и Intel Atom. Неужели от Атома есть толк?
+
avatar
  • Xylene
  • 13 мая 2019, 22:37
0
Я инженер, поэтому первый вопрос — а какая задача? По приколу — пойдет любая. Для надёжного распознавания, например, людей в касках — ничего из этого, хотя для х86 есть софт уже близко. А нет задачи — чего выбирать то, каждый что хочет берет. Хайп на deep learning крайне сомнительный, доказательство моего утверждения — где успешные проекты? Не считая продажи китов таким же мечтателям
+
avatar
0
Задачи простые, уже реализованные на более дорогих железках. 1. Распознавание лиц в помещениях. 2. Счётчик посетителей для помещений сложной формы. 3. Счётчики активности покупателей для ритейла. 4. Распознавание различных цифр.

Вернусь к вопросу о железе, чем обсуждаемая плата хороша, а ESP32 Can плоха? Почему Jetson Nano хуже Атома по вашему утверждению?
+
avatar
0
А что подойдёт для определения авто? По типу как у немцев в адаптивном матричном сегменте. То есть определять авто и мото и отключать часть светодиодов, чтобы не слепило их.
+
avatar
  • Parsek
  • 13 мая 2019, 22:47
+1
А какой практический смысл распознавать что в в видеопотоке есть лицо?
Так то прикольно, но как использовать не понимаю
+
avatar
  • Xylene
  • 13 мая 2019, 22:52
0
Я у товарища как то выпрашивал примеры. Ну например автоматизация ТБ на производстве, чтобы люди в касках все были. Какими правилами запрещено на каску сверху черный пакет надеть — неясно, равно как и два товарища на брудершафте как будут опознаны. В целом пациент скорее мертв имхо, примеры надуманны, толку мало. Не лучше полетов на Марс и прочего выжимания денег
+
avatar
0
Распознавание лиц постоянных клиентов в рюмочной;)
+
avatar
  • Sanja
  • 14 мая 2019, 01:05
+2
вот тут — habr.com/ru/company/croc/blog/449560/ — товарищ из КРОКа подробно расписывает, как их видеоаналитика дрючит людей на производстве за игнорирование СИЗ:



Здесь — больше: www.themtank.org/a-year-in-computer-vision#heading-detection

У меня на работе над ML в видео-аналитике десятки людей сейчас трудятся, заказчиков масса, больше всего — из ритейла крупного.
+
avatar
+1
Цифровые «мыльницы» умели распознавать наличие лица на видеопотоке в превью еще лет 15 назад.
+
avatar
0
разве arducam не круче будет? цена почти та же. за обзор спасибо.
+
avatar
0
разве arducam не круче будет? цена почти та же.
Arducam, насколько я понимаю, не имеет функций машинного зрения, ближайшие конкуренты это Pixy по цене в 60$ и платформы на базе k210 (Sipeed) — от 30$ на Aliexpress.
А вообще я сейчас в процессе написания довольно объемного обзора платформ для разработчиков с поддержкой камеры, но вряд ли он будет опубликован на этом ресурсе, так как из более чем 30 позиций у меня в наличии только 3 и обзор по большей части будет чисто теоретический.
+
avatar
0
точно. перепутал пикси с ардукам. помню ролик с цветными шариками, подумал это был ардукам… сорри.
+
avatar
  • sav13
  • 14 мая 2019, 05:46
+6
Взять медленный процессор, камеру, которую китаец даже в дешманскийй квадрик не поставит. И обрабатывать это все на интерпретаторе, чтобы совсем уж жизнь медом не казалось.

Покажите практическое применение этой штуки в 21 веке?
+
avatar
0
Есть интересная штука intel movidius. Существует compute stick и облачный вариант. Стоимость за стик меньше 100 долларов. Правда требуется комп и сама камера. Сценариев использования море, в том числе не только работа с камерой.
+
avatar
0
А вы пробовали? Есть первая и вторая версия, мне они показались очень медленными, легче взять что-то типо fire3 или обычной малинки. Кстати, работа связана с компьютерный зрением, есть все версии nvidia jetson и много ардуино подобных плат, fire3 показался самым мощным, а raspberry самым удобным в разворачивании кода. nvidia jetson и movidius, возможно, стоит использовать, если у вас мало предобработки классическим зрением и в основном работают нейронки, но, имхо, цена/производительность/портирование не оправданы. Ниша текущего устройства мне совсем не понятна, raspberry + вебка будут в разы, а скорее на порядок, производительнее и стоить будут меньше.