- PVSM.RU - https://www.pvsm.ru -
Недавно прочитал статью [1] про генерацию абстрактных изображений и вспомнил об одной идее, которую забросил пару лет назад из-за отсутствия практической ценности, и уже совершенно про неё забыл. Спешу поделиться, так как думаю что она вполне сгодится в качестве ещё одного примера работы генетического алгоритма.
Вряд ли идея нова, да и слишком она проста, чтобы не приходить никому в голову ранее. Состоит она в том, чтобы к изображению последовательно применять некоторые эффекты, настройки для которых отбираются генетическим алгоритмом.
В моём примере [2] сами эффекты выбираются вручную — это колонка справа от изображения: размытие, цвет, контраст, резкость и т.п. А вот настройки для каждого из эффектов выбираются случайно. Но случайно до тех пор, пока вы не запустите процесс эволюции и отбора.
Осуществляется этот процесс так:
Несколько слов о наложении эффектов
Несколько слов об алгоритме
При классическом, самом простом описании генетического алгоритма, обычно говорят о популяции состоящей из индивидов, отбора из них лучших, скрещивании и мутации. Затем схема повторяется с популяцией уже новых получившихся индивидов. Эта схема проста для понимания, так как легко провести аналогию с живыми существами, и я стараюсь использовать те же термины.
Но фактически, когда я писал свой ужасный код, вся эта схема превратилась в одно единственное дерево признаков, где каждый признак имеет некоторую вероятность проявления. Мне кажется, что такое представление ещё проще, особенно когда нужно писать код. Смотрите что получается. На начальной стадии вероятности всех признаков одинаковы и дерево генерирует случайных индивидов, а затем мы эти вероятности просто меняем в соответствии с отбором лучших и коэффициентом мутации, вот и всё! Ведь по сути при выборе сильнейших выживают не индивиды, а признаки, которые они в себе несут, именно признаки сильнейшего подкрепляются. Значит при отборе лучшего индивида нам просто надо найти его признаки в дереве всех признаков и увеличить их вероятность. Ну что бы в будущем они чаще проявлялись. А мутация — не что иное как изменение вероятностей всех признаков дерева в сторону их равновероятного проявления. Мутация в 100% означает что все признаки стали вновь равновероятными, независимо от истории их эволюции, 0% мутации — вероятность признаков будет снова строго задана и определяться историей изменения вероятностей.
О проекте
Не думаю что эта идея и проект может быть широко востребованы на практике, даже если привести в порядок интерфейс. По крайней мере не с такой фитнесс-функцией. Дело в том, что для реального редактирования фото гораздо проще, быстрее и эффективнее использовать
Всех с наступившим Новым Годом!
Автор: DeveloperAlexander
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/52124
Ссылки в тексте:
[1] статью: http://habrahabr.ru/post/205892/
[2] примере: http://amenothis.tmweb.ru/fotorobot333/pixastic.html
[3] мозг: http://www.braintools.ru
[4] Источник: http://habrahabr.ru/post/208220/
Нажмите здесь для печати.