Program to calculate vector for function DetectMultiScale in OpenCV and GUI for FANN.

New version. Fix bag in not russian system, and up performance

Пофиксен баг на англоязычных системах (точка вместо запятой в числах) и значительный прирост скорости.

The library OpenCV is a method of searching for objects in the image HOG-SVM implemented in the function class DetectMultiScale HOGDescriptor , In the library is an example of using this method to search for pedestrians. To search for any object to pass it, the image on the court, and the search for a vector that characterizes the desired object. For these purposes, and created this program.

The procedure for obtaining the vector

Examples  https://www.youtube.com/watch?v=_IThVpWhaBA

  1. Prepare a set of pictures in which there are only examples of the desired object (Positive examples)
  2. Prepare a set of images in which the desired object is not (Negative examples)
  3. Tell it to run the program folder and Positive examples Negative examples
  4. Click «Create file, learn and compute vector to DetectMultiScale»
  5. The vector will be stored as a set of numbers separated by a space, it can be used DetectMultiScale

Find an example may be in subdirectories it needs to tick «search in subdirectories»
The value of all the fields in HOGDescriptor must be integer and maps 2.
WinSize value is the size of the positive examples, the original image may be different in size, they will be automatically resized.

Безымянный

 

Marking photos

Partitioning is used to discharge the photographs of areas containing the object. In one photograph can be only one object. The procedure for marking:

  1. Create a new file layout (button New);
  2. Add photos (button add);
  3. Marking the areaS (the mouse on the image or the image mapping coordinates on the right)
  4. Save the file (button save)
  5. The resulting file can be used to automatically create HOG-SVM classifier.

Create HOG-SVM classifier of the marked photos

On the basis of the file tagged photos the program automatically creates a vector for DetectMultiScale. The calculation is performed iteratively, on the first iteration of the negative samples are taken randomly from the photos, and then calculated the descriptors of the positive and negative samples and the calculated vector for DetectMultiScale. On the second iteration of the resulting vector is applied and the result is checked if it matches the domain of the marked photos (+ - threshold of the height and width, respectively) if the coordinates are not the same it is added to the negative examples. Video example http://www.youtube.com/watch?v=BfRQVKXG34A

Graphical interface to create a neural network using FANN.

FANN tab is intended for training neural Sete used in the library FANN. In fact it is a graphical interface for some functions.

Provides three functions:

  1. Simple training. Select a data file to specify the learning algorithm, activation functions, etc. press the "simple" and get ready to file a neural network. The learning process is displayed schedule. Feature functions is that every 10 periods of training (parameter save) learning outcomes remain when failures in training, you can select the result of previous periods of study;
  2. Testing. Select a file of test data (as an option the same as during training), and press the test chart shows information about the true error of Recognition at the threshold from 0 to 1;
  3. Education on parts of the sample with the increase of this part. The choice of parameters is similar to one button step. Moreover, from the training data is taken at random 10% of them are trained, the resulting network is tested for the selected 10% and the remaining 90%, and the result is displayed on the chart. Then the same procedure is carried out for the 20%, 30% ... 90%. The result is a graph showing the successful recognition on a test set from the training sample size

 

Безымянный

The program uses the library

OpenCVSharp https://code.google.com/p/opencvsharp/
FANN http://leenissen.dk/fann/wp/
FANN. Net wraper https://code.google.com/p/fanndotnetwrapper/

Программа для расчета вектора для функции DetectMultiScale в OpenCV.

В библиотеке OpenCV есть метод поиска объектов на изображении HOG-SVM реализованный в функции DetectMultiScale класса HOGDescriptor , в самой библиотеке есть пример использования данного метода для поиска пешеходов. Для поиска любых других объектов необходимо передать это функции изображение на кортом идет поиск и вектор, который характеризует искомый объект. Для этих целей и создана эта программа.

Процедура получения вектора

Пример создания классификатора https://www.youtube.com/watch?v=_IThVpWhaBA

  1. Подготовить набор изображений, в которых есть только примеры искомого объекта (Positive examples)
  2. Подготовить набор изображения, в которых искомого объекта нет (Negative examples)
  3. Запустить программу указать ей папки с Positive examples и Negative examples
  4. Нажать кнопку «Create file, learn and compute vector to DetectMultiScale»
  5. Вектор будет сохранен в виде набора чисел через пробел, его можно использовать в DetectMultiScale

Поиск примером может производиться в поддиректориях для этого нужно поставить галочку «search in subdirectories»

Значение всех полей в HOGDescriptor должны быть целочисленный и карты 2.

Значение winSize это размер положительных примеров, исходные изображение могут отличатся по размеру, они автоматически будут изменены в размере.

Разметка фотографий(несколько целевых объектов на фотографию)

Разметка служит для выделений на фотографиях областей содержащих объект. На одной фотографии может быть только один объект. Процедура разметки:

  1. Создаём новый файл разметки (кнопка New);
  2. Добавляем фотографии (кнопка add);
  3. Отмечаем области (мышкой по изображению или через координаты справа ото изображения)
  4. Сохраняем файл (Кнопка save)

Полученный файл может быть использован для автоматического создания  HOG-SVM классификатора.

Создания HOG-SVM классификатора из размеченных фотографий

На основе файла с размеченными фотографиями программа автоматически создаем вектор для DetectMultiScale. Расчет производится итерациями, на первой итерации негативные образцы берутся случайно из фотографий, после чего рассчитываются дескрипторы положительных и негативных образцов и рассчитывается вектор для DetectMultiScale. На второй итерации полученный вектор применяется и результат проверяется совпадает ли он с областью отмеченной фотографии (+- threshold от высоты и ширины соответственно) если координаты не совпадают  то он добавляется к негативным примерам.  Видео примера http://www.youtube.com/watch?v=BfRQVKXG34A

 

Графический интерфейс для создания нейронной сети  используя FANN.

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

Реализовано три функции:

    1. Простое обучение. Выбираете файл с данными для обучения задаете алгоритм, функции активации и т.д. нажимаете кнопку “simple” и получаете готовый файл нейронной сети.  Процесс обучения отображается графиком.  Особенность функции в том что каждые 10 эпох обучения (параметр save) результаты обучения сохраняются и при сбои в обучении можно выбрать результат предыдущих эпох обучения;
    2. Тестирование. Выбираете файл тестовых данных (как вариант тот же что и при обучении) нажимаете кнопку test и на графике отображается информация о верных о ошибочных распознаниях при пороге от 0 до 1;
    3. Обучение на частях выборки с увеличением этой части. Выбор параметров аналогичен 1, кнопка step. При этом из данных для обучения случайным образом берется 10% на них производится обучение, полученная сеть проверяется на выбранных  10% и на оставшихся 90% и результат отображается на графике.  Затем та же процедура проводится для 20%, 30% …90%. В результате получается график показывающий успешного распознавания на тестовой выборке от величины выборки обучения

В программе используются библиотеки

Last edited Apr 6 at 11:59 AM by imy, version 19