?

基于Xception和遷移學習的圖像分類研究

2024-03-27 16:21謝生鋒
現代計算機 2024年1期
關鍵詞:分類器準確率卷積

謝生鋒

(河南工學院計算機科學與技術學院,新鄉 453003)

0 引言

遷移學習是一種機器學習方法,它是將已經學習過的知識遷移應用于新的問題中,用于提高解決新問題的速度和能力。卷積神經網絡CNN使用卷積運算提取圖像的特征,從而實現對圖像的分類和識別,在CNN 的發展過程中出現了許多經典的網絡模型,如AlexNet、GoogLeNet、VGGNet、ResNet 和Xception 等[1]。這些網絡模型是在包含超過1400萬張有標記圖片的ImageNet數據集訓練出來的,所以當需要訓練一個新的圖像分類任務時,使用這些網絡模型作為預訓練模型,然后在訓練好的卷積基的基礎上建立分類器。

1 Xception網絡模型

Xception 是Google 繼Inception 后提出的InceptionV3 的一種改進模型,主要采用深度可分離卷積替代InceptionV3 中的卷積操作,將通道維度和空間維度的處理分開,達到解耦的效果。Xception 模型先用1 × 1 卷積處理通道維度之間的信息,再用3 × 3 卷積處理每一個通道維度內的空間維度信息。Xception 網絡結構是由36 個卷積層組成網絡的特征提取基礎,這些卷積層被分成14個模塊,除了首尾模塊,其余模塊用線性殘差連接[2],其網絡結構如圖1所示。

基于上述Xception 網絡模型的特點,其在ImageNet 數據集上訓練的準確率有明顯提高,參數量有所下降,同時引入了殘差連接機制也加快了Xception 的收斂過程。本文采用Xception網絡模型作為預訓練模型,對貓狗圖像進行分類識別。

2 實驗數據

2.1 數據集

數據來源于Kaggle競賽平臺上的dogs-vs-cats數據集,該數據集由標記為cat 和dog 的25000張圖片和未標記的圖片組成,其中有標記的貓和狗的圖片各占12500張。本文從有標記的圖片中隨機抽取5000 張圖片來構建數據集,將數據集劃分為訓練集、驗證集和測試集三部分,圖片數量分別是3000張、1000張和1000張,并且每一個數據集中的貓和狗的圖片數量相等。劃分后的訓練集中的圖片如圖2所示。

圖1 Xception模型結構圖

圖2 訓練集圖片

2.2 數據處理

由于Xception 模型要求的圖片大小是229像素×229像素,包含的三個通道分別是R、G、B。所以先把三個數據集中的圖片維度處理為(229,229,3),使用Keras 框架中的圖片生成器ImageDataGenerator 對訓練集中的圖片做數據增強,它是對圖片進行旋轉、平移、縮放、反轉、剪切和歸一化等操作,歸一化是把像素值縮小到(0,1)范圍內[3]。通過數據增強可以擴充數據集大小,增強模型的泛化能力,而對驗證集和測試集中的圖片只做歸一化處理,訓練集和驗證集每個批次生成圖片的數量分別設置成30 和20,同時把文本類標簽cat 和dog 編碼為數值,分別是0和1。

3 構建模型

采用Xception 模型作為預訓練模型,首先刪除Xception 模型的最后一個模塊,即刪除Dense 層和GlobalAveragePooling 兩層,同時對Xception 模型進行微調,解凍block14 模塊,包括兩個SeparableConv2D 層、兩個BatchNormalization 層,兩個Activation 層,使這六層變為可訓練狀態,它們的權重在訓練模型的每個周期中被更新[4],block14模塊的結構如圖3所示。

圖3 block14模塊的結構圖

在block14 模塊的基礎上構建圖像分類器,使用GlobalAveragePooling2D 對圖像數據進行扁平化處理,得到的一維數據作為Dense層的輸入數據,激活函數是ReLU;再使用Dropout層抑制過擬合;最后使用Dense 層進行二分類,激活函數是Sigmoid。圖像分類器的結構如圖4所示。

圖4 圖像分類器的結構圖

4 實驗結果分析

使用模型的fit_generator 函數在數據生成器上進行訓練,分批次讀取數據增強后的圖片數據,模型迭代訓練50 次。設置訓練集的一次訓練包含的步數是100,每一步生成30個圖片數據參與訓練,驗證集的一次訓練包含的步數是50,每一步生成20 個圖片數據參與訓練。模型的損失函數和準確率分別采用binary_crossentropy 和accuracy來評估[5]。

經過訓練后模型的準確率如圖5所示,可以看出,驗證集的準確率為98.9%。模型的損失值如圖6所示,驗證集的損失曲線是逐漸下降并趨于收斂。

圖5 模型準確率變化曲線

圖6 模型損失變化曲線

訓練后的模型以h5格式保存到硬盤中,并對測試集的1000張圖片進行測試,調用evaluate()函數輸出準確率以對模型進行評估,程序運行結果表明,測試集上的準確率達到99.2%,損失值是0.0219。最后調用roc_curve()函數生成ROC 曲線,如圖7所示。從圖7看出,曲線下方的面積接近于1,表明模型的分類效果好。

圖7 ROC曲線圖

5 結語

本文使用遷移學習將Xception 模型作為預訓練模型,并對其中的block14 模塊進行微調,使其中的六層處于可訓練狀態,在此基礎上構建圖像分類器,把5000 張貓狗圖片分為訓練集、驗證集和測試集,通過訓練集得到模型的權重,該模型在驗證集和測試集上的準確率分別達到了98.9%和99.2%,證明了該模型對貓狗圖片的分類效果好。

猜你喜歡
分類器準確率卷積
基于3D-Winograd的快速卷積算法設計及FPGA實現
乳腺超聲檢查診斷乳腺腫瘤的特異度及準確率分析
不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
2015—2017 年寧夏各天氣預報參考產品質量檢驗分析
從濾波器理解卷積
高速公路車牌識別標識站準確率驗證法
基于傅里葉域卷積表示的目標跟蹤算法
BP-GA光照分類器在車道線識別中的應用
加權空-譜與最近鄰分類器相結合的高光譜圖像分類
結合模糊(C+P)均值聚類和SP-V-支持向量機的TSK分類器
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合