1

Я пытаюсь реализовать модуль обнаружения объекта, который содержит следующие этапы:Использование Мешок слов/функций и нейронной сети

1) извлечения изображений с дескрипторами SURF, создавая матрицу размером [х, 64] , где x зависит от количества ключевых точек, найденных на изображении;

2) исправьте размер дескриптора в формате [k, 64], используя пакет функций/слов. Где k - количество кластеров, созданных с использованием k-средств.

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

До сих пор я реализовал шаги 1 и 2, но я не совсем уверен, как отформатировать выходной вектор NN. В OpenCV CvANN_MLP количество строк в выходном векторе должно иметь одинаковое количество входных строк (в противном случае возвращает исключение what()), но количество входных строк - это количество кластеров k на шаге 2, поэтому я «Не понимаю, как написать выходную матрицу на основе этого.

Я знаю, что выходная матрица должна иметь n столбцов, соответствующих количеству классов на выходе, который я хочу (например, 3 класса: кошка, собака и птица приводят к матрице с 3 столбцами), но как мне организовать строки этой матрицы на основе входных строк? Я прочитал этот связанный post, он использует matlab, и он говорит, что каждая функция должна быть строкой, но я не уверен, как это сделать на OpenCV C++. Если у кого есть какие-либо идеи/советы о том, как это сделать, это было бы очень признательно.

ответ

0

Вы сделали это:

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

Перед подачей вашей нейронной сети? Мне не хватает опыта использования нейронных сетей, однако после прочтения this и вашего вопроса кажется, что вы пытаетесь прокормить кластеры сумм слов в вашей нейронной сети, что неверно.

+0

Благодарим вас за ответ. Итак, я не знаю, правильно ли я думаю, но для меня вектор функций - это вектор, извлеченный из серфера (шаг 1), который я использую как вход для мешка слов, я просто организую его кластеров, потому что серфинг дает вектор, размерность которого больше. Должен ли я делать что-нибудь еще после этого? – cecelia

+0

Итак, у вас есть k кластеров? Что в словах мы называем визуальными словами. Теперь вам нужно преобразовать векторы объектов в словарные векторы (т. Е. Вычислить ближайшие соседи дескрипторов ввода в отношении ваших кластеров). Вы это сделали? Результатом этого преобразования должен быть вектор 1xN на входное изображение (где N - общее количество изображений). – NAmorim

+0

Ooooh ok !!! Теперь я понимаю!!! Я как бы потерял то, как получить этот вектор 1xN, я сделаю это прямо сейчас, спасибо! :) – cecelia