深度學習中為什麼普遍使用BGR而不用RGB?

個人感覺應該沒有區別啊,對於deep CNNs。難道只是習慣?每次都得轉換一下,感覺很麻煩。


因為caffe,作為最早最流行的一批庫的代表,用了opencv,而opencv默認通道是bgr的。這是opencv的入門大坑之一,bgr是個歷史遺留問題,為了兼容早年的某些硬體。

其實你自己訓練完全可以用rgb,新庫也基本沒了bgr還是rgb這個問題,就是切換下順序。但如果你要用一些老的訓練好的模型,就得兼容老模型的bgr。


謝邀,如前者回答。主要是因為opencv用的BGR,然後caffe基於opencv,所以跟著用BGR,至於opencv為什麼用BGR,這只是人為定的一個標準,無論BGR和RGR都一樣,具體參考這裡吧http://www.learnopencv.com/why-does-opencv-use-bgr-color-format/


因為有些硬體平台上當年使用的是BGR,然後opencv也就跟著當年的習慣用了bgr


其實也沒有普遍,只是在caffe裡面是這樣,原因其他答案也已經提到了,caffe底層使用了opencv庫,而opencv默認通道是BGR。這裡就會有一個大坑,例如你用python的PIL讀入一張圖像(RGB),然後使用pycaffe將其輸入一個模型中進行分類,如果忘記將讀入數據變換成BGR格式,那麼後續結果肯定會有問題。可以考慮使用PyTorch,就沒有這個問題了


為什麼我有一種感覺是這是位元組序的鍋………

顯然rgba是big endian吧……按32位讀在LE的機器的寄存器里就變成了abgr了,那如果按照LE是rgba,那BE豈不就變成了abgr……


因為OpenCV默認通道為BGR,至於為什麼用BGR,可能是因為當時比較流行BGR,以至於後來RGB變為主流後,也不方便改了,就一直沿用BGR。而caffe又是用了opencv的,所以沒辦法。智能外部轉換一下。


前面答主也都已經說到了。自己訓練模型就無所謂,用別人訓練好的模型就要關注一下。


opencv讀進來的圖片默認是BGR


bgr是基於opencv來的


如果用別人的模型作為預訓練模型,或者直接拿訓練好的做測試,要注意模型作者用的通道順序。如果從頭開始訓練自己的模型,通道順序當然是隨便的啦,rgb bgr gbr...但是別人用你的模型時又蛋疼了,所以還是要有個標準比較好啊!


字母序我覺得挺好的


某些前輩帶的頭。。當然現在實際上沒區別


推薦閱讀:

支持多label的caffe,有比較好的實現嗎?
如何評價谷歌最近在人臉數據集上取得驚人效果的BEGAN模型?
請問如何將深度學習Caffe做成一個動態庫,方便在其他應用程序中調用?
卷積神經網路(CNN)學習資料推薦?

TAG:機器學習 | 計算機視覺 | 深度學習DeepLearning | Caffe深度學習框架 | Torch深度學習框架 |