Алгоритм Fly

Алгоритм Fly (англ. Fly Algorithm) — вычислительный метод в области эволюционных алгоритмов, предназначенный для непосредственного исследования трёхмерных пространств в задачах компьютерное стереозрение, робототехника, медицинская визуализация. В отличие от традиционного подхода к стереозрению, опирающегося на сопоставление признаков для построения 3D-информации, алгоритм Fly формирует трёхмерное представление напрямую из случайно сгенерированных точек, называемых «мушками» (англ. flies). Каждая мушка — это координата в 3D-пространстве, оценка её точности проводится посредством сравнения проекций в сцене. Итеративно улучшая расположение мушек на основе критериев пригодности, метод позволяет построить оптимальное пространственное представление. Алгоритм Fly получил развитие во многих областях, в том числе и в цифровом искусстве, где используется для генерации сложных визуальных образов[1].

История

Алгоритм Fly относится к классу кооперативной коэволюции и реализует т. н. парижский подход[1]. Алгоритм был впервые разработан в 1999 году в рамках применения эволюционных алгоритмов к задаче компьютерное стереозрение[2][3]. В отличие от классических методов стереозрения, где выделяются примитивы на изображениях и сопоставляются для получения информации о глубине, алгоритм Fly осуществляет прямое исследование 3D-пространства сцены. Мушка определяется как 3D-точка, задаваемая координатами (x, y, z). После создания случайной популяции мушек в пространстве поиска (области видимости камер) эволюция популяции (по парадигме эволюционной стратегии) опирается на функцию пригодности, оценивающую вероятность того, что мушка находится на видимой поверхности объекта, исходя из согласованности её проекций на изображениях. Для этого функция учитывает оттенки серого, цвета и/или текстуры вычисленных проекций мушки.

Изначально алгоритм Fly применялся в стереозрении[2][3][4][5]. В то время как классические методы «приоритет образа» используют сопоставление признаков по стереопаре для построения 3D-модели, алгоритм Fly работает непосредственно с пространством сцены, используя изображение для оценки состоятельности 3D-гипотез. Вариант «Динамические мушки» определяет мушку как 6-мерный вектор (x, y, z, x’, y’, z’), включая параметры скорости[6][7]. Скорость мушек не входит явно в функцию пригодности, но применяется при обновлении позиций и подвергается тем же генетическим операторам (мутация, кроссовер).

Алгоритм также применяется для избегания препятствий на транспортных средствах[8], используя свойство, что популяция мушек является непрерывно эволюционирующим представлением сцены и позволяет напрямую формировать управляющие сигналы транспортных средств. Применение алгоритма Fly не ограничивается исключительно стереоизображениями — к функции пригодности можно добавлять данные других сенсоров (например, акустические датчики приближения), а также использовать одометрическую информацию для ускорения обновления положения мушек или, наоборот, извлекать данные о локализации и построении карты по положениям мушек[9].

Другим направлением применения алгоритма Fly стала реконструкция по эмиссионной томографии в ядерной медицине. Алгоритм успешно применялся для однофотонной эмиссионной компьютерной томографии[10] и позитронно-эмиссионной томографии[11][12]. В этих задачах каждая мушка рассматривается как источник фотонов, а её пригодность определяется степенью соответствия смоделированного сигнала измеренному сигналу на детекторах. Здесь была введена концепция «маргинальной оценки»: функция пригодности отдельной мушки определяется через её (положительный или отрицательный) вклад в глобальное качество популяции, что рассчитывается по принципу выключения одного элемента. Сначала рассчитывается глобальная функция пригодности для всей популяции, затем — разность этого значения с и без конкретной мушки[13][14]. В работе[15] пригодность интерпретируется как «уровень достоверности» и используется при вокселизации для уточнения вклада каждой мушки с помощью неявного моделирования (например, метаболлы), обеспечивая гладкие и точные результаты.

В последнее время алгоритм применяется в цифровом искусстве, например, для генерации мозаикоподобных изображений или эффектов «спрея»[16].

Парижская эволюция

В этой парадигме популяция особей рассматривается как «общество», где все они сотрудничают для достижения общей цели. Реализация включает стандартные генетические операторы (мутация, скрещивание, селекция). Главное отличие — в организации функции пригодности:

  • Локальная функция пригодности — оценивает эффективность особи (используется при селекции);
  • Глобальная функция пригодности — измеряет результативность всей популяции; её максимизация (или минимизация) — цель развития популяции.

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

Примеры применения парижской эволюции:

  • Алгоритм Fly
  • Текстовая аналитика
  • Распознавание жестов
  • Моделирование сложных взаимодействий в пищевой промышленности
  • Реконструкция позитронно-эмиссионной томографии

Сравнение с близкими подходами

Парижский подход и кооперативная коэволюция

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

  • В кооперативной коэволюции задача делится на подзадачи (группы особей), которые решаются отдельно[17].
  • В парижской эволюции вся популяция работает над общей задачей, особи направляют друг друга к перспективным областям пространства поиска.

Fly Algorithm и метод роя частиц

Метод роя частиц (англ. particle swarm optimisation, PSO) имеет сходство с кооперативной коэволюцией. PSO вдохновлён коллективным поведением стай птиц или рыб[18][19] и изначально применялся для анимации в графике. В задачах оптимизации каждая частица следует своему траектории, подстраиваясь к лучшей особи роя. В алгоритме Fly мушки воссоздают пространственное представление сцены на основе сенсорных данных; прямого взаимодействия между ними или модели поведения нет.

Оба метода стартуют с множества случайных решений, постепенно корректируемых к глобальному оптимуму. Однако в Fly Algorithm решением задачи является вся популяция или её часть: мушки неявно сотрудничают для формирования ответа. В PSO — ответ даёт единственная частица с наилучшей пригодностью. Другое отличие — в Fly Algorithm основацию составляет построение геометрической структуры, а не поведенческая модель.

Применения алгоритма Fly

Пример: Реконструкция томографии

Реконструкция по томографическим данным — это обратная задача, часто некорректная задача из-за шума или неполноты данных. Решение зачастую неоднозначно. Исходной информацией для алгоритма служат данные в виде преобразования Радона или синограммы для объекта .  — неизвестно,  — известно.

Процесс сбора данных можно описать уравнением:

где  — матрица системы либо оператор проецирования,  — пуассоновский шум. Тогда задача реконструкции соответствует обращению преобразования Радона:

Где принимает во внимание шум, параметры сбора, и пр. Алгоритм Fly реализует подход итеративная реконструкция. Итерационные методы томографической реконструкции обычно формализуются так:

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

Общий алгоритм состоит из следующих этапов:

undefined
  (i) Начинаем с первичной оценки изображения (обычно константа),
  (ii) Вычисляем проекцию из этого изображения,
  (iii) Сравниваем вычисленную и измеренную проекции,
  (iv) Корректируем изображение для уменьшения расхождений,
  (v) Повторяем до сходимости.

Ниже приведён псевдокод для алгоритма Fly, реализующего реконструкцию по томографическим данным. Описан базовый вариант, игнорирующий сложные генетические операторы типа митоза, двойной мутации и т. д.[14][20] Функционирующая JavaScript-реализация доступна на Fly4PET.

алгоритм algorithm-fly принимает
    входные данные: число мушек (N), 
           данные проекций (preference)
    выходные данные: популяция мушек (F), 
            оценки проекций на основании F (pestimated)
            трёхмерный массив (VF) после вокселизации F
    постусловие: отличие между pestimated и preference минимально.
    СТАРТ
 1.   // Инициализация: создаём стартовые позиции для N мушек
 2.   для каждой' мушки i из F
 3.       F(i)x ← random(0, 1)
 4.       F(i)y ← random(0, 1)
 5.       F(i)z ← random(0, 1)
 6.       Добавить проекцию F(i) в pestimated
 7.   
 8.   // Вычисление глобальной пригодности популяции
 9.   Gfitness(F) ← Errormetrics(preference, pestimated)
10.    
11.   fkill ← выбрать случайную мушку из F
12.    
13.   Удалить вклад fkill из pestimated
14.    
15.   // Глобальная пригодность без выбранной мушки
16.   Gfitness(F–{fkill}) ← Errormetrics(preference, pestimated)
17.    
18.   // Сравнить пригодности; вычислить локальную пригодность для мушки
19.   Lfitness(fkill) ← Gfitness(F–{fkill}) – Gfitness(F)
20.    
21.   если локальная пригодность > 0, // «хорошая» мушка
22.      то перейти к шагу 25.   // не убиваем её
23.      иначе перейти к шагу 27. // «плохая» мушка — её можно удалить
24.    
25.   Восстановить вклад мушки, далее — к шагу 11.
26.    
27.   Выбрать генетический оператор
28.    
29.   если оператор — мутация,
30.      то перейти к шагу 33.
31.      иначе перейти к шагу 49.
32.    
33.   freproduce ← выбрать случайную мушку из F
34.    
35.   Удалить вклад freproduce из pestimated
36.    
37.   // Глобальная пригодность без этой мушки
38.   Gfitness(F–{freproduce}) ← Errormetrics(preference, pestimated)
39.    
40.   // Сравнение и вычисление локальной пригодности
41.   Lfitness(freproduce) ← Gfitness(F–{freproduce}) – Gfitness(F)
42.    
43.   Восстановить вклад мушки
44.    
45.   если локальная пригодность ≤ 0, // «хорошая» мушка — допускается к размножению
46.      то перейти к шагу 52;
47.      иначе — к шагу 33.
48.    
49.   // Иммиграция — замена плохой мушки новой с случайной позицией
50.   Заменить fkill новой мушкой со случайным положением, затем — к шагу 56.
51.    
52.   // Мутация
53.   Скопировать freproduce в fkill
54.   Незначительно модифицировать положение fkill
55.    
56.   Добавить новую мушку в популяцию
57.    
58.   если остановка реконструкции,
59.      то к шагу 62;
60.      иначе к шагу 9.
61.    
62.   // Вокселизация
63.   VF ← вокселизация F
64.    
65.   вернуть VF
    КОНЕЦ

Пример: Цифровое искусство

В данной задаче входное изображение аппроксимируется набором элементарных фрагментов (например, подобно древней мозаике). Каждый фрагмент характеризуется ориентацией (угол θ), тремя цветовыми компонентами (R, G, B), размерами (w, h) и позицией (x, y, z). При N фрагментах необходимо подобрать 9N действительных чисел. Для 5000 элементов их 45 000. При классическом эволюционном подходе каждый индивидуум содержит весь этот набор признаков, что требует огромных вычислительных затрат. В алгоритме Fly каждому индивидууму (мушке) соответствует отдельный фрагмент, а пригодность оценивается по вкладу в глобальный результат. Таким образом, требуется всего 9 параметров на одну мушку при N особях.

Задачу можно сформулировать как оптимизационную:

где  — исходное изображение; ,  — координаты пикселя; ,  — ширина и высота изображения;  — популяция мушек;  — оператор проекции (отображает популяцию в изображение). Параметр может реализовываться по-разному; напр., в работе Z. Ali Abbood используются OpenGL и OpenCL для ускорения вычислений[16]. Алгоритм стартует с случайной популяции , затем вычисляется глобальная пригодность , минимизируемая в процессе оптимизации.

Примечания

  1. 1 2 Collet, Pierre. Artificial evolution and the Parisian approach: applications in the processing of signals and images // Optimization in Signal and Image Processing : [англ.] / Pierre Collet, Jean Louchet. — Wiley-ISTE, октябрь 2009. — ISBN 9781848210448.
  2. 1 2 3 Louchet, Jean (февраль 2000). L'algorithme des mouches : une stratégie d'évolution individuelle appliquée en стереовидении. Reconnaissance des Formes et Intelligence Artificielle (RFIA2000) [фр.]. Проверьте дату в |date= (справка на английском)
  3. 1 2 3 Louchet, Jean (сентябрь 2000). Stereo analysis using individual evolution strategy. Proceedings of 15th International Conference on Pattern Recognition, 2000 (ICPR’00) [англ.]. Барселона, Испания: IEEE. pp. 908—911. DOI:10.1109/ICPR.2000.905580. ISBN 0-7695-0750-6. Проверьте дату в |date= (справка на английском)
  4. 1 2 Louchet, Jean (июнь 2001). “Using an Individual Evolution Strategy for Stereovision”. Genetic Programming and Evolvable Machines [англ.]. 2 (2): 101—109. DOI:10.1023/A:1011544128842. S2CID 8953837. Проверьте дату в |date= (справка на английском)
  5. 1 2 Boumaza, Amine; Louchet, Jean (апрель 2003). “Mobile robot sensor fusion using flies”. Lecture Notes on Computer Science. European Conference on Genetic Programming (EuroGP 2003) [англ.]. 2611. Эссекс, Великобритания: Springer. pp. 357—367. DOI:10.1007/3-540-36605-9_33. ISBN 978-3-540-00976-4. Проверьте дату в |date= (справка на английском)
  6. 1 2 Louchet, Jean. L’algorithme des mouches dynamiques: guider un robot par évolution artificielle en temps réel // Apprentissage Automatique et Evolution Artificielle : [фр.] / Jean Louchet, Maud Guyon, Marie-Jeanne Lesot … [et al.]. — Hermes Sciences Publications, март 2002. — ISBN 978-2746203600.
  7. 1 2 Louchet, Jean; Guyon, Maud; Lesot, Marie-Jeanne; Boumaza, Amine (январь 2002). “Dynamic Flies: a new pattern recognition tool applied to stereo sequence processing” (PDF). Pattern Recognition Letters [англ.]. 23 (1—3): 335—345. Bibcode:2002PaReL..23..335L. DOI:10.1016/S0167-8655(01)00129-5. Проверьте дату в |date= (справка на английском)
  8. 1 2 Boumaza, Amine; Louchet, Jean (апрель 2001). “Dynamic Flies: Using Real-time evolution in Robotics”. Lecture Notes on Computer Science. Artificial Evolution in Image Analysis and Signal Processing (EVOIASP2001) [англ.]. 2037. Комо, Италия: Springer. pp. 288—297. DOI:10.1007/3-540-45365-2_30. ISBN 978-3-540-41920-4. Проверьте дату в |date= (справка на английском)
  9. 1 2 Louchet, Jean; Sapin, Emmanuel (2009). “Flies Open a Door to SLAM.”. Lecture Notes in Computer Science. Applications of Evolutionary Computation (EvoApplications 2009) [англ.]. 5484. Тюбинген, Германия: Springer. pp. 385—394. DOI:10.1007/978-3-642-01129-0_43.
  10. 1 2 Bousquet, Aurélie; Louchet, Jean-Marie; Rocchisani, Jean (октябрь 2007). “Fully Three-Dimensional Tomographic Evolutionary Reconstruction in Nuclear Medicine” (PDF). Lecture Notes in Computer Science. Proceedings of the 8th international conference on Artificial Evolution (EA’07) [англ.]. 4926. Тур, Франция: Springer. pp. 231—242. DOI:10.1007/978-3-540-79305-2_20. ISBN 978-3-540-79304-5. Проверьте дату в |date= (справка на английском)
  11. 1 2 Vidal, Franck P.; Lazaro-Ponthus, Delphine; Legoupil, Samuel; Louchet, Jean; Lutton, Évelyne; Rocchisani, Jean-Marie (октябрь 2009). “Artificial evolution for 3D PET reconstruction” (PDF). Lecture Notes in Computer Science. Proceedings of the 9th international conference on Artificial Evolution (EA’09) [англ.]. 5975. Страсбург, Франция: Springer. pp. 37—48. DOI:10.1007/978-3-642-14156-0_4. ISBN 978-3-642-14155-3. Проверьте дату в |date= (справка на английском)
  12. 1 2 Vidal, Franck P.; Louchet, Jean; Lutton, Évelyne; Rocchisani, Jean-Marie (октябрь–ноябрь 2009). “PET reconstruction using a cooperative coevolution strategy in LOR space”. IEEE Nuclear Science Symposium Conference Record (NSS/MIC), 2009. Medical Imaging Conference (MIC) [англ.]. Орландо, США: IEEE. pp. 3363—3366. DOI:10.1109/NSSMIC.2009.5401758. Проверьте дату в |date= (справка на английском)
  13. 1 2 Vidal, Franck P.; Louchet, Jean; Rocchisani, Jean-Marie; Lutton, Évelyne (апрель 2010). “New genetic operators in the Fly Algorithm: application to medical PET image reconstruction” (PDF). Lecture Notes in Computer Science. European Workshop on Evolutionary Computation in Image Analysis and Signal Processing (EvoIASP’10) [англ.]. 6024. Стамбул, Турция: Springer. pp. 292—301. DOI:10.1007/978-3-642-12239-2_30. ISBN 978-3-642-12238-5. Проверьте дату в |date= (справка на английском)
  14. 1 2 3 Vidal, Franck P.; Lutton, Évelyne; Louchet, Jean; Rocchisani, Jean-Marie (сентябрь 2010). “Threshold selection, mitosis and dual mutation in cooperative coevolution: application to medical 3D tomography” (PDF). Lecture Notes in Computer Science. International Conference on Parallel Problem Solving From Nature (PPSN'10) [англ.]. 6238. Краков, Польша: Springer. pp. 414—423. DOI:10.1007/978-3-642-15844-5_42. Проверьте дату в |date= (справка на английском)
  15. 1 2 Ali Abbood, Zainab; Lavauzelle, Julien; Lutton, Évelyne; Rocchisani, Jean-Marie; Louchet, Jean; Vidal, Franck P. (2017). “Voxelisation in the 3-D Fly Algorithm for PET” (PDF). Swarm and Evolutionary Computation [англ.]. 36: 91—105. DOI:10.1016/j.swevo.2017.04.001. ISSN 2210-6502.
  16. 1 2 3 Ali Abbood, Zainab; Amlal, Othman; Vidal, Franck P. (апрель 2017). “Evolutionary Art Using the Fly Algorithm” (PDF). Lecture Notes in Computer Science. Applications of Evolutionary Computation (EvoApplications 2017) [англ.]. 10199. Амстердам, Нидерланды: Springer. pp. 455—470. DOI:10.1007/978-3-319-55849-3_30. Проверьте дату в |date= (справка на английском)
  17. Mesejo, Pablo; Ibanez, Oscar; Fernandez-blanco, Enrique; Cedron, Francisco; Pazos, Alejandro; Porto-pazos, Ana (2015). “Artificial Neuron – Glia Networks Learning Approach Based on Cooperative Coevolution” (PDF). International Journal of Neural Systems [англ.]. 25 (4): 1550012. DOI:10.1142/S0129065715500124. HDL:2183/17502. PMID 25843127. S2CID 7653183.
  18. Kennedy, J; Eberhart, R (1995). Particle swarm optimization. Proceedings of IEEE International Conference on Neural Networks [англ.]. IEEE. pp. 1942—1948. DOI:10.1109/ICNN.1995.488968.
  19. Shi, Y; Eberhart, R (1998). A modified particle swarm optimizer. Proceedings of IEEE International Conference on Evolutionary Computation [англ.]. IEEE. pp. 69—73. DOI:10.1109/ICEC.1998.699146.
  20. 1 2 Abbood, Zainab Ali; Vidal, Franck P. (2017). “Basic, Dual, Adaptive, and Directed Mutation Operators in the Fly Algorithm”. Lecture Notes in Computer Science. 13th Biennal International Conference on Artificial Evolution (EA-2017) [англ.]. Париж, Франция. pp. 106—119. ISBN 978-2-9539267-7-4.
  21. Abbood, Zainab Ali; Vidal, Franck P. (октябрь 2017). “Fly4Arts: Evolutionary Digital Art with the Fly Algorithm”. Art and Science [англ.]. 17—1 (1): 1—6. DOI:10.21494/ISTE.OP.2017.0177. Проверьте дату в |date= (справка на английском)