Я хотел бы взглянуть на так называемый подход «мешок слов» или «визуальные слова». Он все чаще используется для категоризации и идентификации изображений. Этот алгоритм обычно начинается с обнаружения надежных точек, таких как точки SIFT, на изображении. Используется область вокруг этих найденных точек (в вашем случае - 128-битный дескриптор SIFT).
В наиболее простой форме можно собрать все данные из всех дескрипторов всех изображений и объединить их в кластеры, например, с помощью k-средних. Каждое исходное изображение имеет дескрипторы, которые вносят вклад в несколько кластеров. Центроиды этих скоплений, то есть визуальные слова, могут использоваться в качестве нового дескриптора изображения. По сути, вы надеетесь, что кластеры, в изображение которых вносятся дескрипторы, указывают на категорию изображения.
Опять же, в самом простом случае у вас есть список кластеров, и для каждого изображения вы подсчитываете, какие из этих кластеров содержат дескрипторы этого изображения и сколько. Это похоже на метод Term Frequency / Inverse Document Frequency (TD / IFD), используемый при поиске текста. Посмотрите этот быстрый и грязный скрипт Matlab .
Этот подход активно исследуется, и существует множество более совершенных алгоритмов.
Веб-сайт VLfeat содержит более продвинутую демонстрацию этого подхода, классифицирующую набор данных caltech 101. Также следует отметить результаты и программное обеспечение самого Caltech .