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

HOG

Recommended Posts

Возник вопрос, в реализации opencv используется R-HOG мне так кажется, там же вроде бы прямоугольные блоки, так вот вопрос можно ли как-то изменить на C-HOG для сравнения

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


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

У меня тут ещё вопрос я не совсем понимаю как делать ячейки, которые разбивают изображение на не прямоугольные формы.. с прямоугольными(R-HOG) всё понятно это просто сетка, а с окружностями я что-то не понимаю...(это для C-HOG) :)

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


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

Я думаю тоже сетка :)

Все равно ведь получите сетку дескрипторов.

Разница только в том как будут собираться и обрабатываться данные для каждого дескриптора.

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


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

а поясните пожалуйста поподробнее

Разница только в том как будут собираться и обрабатываться данные для каждого дескриптора.

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


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

Насколько я знаю, дескриптор - это некоторое описание точки изображения.

То есть существует точка, координаты которой мы задаем произвольно или находим при помощи автоматического метода (например детектором Харриса).

Но, нам нужно эту точку снабдить дополнительной биркой, по которой мы можем отличать ее от других аналогичных точек.

Поэтому считаем дескриптор в этих координатах.

Все дескрипторы использует окружение точки (соседние пиксели), но по-разному.

Так вот HOG, это всего лишь способ вычисления дескриптора, по своей идее аналогичный SURF, SIFT, FAST и т.д.

Гистограмма градиентов идет как дополнительная инфа к точке, а как Вы ее считаете (квадратиками или кружочками) дело уже третье.

Почему это используется в детекторе?

Потому что к яркости точки (1 параметр) добавляется еще описание контекста, в котором встречается эта точка (еще N параметров).

Если дескриптор подобран правильно, то наличие дополнительных параметров (дополнительных измерений пространства параметров) существенно повышает наши шансы разделить классы.

Вот тут еще почитайте:

http://ru.wikipedia.org/wiki/%D0%93%D0%B8%D1%81%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%B2

http://courses.graphicon.ru/files/courses/cg/2012/lectures/cg2012_04_recognition.pdf

http://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2012/rapporter12/matute_arribas_victoria_12016.pdf

PS: Есть еще T-HOG для детекта текстовых областей (pdf-ки и исходники на java):

http://www.dainf.ct.utfpr.edu.br/~rminetto/projects/thog.html

  • Like 2

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


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

Спасибо материалы очень хорошие, как я понял в случае с C-HOG ячейка берётся квадратной 4*4 и считается, что это окружность, а дальше она разбивается на сектора вроде бы так..

у меня тут ещё вопрос возник при просмотре лекции(второй вашей ссылки)

Полнота (Recall)

• Доля правильно распознанных объектов основного

класса среди всех объектов основного класса из

тестовой выборки

я не совсем понимаю как это посчитать для задачи классификации, а не детектирования, сказано что Доля правильно распознанных объектов основного класса среди всех объектов основного класса для классификации не важно же сколько объектов на кадре. Приходит кадр и мы просто говорим да на этом кадре есть человек к примеру или нету, а не подсчитываем сколько их там, 3-ое или четверо.. вот тут проблема, в определении явно сказано, что надо подсчитывать... или для классификации считается если на фото есть объект, то не важно сколько их просто считаем как бы за один объект

и ещё вопрос так же связанный с подсчётом Recall поясните пожалуйста как строить графики такие

Precision/Recall это из VOC-2007 не совсем ясно откуда берётся этот график я думал просто, что точности и полнота вычисляется для класса один раз и всё ну это не изменные величины поясните пожалуйста что не так понимаю

Изменено пользователем ProgRoman

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


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

Кстати эти лекции есть на ютубе очень хорошо изложено все, можно было бы их на главную страницу повесить. http://www.youtube.com/user/aktoshik/videos?view=0

  • Like 1

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


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

На главной их никто искать не будет, добавил их в список лекций по машинному обучению.

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


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

Вопрос о полноте(Recall) лучше перенести в другую ветку тему форума или тут оставить?

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


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

То что есть оставим тут, если есть желание продолжать, то лучше здесь:

http://www.compvision.ru/forum/index.php?showtopic=1099

Что касается Recall, то это можно объяснить так:

У вас есть всего 200 объектов класса 1 и 200 объектов класса -1.

Класс 1 - это и есть основной класс.

Обучаете классификатор Вы на первой сотне объектов каждого класса, а качество работы классификатора Вы проверяете на тестовой выборке в которой содержится по M=100 объектов, не встречавшихся в обучающей выборке.

Классификатор может ошибаться и ошибки могут быть такие:

Неправильно распознанный объект класса 1 (был принят за объект класса -1)

Неправильно распознанный объект класса -1 (был принят за объект класса 1)

Остальное, это корректно распознанные классы:

Правильно распознанные объекты основного класса это те объекты из тестовой выборки которые имеют класс 1 и были распознаны как класс 1. (количество обозначим как N)

Правильно распознанные объекты неосновного класса это те объекты из тестовой выборки которые имеют класс -1 и были распознаны как класс -1.

Так вот, вернемся к recall, тут получается что Recall=N/M.

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


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

Пытался создать HOG-SVM классификатор но столкнулся с тем, что не получается обучить классификатор который был бы с ошибкой первого рода ниже 30%. Возник вопрос: есть ли метод или готовая программа оценки применимости того или иного классификатора, который(ая) по небольшому набору образцов дал(а) бы вероятность получения хорошего классификатора? Например на 10 фото выделяем объекты и получаем ответ что hog плох а haar вполне не плох.

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


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

Я не знаю, может что то и есть, но нужно учитывать, что процент распознавания является функцией как размерности входного вектора, так и количества входных данных.

Если 10 объектов, вполне себе разделимы, скажем, в 3 мерном пространстве, то 10000 могут быть уже не разделимы в том же самом пространстве (или параметрах ядра, что и 10).

Я думаю, надо провести анализ главных компонент и посмотреть на собственные числа матрицы ковариации полученных признаков для выборки данных.

По ним определить размерность базиса. Если она маленькая, то эти признаки, скорее всего не дадут хорошего результата.

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×