1. 程式人生 > >Flower classification using deep convolutional neural networks 閱讀筆記

Flower classification using deep convolutional neural networks 閱讀筆記

**

Flower classification using deep convolutional neural networks

**
本部落格主要是對該篇論文做一個閱讀筆記 ,用FCN+CNN去做識別
期刊: IET Computer Vision

內容:

(1)自動分割花朵區域,然後用最小邊界框進行花朵定位,裁剪圖片。花朵分割使用FCN實現。
(2)建立一個具有魯棒性的CNN分類器,識別裁剪後的花朵圖片。建立一個具有魯棒性的CNN分類器,識別裁剪後的花朵圖片。
(3)結果:識別效果超過 97%結果:識別效果超過 97%

一.關於CNN

該論文是針對 2D影象做分割、檢測、識別。
1.若輸入影象的尺寸:I = w × h × c ,其中 I 是指影象物件,w表示影象的寬度,h表示影象的寬度,c表示影象的通道。
2.給定卷積核(濾波器)的大小:K = Kw × Kh × Kc × n ,Kw表示卷積核的寬,Kh表示卷積核的高,Kc表示卷積核的通道,n表示卷積核的個數。
3.填充影象。主要目的是學習影象的邊緣資訊。若填充畫素為p,Kw = Kh ,則卷積後的特徵圖的大小為:
M = [(w-Kw+2p)/s] + 1

, s表示步幅。
4.對影象進行卷積後,使用ReLu函式,目的是加速網路的訓練過程。
5.對特徵圖進行下采樣,下采樣後的特徵圖的大小變為輸入之前影象大小的一半
6.可選擇性採用全連線層。決定那些特徵與識別的類別有關。

二.提出的方法

第一步:通過採用 FCN 來檢測最小邊界框進而定位花朵。
第二步:訓練CNN來精確地分類不同種類的花。

識別花的種類的整體框架如下:
在這裡插入圖片描述

1.通過遷移學習進行網路初始化

CNNs中的卷積核雖然可以隨機初始化,但是大多數深度學習的方法都採用已存在的在大資料集(例如IMageNet)與訓練的模型來初始他們的模型,這就是所謂的遷移學習。以下時FCN模型的描述:

在這裡插入圖片描述

FCN包括5個卷積塊和3個反捲積層,這3個卷積層對第5個卷積塊生成的特徵圖進行上取樣。使用雙線性插值上取樣來確保花朵邊緣的平滑重建。此外,(S=2,2,8)也允許對細粒度結構的分割進行細粒度差值。使用反向傳播來訓練FCN。 但是最初在塊1和2上修復核心(即使用ImageNet核心)並且只讓模型在塊3-5上學習核心。這使它可以在不優化低階核心的情況下學習中到全域性的特徵圖。當驗證準確度飽和時,我們停止訓練,然後從最後學習的模型開始再次重新啟動,讓FCN學習前兩個塊中的核心。 這允許模型學習本地特徵。 通過實驗發現,與一步學習所有核心相比,此過程可提高分段準確性。 此外,由於具有小資料集,我們通過允許小旋轉,水平翻轉,影象邊界的隨機小裁剪或這些變換的任何組合來在訓練期間增強影象

。 這有助於建立更強大的FCN模型並避免過度擬合。
該篇論文采用VGG16模型來初始化FCN的前5個模組,實線表示的部分為FCN模型。然後使用FCN去初始化CNN。

2.使用FCN對花進行語義分割

在一張帶有花的圖片中使用FCN對花朵區域進行分割、檢測。將分割任務看做一個二元分類問題,即0表示背景,1表示花朵區域。
以下圖片詳細展示了分割和花朵定位的過程:

在這裡插入圖片描述

影象a為原始影象,影象b是FCN輸出的分割掩摸,其中白色區域就是花朵區域,保持最大連通量,並找出最小邊界框(紅色框標記),如圖c所示,進而裁剪圖片,如圖d所示。

3.用CNN進行花朵分類

當獲得裁剪影象之後,保留了高度可辨別的特徵,而移除其他可能誤導分類的區域。
1.使用softmax損失函式作為衡量特定引數好壞的標準
2.使用SGD(隨機梯度下降)優化和更新引數,最小化損失函式

在這裡插入圖片描述
其中j = 1,…,N。我們注意到在CNN引數優化期間損失函式最初表現不佳。這有幾個可能的原因,但主要是由於與二進位制分割FCN中的學習權重相比的多類分類問題的複雜性。另外,我們學習的函式不是凸起的,不是平滑的,並且具有許多平坦區域的區域性最小值。因此,我們提出了兩個新的步驟來改善演算法的收斂性。

首先,由於CNN中有比FCN更多的卷積層,我們建議以三步法學習核心引數。第一,我們讓CNN在塊6-8處學習卷積層中的核心,同時修復前五個塊的引數。第二,我們讓CNN學習塊3-5中的引數。第三,我們讓所有塊的所有引數同時學習。以上為CNN提供了更好的收斂。

其次,由於存在大量的區域性最小值,這樣會阻止優化器的優化。因此,讓優化器在某些情況下重新啟動,同時找到的最佳值。為了解決這個問題,我們提出了一個多步驟的培訓方法,在此過程中,我們強制學習率在每個步驟中降低,然後突然大幅增加。學習速率的提高允許優化器“重啟”自身以允許搜尋其他附近的解決方案。關於重啟SGD的不同方法的更多細節在[50]中描述。

此外,由於3.2節中描述的花朵檢測步驟,可以使用更廣泛資料增強。例如,這裡使用比FCN模型更大範圍的旋轉角度和垂直翻轉。因為影象已經在花朵周圍被裁剪,並且大旋轉不會影響整個裁剪影象的整體外觀。然而,在整個(未裁剪的)花影象上執行大旋轉可能產生完全不現實的影象。最後,通過資料增強,生成的CNN對於更廣範圍的變換(尤其是物件旋轉)可以更穩健。

4.實驗

該論文在三個資料集上進行了實驗,分別是:the Oxford 102 [5], the Oxford 17 [6] and Zou–Nagy [7]

4.1評估指標

對於花朵分割階段,使用 IoU(人工分割和自動分割重合的百分比),如下公式:
在這裡插入圖片描述

精確的分割對於花的分類任務並不產生影響,因為在識別時,只是粗略檢測出花朵的區域,因此只需評估檢測的進度即可。該論文中使用邊框的重疊來衡量,即Biou,如下公式:
在這裡插入圖片描述
其中,th表示閾值。
識別精度(CA)用以下公式表示:
在這裡插入圖片描述

5.實驗結果

(1)採用資料增強 和 不採用資料增強的分割檢測的精度,如下表所示:
在這裡插入圖片描述
分割精度提高7.5%,邊框檢測精度提高4.1%

(2)在不同資料集的不同閾值下,邊框(Boverlap)重疊率的變化,如下圖所示:
在這裡插入圖片描述

當th = 0.5時,Boverlap = 0.95, 任何一個邊框的Biou > 10% 。 以下是該論文與已經公佈的實驗結果作比較:

在這裡插入圖片描述

在這裡插入圖片描述