Перейти к содержимому
Compvision.ru
kobaeugenea

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

Recommended Posts

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, iskees сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Nuzhny сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, Nuzhny сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Есть 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
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. Толи всё что нужно сделано при его приготовлении, толи там не просто набор гистограмм, а ёщё чтото.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
41 минуту назад, Nuzhny сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, Nuzhny сказал:

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

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

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×