典型图像 GAN 的输出形状(w,h,3)
为 0...1,然后缩放到 0...255 以表示彩色图像。
所以在每个 w,h 位置,我们得到 3 个值,它们共同代表 RGB 空间中的单一颜色。
我想以某种方式限制该输出以仅允许特定颜色作为输出。例如
colours = [[200, 20, 20], [20, 200, 20], [20, 20, 200], ...]
number_of_allowed_colours = len(colours)
理想情况下,允许的颜色将是输入的一部分,但考虑到任务的复杂性,我可以使用颜色作为网络架构的一部分开始网络的第一次迭代。
到目前为止,我尝试了很多方法都没有成功。我看到它可以完成的方式是使最后一层网络具有形状(w,h,number_of_allowed_colours)
,然后应用激活函数,以便将第三维映射到相应的颜色三元组。我试图扩展的一个想法是tf.argmax
结合使用类似tf.contrib.lookup.HashTable
. 我正在研究的另一个选择是使用常规(w,h,3)
形状层,但在激活内将其四舍五入到最接近的颜色匹配。这里的问题是缺乏渐变以及没有完美的算法来比较颜色。
编辑:损失函数必须使用生成的输出图像,因此解决方案必须完全可微。网络的输出必须是(w,h,3)
成形的图像。