AI здесь вобщем не нужен. Это классика машинного обучения еще из 20-го века.
Я такое делал в алгоритме K-Means для Apache Spark. В данном случае выборкой были векторы { r, g, b }
всех пикселов картинки а количество кластеров было 256. И на выходе алгоритма я получал массив из 256 наиболее популярных цветов (центров кластеров) для данной картинки.
Реализация алгоритма K_Means есть в любом научном или статистическом пакете. Я еще находил ее
в java commons-math кажется.
Далее рисование мозаики - это отдельная задача. Она - утилитарная и любой разработчик Python / JavaScript
ее сделает за 5 минут. И здесь AI тоже не нужен.