При прохождении теста 1 в нем оказались вопросы, который во-первых в 1 лекции не рассматривались, во-вторых, оказалось, что вопрос был рассмаотрен в самостоятельно работе №2. Это значит, что их нужно выполнить перед прохождением теста? или это ошибка? |
Новосибирский Государственный Университет
Опубликован: 20.08.2013 | Доступ: свободный | Студентов: 865 / 38 | Длительность: 14:11:00
Темы: Программирование, Графика и дизайн
Специальности: Программист, Системный архитектор
Теги:
Самостоятельная работа 4:
Классификация изображений с использованием bag-of-words методов
4. Контрольные вопросы
- Какие основные этапы включают в себя bag-of-words алгоритмы классификации изображений?
- Какие требования предъявляются к детекторам и дескрипторам ключевых точек?
- Опишите идеи, лежащие в основе детектора и дескриптора SIFT.
- Почему в качестве признакового описания изображения обычно не используются вычисленные дескрипторы ключевых точек?
- Перечислите алгоритмы, которые возможно использовать при построении словаря дескрипторов ключевых точек.
- Что представляет собой итоговое признаковое описание изображения в методах класса bag-of-words, и каким образом оно вычисляется?
- Перечислите алгоритмы, которые можно использовать для классификации изображений с использованием вычисленного признакового описания.
5. Дополнительные задания
- Добавьте в разработанное приложение вывод информации об изображениях из тестовой выборки, которые были неправильно классифицированы.
- Добавьте в разработанное приложение возможность использования в качестве используемого классификатора машины опорных векторов с ядром типа Radial Basis Function. Сравните результаты с ранее реализованным подходом.
- Выполните исследование зависимости ошибки классификации от используемых параметров (типа используемых детекторов и дескрипторов ключевых точек, числа слов в словаре, параметров алгоритма обучения с учителем "случайный лес": числа деревьев в ансамбле, максимальной глубины деревьев, входящих в ансамбль).
- Реализуйте построение словаря на основе Gaussian Mixture Model и сравните полученные результаты с ранее реализованным подходом.
6. Приложения
6.1. Приложение А. Исходный код основной функции консольного редактора изображений
#include "auxiliary.h" #include "bow.h" #include <opencv2/nonfree/nonfree.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char* argv[]) { /* TODO: реализовать функциональность, описаннную в разделе 3.1.2 */ }
6.2. Приложение Б. Исходный код заголовочного файла модуля, содержащего вспомогательные функции
#include <string> #include <vector> void GetFilesInFolder(const std::string& dirPath, std::vector<std::string> &filesList); void InitRandomBoolVector(std::vector<bool>& mask, double prob);
6.3. Приложение В. Исходный код модуля, содержащего вспомогательные функции
#include "auxiliary.h" #include <windows.h> #include <opencv2/core/core.hpp> using namespace std; using namespace cv; void GetFilesInFolder(const string& dirPath, std::vector<string> &filesList) { HANDLE handle; WIN32_FIND_DATAA fileData; if ((handle = FindFirstFileA((dirPath + "/*.jpg").c_str(), &fileData)) == INVALID_HANDLE_VALUE) { return; } do { const string file_name = fileData.cFileName; const string full_file_name = dirPath + "/" + file_name; filesList.push_back(full_file_name); } while (FindNextFileA(handle, &fileData)); FindClose(handle); } void InitRandomBoolVector(vector<bool>& mask, double prob) { RNG rng = theRNG(); for (size_t i = 0; i < mask.size(); i++) { mask[i] = (rng.uniform(0.0, 1.0) < prob) ? true : false; } }