我相信很多人已经看到使用遗传算法生成与样本图像匹配的图像的演示。你从噪声开始,逐渐变得越来越接近目标图像,直到你有一个或多或少的精确复制。
然而,我所看到的所有例子都使用相当简单的逐像素比较,从而产生了相当可预测的最终图像的“淡入”。我正在寻找的是一种更新颖的东西:一种适合我们所认为的“相似”而非天真方法的健身措施。
我没有特定的结果 - 我只是在寻找比默认更有趣的东西。建议?
答案 0 :(得分:3)
我假设您正在讨论类似Roger Alsing's program的内容。
我实现了这个版本,所以我也对替代健身功能感兴趣,尽管我从提高性能而不是美学的角度来看它。我预计由于进化过程的性质,总会有一些“淡入”元素(尽管调整进化算子可能会影响它的外观)。
逐像素比较对于除小图像之外的任何东西都是昂贵的。例如,我使用的200x200像素图像具有40,000像素。对于每个像素三个值(R,G和B),必须将120,000个值合并到单个图像的适合度计算中。在我的实现中,我在进行比较之前缩小图像,以便减少像素数。权衡稍微降低了演化图像的准确性。
在研究替代适应度函数时,我遇到了一些使用YUV colour space代替RGB的建议,因为这与人类感知更紧密地联系在一起。
我的另一个想法是仅比较随机选择的像素样本。我不确定如果不尝试它会有多好。由于每次评估所比较的像素不同,因此可以保持人口中的多样性。
除此之外,你处于计算机视觉领域。我希望这些依赖于特征提取的技术对于每个图像来说会更昂贵,但是如果它们导致需要更少的代来获得可接受的结果,它们总体上可能更快。您可能需要调查PerceptualDiff库。此外,this page显示了一些Java代码,可用于根据要素而不是像素来比较图像的相似性。
答案 1 :(得分:1)
健身措施更接近于我们所认为的“相似”而不是天真的方法。
在软件中实施这样的措施绝对不是一件容易的事。 Google的“人类视觉模型”,某些起点的“感知错误指标”。您可以回避这个问题 - 只需将候选图像呈现给人类以选择最佳图像,尽管对人类来说可能有点无聊。
答案 2 :(得分:0)
我还没有看过这样的演示(也许你可以链接一个)。但是你的描述可能引发一个有趣的一些原创想法:
答案 3 :(得分:0)
我同意其他贡献者的说法,这是非平凡的。我还补充一点,它在商业上是非常有价值的 - 例如,那些希望保护其视觉IP的公司非常乐意能够在互联网上搜索与他们的徽标相似的图像。
我对此的天真方法是在多个图像上训练模式识别器,每个图像都是从目标图像生成的,并且应用了一个或多个变换:无论如何都要旋转几度;无论如何翻译几个像素;同一图像的不同尺度;各种模糊和效果(卷积面具在这里很好)。我还会为每个图像添加一些随机噪声。样本越多越好。
培训都可以离线完成,因此不应该导致运行时性能出现问题。
一旦你训练了模式识别器,就可以将它指向GA群体图像,并从识别器中获得一些标量分数。
就个人而言,我喜欢Radial Basis Networks。快速训练。我从太多的输入开始,并通过主成分分析(IIRC)将其缩小。输出可能只是一种相似度量和不相似度量。
最后一件事;无论你采取什么方法 - 你可以在博客上发表演讲,发布演示,等等;让我们知道你是怎么做的。