Новосибирский Государственный Университет
Опубликован: 20.08.2013 | Доступ: свободный | Студентов: 845 / 29 | Длительность: 14:11:00
Самостоятельная работа 4:

Классификация изображений с использованием bag-of-words методов

Аннотация: В работе предлагается описание основных шагов bag-of-words подхода для классификации изображений. Рассматриваются прототипы функций библиотеки OpenCV, необходимые для реализации данных шагов, с описанием назначения входных параметров. Предлагаются примеры подпрограмм, демонстрирующие использование каждой функции. Разрабатывается приложение, содержащее реализацию bag-of-words подхода для классификации двух категорий изображений. Проводится вычислительный эксперимент на наборе данных, применяемом на практике. Рассматривается зависимость результатов применения подхода от используемых параметров.
Ключевые слова: алгоритм

Презентацию к лекции Вы можете скачать здесь.

Дополнительные материалы Вы можете скачать здесь.

Введение

В лабораторной работе рассматривается один из наиболее распространенных классов алгоритмов классификации изображений: так называемые bag-of-words (также известные как bag-of-features или bag-of-keypoints) методы [13 ]. Фактически bag-of-words подход использует в качестве описания гистограмму вхождений отдельных шаблонов в изображение. Корни идеи восходят к задаче классификации текстов, для решения которой используют описания в виде гистограмм вхождений в документ слов из заранее составленного словаря.

Основные шаги алгоритмов класса bag-of-words могут быть описаны следующим образом:

  1. Детектирование ключевых точек на изображении.
  2. Построение описания (дескрипторов) локальных окрестностей ключевых точек.
  3. Кластеризация дескрипторов ключевых точек, принадлежащих всем объектам обучающей выборки (это соответствует построению словаря, "словами" в котором являются центроиды построенных кластеров).
  4. Построение описания каждого изображения в виде нормированной гистограммы встречаемости "слов" (для каждого кластера вычисляется количество отнесенных к нему ключевых точек, принадлежащих определенному изображению).
  5. Построение классификатора, использующего вычисленное на шаге 4 признаковое описание изображения.

На дескрипторы, используемые алгоритмами данного класса, накладываются определенные ограничения: в частности, они должны быть инварианты к аффинным преобразованиям изображения, изменениям в условиях освещенности и перекрытиям. Словарь дескрипторов ключевых точек должен быть достаточно большим, чтобы отражать релевантные изменения частей изображения, но в то же время не чрезмерным, чтобы сделать алгоритм устойчивым к шуму.

В настоящей работе рассматривается ряд методов детектирования ключевых точек и построения их дескрипторов, обучения словаря с использованием алгоритма кластеризации k-средних(KMeans) [5 ], а также построения признаковых описаний объектов на основе данного словаря. Приводятся примеры использования алгоритмов обучения с учителем для классификации изображений с использованием вычисленных признаковых описаний. В работе демонстрируется использование соответствующих операций на базе средств открытой библиотеки компьютерного зрения OpenCV [19 ].

1. Методические указания

1.1. Цели и задачи работы

Цель данной работы – изучить bag-of -words подход для классификации изображений с использованием соответствующих функций библиотеки компьютерного зрения OpenCV.

Данная цель предполагает решение следующих задач:

  1. Изучить bag-of-words подход для классификации изображений и принцип работы базовых операций обработки изображений:
    • детектирование ключевых точек на изображении;
    • вычисление дескрипторов ключевых точек;
    • построение словаря дескрипторов ключевых точек;
    • вычисление признакового описания изображений с использованием словаря дескрипторов ключевых точек;
    • обучение классификатора "случайный лес" и предсказание категорий новых изображений.
  2. Рассмотреть прототипы функций, реализующих перечисленные операции в библиотеке OpenCV.
  3. Разработать простые примеры использования указанного набора функций.
  4. Разработать консольное приложение, содержащее реализацию bag-of-words подхода для задачи классификации изображений двух категорий.
  5. Провести вычислительный эксперимент на основе подмножества изображений из набора данных Caltech-101 [14 ].
  6. Выполнить исследование зависимости ошибки классификации от используемых параметров (типа используемых детекторов и дескрипторов ключевых точек, числа слов в словаре, параметров алгоритма обучения с учителем "случайный лес").
  7. Реализовать подход для построения словаря на основе Gaussian Mixture Model [5 ] и сравнить полученные результаты с ранее реализованным подходом.

1.2. Структура работы

В работе предлагается описание основных шагов bag-of-words подхода для классификации изображений. Рассматриваются прототипы функций библиотеки OpenCV, необходимые для реализации данных шагов, с описанием назначения входных параметров. Предлагаются примеры подпрограмм, демонстрирующие использование каждой функции. Разрабатывается приложение, содержащее реализацию bag-of-words подхода для классификации двух категорий изображений. Проводится вычислительный эксперимент на наборе данных, применяемом на практике. Рассматривается зависимость результатов применения подхода от используемых параметров.

1.3. Тестовая инфраструктура

Вычислительные эксперименты проводились с использованием следующей инфраструктуры (табл. 9.1).

Таблица 9.1. Тестовая инфраструктура
Операционная система Microsoft Windows 7
Среда разработки Microsoft Visual Studio 2010
Библиотеки OpenCV Версия 2.4.3

1.4. Требования к участнику лабораторной работы

Необходимо предварительное изучение участником работы теоретического материала по следующим темам:

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

Также требуется ознакомление с материалами лабораторной работы "Машинное обучение в библиотеке OpenCV".

1.5. Рекомендации по проведению занятий

При выполнении данной лабораторной работы рекомендуется следующая последовательность действий:

  1. Привести примеры задач и приложений компьютерного зрения, которые требуют решения задачи классификации изображений.
  2. Последовательно рассмотреть основные шаги bag-of-words подхода для классификации изображений. Параллельно ввести функции библиотеки OpenCV, необходимые для реализации данных шагов, и продемонстрировать примеры подпрограмм с их применением.
  3. Рассмотреть структуру приложения, реализующего bag-of-words подход для классификации изображений. Объяснить назначение всех функций, которые небходимо реализовать.
  4. Рассмотреть параметры запуска приложения, необходимые для получения результатов вычислительного эксперимента.
  5. Рассмотреть задание, связанное с исследованием результатов классификации объектов от параметров алгоритма.
  6. Рассмотреть подход для построения словаря на основе Gaussian Mixture Model. Сформулировать задание, связанное с реализацией данного подхода в рамках лабораторной работы.
Александра Максимова
Александра Максимова

При прохождении теста 1 в нем оказались вопросы, который во-первых в 1 лекции не рассматривались, во-вторых, оказалось, что вопрос был рассмаотрен в самостоятельно работе №2. Это значит, что их нужно выполнить перед прохождением теста? или это ошибка?
 

Алена Борисова
Алена Борисова

В лекции по обработке полутоновых изображений (http://www.intuit.ru/studies/courses/10621/1105/lecture/17979?page=2) увидела следующий фильтр:


    \begin{array}{|c|c|c|}
    \hline \\
    0 & 0 & 0 \\
    \hline \\
    0 & 2 & 0 \\
    \hline \\
    0 & 0 & 0 \\
    \hline 
    \end{array} - \frac{1}{9} \begin{array}{|c|c|c|}
    \hline \\
    0 & 0 & 0 \\
    \hline \\
    0 & 1 & 0 \\
    \hline \\
    0 & 0 & 0 \\
    \hline 
    \end{array}

В описании говорится, что он "делает изображение более чётким, потому что, как видно из конструкции фильтра, в однородных частях изображение не изменяется, а в местах изменения яркости это изменение усиливается".

Что вижу я в конструкции фильтра (скорее всего ошибочно): F(x, y) = 2 * I(x, y) - 1/9 I(x, y) = 17/9 * I(x, y), где F(x, y) - яркость отфильтрованного пикселя, а I(x, y) - яркость исходного пикселя с координатами (x, y). Что означает обычное повышение яркости изображения, при этом без учета соседних пикселей (так как их множители равны 0).

Объясните, пожалуйста, как данный фильтр может повышать четкость изображения?