Как поставить камеры для Computer Vision

Один из самых распространённых вопросов которые задают мне коллеги и заказчики – не имеет ни малейшего отношения к ComputerVision. Ну, как не имеет. Без этого вопроса большинство задач ComputerVision решить нельзя. Но вопрос этот не решается в удобном кабинете, его не преподают на курсах. Для его решения требуется тыкать в железо, много экспериментировать, лазить по стремянкам с дрелью, и.т.д., и.т.п.

И, скажу честно, зачастую ответить на этот вопрос более чем общими рекомендациями не могу. Собственно вопрос даже не один, а их несколько:

  • Какую камеру выбрать?
  • Как установить камеру?
  • Что ещё нужно сделать чтобы распознавать?
камер и подсветки мало не бывает

Попробую рассказать подробнее, какие общие идеи должны возникать при установка камер, при их выборе, при компоновке кадра, как такие задачи решают на практике, с чем мы сталкивались, и.т.д.

Как люди делают, общие идеи

При ответе на вопрос я всегда стараюсь объяснить несколько очень важных моментов:

  • Процесс установки камер очень часто должен рассматриваться как часть вашего продукта. Нельзя мыслить категорией “ну, как-нибудь прикрепить камеру”
  • Процесс установки камеры не должен разрабатывать программист. Даже дизайнер справиться лучше. А в идеале – он должен разрабатываться на стыке аппаратной части и управления процессами. Скорее всего его не логично разрабатывать на стадии PoC|Pilot, но его надо закладывать.
  • Установка камеры это не просто. Фирмы которые умеют это делать хорошо и массово – называются “интеграторы”. Зачастую, стоимость установки и интеграции системы – сравнимы по стоимости с системой.

Мы достаточно часто наталкивались на все эти грабли. И у себя в проектах, и в проектах заказчиков. Про один из примеров нашего косяка я очень люблю рассказывать:

Году в 2016 мы сделали хорошее распознавание автомобильных номеров. Оно работало на достаточно плохих изображениях. Все алгоритмы, которые были в массовой продаже, были очень требовательны к освещению и к камере. Мы запартнёрились с несколькими фирмами которые устанавливают шлагбаумы на въезд в дворы и предприятия. Была идея использовать распознавание номеров там где оно было не рентабельно раньше. И, в большинстве случаев, оно работало неплохо (в разы лучше существующих систем). Только вот часть кадров (особенно ночью) была ужасна:

Где-то 5-10% кадров просто не распознавалось. Когда мы стали разбираться с тем, как сделать достаточное качество, получилось что надо ощутимо повысить качество установки камеры. Выбирать более крутые точки подвеса. Делать более хорошее освещение.
И что самое главное – камеру уже нельзя было лепить как попало. Нужно было проверить несколько точек подвеса, оптимизировать крепление, чтобы наклон был лучше.
А все это приводило к значительному удорожанию процесса установки => была минимальная разница в цене с уже существующими системами.

Общие идеи выборка камеры

На вопрос: “какую камеру брать“, – есть только один корректный ответ. “Ту на которую вам хватит бюджета”. Каждый год выходят новые матрицы. Под каждую новую матрицу есть десяток обвязок которые используют её с разной эффективностью. Под каждую из обвязок может быть по-разному сконфигурированный софт. Это норма когда два разных производителя используя одинаковую аппаратную платформу имеют разные картинки.
И, как вы понимаете, от модели к модели – все меняется принципиально.

Мне кажется, что когда вам нужно выбрать камеру – есть только один правильный подход – купить 3-4 подходящих камеры и сравнить. Иногда, когда вы можете убедить продавца в том что купите много камер, то можно договориться взять несколько экземпляров на тестирование и сравнить.

Можно ли выбрать камеру совсем без экспериментов? В трех случаях:

  1. У вас есть большой опыт и вы можете угадать. Или вы знаете камеру которая хорошо работает в похожих условиях.
  2. У вас нет большого требования на качество. Последние 2-3 года камеры становятся лучше и лучше. Сегодня, зачастую, любая средняя камера даёт неплохое качество из коробки. По нашему опыту по этому пути можно пойти в 60% случаев.
  3. У вас нет критериев на бюджет – берёте самую дорогую в вашем классе, от какого-нибудь Basler|Point Grey

Что ещё нужно помнить при выборе

Подключение. Чтобы сбросить данные с камеры на устройство обработки обычно используются следующие подходы:

  • Сетевое подключение. Проблема сетевого подключения камеры – задержки. Зачастую это может быть несколько секунд. Если WiFi – десяток секунд. Не всегда такой скорости обработки достаточно. Зато этот вариант предполагает что камера отдельный модуль. Наиболее стабильный подход.
  • Камера подключается по какому-то стандартному интерфейсу коннектором USB/MPI CSI/ CSI/camera link/GigE и.т.д. Если у вас есть коннектор – система всегда нестабильна. Она дрожит, отваливается, если USB, то регулярная проблема с драйверами. Но, иногда, эта единственный вариант, особенно в пилотах. Плюс по сравнению с сетевым подключением – быстрее доступ к камере.
  • Камера распаяна на плату/нет промежуточных драйверов. По задержкам это идеальный вариант, но обычно самый сложный с технической стороны.
Тут мы собирали на USB, это был глубоко демо образец
А тут была разводка на плату

Скорее всего ваше подключение будет определяться вашим User-case. Если вычислитель в одном месте, а камера в другом – надо точно делать сетевые подключения. Если вы хотите все делать на Jetson, то при малом бюджете сделаете CSI MPI или USB, а при большом – PCI-e плату своей разработки.

Пред-обработка. Не забывайте, что на разных камерах есть разная предобработка. Авточувствителньость, автобаланс белого, автохдр, автовыдержка, автофокус, и.т.д. Где-то можно включать-выключать, где-то настраивать параметры, а где-то все доступно только из коробки. Есть задачи на которых желательно всё отключать. Например:

  • Распознавание на конвейерах. Освещение обычно фиксировано, лучше всего один раз настроить и все.
  • Распознавание автономеров. На старых системах ставился мощный ИК-прожектор, который все пересвечивал.
  • Мы так делали при распознавании радужки. Опять же, из-за того что ИК подсветка была настроена.
  • Иногда когда у камеры есть день/ночь режим – в ночном все фиксируется, а в дневном делается автоматически.

Но в ряде задач, когда внешние условия динамические – лучше оставлять умные режимы, или немного скорректировать их в зависимости от предпочтений. Но, если, например, на камере есть внутренний HDR – вы мало чего сами сделаете.

Оптика. Оптика завязана на подвес и вашу задачу. Где-то за счёт оптики можно вытянуть неправильны подвес. Где-то единственная конфигурация рабочая состоит и из подвеса и из оптики. Из советов могу дать:

  • На некоторых камерах есть сменные объективы, там можно экспериментировать взяв несколько на пробу.
  • Если совсем не понятно по характеристикам – можно брать со сменным фокусом. Это неудобно в продакшне, но для отладки норм.
  • Не забывайте, что если вам важна геометрия – камеры нужно калибровать. Иначе бочка искажает. Но при андисторте вы теряете часть информации. Не стоит рассчитывать на высокое качество распознавания андисторшенного лица.

Параметры матрицы, качество оптической схемы. Физика и классические подходы все ещё решают. Размер пикселя определяет светочувствительность и сигнал/шум. Более дорогой объектив может иметь выше резкость или лучше светочувствительность. Иногда это стоит учитывать.

Общие идеи подвеса камеры

Так же, как и с камерой есть простой ответ “берите подороже”, с подвеской есть ответ “вешайте чтобы было лучше все видно”. Но… Как всегда это невозможно просто так:)

Какие есть мысли и лайвхаки:

  • Попробуйте повесить сами, чтобы понять какая картинка вам нужна. Желательно попробовать повесить на месте где камера должна работать. Это очень сильно помогает погрузиться в проблему, правда.
  • Сделайте инструкцию. Но помните, инструкцию из полотна текста никто не читает
    • Добавьте схематическое описание того как вешать
    • Добавьте фотографии примеров того что должно выходить (с аналогичных установок)
    • Добавьте видео-урок установки
    • Сделайте чеклист
    • На первые установки обеспечьте связь для установщика, чтобы он смог уточнить вопросы
  • Если у вас требуется монтаж проводов – наймите монтажника/электрика, чтобы заранее продумать возможные схемы подключения

Не забывайте работать с возможными точками установки для разных задач:

  • Если вам нужен трекинг – то камера поставленная на потолок позволяет не решать задачу пересечения людей. Широкий объектив позволяет закрыть максимум площади.
  • Если вы трекаете людей – то определитесь как система должна работать в случае если человек подойдёт в упор и обрежется. Либо не допускайте такой установки
  • Подумайте чтобы солнце не искажало вам картинку. Солнце в камеру это плохо.
  • Если вы хотите распознавать лица – то лучше ставить камеры на уровне лиц. Камеры поставленные сверху будут перекрываться кепками и шляпками, камеры поставленные снизу – сильно искажать геометрию. Либо, надо ставить камеру вдали сверху и направлять телевик (так мы делали для радужки тоже, так же делается для автономеров).

Но, все что написанное – это лишь немного опыта и здравого смысла. В реальности, под каждую задачу, список косяков и их обхода – свой.

Общие идеи по освещению

Освещение – это очень важно. Освещением можно как всё вытащить так все и испортить. Несколько напоминаний:

  • Учитывайте углы отражения. Если ваш осветитель вокруг камеры, то блик придёт от любой отражающей поверхности. Очень часто мы стараемся разносить осветители, чтобы не было обратного блика
  • Учитывайте размер источника. Матовый протяженный источник даёт более гладкие блики, не бликует на коже
  • Иногда поляризаторы имеют смысл. Они не только могут убрать блики, но работа в поляризованном свете может значительно ослабить внешние источники, подчеркнув осветитель. Например мы так делали просветку для вен рук. Так же можно значительно погасить блики от дороги.
  • Учитывайте внешнее освещение. Засветка солнцем или фарами в объектив – не очень хорошо. А засветку теми же фарами можно избежать.
  • Спектр света это тоже очень интересно. Как и фильтры на камере.
Вот так выглядят разнесённые осветители, например

Общие идеи по установке

И, пара мыслей на последок. Когда планируете куда ставить камеру учитывайте разводку проводов. Например, будучи студентом и аспирантом – я достаточно долго занимался телескопами. Сделать проводку чтобы она выдерживала многочасовое кручение каждый день – реально. Это касается и электричества и проводов с данными. Не надо делать вот так(только если вы не делаете глубокое демо):

Следите за контактами. Сколько нервов нам стоили шатающиеся USB провода – не пересчитать.

Если хотите подключать камеры по Wi-FI, то выбирайте роутер и проводите нагрузочное тестирование. WiFi вообще даёт очень много боли. На выставках – особенно. Там лучше сделать все по проводам.

Попробовал записать видео по этому посту, если удобнее воспринимать инфу в таком виде:

И ловите ещё одно небольшое видео по теме о том как работают 3д камеры. Тут я тему 3Д вообще не задевал, но это тоже достаточно важный поинт.

2 thoughts on “Как поставить камеры для Computer Vision”

  1. Можно ли спеку и стоимость камеры что в прод пошла? (первая на видео)

    1. К сожалению, в открытом пространстве этого мы не публиковали, так что не могу:)
      Я рассказывал только ту часть информации про них, которую мы везде проговариваем.
      Могу лишь добавить, что оно очень приближенно по характеристикам к среднестатистической Wi-Fi камере топового сегмента, только сильно более удобный конструктив для нашего кейса.

Comments are closed.