第三章 研究方法
3.2 前期研究
3.2.4 Loss function 評估
pix2pix 的 generator 含有 Unet[15]的結構在其中,用 Unet 取代原本 encoder-decoder 的架構。核心想法為:輸入與輸出的外觀表現也許會不同,但整體結構 應該要類似,也就是輸入某些底層資訊可以分享給輸出,才能達到我們要的image to image translation。
3.2.4. Loss function評估
pix2pix network 的 loss function 是基於 cGAN 做變化(式 3.4),額外增加一 個與target 影像的差距的比較,目的為讓輸出越像越好,如式 3.5.
𝓛𝑳𝟏(𝑮) = 𝔼𝒙,𝒚,𝒛[∥ 𝒚 − 𝑮(𝒙, 𝒛) ∥ 𝟏]
式3.5、pix2pix L1 loss function
新的target function 則變成式 3.6。
𝑮 = 𝒂𝒓𝒈 𝐦𝐢𝐧
𝑮 𝐦𝐚𝐱
𝑫 𝓛𝒄𝑮𝑨𝑵(𝑮, 𝑫) + 𝝀𝓛𝑳𝟏(𝑮) 式3.6、pix2pix target function
X G(X)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
實作上,GAN 在訓練是不穩定也不容易收斂,在訓練到某一個程度後,又或者
是Generator 及 Discriminator 有出現不平衡狀況,會導致梯度漸漸變小、而 loss function 漸漸呈現飽和,最後 loss function 將無法提供 Generator 及 Discriminator 參數改善的建議,甚至會導致崩潰。為了解決這個問題,便採用 Wasserstein Distance[16],也就是 WGAN[17]所提出的方法。WGAN 的 Loss function 如式 3.7。
另外,WGAN 為了讓梯度變化在一定範圍內,也就是讓 Lipschiz 連續,增加一 個限制:weight clip(式 3.8),限制 NN 的參數[-K, K]。
𝑳(𝑫) = −𝔼𝒙~𝑷𝝉[𝑫(𝒙)] + 𝔼𝒙~𝑷𝒈[𝑫(𝒙)]
𝑳(𝑮) = −𝔼𝒙~𝑷𝒈[𝑫(𝒙)]
式3.7、WGAN loss function
‖𝛁𝒙𝑫(𝒙)‖𝒑≤ 𝑲, ∀𝒙 ∈ 𝑿 式3.8、Weight clip
然而,weight clip 的方法會使得大部分的 weight 往極端的兩端靠近([-K, K]),
因此需要一個新的方法來取代weight clip,WGAN-GP[18]可以進一步解決 weight clip 造成的問題,式 3.9 為取代 weight clip 的方法:
[‖𝛁𝒙𝑫(𝒙)‖𝒑− 𝑲]𝟐
式3.9、取代 weight clipping 的作法
新的Loss function 即為本論文未來訓練顏色修正時的依據,如式 3.10:
𝒙t = 𝑮(𝒛), 𝒙u =∈ 𝒙 + (𝟏−∈)𝒙t
𝓛 = −𝔼𝒙~𝒑𝝉[𝑫(𝒙)] + 𝔼𝒙4~𝒑𝒈[𝑫(𝒙t)] + 𝝀𝔼𝒙5~𝒑𝒙([∥ 𝜵𝒙5𝑫(𝒙w) ∥𝟐− 𝟏]𝟐 式3.10、最終使用之 loss function
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
3.2.5. 物件偵測之影像收集
物件偵測訓練資料取自open source 的 openImage V6[10],並使用 big-query[12]
分出所需要之影像進行訓練。另外,因openImage 的資料隨時可能變動,本論文 的收集時間為 2019 年 7 月到 2020 年 4 月期間,keyword 為 Fish、Jellyfish、
Triggerfish、Swordfish、Milkfish、Cartilaginous fish。
3.2.6. 物件偵測模型效能評估
針對SSD 及 Faster RCNN 效能進行評估。
至此已解決了大部分的實作技術問題,接下來闡述本論文的研究架構設計。
3.3. 研究架構設計
3.3.1. 問題陳述
藉由GAN 方法將水下圖像轉換成一般影像,但實際上是否可以讓現有的物
件偵測模型直接套用呢?此外,利用遷移學習的方式來訓練現有的模型,其效能 上是否可以滿足所需呢?綜合我們前述所提出的,在經過這一連串的機器學習,
是否能夠達到即時的水下物體偵測呢?針對這些問題,我們設計了以下的研究 架構,並在第四章「研究過程與結果分析」之中回答這些問題。
3.3.2. 研究架構
此研究整體架構如圖 3.5, 開發工具使用 Tensorflow 及 Python。訓練 顏色修正的平台為CPU: Intel Core i9/ GPU: Nvidia Titan RTX / CUDA 10/ OS:
Ubuntu;訓練物件偵測的平台為 CPU: Intel Core i9/ GPU: Nvidia GeForce 2080 Ti / CUDA 10/ OS: Ubuntu。
‧
圓柱狀圖示為公共開源(open source)的資料集,可收集到 image data 及 label data。其中,色彩修正部分使用 imageNet dataset,而物件偵測部分使用 openImage dataset。CKPT(check point)則是每次訓練的過程會產生的檔案,為一個檢查文件,
紀錄了模型檔案路徑及訓練過程中所有節點上保存的模型名稱,當然也包含最後
Color correction
Object detection
ImageNet
openImage Img
Data CycleGAN
Paired
image pix2pix model Train
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
一次的保存的模型名稱,藉著這個 CKPT 讀取相對應的網路權重資訊及參數資
訊,同時也可讀取該模型的網路結構,也就是說,我們在tensorflow 下訓練的結 果藉由CKPT 保存所有的變量及網路結構,供給未來需要的時候使用。,
色彩修正流程及物件偵測流程將產出新的模型,其中物件偵測採遷移學習 (transfer learning)方式,基於 open source 的預訓練模型(pre-trained model),配合 訓練資料進行重新訓練而得到新的結果。色彩修正的評估因缺乏真實資料 (ground-truth),依據實際產出的結果進行肉眼及 NIQE[28]分數高低判斷,確認是 否良好的顏色修正。物件偵測的評估依據 mAP 及 speed 數值,評估是否符合需
求。而系統整合流程部分則依據前2 個流程得到的結果,將待測影像進行顏色修
正後再做物體偵測,最後確認mAP 高低來評估其結果。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第四章
研究過程與結果分析
在本章節中,主要介紹色彩修正及物件偵測模型訓練資料的蒐集以及訓練 過程觀察。先利用CycleGAN 產出 pix2pix 所需的 paired image,接著使用 pix2pix
訓練出水下顏色修正的CKPT;同時,進行物件偵測模型的選定,並基於遷移學
習的概念針對欲偵測的類別重新訓練。再將水下影像透過 pix2pix 模型搭配 CKPT 產出修正後的影像,透過物件偵測模型做出分析、評估、與修正。此外,
還會進行影像品質好壞的判斷,這部分將使用 NIQE[28]分數來量化藉由 GAN based 所產出的影像,分數越低則影像清晰程度則越好,品質越佳。
4.1. 研究過程
4.1.1. 資料集說明
因物體在相機的成像效果與拍攝時的光線行經的介質有關,在此我們可簡單 的定義相機拍攝時所在的位置:水中(即本論文所提的水下)及空氣中(即水面之 上)。而資料集收集則分 3 個需求:用於訓練 CycleGAN 模型,用於訓練 pix2pix 模型、及用於訓練物件偵測模型,如表4.1 所示。
‧
Object detection
Diver 訓練資料集 1023 CycleGAN 來進行。根據式 3.3 為其 loss function,並將 ImageNet 收集的影像依 據品質分為訓練資料集A 及訓練資料集 B,其 NIQE 分數如表 4.2。由 NIQE 分
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
使用訓練資料集A 的實際產出的結果如圖 4.1,A1~D1 分別為輸入的原始圖片,
A2~D2 分別為透過 CycleGAN 產出 paired image。使用訓練資料集 B 的實際產 出的結果如圖4.2。A1~C1 分別為輸入的原始圖片,A2~C2 分別為透過 CycleGAN 產出paired image,表 4.3 為使用測試集產出結果的 NIQE 分數。
4.1、CycleGAN 訓練資料集 A 結果
(A1) (A2)
(B1) (B2)
(C1) (C2)
(D1) (D2)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖4.2、CycleGAN 訓練資料集 B 結果
Max Min Avg
訓練資料集A 結果 23.7651 14.8812345 19.629 訓練資料集B 結果 29.0858 18.1585564 22.585
表4.3、Paired image NIQE 分數
(A1) (A2)
(B1) (B2)
(C1) (C2)
‧
資料,對pix2pix model 進行訓練,而訓練所使用的 loss function 即為式 3.10:𝓛 = −𝔼𝒙~𝒑𝝉[𝑫(𝒙)] + 𝔼𝒙~𝒑𝒈[𝑫(𝒙)] + 𝝀𝔼𝒙~𝒑𝒙[𝛁𝒙𝑫(𝒙) ∥𝒑− 𝟏]𝟐 GIMP Auto white Balance 76.064 58.040 64.770 G’MIC-QT Color balance 78.441 59.528 68.695
表4.4、顏色修正評估階段之 NIQE 分數
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
首先針對loss function 中的𝝀進行分析評估,基於 Iteration = 38000,Number of Training Data = 6128,圖片解析度為 512x512,結果見圖 4.3。A 為輸入的原始 圖片,B 為 λ = 5 的輸出結果,C 為 λ = 7.5 的輸出結果,D 為 λ = 10 的輸出結果,
E 為 λ = 12.5 的輸出結果,F 為 λ = 15 的輸出結果。
圖4.3、不同 𝝀 結果
(A1) (A2) (A3)
(B1) (B2) (B3)
(C1) (C2) (C3)
(D1) (E2) (E3)
(E1) (E2) (E3)
(F1) (F2) (F3)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
對於paired image 的數量多寡,進行分析評估,基於𝝀= 10,Iteration = 38000,圖 片解析度為512x512,見圖 4.4。A 為輸入的原始圖片,B 為訓練集數量=3064 的 輸出結果,C 為訓練集數量=6128 的輸出結果。
圖4.4、訓練集數量控制結果
(A1) (A2) (A3)
(B1) (B2) (B3)
(C1) (C2) (C3)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
接著就 iteration 的次數進行分析評估,基於𝝀 = 10,Number of Training Data = 6128,圖片解析度為 512x512,結果見圖 4.5。A 為輸入的原始圖片,B 為 Iteration
= 38000 的結果,C 為 Iteration = 76500 的結果,D 為 Iteration = 153000 的結果,
E 為 Iteration = 189500 的結果,F 為 Iteration = 306000 的結果。
圖4.5、訓練迭代次數控制結果
(A1) (A2) (A3)
(B1) (B2) (B3)
(C1) (C2) (C3)
(D1) (E2) (E3)
(E1) (E2) (E3)
(F1) (F2) (F3)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
一般而言,在攝影的角度上要修正色彩,通常是將白平衡調整為正確的色溫 後才拍照或錄影,或者加上濾鏡來改變接受到的顏色狀況,最後才做光源的補償。
而此研究不討論光源補償部分,因為此為直接將水中影像的物理限制做出強制優 化。另外,當影像已經完成拍攝後,傳統做法上,乃是透過影像修飾軟體做出修 正,這裡使用 GIMP 的 AWB 及 GIMC plugin 的 color balance,圖片解析度為 512x512,如圖 4.6。A 為 GAN based 的輸出結果,B 為 GIMP Auto white Balance 的輸出結果,C 為 G’MIC-QT Color balance 的輸出結果。可以看出影像處理軟體 的結果雜訊明顯,中間的顏色並未修正正確,尤其在低對比的圖像更出現顏色完 全錯誤。
圖4.6、軟體自動修正結果
(A1) (A2) (A3)
(B1) (B2) (B3)
(C1) (C2) (C3)
‧
結果。根據Tensorflow detection model zoo,可以預先挑選出可使用的模型,如表 4.5。Model name Speed (ms) COCO
mAP Outputs
ssd_mobilenet_v1_coco 30 21 Boxes
ssd_mobilenet_v1_0.75_depth_coco 26 18 Boxes ssd_mobilenet_v1_quantized_coco 29 18 Boxes ssd_mobilenet_v1_0.75_depth_quantized_coco 29 16 Boxes ssd_mobilenet_v1_ppn_coco 26 20 Boxes ssd_mobilenet_v1_fpn_coco 56 32 Boxes ssd_resnet_50_fpn_coco 76 35 Boxes
ssd_mobilenet_v2_coco 31 22 Boxes
ssd_mobilenet_v2_quantized_coco 29 22 Boxes ssdlite_mobilenet_v2_coco 27 22 Boxes
ssd_inception_v2_coco 42 24 Boxes
faster_rcnn_inception_v2_coco 58 28 Boxes faster_rcnn_resnet50_coco 89 30 Boxes
rfcn_resnet101_coco 92 30 Boxes
faster_rcnn_resnet101_coco 106 32 Boxes faster_rcnn_inception_resnet_v2_atrous_coco 620 37 Boxes
faster_rcnn_nas 1833 43 Boxes
表4.5、COCO-trained models[19]
由 表 4.5 , 基 於 speed 及 mAP , 預 先 選 定 ssd_resnet_50_fpn_coco 、 faster_rcnn_nas、及 faster_rcnn_inception_resnet_v2_atrous_oidv4 進行評估。此外,
也加入YOLO V4[29]進行評估,並使用針對移動裝置的 Tensorflow lite 深度學習 框架。進行方式為將待偵測的圖片進行前述之色彩修正,並使用預訓練模型偵測。
測試集部分,我們偵測 3 個類別,diver 數量為 231 張,fish 數量為 7563 張,
jellyfish 數量為 487 張。而每個模型針對五種條件的圖片:original 為原始圖片,
其他四種為色彩修正模型不同迭代次數的生成圖像,圖片解析度為512x512,計 算mAP 及每張圖片處理所需的時間來評估及選定,見表 4.6。
‧
Original Number of iterations
38000 76500 153000 306000
這個階段為選定一物件偵測模型後,藉由遷移訓練概念,輸入pre-trained ckpt、
訓 練 集 、 進 行 模 型 的 重 新 訓 練 。 基 於 速 度 與 偵 測 率 , 此 研 究 使 用 ssd_resnet50_v1_fpn 為偵測模型,使用的訓練集分為 3 種類型:水中影像、空氣 中影像、及綜合(水中與空氣中)影像,見表4.7。圖 4.7(潛水員-混合)、圖 4.8(水 母-混合) 、及圖 4.9(魚-混合)為各類別的 loss 結果,因潛水員身上裝備較複雜,
其收斂結果並非很好,而魚及水母的loss 結果則有收斂。
Diver Fish Jellyfish
空氣中
水中
表4.7、不同影像類型
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖4.7、潛水員(混合)的 Loss
圖4.8、水母(混合)的 Loss
圖4.9、魚(混合)的 Loss
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
4.2. 分析階段
由研究過程的每個階段,都得到一些結果,此部分即針對這些結果進行分析。
4.2.1. Paired image分析
由圖4.1、圖 4.2、及表 4.3,使用訓練資料集 A(品質好)所產出的結果一般都
比訓練資料集B(品質差)產出的結果好,因此在這部分,我們會採用訓練資料集
A 所做出的結果來成為 GAN 模型需要的 paired images。
4.2.2. 色彩修正結果分析
圖4.3 顯示,λ 必須大於或等於 10,其結果才能符合我們需求。而圖 4.4 來 看,數量較多的訓練集,產出的圖像清晰度及顏色部分都較好,這部分符合深度 學習基本預期。圖4.5 部分,迭代次數與顏色修正結果成正向趨勢,這部分也可 以知道其結果為使用WGAN-GP 的收斂效果是正向的。
4.2.3. 物件偵測重新訓練結果分析
表4.8 為預訓練偵測的結果與使用混合訓練集進行重新訓練的偵測結果,重 新訓練後的 AP 皆有提高。資料集數量部分,diver 的訓練/測試為 1023/231,
jellyfish 的訓練/測試為 2002/487,fish 的訓練/測試為 28465/7563,未做顏色修正,
圖片解析度為512x512。
AP Pre-Trained Re-Train
Diver 0.23 0.32
Jellyfish 0.26 0.50
Fish 0.26 0.39
表4.8、預訓練與重新訓練的比較
‧
影像、及混合影像,而比例上,diver 的水中:空氣中約為 75%:25% (767:256),fish 的水中:空氣中約為 34%:66% (9678:18787),而 jellyfish 的水中:水空氣 中約為42%:58% (840:1162);測試集部分,diver 為 231 張,fish 為 7563 張,
jellyfish 為 487 張,圖片解析度皆為 512x512,分別進行重新訓練並測試結果。
由表4.9 可看出當圖片經過顏色修正(Gen),AP 均有提升。
Diver Jellyfish fish
AP Original Gen Original Gen Original Gen
‧
x 軸為圖片編號,y 軸為信心指數(confidence score)。由圖可以發現,如果模型重
x 軸為圖片編號,y 軸為信心指數(confidence score)。由圖可以發現,如果模型重