На пятом семестре бакалавриата мы с товарищами по команде искали нетривиальные проектные идеи для нашего класса по искусственному интеллекту. Мы нашли это отличное видео:
Мы подумали, что было бы здорово попробовать то же самое, используя генетический алгоритм. Наш алгоритм принимает изображение в качестве входных данных и аппроксимирует изображение, используя фиксированное количество кругов / прямоугольников разных размеров и цветов.
Мы написали базовую версию и попробовали применить ее на логотипах известных компаний и других «не очень сложных» объектах. Вот результаты (слева исходное изображение; справа восстановленное изображение):
Утка
Логотип Nike
Логотип Pepsi
Сердце
Абстрактное искусство
Логотип Dominos
Логотип Apple
Логотип Android
Бэтмен!
Другое абстрактное искусство
Флаг Индии
IBM
Обратите внимание, как алгоритм с треском проваливает реконструкцию спиц в индийском флаге. Это потому, что спицы слишком тонкие, чтобы их мог подобрать алгоритм. Ниже приведено изображение Анджелины Джоли, которое алгоритм не смог восстановить даже после 24 часов работы. Опять же, это связано с тем, что алгоритму трудно улавливать детали, если ему не разрешено работать в течение достаточно длительного времени.
Вы можете найти исходный код здесь: amangoeliitb / Genetic-Algorithm. Вы можете попробовать поиграть с эвристикой измерения расстояния и, возможно, придумать более быструю реализацию (поделитесь ею со мной, если найдете что-нибудь интересное!)
Удачного обучения!