我正在实现一个自动编码器,用于重建彩色图像。我想要使用的损失函数需要减少颜色集(最多约 100 种不同的颜色),但我正在努力寻找合适的可微分算法。
我的另一个疑问是:直接在损失函数中应用这种量化是否更好,或者我可以在自定义的不可训练层中实现它吗?第二种情况,算法需要可微分吗?
解决这个问题的第一个想法是在将图像输入网络之前对其进行量化,但我不知道如何“强制”网络仅生成量化的颜色作为输出。
非常感谢任何建议,我不需要代码,只需要一些想法或新观点。作为 Tensorflow 的新手,我可能遗漏了一些东西。
如果你想压缩图像,似乎你想找到用于图像压缩的离散颜色集。在这种情况下,自动编码器不适合图像压缩。
通用自动编码器将图像张量(
B x C x H x W
)压缩为每个图像的潜在代码(B x D
,通常为D = 512
)。这种方法的优点在于“自动”找到最佳潜在空间。
但是,如果您想利用张量流的凸优化工具,一些连续松弛技术(例如插值)可能会有所帮助。
在接下来的论文中,他们利用连续松弛来进行神经网络的离散路径选择。
刘 H.、西蒙扬 K. 和杨 Y. (2018)。 Darts:可微架构搜索。 ICLR。
在下面的论文中,他们利用插值在查找表上学习量化内核库。
Jo, Y. 和 Kim, S. J. (2021)。使用查找表的实用单图像超分辨率。 CVPR。
他们都提供代码。