面向機器智慧的TensorFlow實戰5:目標識別與分類

CopperDong發表於2018-05-26

  本節用於訓練CNN模型的資料集為Stanford的Dogs Dataset是ImageNet的一個子集

  卷積層(tf.nn.conv2d)、非線性變換層(tf.nn.relu)、池化層(tf.nn.max_pool)及全連線層(tf.nn.matmul)


   TensorFlow的輸入流水線擁有一種為使用一個批資料中的多幅影像而設計的專門格式。

2、卷積

    卷積核(kernel)也稱為權值、濾波器、卷積矩陣或模板。跨度(strides)

conv2d = tf.nn.conv2d(input_batch, kernel, strides=[1,3,3,1], padding="SAME")
strides引數的格式與輸入向量相同,集(image_batch_size_stride, image_height_stride, image_width_stride, image_channels_stride)。

     邊界填充

     資料格式


3、常見層

    單層CNN的一種實際用途是檢測邊緣。對於影像識別和分類任務而言,更常見的情形是使用不同的層型別支援某個卷積層。這些層有助於減少過擬合,並可加速訓練過程和降低記憶體佔用率。

    卷積層:tf.nn.depthwise_conv2d、tf.nn.separable_conv2d、tf.nn.conv2d_transpose

    啟用函式:在CNN中主要使用tf.nn.relu,是因為它雖然會帶來一些資訊損失,但效能較為突出。開始設計模型時,推薦使用tf.nn.relu,但高階使用者也可建立自己的啟用函式。評價某個啟用函式是否有用時,可考慮下列為數不多的幾個主要因素:

1)該函式應是單調的,這樣輸出便會隨著輸入的增長而增長,從而使利用梯度下降法尋找區域性極值點成為可能。

2)該函式應是可微分的,以保證該函式定義域內的任意一點上導數都存在,從而使利用梯度下降法能夠正常使用來自這類啟用函式的輸出。

    tf.nn.relu:優點在於不受“梯度消失”的影響,且取值範圍為[0, +00],其缺點在於當使用較大的學習速率是,易受達到飽和的神經元的影響。

    tf.sigmoid:位於區間[0,1]。當輸入接近飽和或變化劇烈時,對輸出範圍的這種縮減往往會帶來一些不利影響。

    tf.tanh:主要區別在於值域為[-1.0, 1.0]。在某些特定的網路架構中,能夠輸出負值的能力可能會非常有用。

    tf.nn.dropout:依據某個可配置的概率將輸出設為0.0。當引入少量隨機性有助於訓練時,這個層會有很好的表現。一種適合的場景是:當要學習的一些模式與其近鄰特徵耦合過強時。這種層會為所學習到的輸出新增少量噪聲。注:這種層應當只在訓練階段使用。如果在測試階段使用該層,它所引入的隨機噪聲將對結果產生誤導。

    池化層:能夠減少過擬合,並通過減少輸入的尺寸來提高效能。它們可用於對輸入降取樣,但會為後續層保留重要的資訊。只使用tf.nn.conv2d來減少輸入的尺寸也是可以的,但池化層的效率更高。

     tf.nn.max_pool、tf.nn.avg_pool

     歸一化:由於ReLU是無界函式,利用某些形式的歸一化來識別那些高頻特徵通常是十分有用的。

     高階層

4、影像與TensorFlow

     載入影像:Stanford Dogs資料集

     JPEG與PNG:tf.image.decode_jpeg,另一種是tf.image.decode_png

    TFRecord:為將二進位制資料和標籤(訓練的類別標籤)資料儲存在同一個檔案中,內建檔案格式為TFRecord,它要求在模型訓練之前通過一個預處理步驟將影像轉換為TFRecord格式。該格式的最大優點是將每副輸入影像和與之關聯的標籤放在同一檔案中。

     影像操作:裁剪、邊界填充、翻轉、飽和與平衡。

     顏色:灰度、HSV空間、RGB空間、LAB空間、影像資料型別轉換

5、CNN的實現

     訓練資料來自Stanford的一個包含了許多狗及其品種標籤的資料集

     http://vision.stanford.edu/aditya86/ImageNetDogs/,下載解壓為imagenet-dogs目錄

     網路採取了Alex Krizhevsky的AlexNet的簡化版本,但並未使用AlexNet的所有層。


    將影像轉為TFRecord檔案:因為影像尺寸不一,且相應的品種標籤也不在影像檔案中。轉換為TFRecord檔案將有助於加速訓練,並簡化與影像標籤的匹配。另一個好處是與訓練和測試有關的影像可以事先分離,這樣當訓練開始時,就可利用檢查點檔案對模型進行不間斷的測試。開啟每幅影像,將其轉換為灰度圖,調整其尺寸,然後將其新增到一個TFRecord檔案中。

    載入影像:每次載入少量影像及相應的標籤,批處理時,必須要滿足的條件是系統有足夠的記憶體

     模型:類似LeNet-5,兩個卷積層和池化層

     訓練

     利用TensorBoard除錯濾波器


相關文章