Новая мера пригодности для эволюционного моделирования сопоставления изображений

Я уверен, что многие люди уже видели демонстрации использования генетических алгоритмов для создания изображения, соответствующего образцу изображения. Вы начинаете с шума, и постепенно он становится все более и более похожим на целевое изображение, пока не получите более или менее точную копию.

Однако во всех примерах, которые я видел, используется довольно прямое попиксельное сравнение, что приводит к довольно предсказуемому «затуханию» конечного изображения. То, что я ищу, является чем-то более новым: мера пригодности, которая приближается к тому, что мы считаем «похожим», чем наивный подход.

Я не имею в виду конкретный результат - я просто ищу что-то более «интересное», чем значение по умолчанию. Предложения?


person Nick Johnson    schedule 30.04.2009    source источник
comment
Когда вы говорите о генетическом алгоритме, генерирующем изображение, совпадающее с эталонным изображением, что вы имеете в виду? Вы имеете в виду алгоритм, который всегда генерирует то же изображение, на котором он обучался? Если да, можно ли таким образом найти какое-то сжатие? (Иначе какой смысл?)   -  person j_random_hacker    schedule 30.04.2009
comment
Да, вы предоставляете «целевое» изображение, и оно оценивает каждого человека по близости к изображению. Дело в том, что это демонстрация - она ​​не предназначена для обеспечения сжатия или какой-либо другой конкретной цели.   -  person Nick Johnson    schedule 30.04.2009
comment
Извините, я до сих пор не понимаю -- что это за люди? Другие, изначально зашумленные изображения? Или отдельные пиксели в одном изображении?   -  person j_random_hacker    schedule 30.04.2009


Ответы (4)


Я предполагаю, что вы говорите о чем-то вроде Роджера Алсинга. программа.

Я реализовал эту версию, поэтому меня также интересуют альтернативные фитнес-функции, хотя я подхожу к ним с точки зрения повышения производительности, а не эстетики. Я ожидаю, что всегда будет некоторый элемент «наплыва» из-за природы эволюционного процесса (хотя настройка эволюционных операторов может повлиять на то, как это выглядит).

Попиксельное сравнение может быть дорогостоящим для всего, кроме небольших изображений. Например, изображение размером 200x200 пикселей, которое я использую, имеет 40 000 пикселей. С тремя значениями на пиксель (R, G и B) это 120 000 значений, которые должны быть включены в расчет пригодности для одного изображения. В моей реализации я уменьшаю изображение перед сравнением, чтобы было меньше пикселей. Компромиссом является небольшое снижение точности развернутого изображения.

Изучая альтернативные фитнес-функции, я наткнулся на некоторые предложения по использованию цветового пространства YUV вместо RGB, поскольку это более тесно связано с человеческим восприятием.

Другая идея, которая у меня была, заключалась в том, чтобы сравнивать только случайно выбранную выборку пикселей. Я не уверен, насколько хорошо это сработает, если не попробовать. Поскольку сравниваемые пиксели будут разными для каждой оценки, это будет способствовать сохранению разнообразия в популяции.

Кроме того, вы находитесь в сфере компьютерного зрения. Я ожидаю, что эти методы, основанные на извлечении признаков, будут более дорогими в расчете на изображение, но в целом они могут быть быстрее, если для достижения приемлемого результата потребуется меньше поколений. Вы можете изучить библиотеку PerceptualDiff. Кроме того, эта страница показывает некоторые код, который можно использовать для сравнения изображений на предмет сходства на основе признаков, а не пикселей.

person Dan Dyer    schedule 02.05.2009
comment
Ага, это был тот самый! Спасибо! - person Nick Johnson; 02.05.2009

Мера пригодности, которая ближе подходит к тому, что мы считаем «похожим», чем наивный подход.

Реализация такой меры в программном обеспечении определенно нетривиальна. Google «модель человеческого зрения», «показатель ошибки восприятия» для некоторых отправных точек. Вы можете обойти эту проблему - просто представить изображения-кандидаты человеку для выбора лучших, хотя это может быть немного скучно для человека.

person Rafał Dowgird    schedule 30.04.2009
comment
Вот почему я сказал «ближе», а не «идентично». Должно быть что-то лучше, чем сравнение по пикселям, но проще, чем реализация ИИ. :) - person Nick Johnson; 30.04.2009
comment
Использование человека тоже не такая уж плохая идея, но люди довольно плохо справляются со сравнением двух разных изображений со случайным шумом. - person Nick Johnson; 30.04.2009
comment
Это зависит от того, как вы создаете изображения. Я видел статью об эволюционном алгоритме, аппроксимирующем изображение ограниченным числом прозрачных замкнутых кривых Безье. - person Rafał Dowgird; 30.04.2009
comment
Видишь ли, вот что меня интересует. :) - person Nick Johnson; 01.05.2009
comment
У вас есть ссылка? Я уверен, что видел это раньше, но не могу вспомнить где и не могу найти. - person Nick Johnson; 01.05.2009

Я не видел такой демонстрации (возможно, вы могли бы связать ее). Но пара прото-идей из вашего описания, которые могут вызвать интересную идею:

  • Три разных алгоритма, работающих параллельно, возможно, RGB или HSV.
  • Переместите, поверните или иным образом слегка измените целевое изображение во время прогона.
  • Подгонка основана на различиях контраста/значения между пикселями, но без знания фактического цвета.
  • ... затем «заполнить» один пиксель правильным цветом?
person Chris Thornhill    schedule 30.04.2009

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

Мой наивный подход к этому состоял бы в том, чтобы обучить распознаватель образов на нескольких изображениях, каждое из которых сгенерировано из целевого изображения с одним или несколькими примененными к нему преобразованиями: например. повернут на несколько градусов в любую сторону; перевод на несколько пикселей в любую сторону; разные масштабы одного и того же изображения; различные размытия и эффекты (здесь хороши маски свертки). Я бы также добавил некоторый шум случайности к каждому из изображений. Чем больше образцов, тем лучше.

Все обучение может быть выполнено в автономном режиме, поэтому не должно вызывать проблем с производительностью во время выполнения.

После того, как вы обучили распознаватель образов, вы можете направить его на изображения населения GA и получить некоторый скалярный показатель от распознавателей.

Лично мне нравятся Radial Basis Networks. Быстро тренироваться. Я бы начал со слишком большого количества входных данных и сократил их с помощью анализа основных компонентов (IIRC). Результаты могут быть просто мерой сходства и мерой несходства.

Последняя вещь; какой бы подход вы ни выбрали - можете ли вы написать об этом в блоге, опубликовать демо, что угодно; дайте нам знать, как у вас дела.

person jamesh    schedule 01.05.2009