模型重量從caffe移植,所以它在BGR format。
Caffe使用BGR顏色通道方案來讀取圖像文件。由於imread的基礎OpenCV實現,這是 。 RGB的假設 是一個常見的錯誤。
您可以找到原始caffe模型重量文件on VGG website。這個鏈接也可以在Keras文檔中找到。
我認爲第二個範圍是最接近的範圍。訓練期間沒有縮放,但作者已經減去了ILSVRC2014訓練集的平均值。正如the original VGG paper指出,第2.1節:
我們做的唯一預處理扣除平均RGB值, 計算訓練集,從每個像素。
這句話實際上是imagenet_utils.preprocess_input(mode='caffe')
所做的。
- 轉換從RGB到BGR:因爲在RGB格式
keras.preprocessing.image.load_img()
加載圖像,需要這種轉換的VGG16(和朱古力移植所有型號)。
- 減去平均BGR值:從圖像陣列中減去
(103.939, 116.779, 123.68)
。
預處理器未在vgg16.py
中使用。它被導入到文件中,以便用戶可以通過調用keras.applications.vgg16.preprocess_input(rgb_img_array)
來使用預處理功能,而不必關心模型權重的來源。 preprocess_input()
的參數始終是RGB格式的圖像數組。如果模型是用caffe訓練的,preprocess_input()
將把數組轉換成BGR格式。
請注意,功能preprocess_input()
不打算從imagenet_utils
模塊調用。如果您使用的是VGG16,請致電keras.applications.vgg16.preprocess_input()
,圖像將被轉換爲VGG16訓練的合適格式和範圍。同樣,如果您使用的是Inception V3,請致電keras.applications.inception_v3.preprocess_input()
,圖像將被轉換爲Inception V3的訓練範圍。