我想要在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張量或張量張量,那麼確定,但如果不是,則梯度將丟失(如果梯度很重要)。 –