我想要在Keras中将输入RGB图像转换为灰度图的最佳方法的规范回答。 This answer提示,也许这样的事情最好用Lambda来实现,但这对我来说效率低下。在我看来,Average Pooling layers应该能够做到这一点,但我似乎无法弄清楚。是否有一个RGB到灰度层,我只是在文档中缺少?这似乎是一个相当普遍的操作。Keras RGB to Grayscale
1
A
回答
3
有几个公式可将彩色图像转换为灰度图像。 他们很好决定,而且选择通常取决于您是否喜欢更亮或更暗的结果,更好的对比度等。
Three common formulas are here。我们来看看“光度”公式。
result = 0.21 R + 0.72 G + 0.07 B
这只能通过lambda层来实现。它不是没有用处,只是数学。
def converter(x):
#x has shape (batch, width, height, channels)
return (0.21 * x[:,:,:,:1]) + (0.72 * x[:,:,:,1:2]) + (0.07 * x[:,:,:,-1:])
添加此拉姆达层模型:
Lambda(converter)
虽然AveragePooling似乎是这样,这些层是为了减少“空间”维度,而不是“通道”。您需要很多解决方法并重新整合,以使这些池层中的一个适用于通道。
如果你喜欢使用一个现成的公式从tensorflow,再次使用lambda层,现在有了这个功能,根据您所提供的答案:
Lambda(lambda x: tf.image.rgb_to_grayscale(x))
为converter
其他选项:
#perhaps faster? perhaps slower?
def converter(x):
weights = K.constant([[[[0.21 , 0.72 , 0.07]]]])
return K.sum(x*weights, axis=-1,keepdims=True)
由于斯捷潘诺维科夫评论。如果您的想法仅仅是预处理图像,您可以使用其他工具并避免麻烦。
您只需要在模型内部执行此操作,以便跟踪此操作中的渐变对您很重要。
相关问题
- 1. 如何检查NSImage是GrayScale还是RGB?
- 2. keras backend proba to categorical
- 3. android opencv rgb to hsv
- 4. RGB mat to avi matlab
- 5. RGB to VIBGYOR in python
- 6. cmyk to rgb using php
- 7. convert image to rgb code
- 8. ImageMagick GrayScale
- 9. 对UIImage应用棕褐色,RGB,GrayScale效果
- 10. PHP GD GRAYSCALE
- 11. PHP MagickWand True Grayscale
- 12. 在iOS中输出AVCaptureDevice时设置GrayScale
- 13. 验证Android位图是GrayScale
- 14. Kinetic JS - 加载GrayScale图像
- 15. 从RGB图像的绿色通道培训Keras CNN模型
- 16. GrayScale(ColorMatrix)会导致OutOfMemoryException。为什么?
- 17. 在Android中将位图转换为GrayScale
- 18. keras初始化keras
- 19. 将RGB图像转换为灰度和灰度转换为RGB图像?
- 20. Inline svg to greyscale
- 21. Keras-to-Tensorflow导出示例中为什么keras.models.model_from_config()抛出ValueError?
- 22. Keras CNN维度问题
- 23. 与Keras
- 24. 将灰度值转换为RGB表示?
- 25. Keras - 合并图层 - Keras 2.0
- 26. Keras层输入类型
- 27. 16位RGB到3位RGB
- 28. RGB元组到RGB整数
- 29. JS:从RGB蓝到红RGB
- 30. 在Keras
我喜欢这个答案,但是值得考虑使用像skimage.color.rgb2grey这样的已存在的光度计算实现 - http://scikit-image.org/docs/0.12.x/api/skimage.color .html –
我同意,如果你只是谈论预处理。对于模型运算,如果将张量看作keras张量或张量张量,那么确定,但如果不是,则梯度将丢失(如果梯度很重要)。 –