#generation #evolution #evolutionary-art #generic-algorithm

bin+lib franklin

通过进化生成图像的实用程序

5 个版本

0.1.4 2023 年 4 月 28 日
0.1.3 2022 年 3 月 23 日
0.1.2 2022 年 2 月 20 日
0.1.1 2022 年 2 月 19 日
0.1.0 2022 年 2 月 19 日

#72 in 模拟

MIT 许可证

88KB
2K SLoC

franklin

franklin-ci Crates.io docs.rs Crates.io

生成进化艺术的实用程序。

什么是艺术?
不仅仅是部分之和。

描述

这里有两个实用程序:允许您通过命令行生成图像的 franklin-cli 和一个 Rust 库 franklin,其中包含一些开箱即用的实用程序。它还允许您定义自己的组件以进一步定制生成。

底层过程是我对 进化算法 的实现。整个过程可以分为三个部分

  • 变异 - 当前一代的每个样本都被随机变异。

  • 评分 - 每个样本与理想图像(源)进行比较,并计算这些图像之间的差分得分。

  • 交叉 - 评分后,从该代中选择最佳个体进行繁殖。在这一步中,我们将两个父母的基因混合以产生新的后代,直到产生具有相同大小的下一代。

使用方法

该软件包在 crates.io 上发布。您可以使用以下命令安装它

cargo install franklin

cargo 是 Rust 软件包管理器。有关如何设置 Rust 环境的说明,请参阅 此处

如果您想开始模拟,最好检查 franklin-cli 中所有可用的选项。

franklin-cli --help

您还可以实现自己的组件,例如突变器、适应度函数或交叉函数。有关更多详细信息,请参阅 文档

示例

以下是使用此工具生成的图像及其 CLI 参数的一些示例。

franklin-cli --image "/temp/Lenna_(test_image).png" -t 7 -m Rectangle -f SquareDistance -c EqualHalfs
    --output-dir "/temp/images" --save-every 100
源图像 生成的图像(第 3000 代)
Lenna_(test_image).png example_1_3000.png

franklin-cli --image "/temp/Lenna_(test_image).png" -t 7 -m Triangle -f SquareDistance -c ArithmeticAverage
    --output-dir "/temp/images" --save-every 100
源图像 生成的图像(第 4000 代)
Lenna_(test_image).png example_2_4000.png

franklin-cli --image "/temp/Lenna_(test_image).png" -t 7 -m Rectangle -f SquareDistance -c ArithmeticAverage
    --output-dir "/temp/images" --save-every 100
源图像 生成的图像(第 13000 代)
Lenna_(test_image).png example_3_13000.png

franklin-cli --image "/temp/Mona_Lisa_322_480.png" -t 7 -m Rectangle -f SquareDistance -c LeftOrRight
    --output-dir "/temp/images" --save-every 100
源图像 生成的图像(第 8000 代)
Mona_Lisa_322_480.png example_4_8000.png

franklin-cli --image "/temp/Mona_Lisa_322_480.png" -t 7 -m Circle -f SquareDistance -c LeftOrRight
    --output-dir "/temp/images" --save-every 100
源图像 生成的图像(第 4000 代)
Mona_Lisa_322_480.png example_5_4000.png

上述所有示例(不包括源图像)均受 CC BY-SA 4.0 许可。有关更多详细信息,请参阅 asserts/README.md

许可证

源代码采用MIT许可证,更多详情请参阅 LICENSE.txt 文件。
所有示例图像均位于 asserts 文件夹中,并采用 CC BY-SA 4.0 许可,更多详情请参阅 asserts/LICENSE.txt 文件。

依赖项

~28–42MB
~541K SLoC