第三章 研究方法
3.4 目標設定
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
來計算該模組 mAP 的高低,如果判斷準確率不佳,我們會選擇調整模組參數重新訓練,
或者是效能實在太差,直接重新選擇更合適之模組,如果訓練之新模組準確率符合我們 的期待,那麼我們就會把訓練好的模組包成 Tensorflow Model File,透過 Python 程式,
使用者只要將圖片放在處理資料夾中,程式就會針對資料夾內的資料進行影像的物體偵 測,並且會呈現出結果讓使用者觀看。
3.4. 目標設定
本研究的目標是希望利用遷移學習,透過合適的模組選擇以及重新調校,訓 練出準確率高的深度學習架構、藉以透過此模組來框選出衛星圖像中的軍艦以及 民船,且 mAP 要達 0.8 以上。本章節針對資料處理以及整體研究設想已有初步的介 紹,下個章節會依據上述的流程執行相關的程序、結果分析以及討論。
‧
本章節主要介紹如何使用 Ptyhon 以及 Tensorflow 來進行衛星影像資料判斷 的模組訓練,以及針對訓練的結果進行探討以及分析,以下就開發環境先行說明,
本研究所採用之硬體以及主要開發環境詳表 4.1。
名稱 版次
CPU Intel Core i7-6700 Memory 16GB Tensorflow 1.6.0
表 4.1 研究相關軟硬體環境簡述
‧
在 2017 年所發表的論文 Speed/accuracy trade-offs for modern convolutional object detectors[25],剛好也做了相關 Object Detection 各演算法的比較,其中讓 我們注意的一點是他們針對原先的 架構調整了其中的 convolutional feature extractor 來增加他們物體的偵測準確度,例如結合 Inception Resnet 的 Features 然後使用 atrous convolution [26] (如圖 4.2,同樣都是 3x3 Convolution,atrous convolution 可以利用調整更大的 rate,作用在更大的範圍的 feature map 下,得到 更大的 field-of-view,並且維持一樣的參數量),這樣的方式讓特徵圖縮小到同樣
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.2 atrous convolution 示意圖。[26]
這篇論文最後比較了幾個利用上述方式的演算法的準確度(如圖 4.3 所示),
且提到模組經過這樣的調整後對於較小物體的偵測也提升了不少的準確率,所以 在 測 試 評 估 的 階 段 , 我 們 就 決 定 利 用 COCO DataSet pre-trained 的 faster_rcnn_inception_resnet_v2_atrous 這個模組來進行遷移學習概念的嘗試,評 估我們的所提出的假設是否可行。
圖 4.3 Speed/accuracy trade-offs for modern convolutional object detectors 論文
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
4.1.2. 測試評估階段
本研究最一開始的所收集的訓練集資料量,各類別資料量如表 4.2 所示。
名稱 數量
民船 Training Data 443 + Test Data 41 =484 軍艦 Training Data 192 + Test Data 19 =211
表 4.2 第一次訓練的資料量
在初步的評估成果,都是直接以 faster_rcnn_inception_resnet_v2_atrous 的 Pre trained Model 進行訓練,並沒有調校,結果為軍艦 AP 0.27,民船 AP 0.49、mAP 0.38,這對於兩個分類的物體偵測來說實在太低,觀察圖 4.4(紅框為未偵測出之 船艦)以及 4.5(紅框為偵測錯誤之船艦)的成果,我們就可以很明顯地看到兩個類 別物體的偵測成果都不佳。
圖 4.4 物體擷取不佳,連船都沒有辨識出來
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.5 民船、軍艦辨識錯誤率高
我們認為這是資料量太少的原因,就算使用遷移學習的概念,基本的資料訓 練量還是要足夠,所以後續再收集各大港口的資料,針對各港口收集更多的船艦 資料,第二次收集的資料量如表 4.3 所示。
名稱 數量
民船 Training Data 2102 + Test Data 268 = 2370 軍艦 Training Data 664 + Test Data 63 = 727
表 4.3 第二次訓練的資料量
這次 mAP 為 0.78(民船 AP 0.89、軍艦 AP 0.67),跟之前明顯有很大的差距,
但從圖 4.6、4.7 可以發現雖然整體船艦的偵測率提高,但是軍艦的判別還是有蠻 大的落差,軍艦 AP 只有 0.67。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.6 船艦物體偵測率提高
圖 4.7 軍艦誤判的狀況
可是針對我國以及中國大陸的軍艦,我們都已經全面收集,要如何得到更多 資料呢?本研究嘗試用另一種方法,也就是數據增強來產生額外的訓練樣本。
‧
到 over-fitting 的現象,但是有些資料的收集確實無法收集到一定的量,所以這樣 的問題還是會需要解決的,當然解決 over-fitting 會有幾種方式,例如可以使用 dropout 減少幾個神經元,或是利用本研究所採用的數據增強方式,我們會使用‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.8 左圖為原影像圖,右圖為資料生成之影像之一
資料生成時要注意的一點就是生成圖片 factor 要跟原圖片影像之 factor 相同,否則會造成訓練上的問題,Python 數據增強部分程式碼參數見圖 4.9。
圖 4.9 Python 數據增強部分程式碼
除了軍艦之圖片外,民船的圖片我們也增加了一些資料,所以原先的資 料加上數據增強後的資料量如表 4.4 所示。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
名稱 數量
民船 Training Data 2470 + Test Data 662 = 3132 軍艦 Training Data 2592 + Test Data 499 = 3091
表 4.4 數據增強後的資料量
這樣的資料集用原先之模組訓練已可以達到 mAP 0.842,原先軍艦的判 斷率也有提高(如圖 4.10 所示),可見數據增強確實是有助於模組準確率的提 升。
圖 4.10 數據增強後軍艦原先判斷錯誤變成判斷正確的結果
4.1.4. 模組優化階段
我們確認 faster_rcnn_inception_resnet_v2_atrous 模組之可行性後,便以該模組為 基礎進行相關調校,調校後相關參數如表 4.5,參數調校後,得出結果 mAP 0.862 為調校後最好的成果,相關明確之成果以及其餘模組的比較會於可用性分析中探 討。
‧
first_stage_features_stride 8 first_stage_atrous_rate 2 first_stage_localization_loss_weight 2 first_stage_objectness_loss_weight 1 first_stage_nms_iou_threshold 0.7 maxpool_stride 1 maxpool_kernel_size 1 second_stage_iou_threshold 0.6 second_stage_localization_loss_weight 2 second_stage_classification_loss_weight 1
score_converter SOFTMAX momentum_optimizer_value 0.8
initial_learning_rate 0.0003 learning_rate(Step70000) 0.00003
step 100000
Batch_size 1(此項跟訓練的硬體有關)
表 4.5 faster_rcnn_inception_resnet_v2_atrous 最後之調校參數
4.2. 可用性分析
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
名稱 mAP
(IOU threshold 0.5)
mAP
(IOU threshold 0.6)
mAP
(IOU threshold 0.4) 軍艦 0.816 0.699 0.825
民船 0.908 0.754 0.923 全部 0.862 0.727 0.874
表 4.6 最後調校模組各分類之細部準確率
圖 4.11 模組 TotalLoss 收斂圖示意
針對民船偵測圖示意如民船示意圖 4.12,可以跟圖 4.6 比較,模組經過調校 後,可以看到針對靠近的船體的偵測 faster_rcnn_inception_resnet_v2_atrous 也都 可以偵測出來。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.12 民船偵測示意圖
另故意選擇海上有文字的照片,也不會被影響,軍艦的偵測準確率也上升了 不少,偵測結果如圖 4.13 所示。
圖 4.13 軍艦偵測示意圖
針對較小的船艦,也可以偵測的出來,另如果圖片有 google 浮水印,依然 可以辨識的出來,如圖 4.14 所示。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.14 針對較小船體也可以偵測出來
海的顏色或是波浪也不會影響辨識,如圖 4.15 所示。
圖 4.15 海的顏色以及波浪,並沒有影響物體偵測的結果。
看完了 faster_rcnn_inception_resnet_v2_atrous 調校後的成果,我們用最後所 收集的資料利用各模組進行訓練,來比較一下我們所選擇的模組是否準確率是最 高的。
‧
我們選擇了另外 3 個演算法來進行比較,分別為 faster_rcnn_resnet101、
faster_rcnn_inception_v2、ssd_mobilenet_v2,表 4.7 為各演算法 mAP 比較。
名稱
mAP(IOU threshold 0.5)
民船 軍艦 全部
調 校 後
faster_rcnn_inception_resnet_v2_atrous
0.908 0.816 0.862
faster_rcnn_resnet101 0.859 0.814 0.836 faster_rcnn_inception_v2 0.812 0.792 0.802 ssd_mobilenet_v2 0.563 0.359 0.461
表 4.7 各演算法辨識 mAP 比較表
其中可以看到 faster_rcnn 在準確率的表現上的確優於 SSD,SSD 在小物體 的偵測上表現較差(如圖 4.16 所示,圖 4.16 演算法由左至右分別為調校後 faster_rcnn_inception_resnet_v2_atrous 、 faster_rcnn_resnet101 、 faster_rcnn_inception_v2、、ssd_mobilenet_v2),但 SSD 在不論在處理圖片的速 度或是模組的訓練時間上也的確比起 faster_rcnn 還要快上許多。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
4.2.3. 自動化判圖系統建置
為了可以方便使用者使用,後續利用 Python 寫了一個可以讓使用者方便使 用的圖片預測程式,讓使用者不需要操作 Tensorflow 就可以對於想處理的圖片 進行預測,使用者只需要把圖片放在資料夾中,然後執行我們寫的 Python 檔後,
再開啟資料夾,就可以看到我們所預測的圖片會存在於資料夾中(如圖 4.17 所 示)。
圖 4.17 放進資料夾之圖片,處理完後會加上_result 之結果圖示意
該程式之撰寫是改寫了 Tensorflow 之程式把訓練完成之模組包成Tensorflow Model File(檔案格式如圖 4.18 所示,打包之模組檔,主要包含模組 fine tune 後的 ckpt 檔,以及Tensorflow Model File(frozen_inference_graph.pb),有了這幾個檔案,我 們就可以利用程式來呼叫模組進行圖片預測),接著撰寫 Python 程式,把使用者丟 入之圖片,利用模組以及 matplotlib 處理完之資料另存於資料夾中,讓使用者只需執行 程式便可以得到結果預測之圖片,
‧
pre-trained model 於最後 Fine tune faster_rcnn_inception_resnet_v2_atrous model 的 mAP 0.862 來看,是可以適用於衛星影像船體或是俯視圖的船‧
GAN(Generative Adversarial Network) [27]的方式來生成圖片,因為我們 認為衛照影像之特性是有變化邏輯性可循的,例如角度,翻轉、投影變‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.19 各軍艦類型差異太大示意
4. 加入別的國家的艦船判斷是可行的
本研究之資料集主要是蒐集本國以及中國大陸的船體為主,但我們想嘗 試如果是國外的船體測試是否可行,我們在測試的資料集中特別加入了 日本的部分港口之民船圖片,答案是可行的,民船大部分還是可以被偵 測且框選出來,所以本研究最後優化之模組達成的民船 mAP 0.902 其實 納入了幾張日本港口(包含了橫須賀港、青森港、橫濱港、東京港、大 阪港、北九州港、千葉港共 40 艘民船資料),至於軍艦的部分因為標 註人員對於日本軍艦較不熟稔,所以我們只在測試集中加入幾張日本的 港口民船測試(如圖 4.20 所示),其結果是針對民船之船體,就算為不同 國籍之民船也是可以透過本研究所訓練的模組進行偵測,但有一點值得 我們所關注的,就是對於日本民船誤判為軍艦的機率相對於我國以及中 國大陸的機率還要高,我們推測應該是有些日籍的民間船的形體比較類 似我們軍艦,而導致這樣的結果發生。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.20 千葉港民船偵測示意圖
5. 橋、港口停靠之卸貨機器會影響到船體的偵測。
我們的研究發現船體上方如果有物體遮蔽例如卸貨的機器,或是橋等會 把船切分成好幾個部分的狀況,透過模組偵測會影響相關的判斷(如圖 4.21 所示),如果船體比較大,上方所遮蔽的物體相對比較小且剛好又 切割船體,那麼所偵測出來的結果是會被誤認為多個小船,船體上方的 物體遮蔽的範圍較廣,船體只有一部分的話就無法被偵測出來,如果是 船剛好經過橋的狀況也會發生類似的情事。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.21 船體被卸貨機器切分的示意圖
不過在資料的前處理中我們有提到,我們不用這樣的訓練集訓練,是怕 這些船體不完整的樣本反而會影響到完整的船體,我們認為這樣反而會
不過在資料的前處理中我們有提到,我們不用這樣的訓練集訓練,是怕 這些船體不完整的樣本反而會影響到完整的船體,我們認為這樣反而會