Який алгоритм використовує Google для свого веб-сайту «Пошук за зображенням»?


45

Як ви найкраще здогадуєтесь, як працює пошук зображень Google? Я можу завантажити фотографію та шукати схожі зображення. Який алгоритм використовується для ідентифікації подібних зображень?


Вони можуть зберігати гістограму зображення. Це працює для різних масштабів одного і того ж зображення та невеликих відмінностей через артефактів стиснення чи будь-чого іншого.
гелій

1
Гістограми не фіксують просторову інформацію; ви отримаєте помилкові відповідники.
Емре

Нейронні мережі: research.googleblog.com/2015/06/…
endolith

Відповіді:


29

Я не знаю, який алгоритм використовує Google. Але, оскільки ви хотіли найкращого здогаду, дозвольте дати кілька ідей щодо того, як може бути побудована подібна система .

Все поле, що займається пошуком зображення на основі зображення за бажанням зображення, називається пошуку вмісту на основі вмісту (CBIR) . Ідея полягає в тому, щоб якось побудувати зображення зображення (не обов'язково зрозуміле людям), яке містить інформацію про вміст зображення .

Існують два основні підходи:

  • пошук з використанням низькорівневих (локальних) функцій: колір, текстура, форма на конкретних частинах зображення (зображення - це сукупність дескрипторів локальних особливостей)
  • семантичні підходи, де образ певним чином представлений як сукупність предметів та їх відносин

Локальний підхід на низькому рівні дуже добре вивчений. Найкращий сучасний підхід витягує локальні функції (тут є вибір алгоритму вилучення функцій), і використовує їх локальні дескриптори (знову ж, вибір дескрипторів) для порівняння зображень.

У нових роботах локальні дескриптори спочатку кластеризуються, а потім кластери розглядаються як візуальні слова - техніка дуже схожа на пошук документів Google, але використовує візуальні слова замість буквених слів.

Ви можете розглядати візуальні слова як еквіваленти кореням слова в мові: наприклад, слова: робота, робота, відпрацювали всі належать до одного кореня слова.

Одним з недоліків таких видів методів є те, що вони зазвичай недостатні для зображень із низькою текстурою.

Я вже дав і бачив багато відповідей, де деталізуються ці підходи, тому я просто надам посилання на ці відповіді:

  • CBIR: 1 , 2
  • вилучення / опис функції: 1 , 2 , 3 , 4

Семантичні підходи , як правило, засновані на ієрархічних уявленнях усього образу. Ці підходи ще не вдосконалені, особливо для загальних типів зображень. Є певний успіх у застосуванні подібних методів до конкретних областей зображень.

Оскільки я зараз перебуваю в середині досліджень цих підходів, я не можу зробити жодних висновків. Тепер, сказавши це, я пояснив загальну ідею цих методів у цій відповіді .

Ще раз коротко: загальна ідея полягає у зображенні зображення з деревоподібною структурою, де листя містять деталі зображення, а предмети можна знайти у вузлах, ближчих до кореня таких дерев. Потім якимось чином ви порівнюєте піддерева, щоб виявити об'єкти, що містяться в різних зображеннях.

Ось декілька посилань на різні зображення дерев. Я не прочитав їх усіх, і деякі з них використовують цей вид уявлень для сегментації замість CBIR, але все-таки ось:


22

Окрім відповіді пенелопи, є два підходи, перцептивне хеширование та модель "сумкових слів", основна функціональність якої легко реалізується, і для них приємно грати чи навчатися, перш ніж заходити на більш просунуту територію.

Перцептивний хешинг

Алгоритми перцептивного хешування мають на меті побудувати хеш, який, на відміну від криптографічного хеша, дасть подібні або близькі аналогічні значення хешу для однакових зображень, які були дещо спотворені, наприклад, шляхом масштабування або стиснення JPEG. Вони служать корисною метою для виявлення біля дублікатів у колекції зображень.

У своїй найпростішій формі ви можете реалізувати це наступним чином:

  1. Перетворити зображення в відтінки сірого

  2. Зробіть ваше зображення нульовим значенням

  3. Скажіть зображення до розміру мініатюр, скажімо [32x32]
  4. Запустіть двовимірну дискретну косинусну трансформацію
  5. Зберігайте вгорі ліворуч [8 x 8], найбільш важливі низькочастотні компоненти
  6. Бінаризуйте блок, грунтуючись на знаку компонентів

В результаті виходить пружний 64-бітний хеш, оскільки він заснований на низькочастотних компонентах зображення. Варіантом цієї теми було б розділити кожне зображення на 64 підблоки та порівняти середнє значення глобального зображення з середнім середнім підблоком та записати відповідно 1 або 0.

Перцептивне хешуваннявання реалізується, наприклад, phash

Модель сумових слів

Модель сумкових слів має на меті семантичну ідентифікацію зображення, наприклад, усі зображення із собаками в них. Це робиться за допомогою певних виправлень зображень у тому ж дусі, який можна було б класифікувати текстовим документом на основі появи певних слів. Можна було б класифікувати слова, сказати "собака" та "собаки" та зберегти їх як ідентифікатор у перевернутому файлі, де категорія "собака" тепер вказує на всі документи, що містять або "собаку", або "собаку".

У своїй найпростішій формі це можна зробити із зображеннями наступним чином:

  1. Розгорніть так звані функції SIFT, наприклад, використовуючи відмінну бібліотеку vlfeat , яка виявить точки функцій SIFT та дескриптор SIFT на точку. Цей дескриптор - це в основному розумно побудований шаблон патчу зображення, що оточує цю точку функції. Ці дескриптори - це ваші сирі слова.
  2. Зберіть дескриптори SIFT для всіх відповідних зображень

Тепер у вас є величезна колекція дескрипторів SIFT. Проблема полягає в тому, що навіть поблизу однакових зображень буде дещо невідповідності між дескрипторами. Ви хочете згрупувати однакові разом, більш-менш, як трактування деяких слів, як "собака" та "собака" як однакові, і вам потрібно компенсувати помилки. Тут грає кластеризація.

  1. Візьміть усі дескриптори SIFT і кластеризуйте їх, наприклад, за допомогою алгоритму типу k-засобів. Це знайде заздалегідь визначену кількість кластерів із центроїдами у ваших дескриптових даних. Ці центроїди - це ваші нові візуальні слова.
  2. Тепер за зображенням та його оригінальними знайденими дескрипторами ви можете переглянути кластери, яким ці дескриптори були призначені. З цього ви знаєте, які центроїди або візуальні слова "належать" до вашого зображення. Ці центроїди чи візуальні слова стають новим семантичним дескриптором вашого зображення, який можна зберігати у перевернутому файлі.

Запит на зображення, наприклад, знайдіть мені подібні зображення до зображення запиту, вирішується наступним чином:

  1. Знайдіть точки SIFT та їх дескриптори на зображенні запиту
  2. Призначте дескрипторам запитів центроїди, які ви знайшли раніше на етапі зарахування. Тепер у вас є набір центроїдів або візуальних слів, які стосуються вашого зображення запиту
  3. Зіставте візуальні слова запиту із візуальними словами у перевернутому файлі та поверніть відповідні зображення

1
Ваша сумка-з-слів підхід в основному то , що мої посилання на «локальний підхід» призводить до :) Хоча це не дуже семантичний характер: ви б ніколи не являють собою єдину собаку з однією особливістю, не було б так легко визначити різні собачі спеції як собаки. Але перцептивний хешинг приємний, про це не знав. Пояснення приємні. Що наштовхнуло мене на думку ... Чи є у вас якісь пропозиції, як застосувати цю техніку до прямокутної області? А може, надати деякі посилання на статті, я міг би трохи прочитати, і якщо питання має сенс, відкрити його як окреме запитання.
пенелопа

1
@penelope Я фактично читав у статті років тому, де автори розділили зображення на довільні трикутники. І є трансформація слідів, яка також використовувалася як основа для сприйняття хешу. Я повернуся до вас.
Маврит

Все, що я хочу вас запитати з цього приводу, набагато виходить за рамки цього питання, тому я відкрив нове. Будь-яка додаткова інформація / посилання на основну техніку все ще були б чудовими, як у цьому, так і в цьому відповіді. З нетерпінням чекаю :)
пенелопа

2

Інший цікавий підхід, який, здається, нехтують вищезазначеними відповідями, - це глибокі згорткові нейронні мережі. Схоже, Google зараз використовує його для своєї пошукової системи зображень та служби перекладу . CNN є надзвичайно потужними в таких пізнавальних завданнях, як пошук схожості. Схоже, CNN проводить аналогічну процедуру Bag-of-worlds, яка вбудована через її мережеві шари. Недоліком цієї методики є неможливість вивчити і потреба у величезному наборі даних для тренувань та, звичайно, великі обчислювальні витрати на етапі тренувань.

Пропонований документ з цього приводу:

та реалізація пошуку зображень із відкритим кодом (з наступним документом): https://github.com/paucarre/tiefvision

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.