Один из самых распространённых вопросов которые задают мне коллеги и заказчики – не имеет ни малейшего отношения к ComputerVision. Ну, как не имеет. Без этого вопроса большинство задач ComputerVision решить нельзя. Но вопрос этот не решается в удобном кабинете, его не преподают на курсах. Для его решения требуется тыкать в железо, много экспериментировать, лазить по стремянкам с дрелью, и.т.д., и.т.п.
И, скажу честно, зачастую ответить на этот вопрос более чем общими рекомендациями не могу. Собственно вопрос даже не один, а их несколько:
- Какую камеру выбрать?
- Как установить камеру?
- Что ещё нужно сделать чтобы распознавать?
Попробую рассказать подробнее, какие общие идеи должны возникать при установка камер, при их выборе, при компоновке кадра, как такие задачи решают на практике, с чем мы сталкивались, и.т.д.
Как люди делают, общие идеи
При ответе на вопрос я всегда стараюсь объяснить несколько очень важных моментов:
- Процесс установки камер очень часто должен рассматриваться как часть вашего продукта. Нельзя мыслить категорией “ну, как-нибудь прикрепить камеру”
- Процесс установки камеры не должен разрабатывать программист. Даже дизайнер справиться лучше. А в идеале – он должен разрабатываться на стыке аппаратной части и управления процессами. Скорее всего его не логично разрабатывать на стадии PoC|Pilot, но его надо закладывать.
- Установка камеры это не просто. Фирмы которые умеют это делать хорошо и массово – называются “интеграторы”. Зачастую, стоимость установки и интеграции системы – сравнимы по стоимости с системой.
Мы достаточно часто наталкивались на все эти грабли. И у себя в проектах, и в проектах заказчиков. Про один из примеров нашего косяка я очень люблю рассказывать:
Году в 2016 мы сделали хорошее распознавание автомобильных номеров. Оно работало на достаточно плохих изображениях. Все алгоритмы, которые были в массовой продаже, были очень требовательны к освещению и к камере. Мы запартнёрились с несколькими фирмами которые устанавливают шлагбаумы на въезд в дворы и предприятия. Была идея использовать распознавание номеров там где оно было не рентабельно раньше. И, в большинстве случаев, оно работало неплохо (в разы лучше существующих систем). Только вот часть кадров (особенно ночью) была ужасна:
Где-то 5-10% кадров просто не распознавалось. Когда мы стали разбираться с тем, как сделать достаточное качество, получилось что надо ощутимо повысить качество установки камеры. Выбирать более крутые точки подвеса. Делать более хорошее освещение.
И что самое главное – камеру уже нельзя было лепить как попало. Нужно было проверить несколько точек подвеса, оптимизировать крепление, чтобы наклон был лучше.
А все это приводило к значительному удорожанию процесса установки => была минимальная разница в цене с уже существующими системами.
Общие идеи выборка камеры
На вопрос: “какую камеру брать“, – есть только один корректный ответ. “Ту на которую вам хватит бюджета”. Каждый год выходят новые матрицы. Под каждую новую матрицу есть десяток обвязок которые используют её с разной эффективностью. Под каждую из обвязок может быть по-разному сконфигурированный софт. Это норма когда два разных производителя используя одинаковую аппаратную платформу имеют разные картинки.
И, как вы понимаете, от модели к модели – все меняется принципиально.
Мне кажется, что когда вам нужно выбрать камеру – есть только один правильный подход – купить 3-4 подходящих камеры и сравнить. Иногда, когда вы можете убедить продавца в том что купите много камер, то можно договориться взять несколько экземпляров на тестирование и сравнить.
Можно ли выбрать камеру совсем без экспериментов? В трех случаях:
- У вас есть большой опыт и вы можете угадать. Или вы знаете камеру которая хорошо работает в похожих условиях.
- У вас нет большого требования на качество. Последние 2-3 года камеры становятся лучше и лучше. Сегодня, зачастую, любая средняя камера даёт неплохое качество из коробки. По нашему опыту по этому пути можно пойти в 60% случаев.
- У вас нет критериев на бюджет – берёте самую дорогую в вашем классе, от какого-нибудь Basler|Point Grey
Что ещё нужно помнить при выборе
Подключение. Чтобы сбросить данные с камеры на устройство обработки обычно используются следующие подходы:
- Сетевое подключение. Проблема сетевого подключения камеры – задержки. Зачастую это может быть несколько секунд. Если WiFi – десяток секунд. Не всегда такой скорости обработки достаточно. Зато этот вариант предполагает что камера отдельный модуль. Наиболее стабильный подход.
- Камера подключается по какому-то стандартному интерфейсу коннектором USB/MPI CSI/ CSI/camera link/GigE и.т.д. Если у вас есть коннектор – система всегда нестабильна. Она дрожит, отваливается, если USB, то регулярная проблема с драйверами. Но, иногда, эта единственный вариант, особенно в пилотах. Плюс по сравнению с сетевым подключением – быстрее доступ к камере.
- Камера распаяна на плату/нет промежуточных драйверов. По задержкам это идеальный вариант, но обычно самый сложный с технической стороны.
Скорее всего ваше подключение будет определяться вашим User-case. Если вычислитель в одном месте, а камера в другом – надо точно делать сетевые подключения. Если вы хотите все делать на Jetson, то при малом бюджете сделаете CSI MPI или USB, а при большом – PCI-e плату своей разработки.
Пред-обработка. Не забывайте, что на разных камерах есть разная предобработка. Авточувствителньость, автобаланс белого, автохдр, автовыдержка, автофокус, и.т.д. Где-то можно включать-выключать, где-то настраивать параметры, а где-то все доступно только из коробки. Есть задачи на которых желательно всё отключать. Например:
- Распознавание на конвейерах. Освещение обычно фиксировано, лучше всего один раз настроить и все.
- Распознавание автономеров. На старых системах ставился мощный ИК-прожектор, который все пересвечивал.
- Мы так делали при распознавании радужки. Опять же, из-за того что ИК подсветка была настроена.
- Иногда когда у камеры есть день/ночь режим – в ночном все фиксируется, а в дневном делается автоматически.
Но в ряде задач, когда внешние условия динамические – лучше оставлять умные режимы, или немного скорректировать их в зависимости от предпочтений. Но, если, например, на камере есть внутренний HDR – вы мало чего сами сделаете.
Оптика. Оптика завязана на подвес и вашу задачу. Где-то за счёт оптики можно вытянуть неправильны подвес. Где-то единственная конфигурация рабочая состоит и из подвеса и из оптики. Из советов могу дать:
- На некоторых камерах есть сменные объективы, там можно экспериментировать взяв несколько на пробу.
- Если совсем не понятно по характеристикам – можно брать со сменным фокусом. Это неудобно в продакшне, но для отладки норм.
- Не забывайте, что если вам важна геометрия – камеры нужно калибровать. Иначе бочка искажает. Но при андисторте вы теряете часть информации. Не стоит рассчитывать на высокое качество распознавания андисторшенного лица.
Параметры матрицы, качество оптической схемы. Физика и классические подходы все ещё решают. Размер пикселя определяет светочувствительность и сигнал/шум. Более дорогой объектив может иметь выше резкость или лучше светочувствительность. Иногда это стоит учитывать.
Общие идеи подвеса камеры
Так же, как и с камерой есть простой ответ “берите подороже”, с подвеской есть ответ “вешайте чтобы было лучше все видно”. Но… Как всегда это невозможно просто так:)
Какие есть мысли и лайвхаки:
- Попробуйте повесить сами, чтобы понять какая картинка вам нужна. Желательно попробовать повесить на месте где камера должна работать. Это очень сильно помогает погрузиться в проблему, правда.
- Сделайте инструкцию. Но помните, инструкцию из полотна текста никто не читает
- Добавьте схематическое описание того как вешать
- Добавьте фотографии примеров того что должно выходить (с аналогичных установок)
- Добавьте видео-урок установки
- Сделайте чеклист
- На первые установки обеспечьте связь для установщика, чтобы он смог уточнить вопросы
- Если у вас требуется монтаж проводов – наймите монтажника/электрика, чтобы заранее продумать возможные схемы подключения
Не забывайте работать с возможными точками установки для разных задач:
- Если вам нужен трекинг – то камера поставленная на потолок позволяет не решать задачу пересечения людей. Широкий объектив позволяет закрыть максимум площади.
- Если вы трекаете людей – то определитесь как система должна работать в случае если человек подойдёт в упор и обрежется. Либо не допускайте такой установки
- Подумайте чтобы солнце не искажало вам картинку. Солнце в камеру это плохо.
- Если вы хотите распознавать лица – то лучше ставить камеры на уровне лиц. Камеры поставленные сверху будут перекрываться кепками и шляпками, камеры поставленные снизу – сильно искажать геометрию. Либо, надо ставить камеру вдали сверху и направлять телевик (так мы делали для радужки тоже, так же делается для автономеров).
Но, все что написанное – это лишь немного опыта и здравого смысла. В реальности, под каждую задачу, список косяков и их обхода – свой.
Общие идеи по освещению
Освещение – это очень важно. Освещением можно как всё вытащить так все и испортить. Несколько напоминаний:
- Учитывайте углы отражения. Если ваш осветитель вокруг камеры, то блик придёт от любой отражающей поверхности. Очень часто мы стараемся разносить осветители, чтобы не было обратного блика
- Учитывайте размер источника. Матовый протяженный источник даёт более гладкие блики, не бликует на коже
- Иногда поляризаторы имеют смысл. Они не только могут убрать блики, но работа в поляризованном свете может значительно ослабить внешние источники, подчеркнув осветитель. Например мы так делали просветку для вен рук. Так же можно значительно погасить блики от дороги.
- Учитывайте внешнее освещение. Засветка солнцем или фарами в объектив – не очень хорошо. А засветку теми же фарами можно избежать.
- Спектр света это тоже очень интересно. Как и фильтры на камере.
Общие идеи по установке
И, пара мыслей на последок. Когда планируете куда ставить камеру учитывайте разводку проводов. Например, будучи студентом и аспирантом – я достаточно долго занимался телескопами. Сделать проводку чтобы она выдерживала многочасовое кручение каждый день – реально. Это касается и электричества и проводов с данными. Не надо делать вот так(только если вы не делаете глубокое демо):
Следите за контактами. Сколько нервов нам стоили шатающиеся USB провода – не пересчитать.
Если хотите подключать камеры по Wi-FI, то выбирайте роутер и проводите нагрузочное тестирование. WiFi вообще даёт очень много боли. На выставках – особенно. Там лучше сделать все по проводам.
Попробовал записать видео по этому посту, если удобнее воспринимать инфу в таком виде:
И ловите ещё одно небольшое видео по теме о том как работают 3д камеры. Тут я тему 3Д вообще не задевал, но это тоже достаточно важный поинт.
Можно ли спеку и стоимость камеры что в прод пошла? (первая на видео)
К сожалению, в открытом пространстве этого мы не публиковали, так что не могу:)
Я рассказывал только ту часть информации про них, которую мы везде проговариваем.
Могу лишь добавить, что оно очень приближенно по характеристикам к среднестатистической Wi-Fi камере топового сегмента, только сильно более удобный конструктив для нашего кейса.