, пожалуйста, мне нравится классифицировать набор изображений в 4 классах с помощью SIFT DESCRIPTOR и SVM. Теперь, используя SIFT-экстрактор, я получаю ключевые точки разных размеров, например img1 имеют 100 ключевых точек img2 имеют 55 ключевых точек .... как построить гистограммы, которые дают фиксированные векторы размера с помощью matlabПодготовка классификатора SVM с использованием функций SIFT
ответ
Используя обычный подход SIFT, вы никогда не будете иметь одинаковый номер ключевых точек в каждом изображении. Одним из способов достижения этой цели является выборочный анализ дескрипторов плотно, используя Dense SIFT, который помещает регулярную сетку поверх изображения. Если все изображения имеют одинаковый размер, то у вас будет одинаковое количество ключевых точек на изображение.
Вы всегда будете получать различное количество ключевых точек для различных изображений, но размер вектора признаков каждой точки дескриптора остается прежним, т.е. 128. Люди предпочитают использовать векторного квантования или K-Mean кластеризацию и построить Bag- гистограммы модели. Вы можете взглянуть на нить this.
В этом случае, возможно, плотный просеивание является хорошим выбором.
Есть два основных этапа:
Этап 1: Создание кодовой книги.
- Разделите входное изображение на набор суб-изображений.
- Применить просеивание по каждому суб-изображению. Каждая ключевая точка будет иметь 128-мерный вектор признаков.
- Кодировать эти векторы для создания кодовой книги, просто применяя кластеризацию k-значений с выбранным
k
. Каждое изображение будет производить матрицу В я (i <= n
иn
этого количество изображений, используемых для создания кодового слова.) Размера128 * m
, гдеm
является количеством ключевых точек, собранных из изображения. Следовательно, вход в K-средство является большой матрицей V, созданной с помощью горизонтальной конкатенации V i, для всехi
. Выход K-средств представляет собой матрицу C с размером128 * k
.
Этап 2: Расчет гистограмм.
Для каждого изображения в наборе данных, выполните следующие действия:
- Создание гистограммы вектор
h
размераk
и инициализировать его нулями. - Нанести плотные просеять, как на стадии 2 в стадии 1.
- Для вектора каждой ключевой точки находит индекс это «лучший матч» вектор в матрице кодовой книги C (может быть минимальной в евклидовом расстоянии).
- Увеличьте соответствующий бункер до этого индекса в
h
на 1. - Нормализовать
h
по нормам L1 или L2.
Сейчас h
готов к классификации.
Другая возможность состоит в том, чтобы использовать вектор Фишера вместо кодовой книги, https://hal.inria.fr/file/index/docid/633013/filename/jegou_aggregate.pdf
- 1. Обнаружение объекта в изображении с использованием функций SIFT/SURF
- 2. Методы повышения точности классификатора SVM
- 3. Определение наиболее важных функций для классификатора SVM в sklearn
- 4. Как классифицировать с помощью SVM-классификатора?
- 5. Подготовка данных и выбор функций для Именованного объекта с использованием SVM
- 6. SVM-подготовка результатов дескриптора HOG (в Matlab)
- 7. Внеклассная подготовка классификатора LinearSVC от Scikit
- 8. Wierd behavoir при обучении классификатора SVM
- 9. Class_weight для SVM классификатора в Python
- 10. sklearn, выводя результаты из классификатора SVM
- 11. Как найти оценку классификатора SVM в MATLAB?
- 12. OpenCV (C++) с использованием дескрипторов SIFT увеличивает количество обнаруженных функций?
- 13. Как обеспечить согласованность функций SIFT?
- 14. Как использовать функции/дескрипторы SIFT в качестве входных данных для обучения SVM?
- 15. PHP SVM - Разработка функций
- 16. Система определения семантической роли с использованием SVM
- 17. Многоуровневая классификация с использованием SVM с использованием quickminer
- 18. Соответствующие функции изображений с использованием PCA-SIFT
- 19. Расчет точности, повторения, точности с использованием SVM
- 20. SIFT с использованием Python 3.4
- 21. Сравнение изображений с использованием SIFT
- 22. Преобразование изображения перед извлечением функций SIFT
- 23. Как увеличить скорость для классификатора SVM с помощью Sk-learn
- 24. Классификация с использованием SVM
- 25. Загрузка классификатора с использованием Pickle?
- 26. Нормализующие значения функций для SVM
- 27. Переменная частота ошибок SVM-классификатора с использованием K-Fold Cross Vaidation Matlab
- 28. Инкрементальная классификация SVM или любого классификатора в SPARK
- 29. Как получить все альфа-значения scikit-learn SVM-классификатора?
- 30. Получить список имен функций обучения от классификатора
Не могли бы вы объяснить, как процессы тестирования и обучения должны идти? Я пытаюсь реализовать описанный здесь подход и не могу понять, как тестировать модель. Если у меня есть помеченный набор данных изображений, во-первых, я создаю кодовую книгу для тестового изображения, верно? Затем для каждого изображения в наборе данных я вычисляю гистограммы с помощью кодовой книги тестового изображения. Итак, я получаю кучу гистограмм, на которых я могу тренировать свой SVM. Но как это проверить? Как получить одно единственное входное изображение, предназначенное для тестирования в формате этих гистограмм, чтобы я мог проверить его обучаемый SVM? Или мое понимание ошибочно? –
Хорошо, я думаю, что получаю это. Я должен создать кодовую книгу не для «входного изображения», а для всего набора данных. И только тогда создайте гистограммы, подающие иск на сгенерированную кодовую книгу. –