Математика, объяснение бумаги и код с нуля для начинающих

Что это?

Гистограмма ориентированных градиентов, также известная как HOG, представляет собой дескриптор функции, такой как Canny Edge Detector, SIFT (инвариант масштабирования и преобразование характеристик). Он используется в компьютерном зрении и обработке изображений с целью обнаружения объектов. Методика подсчитывает случаи ориентации градиента в локализованной части изображения. Этот метод очень похож на гистограммы ориентации краев и преобразование свойств с инвариантным масштабом (SIFT). Дескриптор HOG фокусируется на структуре или форме объекта. Это лучше, чем любой дескриптор края, поскольку он использует величину, а также угол градиента для вычисления функций. Для областей изображения он генерирует гистограммы, используя величину и ориентацию градиента.

Этапы расчета характеристик HOG

  1. Возьмите исходное изображение, для которого вы хотите рассчитать характеристики HOG. Измените размер изображения на изображение 128x64 пикселей (128 пикселей в высоту и 64 в ширину). Этот параметр использовался в статье и был предложен авторами, поскольку их основной целью с этим типом обнаружения было получение лучших результатов при решении задачи обнаружения пешеходов. Поскольку авторы этой статьи получали исключительно идеальные результаты по базе данных пешеходов Массачусетского технологического института, они решили создать новый и значительно более сложный набор данных, названный набором данных INRIA (http://pascal.inrialpes.fr/data/human/) , содержащий 1805 (128x64) изображений людей, вырезанных из разнообразного набора личных фотографий.

2. Рассчитывается градиент изображения. Градиент получается путем объединения величины и угла изображения. Рассматривая блок размером 3x3 пикселя, сначала вычисляются Gx и Gy для каждого пикселя. Сначала Gx и Gy вычисляются с использованием формул, приведенных ниже для каждого значения пикселя.

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

3. После получения градиента каждого пикселя, матрицы градиента (матрица величин и углов) делятся на ячейки 8x8 для формирования блока. Для каждого блока рассчитывается 9-точечная гистограмма. Гистограмма из 9 точек формирует гистограмму с 9 ячейками, каждая из которых имеет диапазон углов 20 градусов. На рисунке 8 представлена ​​гистограмма с 9 ячейками, на которой значения распределяются после вычислений. Каждую из этих 9-точечных гистограмм можно построить как гистограммы с ячейками, отображающими интенсивность градиента в этой ячейке. Поскольку блок содержит 64 различных значения, для всех 64 значений величины и градиента выполняется следующий расчет. Поскольку мы используем 9-точечные гистограммы, отсюда:

Каждый J-й бункер будет иметь границы из:

Значение центра каждой ячейки будет:

4. Для каждой ячейки в блоке мы сначала вычислим j-й интервал, а затем значение, которое будет предоставлено j-му и (j + 1) -ому интервалу соответственно. Значение рассчитывается по следующим формулам:

5. Массив берется в качестве бина для блока, и значения Vj и Vj + 1 добавляются в массив с индексом j-го и (j + 1) -го бина, рассчитанного для каждого пикселя.

6. Результирующая матрица после вышеуказанных вычислений будет иметь форму 16x8x9.

7. После завершения вычисления гистограммы для всех блоков 4 блока из 9-точечной матрицы гистограммы объединяются в новый блок (2x2). Это движение выполняется с перекрытием с шагом 8 пикселей. Для всех 4 ячеек в блоке мы объединяем все 9 точечные гистограммы для каждой составляющей ячейки, чтобы сформировать вектор из 36 признаков.

8. Значения fb для каждого блока нормированы по норме L2:

9. Для нормализации значение k сначала рассчитывается по следующим формулам:

10. Эта нормализация выполняется для уменьшения эффекта изменения контраста между изображениями одного и того же объекта. С каждого блока. Собирается вектор из 36 точек. По горизонтали - 7 блоков, по вертикали - 15 блоков. Таким образом, общая длина элементов HOG будет: 7 x 15 x 36 = 3780. Получены характеристики HOG выбранного изображения.

Возможности HOG с нуля в Python

Возможности HOG с использованием библиотеки skimage в Python

Файлы кода

Ссылка на файл Colab, содержащий весь код для детектора функций HOG с нуля на python: https://colab.research.google.com/drive/1_yDbX68uCxejK448Y0ByOACQUUZw5hWR?usp=sharing

Ссылки

  1. Гистограммы ориентированных градиентов для обнаружения человека: http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf
  2. Документация SkImage: https://scikit-image.org/docs/dev/api/skimage.feature.html?highlight=hog#skimage.feature.hog
  3. Возможности HOG (гистограмма ориентированных градиентов) (теория и реализация с использованием MATLAB и Python): https://www.youtube.com/watch?v=QmYJCxJWdEs

Следите за появлением подобных объяснений в новых исследовательских работах!

Не стесняйтесь подключаться и предлагать свои предложения: https://www.linkedin.com/in/mrinal-tyagi-02a1351b1/

Https://github.com/MrinalTyagi