Библиотека компьютерного зрения CCV 0.6 с новым классификатором изображений



    Для свободной кроссплатформенной библиотеки компьютерного зрения CCV разработан новый классификатор изображений, обученный в свёрточной нейроной сети. Впервые классификатор такого уровня и модели (детектор лиц, детектор автомобилей, детектор пешеходов) выпущены под свободной лицензией.

    Один из разработчиков CCV, китайский программист Лю Лю (Liu Liu) пишет, что за последние полтора года произошёл настоящий прорыв в алгоритмах глубокого обучения, а особенно — в области классификации изображений на основе свёрточных нейронных сетей. «Для библиотеки, рассчитанной на работу в самых современных реализациях, было бы обидно не реализовать грамотный классификатор изображений после более года прорывных исследований, опубликованных на эту тему», — говорит он. Тем более, что среди свободных библиотек есть совсем немного реализаций такого классификатора: Caffe, OverFeat и cuda-convnet, да к тому же все они под научными лицензиями. Разумеется, ситуацию нужно было исправлять.

    В результате, Лю Лю потратил пять месяцев — и всё-таки сделал классификатор достойного качества ccv_convnet.c, который включён в комплект новой версии CCV 0.6.

    Классификатор обучали на наборе данных ILSVRC 2010 из 1000 классов, он демонстрирует вероятность ошибки top-1 36,83% и вероятность ошибки top-5 16,25%, что близко к проприетарным классификаторам высшего класса (лучший в мире классификатор Clarifai показал на наборе ILSVRC 2013 вероятность ошибки top-5 11,19%).

    Классифактор и сопутствующие модели опубликованы под международной лицензией Creative Commons Attribution 4.0.

    Испытать классификатор в работе можно на сайте DoComputersDream.org и через RESTful-интерфейс.
    Поддержать автора
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 13

      +3
      Кто будет собирать по этой инструкции — перед «cd serve/ && make && ./ccv» надо зайти в папку lib/ и сделать там "./configure"
        +5
        Почему бы не встроить этот классификатор в OpenCV? Зачем писать свой велосипед?
          +1
          OpenCV — уж больно развесист. Они мечутся из стороны в сторону, то классификаторы новые добавляют, то поддержку для Closure. А на исправление старых багов или обновление версии FLANN, например, руки не доходят.

          Больше классификаторов хороших и разных!
            0
            Если вы видите какие-то баги или хотите добавить какую-то фичу в OpenCV, то всегда можете сделать Pull Request со своим вариантом решения. Это ведь открытый проект.

            з.ы. И советую собирать OpenCV из ветки 2.4.
              0
              Насколько я помню, в OpenCV есть сразу два интерфейса: на Си++ и на обычном Си. А как они соотносятся по функционалу?
                +1
                На конференции icvs 2013 в презентации посвященной OpenCV, интерфейсы для ANSI C были объявлены устаревшими. Но это не означает, что в следующих релизах этих интерфейсов не будет. Вообще с API штука какая, все новые фичи в OpenCV сейчас имплементируются на C++, а обертки для Java и Python генерируются автоматически. Для ANSI C API такого автогенератора на данный момент нет(насколько мне известно), поэтому это API на данный момент отличается в худшую сторону от C++ в плане новых фич. Но вообще говоря такой врапер иметь полезно(в некоторых случаях проще организовать совместимость с библиотекой посредством ANSI C, например в каких-то встраиваемых системах), поэтому если у кого-то найдется желание помочь сообществу и добавить поддержку такого автогенератора, то это было-бы отлично.
          –2
          Обалдеть!
          И очень хорошо, что классификатор отдельно идет, вне этого монстра под жутким названием OpenCV.
            0
            А вы не могли бы более развернуто описать свои замечания к OpenCV?
              –1
              Она совершенно неюниксвейная. Хороший пример того, как нельзя программировать. Хорошая библиотека должна быть легковесной. И быстрой. OpenCV же — неуклюжий урод.

              // хм, странно: я думал, БХ заддосили окончательно, а оно, к сожалению, еще живо…
                0
                Эмм… вы вообще OpenCV видели?:)
                1) OpenCV хоть и довольно большая библиотека, но модульная, а в будущем может стать еще модульней. Поэтому нет необходимости таскать за собой всё, что там есть — берется только необходимые модули для решения конкретной задачи.
                2) Насчет скорости, посмотрите внутрь модулей OCL и GPU — там есть реализации многих алгоритмов при помощи CUDA/OpenCL. Также в большистве алгоритмов есть поддержка TBB/OpenMP.
                3) Компютерное зрение очень широкая область, и люди применяют OpenCV для самых различных задач на широком зоопарке платформ. В таких условиях обойтись реализациями 2-3 мэйнстримных(на данный момент) алгоритмов просто нельзя.

                Если есть конкретные предложения по улучшению библиотеки, то вы всегда можете их высказать на форуме для разработчиков.
            +23
            Как же трудно читать статьи на профессиональные темы, написанные людьми, которые не разбираются в теме. По хорошему, статья должна была выглядеть как-то так:

            Всем любителям компьютерного зрения хорошо известна библиотека OpenCV, однако это совсем не значит, что все ею довольны. Поэтому периодически возникают альтернативные проекты, пытающиеся сделать работу с компьютерным зрением проще и приятней. Одним из таких проектов является библиотека Community Computer Vision (CCV). Разработанная небольшой группой китайских программистов, библиотека ставит в приоритет простой и ясный интерфейс. Кроме того, проект рассчитан на практические задачи, поэтому разработчики сосредоточились на наиболее важных и современных алгоритмах.

            Одним из таких алгоритмов является глубокая свёрточная нейронная сеть (Deep Convolutional Neural Networks). Представленная Алексом Крижевски (Alex Krizhevsky) в 2012 году архитектура объединяет работы Яна Лекуна (Yann LeCun) по свёрточным нейронным сетям (1990г.) и принципы глубокого обучения, разработанные Джефри Хинтоном (Geoffrey Hinton) в 2006-м. На нескольких значимых тестах DCNN показала непревзойдённые результаты, значительно опередив известные ранее алгоритмы.

            Несмотря на большой интерес к свёрточным сетям в последние годы, работа с ними часто затруднена из-за большого количества ресурсоёмких операций (и конкретно операции свётки) и, как следствие, крайне медленного обучения. Поэтому с самого появления CNN остро стоит вопрос увеличения производительности за счёт ипользования низкоуровневых оптимизаций (чаще всего с использованием GPU). На данный момент известно не так много реализаций, ориентированных на скорость работы, и самыми известными из них являются Caffe из университета Беркли и OverFeat из NYU.

            Ребята из CCV добавили свою реализацию, практически не уступающую по производительности указанным выше, но эргономично вписывающуюся в общий API библиотеки для работы над разноплановыми задачами компьютерного зрения. Заинтересованные читатели могут найти более подробную информацию на странице проекта.


              +2
              после просмотра страницы docomputersdream.org/, подумал, что надо протереть монитор
                0
                Никто не пробовал эту библиотеку по Android собирать? Boofcv SURF/SHIFT работают медленно, а писать свой велосипед не хотелось бы.

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

                Самое читаемое