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 模拟
88KB
2K SLoC
franklin
生成进化艺术的实用程序。
什么是艺术?
不仅仅是部分之和。
描述
这里有两个实用程序:允许您通过命令行生成图像的 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 代) |
---|---|
![]() |
![]() |
franklin-cli --image "/temp/Lenna_(test_image).png" -t 7 -m Triangle -f SquareDistance -c ArithmeticAverage
--output-dir "/temp/images" --save-every 100
源图像 | 生成的图像(第 4000 代) |
---|---|
![]() |
![]() |
franklin-cli --image "/temp/Lenna_(test_image).png" -t 7 -m Rectangle -f SquareDistance -c ArithmeticAverage
--output-dir "/temp/images" --save-every 100
源图像 | 生成的图像(第 13000 代) |
---|---|
![]() |
![]() |
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 代) |
---|---|
![]() |
![]() |
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 代) |
---|---|
![]() |
![]() |
上述所有示例(不包括源图像)均受 CC BY-SA 4.0 许可。有关更多详细信息,请参阅 asserts/README.md。
许可证
源代码采用MIT许可证,更多详情请参阅 LICENSE.txt 文件。
所有示例图像均位于 asserts 文件夹中,并采用 CC BY-SA 4.0 许可,更多详情请参阅 asserts/LICENSE.txt 文件。
依赖项
~28–42MB
~541K SLoC