Новая фитнес-мера для эволюционного моделирования соответствия изображений - PullRequest
4 голосов
/ 30 апреля 2009

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

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

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

Ответы [ 4 ]

3 голосов
/ 02 мая 2009

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

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

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

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

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

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

1 голос
/ 30 апреля 2009

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

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

0 голосов
/ 01 мая 2009

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

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

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

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

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

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

0 голосов
/ 30 апреля 2009

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

  • Три различных алгоритма, работающих параллельно, возможно, RGB или HSV.
  • Перемещение, поворот или иное незначительное изменение целевого изображения во время бега.
  • Пригодность основывается на разнице контрастности / значения между пикселями, но без знания фактического цвета.
  • ... тогда "заправить" один пиксель правильного цвета?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...