Jump to content
Compvision.ru
kobaeugenea

Распознавание знака пешеходного перехода

Recommended Posts

В 1/8/2019 at 13:56, iskees сказал:

Я имел ввиду писать не SVM и HOG, а взять уже готовую реализацию из opencv или dlib. Все что вам нужно там есть. Остается только написать код для  обучения и для последующей детекции . 

Тема с SVM+HOG меня порадовала, но тормозит если в рилтайме.  И решение я вижучтоб получше разобраться с SVM, с тем что делается с HOG чтобы стать датасетом для SVM и вообще для распознования в реальном времени надо гдето найти инфу по вычислительной сложности для таких "тяжёлых" алгоритмов.

Share this post


Link to post
Share on other sites

1. SVM+HOG на GPU для риалтайм подходит

2. "И решение я вижучтоб получше разобраться с SVM, с тем что делается с HOG чтобы стать датасетом для SVM". Ничего с ним не делается, для каждого образца считается дескриптор, добавляется метка и все.

Share this post


Link to post
Share on other sites
17 минут назад, iskees сказал:

1. SVM+HOG на GPU для риалтайм подходит

2. "И решение я вижучтоб получше разобраться с SVM, с тем что делается с HOG чтобы стать датасетом для SVM". Ничего с ним не делается, для каждого образца считается дескриптор, добавляется метка и все.

1) ну GPU само сабой. Мне кажется полезным перед использованием GPU включить голову, тогда и для GPU работы будет меньше.

2)Я не уверен что прям в таком виде всё этот поступает на SVM. Какаято дикая размерность вектора для картинки 32х32 даже, если брать дескриптор целиком.

И главное напрягает что предлагаюжёсткую связку, а если я захочу сделать микс из HOG и допусти цвета ?

Share this post


Link to post
Share on other sites

На счёт скорости. Есть fhog, который, вроде как, как раз очень быстро считает HOG. Он есть в dlib, гуляет и просто в исходниках. Например, только вчера видел его здесь.

Share this post


Link to post
Share on other sites
1 минуту назад, Nuzhny сказал:

На счёт скорости. Есть fhog, который, вроде как, как раз очень быстро считает HOG. Он есть в dlib, гуляет и просто в исходниках. Например, только вчера видел его здесь.

Ну я его и использовал. Меня не радует что жёсткая связка получается HOG и SVM. А если я хочу микс сделать, добавив другие признаки ?

Share this post


Link to post
Share on other sites

Почему нет? По моей ссылке выше HOG вообще никак не связан с SVM, а используется сам по себе.

Share this post


Link to post
Share on other sites
Только что, Nuzhny сказал:

Почему нет? По моей ссылке выше HOG вообще никак не связан с SVM, а используется сам по себе.

Да HOG то получается сам по себе. Но это чёрный ящик и, причём чёрный ящик большого размера и что ним делать. Это же не просто датасет как я понимаю, там своя структура. И непонятно когда он изготавливался что там использовалось из стандартных техник и потому нет смысла повторно использовать, а что нет. Можно конечно сырцы либы копать, но это долго и сначало хотелось бы знать что другого пути нет.

Share this post


Link to post
Share on other sites

Так, кажется мы говорим немного о разном.

Есть HOG - это гистограмма ориентированных градиентов (здесь неплохо описано). Грубо говоря, кусочек изображения разбивается на квадраты (например, 16х16 пикселей), в каждом считаются градиенты (это вектор с углом и длиной), из векторов делают гистограммы, обычно из 9 бинов. Соответственно, кусочку изображения ставится в соответствие несколько таких гистограмм, по числу квадратов. Всё, это HOG. В алгоритме трекинга STAPLE как раз считаются HOG для объекта (fHOG - это быстрый способ вычислять HOG на CPU), а дальше ищется корреляция на следующем кадре. Никакого SVM!

Есть такие признаки, как ICF (integral channel feature), которые тоже состоят из HOG в том числе (там ещё серый канал и один цветовой). Пётр Доллар использует их на GPU для детекции пешеходов и лиц, но в качестве классификатора берёт random forest (кажется). Тоже никакого SVM!

Dlib на этот счёт не ковырял, но в том же OpenCV можно вполне себе считать HOGDescriptor и подавать его на любой классификатор. Или добавлять к нему любые другие фичи и подавать на любой классификатор уже такой расширенный вектор.

 

Возможно, что тебя смущает тот факт, что Dalal в своей изначальной статье 2005 года изначально использовал HOG и linear SVM, но так это для скорости! Тогда компьютеры были медленные, только Haar или LBP + AdaBoost взлетало. А в библиотеки решение HOG + linear SVM пошло потому что оно SOTA, базовое классическое решение, с которым сравнивают алгоритмы.

P.S. Сейчас уже нейросети практически вытеснили HOG + linear SVM из компьютерного зрения. А были перспективные направления развития типа CoHOG или DPM.

Share this post


Link to post
Share on other sites
2 минуты назад, Nuzhny сказал:

Так, кажется мы говорим немного о разном.

Есть HOG - это гистограмма ориентированных градиентов (здесь неплохо описано). Грубо говоря, кусочек изображения разбивается на квадраты (например, 16х16 пикселей), в каждом считаются градиенты (это вектор с углом и длиной), из векторов делают гистограммы, обычно из 9 бинов. Соответственно, кусочку изображения ставится в соответствие несколько таких гистограмм, по числу квадратов. Всё, это HOG. В алгоритме трекинга STAPLE как раз считаются HOG для объекта (fHOG - это быстрый способ вычислять HOG на CPU), а дальше ищется корреляция на следующем кадре. Никакого SVM!

Есть такие признаки, как ICF (integral channel feature), которые тоже состоят из HOG в том числе (там ещё серый канал и один цветовой). Пётр Доллар использует их на GPU для детекции пешеходов и лиц, но в качестве классификатора берёт random forest (кажется). Тоже никакого SVM!

Dlib на этот счёт не ковырял, но в том же OpenCV можно вполне себе считать HOGDescriptor и подавать его на любой классификатор. Или добавлять к нему любые другие фичи и подавать на любой классификатор уже такой расширенный вектор.

 

Возможно, что тебя смущает тот факт, что Dalal в своей изначальной статье 2005 года изначально использовал HOG и linear SVM, но так это для скорости! Тогда компьютеры были медленные, только Haar или LBP + AdaBoost взлетало. А в библиотеки решение HOG + linear SVM пошло потому что оно SOTA, базовое классическое решение, с которым сравнивают алгоритмы.

P.S. Сейчас уже нейросети практически вытеснили HOG + linear SVM из компьютерного зрения. А были перспективные направления развития типа CoHOG или DPM.

Я неправильно высказался, я имел ввиду сам дескриптор HOG. Про алгоритм я читал. Меня очень сильно смущает что на просторах интернета нигде не встретил чтобы с ним делали какието манипуляции перед отправкой в SVM. Толи всё что нужно сделано при его приготовлении, толи там не просто набор гистограмм, а ёщё чтото.

Share this post


Link to post
Share on other sites

Так я же выше написал: CoHOG, DPM - это всё как раз про "манипуляции перед отправкой в SVM"

Share this post


Link to post
Share on other sites
41 минуту назад, Nuzhny сказал:

Так я же выше написал: CoHOG, DPM - это всё как раз про "манипуляции перед отправкой в SVM"

А ссылку можно ? Я ни в коем случае не фанат SVM. Просто сетки мне начнут преподовать начиная с апреля, но неважно сетка или SVM. Везде нужно извлекать фичи, а там где всё делается само у меня вызывает подозрения. Пока я вижу картину что подходящие фичиэкстракторы для изображений есть только в питоновских библотеках чтобы можно потом над  этими данными проводить нужные манипуляции. На этапе прототипирования ойдёт, а дальше ?

Share this post


Link to post
Share on other sites

1. DPM - Deformable Parts Model. Я когда-то использовал реализацию из libccv, но в OpenCV тоже появилась. Смысл в том, чтобы не просто детектировать объект, но и его части и тот факт, что части расположены в пространстве корректно. Например для лица: можно найти просто лицо, а можно лицо и на нём глаза, рот и нос. Если на лице найдены все эти части, то вероятность правильности решения выше. DPM ставит ещё одно условие: как все эти части должны быть расположены на целом и друг относительно друга:

- глаза в верхней части лица, выше носа и рта, а также не друг над другом;

- нос в средней части лица, под глазами и над ртом;

- рот ниже всех и примерно посередине.

 

2. CoHOG - Co-occurrence histograms of oriented gradients. Придумана Тошибой и использовалась (используется?) для аппаратного детектирования пешеходов в автомобилях. Там берутся не просто линейно гистограммы, как в HOG, а ещё и учитывается их взаимное расположение, молучается 2D матрица гистограмм.

 

Share this post


Link to post
Share on other sites
21 минуту назад, Nuzhny сказал:

1. DPM - Deformable Parts Model. Я когда-то использовал реализацию из libccv, но в OpenCV тоже появилась. Смысл в том, чтобы не просто детектировать объект, но и его части и тот факт, что части расположены в пространстве корректно. Например для лица: можно найти просто лицо, а можно лицо и на нём глаза, рот и нос. Если на лице найдены все эти части, то вероятность правильности решения выше. DPM ставит ещё одно условие: как все эти части должны быть расположены на целом и друг относительно друга:

- глаза в верхней части лица, выше носа и рта, а также не друг над другом;

- нос в средней части лица, под глазами и над ртом;

- рот ниже всех и примерно посередине.

 

2. CoHOG - Co-occurrence histograms of oriented gradients. Придумана Тошибой и использовалась (используется?) для аппаратного детектирования пешеходов в автомобилях. Там берутся не просто линейно гистограммы, как в HOG, а ещё и учитывается их взаимное расположение, молучается 2D матрица гистограмм.

 

Круто, как будто алмазы свалились на голову))) 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×