Компания
50,72
рейтинг
24 июня 2012 в 23:28

Разработка → Краткая история проекта OpenCV

Автор: Кирилл Корняков, лидер команды разработчиков в Itseez.

Привет, Хабр!

image

Этой записью мы открываем блог компании Itseez (от англ. it sees — «оно видит!»). Компания основана адептами компьютерного зрения, проработавшими в этой области более 13 лет, среди которых есть участники проекта OpenCV с первого дня его существования. Наша стратегия связана с разработкой технологий и продуктов в области компьютерного зрения под девизом ”Vision that works!”. Наши клиенты — Willow Garage, NVidia, Intel, Microsoft, несколько менее известных компаний и стартапов. На сегодняшний день коллектив Itseez — это команда из 40 инженеров и исследователей, многие сотрудники активно участвуют в образовательной деятельности: преподают в университете, публикуются в журналах и выступают на конференциях, а также проводят школы по компьютерному зрению.

На страницах блога мы бы хотели рассказывать о том, что интересного происходит в реальном и кибер-пространстве вокруг нас, а также в мире компьютерного зрения. Мы надеемся, что публикуемые материалы будут интересны людям, близким к машинному обучению, робототехнике, вычислительной фотографии, технологиям интеллектуального видеонаблюдения и дополненной реальности, а также к смежным направлениям Науки и Техники. Важной особенностью Itseez является то, что многие наши разработки являются open-source, поэтому мы постараемся подкреплять свои слова примерами реального кода.

Поскольку это первая запись в нашем блоге, хотелось бы поделиться чем-то интересным, поэтому мы расскажем о ключевом проекте компании — о разработке библиотеки алгоритмов компьютерного зрения OpenCV (о своем вкладе в ROS (Robot Operating System) и PCL (Point Cloud Library) мы пока умолчим). Подготовленный читатель, вероятно, удивится, задавшись вопросом: “Но ведь OpenCV разрабатывается Intel / Willow Garage!”, и будет прав, но лишь отчасти. Действительно, далеко не все знают, что большинство ведущих разработчиков OpenCV живут и трудятся в России, в городе Нижний Новгород, и являются сотрудниками компании Itseez. Поэтому, чтобы устранить недоразумения, первый пост мы решили посвятить краткому изложению истории OpenCV. Также, пользуясь случаем, в заключении мы поделимся некоторой инсайдерской информацией о будущем проекта.

Итак, если вы занимаетесь компьютерным зрением, то Вы, вероятно, слышали об OpenCV, полное название которой звучит как Open Source Computer Vision Library. Библиотека довольно популярна, на текущий момент имеет чуть более 5 миллионов скачиваний (не считая загрузок напрямую из репозитория), и недавно была предложена в качестве основы для стандарта Khronos по компьютерному зрению (http://www.khronos.org/vision).

С 2000 по 2008 год OpenCV разрабатывалась и поддерживалась в основном Intel, и Нижегородское отделение корпорации с самого начала играло ведущую роль в формировании облика библиотеки. В первые годы существования OpenCV стремительно расширялась вширь, обрастая базовой функциональностью, такой как основные структуры данных, алгоритмы обработки изображений (image processing), базовые алгоритмы компьютерного зрения, ввод и вывод изображений и видео. Уже в это время были реализованы алгоритмы детекции человеческих лиц (каскадный классификатор), поиска стереосоответствия, оптического потока и другие. Однако, в 2004 году Intel практически прекратил поддержку библиотеки. Многие участники проекта, которые к тому времени уже сложились как эксперты в области компьютерного зрения, не захотели переквалифицироваться, и покинули компанию. Фактически, именно так возник Itseez, деятельность которого в значительной степени базируется на опыте, полученном во время разработки OpenCV.

Второй мощный толчок к развитию проект получил с приходом компании Willow Garage, основной целью которой является создание персонального робота. OpenCV стала важной частью ROS (Robot Operating System), и на ее основе был создан ряд компонент для робота PR2, но об этом мы расскажем как-нибудь позже. Начало этого периода совпадает с переходом в Itseez из Intel Вадима Писаревского (aka OpenCV Tsar) в 2008 году. При поддержке Willow была сформирована команда, стартовавшая существенную переработку библиотеки. Именно следствием этих усилий стало то, что OpenCV приобрела С++ и Python API, модуль features2d, новую архитектуру, билд-систему на основе CMake, систему непрерывной интеграции на основе BuildBot, улучшенную документацию, прекрасные туториалы и массу других новшеств.

На сегодняшний день можно говорить уже о третьем значительном этапе в жизни библиотеки, наступившем с приходом NVidia. В 2010 году эта компания поддержала создание CUDA-оптимизированной версии библиотеки, что также было сделано инженерами компании Itseez. Первым публичным результатом стала реализация алгоритма стереосоответствия, способная в реальном времени производить обработку видео в FullHD-разрешении (1920х1080 пикселей). На сегодняшний день opencv_gpu — это полновесный модуль, нашедший применение во многих промышленных приложениях. Начиная с 2011 года список задач расширился, и Itseez совместно с NVidia начал разработку версии библиотеки под Android, c оптимизациями для платформы NVidia Tegra. OpenCV4Android пережила уже несколько релизов, и приобрела свое собственное сообщество пользователей. Кроме того, OpenCV обогатилась Java API (пока только для Android), встроенной системой тестирования производительности и рядом улучшений. Тем, кого могут заинтересовать результаты оптимизации OpenCV под GPU и мобильные процессоры, можно порекомендовать к прочтению недавно вышедшую статью “Real-time Computer Vision with OpenCV”, а также постеры с конференции GTC 2012: «Accelerating Computer Vision with Tegra GPU», «GPU Vision».



Таким образом, современный облик библиотеки является результатом продолжительной эволюции. Проект идет в ногу с быстро развивающейся областью компьютерного зрения. Сразу несколько компаний мирового уровня участвовали в формировании библиотеки, и еще рано говорить о завершении её разработки. Недавно проект приобрел новый трекер задач, активность работ лишь набирает обороты, недавно состоялась юбилейная 5M загрузка, и мы надеемся, что у нас будет масса интересного материала, чтобы поделиться с вами.

Теперь немного информации для активных пользователей OpenCV. Во-первых, 4 Июня вышел релиз 2.4.1, в основном несущий исправления для 2.4.0 (особое спасибо Андрею Камаеву и Александру Шишкову!). Во-вторых, в скором времени планируется запуск собственного сайта библиотеки, который будет размещен по адресу opencv.org (сейчас работает редирект). Этот сайт будет особенно полезен тем, кто только начинает работать с библиотекой. Кроме того, будет развернут собственный Q&A форум на StackOverflow-like движке. В-третьих, идет работа над созданием OpenCV Foundation — некоммерческого фонда, который позволил бы собирать средства на развитие библиотеки и систематизировать ее разработку. Для разработчиков это означает еще больше функциональности, документации, сэмплов и производительности! Мы очень надеемся, что все это случится уже в этом году, постараемся держать всех в курсе!

Напоследок хотим пригласить всех ознакомиться c визуализацией активности в репозитории во время работ над OpenCV 2.4.0 (смотреть в максимальном разрешении!).



Следующий крупный релиз OpenCV 2.5 намечен на 1 ноября, и работа идет полным ходом!
Автор: @SeninAndrew

Комментарии (29)

  • +2
    ВМК! =)
  • +2
    Какая красивая последняя визуализация. Чем делали?
  • +3
    Огромное спасибо за библиотеку! Помогала множество раз в самых разных ситуаций, как в учёбе, так и в хобби и в работе!
  • +3
    С 2000 по 2008 год OpenCV разрабатывалась и поддерживалась в основном Intel, и Нижегородское отделение корпорации с самого начала играло ведущую роль в формировании облика библиотеки.

    Пафоса много, а информации мало. Какую роль-то? Как всё начиналось, кто придумал, как в Intel попали, и т.п.? Копирайтеров читать не очень интересно.
    • +1
      Нижегородское отделение играло ведущую роль потому, что там находилось большинство разработчиков. Курировал эту активность со стороны Интела (а затем и со стороны Willow) Гарри Брадски (https://twitter.com/#!/grbradsk). На сколько я знаю, он же был инициатором создания библиотеки в Интеле. Нижегородский Интел начался с покупки компании NSTL (Nizhniy Software Laboratory). Оттуда пришли многие разработчики будущей OpenCV.
  • +1
    Ребята, спасибо Вам, Вы — молодцы!
    Сам недавно наткнулся на вашу библиотеку, сразу зачесались руки покодить на питоне, еще и друзьям ссылку скинул, что занимаются микроконтроллерами и на роботов облизываются…
  • +1
    Спасибо за OpenCV, всегда очень радует!
    Только одна маленькая просьба, сделайте единую документацию, а то я как-то всегда попадаю с гугла на разные версии, то 2.0, то 2.3, то 1.х… Сейчас гугл первой строкой выдает 2.1, но на первой же странице есть и другие.
    • +1
      Официальная документация находится здесь: docs.opencv.org/. По этому адресу всегда доступна документация по последней версии OpenCV — это как раз то, что вам нужно.
      • 0
        Также на этом сайте доступна документация к нескольким последним релизам, например, docs.opencv.org/2.3/ или docs.opencv.org/2.4. Возможно вас заинтересует еще эта ссылка — docs.opencv.org/trunk. Это самая последняя версия документации, автоматически обновляется каждый день.
  • +1
    Мне вот всегда было интересно а по какой причине intel отказался от данной библиотеки? И ещё удивляет то, что intel отдал её под open source, да ещё и под лицензией bsd. Зачем тогда intel брался за этот проект и 4 года его финансировал, если они не получили никакой коммерческой выгоды?
    • –1
      Вы ее вообще видели? Отвратительный код, отвратительный API, устаревшие алгоритмы…
      • +2
        Было бы здорово, если бы вы более развернуто описали ваши замечания. Новых алгоритмов в какой именно области компьютерного зрения вам не хватает в библиотеке? Почему вам не нравится API и какой именно API (С,C++,Python,Java)? Какие конкретно замечания есть по качеству кода? Мы открыты к критике и попробуем учесть ваши замечания в будущих версиях библиотеки.
        • 0
          Я отвечал про ту версию библиотеки от которой отказалась Intel… Сейчас то вы ее более менее отрефакторили вроде…

          Хотя как сказать. Вот зачем требовалось тащить сотню сторонних библиотек в проект? Теперь OpenCV превратился из маленькой либы в монструозный проект.
          • 0
            OpenCV хоть и большая, но модульная. И в недалеком будущем она станет еще более модульной. Прямо сейчас OpenCV включает более 15 модулей. Если вашему приложению нужна лишь часть, вы берете только их, и ваш бинарник получается относительно скромного размера. Это важно например для мобильных ОС, и мы сейчас этим заняты отдельно. Если вам наоборот, не важен размер, а важна простота использования — недавно был создан специальный модуль opencv_world, который позволяет утянуть сразу все зависимости.

            В будущем планируется еще более мелко разбивать модули. Например, всем известный opencv_highgui скорее всего разлетится на несколько модулей: GUI, ввод/вывод видео и ввод/вывод изображений. Соответственно, приложение сможет брать только те части, которые ему нужны. Также нужно отметить, что зависимость от многих библиотек (Eigen, TBB и т.д.) является опциональной.

            Короче говоря, команда старается, работа кипит. Будут предложения, добро пожаловать на форум для разработчиков!
    • +2
      От библиотеки Intel не отказался, он подарил ей жизнь, а себе — кучу пользователей, которые работая с ней, с большой вероятностью захотят проапгрейдить свое железо, чтобы оно обеспечивало достойную производительность для очень привередливых к cpu алгоритмов компьютерного зрения.
  • 0
    Ну ооочень краткая история :(
    Да и пробел как в именах, так и во всей истории огромный, к сожалению
    • 0
      Если вам и вправду интересно, то лучше спросить какие конкретно части библиотеки вам любопытны. К сожалению всех авторов алгоритмов не упомянешь… Вот например несколько заброшенный список контрибьюторов: code.opencv.org/projects/opencv/wiki/Contributors. Еще можно почитать лог SVN :)

      Ну а если серьезно, то в планах стоит подробно рассказать, как OpenCV приобретала CUDA-оптимизации и портировалась под Android. Еще скорее всего будет рассказано про QA и непрерывную интеграцию в проекте и про то, каким образом обеспечивалась кросс-платформенность.
      • 0
        Переезд на GitHub в планах есть?
        • 0
          Да, по плану до конца лета мы перейдем на git.
          • 0
            Но на github будет скорее всего лишь зеркало, чтобы удобнее было делать pull requests вместо текущей модели посылки патчей.
            • 0
              а какой смысл усложнять процесс? я перевел пару проектов с GC на GH полностью, и не жалею об этом.
  • 0
    Вы — молодцы, снимаю шляпу.
    Сам более 5 лет в теме, активно ботаю тему с допреалом (детекция натуральных особеностей и 3д реконструкцией). И начинал все изучение как раз с opencv, и до сих пор использую как быстрый и удобный способ проверки новых теорий и идей!
    Очень вам плагодарен.

    ps: Если смог бы вам как-то пригодится, обращайтесь! Быз бы польщён!
  • 0
    Спасибо.

    Мы были бы рады помощи :). Можно исправить какую-нибудь открытую багу (http://code.opencv.org/projects/opencv/issues) или послать патч с нереализованным алгоритмом. И еще у нас есть открытые вакансии: http://itseez.com/index.php?page=jobs
  • 0
    Не знаю как другие части системы, но стереоматчингом им не гордиться надо, а стыдиться. «Алгоритм Коногли», который там заимплементирован — это такая средневековая поделка, что плакать хочется.

    • 0
      На самом деле в библиотеке реализовано несколько алгоритмов поиска стереосоответствия, можете ознакомиться в документации. Среди них есть и качественные и очень современные алгоритмы, жаль слишком медленные. Однако нужно заметить, что если вы хотитите получать карту глубин в реальном времени на разрешении 1080p, то ничего кроме классического block-matching вам не поможет. Если есть идеи, поделитесь пожалуйста! Да и, признаться, с появлением Kinect актуальными стали совсем иные алгоритмы и проблемы, смотри например Kinect Fusion.
  • 0
    Спасибо большое ITseez и OpenCV за модуль для Python cv2 и мой дипломный проект, его немного использующий.
  • 0
    А за счет чего вы зарабатываете? Библиотека вроде открытая.
    • 0
      Библиотека открытая, но есть компании, которые поддерживают ее разработку (сейчас это Willow Garage и NVidia). Плюс, есть собственные продукты. Плюс, проекты, не связанные непосредственно с OpenCV. Надеюсь, обо всем этом мы еще расскажем в блоге подробнее.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка