Я б подивився на так званий "мішок слів" або "візуальні слова". Він все частіше використовується для категоризації та ідентифікації зображень. Цей алгоритм зазвичай починається з виявлення на зображенні надійних точок, таких як SIFT-точки. Використовується область навколо цих знайдених точок (128-бітний дескриптор SIFT у вашому випадку).
У найпростішій формі можна збирати всі дані з усіх дескрипторів з усіх зображень і кластеризувати їх, наприклад, використовуючи k-засоби. Кожне оригінальне зображення має дескриптори, які сприяють ряду кластерів. Центроїди цих кластерів, тобто візуальні слова, можуть використовуватися як новий дескриптор зображення. В основному ви сподіваєтесь, що кластери зображення, до яких сприяють його дескриптори, вказують на категорію зображення.
Знову ж таки, у найпростішому випадку у вас є список кластерів, і на зображення ви підраховуєте, який із цих кластерів містив дескриптори цього зображення та скільки. Це аналогічно методу Термін Частота / Зворотна частота документа (TD / IFD), який використовується при пошуку тексту. Дивіться цей швидкий і брудний сценарій Matlab .
Цей підхід активно досліджується, і існує багато значно досконаліших алгоритмів.
Веб-сайт VLfeat містить хорошу, більш досконалу демонстрацію цього підходу, класифікуючи набір даних caltech 101. Також заслуговують на увазі результати та програмне забезпечення від самого Caltech .