第二章 相關研究
2.3 色彩修正與生成對抗網路
那麼第二階段的使用 classifier 辨識就必須用重複做三千次,假設一個候選區域 辨識要 0.05 秒,則三千個候選區域至少需要 150 秒,在現今主流使用上,如每 同時偵測物件位置及辨識物件,如 YOLO[29]、Single Shot Detector (SSD)[8]、
RetinaNet [25 ]等。然而,雖然大幅提高運算速度,但整體辨識準確度與二階段方 法相比,通常都比較差,這時候就端看設定之運算速度下,整體辨識率是否可以 接受,而就目前看來,如果資料集準備上及標籤設定沒太大問題,基本都在可接 受範圍內。
2.3. 色彩修正與生成對抗網路
由前述可知,水下影像會有顏色衰減(color decay)的現象,如何恢復消失的 色彩至今仍然是一個難題。Sea-thru[26]在 2019 年被提出,主要基於物理修正方 式,藉由考慮了光吸收及散射的物理特性,將影像恢復成如同在空氣中拍攝一
RCNN
Region proposal (SS) Feature extraction (Deep
Net) Classification (SVM) Rect refine (Regression)
Fast RCNN
Region proposal (SS)
Feature extraction Classification + Rect refine
(Deep Net)
Faster RCNN
Region proposal Feature extraction Classification + Rect refine
(Deep Net)
‧
下影像必須包含一個彩色色卡(Color Checker)來當參考。而收集到的水下影像,其顏色變化與懸浮固體、生物物質、及溶解的有機物質都有關係,如採用物理 修正,將會受到海域的限制。另外,使用物體與相機之間的深度資訊,存在一 個硬體限制: 距離相機較遠的部分其深度資訊一般回報無限大,或者,如採用 多張影像計算深度,除了低光源造成距離分析困難,更會產生盲區而缺少資訊。
生成對抗網路(Generative Adversarial Network,GAN)[9]或許可以解決這些問題。
由圖2.8 可看出 GAN 基本上為 2 個 Network:Discriminator 及 Generator。
圖2.8、生成對抗網路架構
Discriminator Network 簡單來說就是藉由訓練一個神經網路去分辨 fake image 跟 real image。將 real 標註 1,fake 標註 0,進行 training 即可。而 Generator Network 的概念就是要訓練出一個神經網路讓 Discriminator 分辨出來的結果越 接近real 越好,即 Predict Label 越接近 1 越好,loss 的 target 為 1,然後再更新 generator 權重(weight)。
Discriminator
‧
路,可以假設共20 層 layer 的 NN,Generator 是前 10 層,Discriminator 是後 10層,然後這個模型做出的預估,其值越要接近1 越好,如此即可較為簡單來看
這個模型。但是這裡我們只更新 Generator 的 weight,Discriminator 的 weight 要維持,這樣才可以將更新後的 Generator 所產生出來的假圖,在 Discriminator 上的值越接近真實的結果。我們可以用一個結論來表示,其實就是更新生成器 的參數讓Discriminator 接近真實的結果,如圖 2.9。
圖2.9、GAN 訓練流程
透過G_Loss 更新 Generator NN 的參數,類似的想法,透過 D_Loss 來更新 Discriminator NN 的參數。其中 G_Loss 為 Generator 所產生的 fake image 且輸 入給Discriminator 後與 1 的 loss,而 D_Loss 為 Generator 產生的 fake image 輸 入給Discriminator 後與 0 的 loss,以及加上 real image 輸入給 Discriminator 後 與1 的 loss。基於此概念,可以將因顏色衰減的影像,透過 GAN 產出接近顏色
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
針對以上文獻的探討,基本上可以產出此研究大致的架構,也對於處理相關 此研究相關的方法,能夠提供較清晰的方向。下一章,將針對兩部分進行討論:
色彩修正中model 及 loss function 的評估,以及各類物件偵測模型的優劣評估。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第三章
研究方法
在本章節中,我們將著重在顏色修正及物件偵測偵測模型的討論與分析,也 會根據目前可用的技術或工具,找出評估指標,進而提出本研究的基本構想。
緊接著為進行前期研究,依照研究的結果,分析及評估基本的研究構想之可行 性。基於這個基本構想為前提,設計出研究的架構細節、執行的分段分配,以 及預期目標。
3.1. 基本構想
在水下影像中,經常因為水的深淺而導致影像有不同的顏色表現,也會因為 海域的不同,即便是在相同的深度及相同的光源,也會出現有不同的水下影像。
深度學習架構的訓練,其訓練集的收集為影響結果的重要因素之一,針對此部分,
雖本身有潛水執照並有水下的影像紀錄,但樣本的數量及品質仍然不足以用於此 研究,因此對於水下顏色修正,除了自有的資料集以外,仍會進行更多的水下影 像收集,也需要收集用於GAN 模型的訓練資源。
而藉由完成的顏色修正模型,在物件偵測部分則不需特別針對水下影像資料 集的收集,反而可以使用目前開源的一般影像,進行訓練。因此這個階段主要會 在與各個物件偵測模型的速度與精確度去分析與比較。
‧
使用open source 的 ImageNet 收集水中影像及空氣中影像,並基於光線充 足與否、影像模糊程度、顏色衰減狀況,肉眼將其分類為2 組:品質好與品質 差。
3.2.2. Paired image產生
要使用GAN,必須要 paired image 來比對與評分,而在有限的單一風格的影 像 下 , 可 以 使 用 style transfer 將 相 同 影 像 轉 換 成 所 需 要 的 風 格 , 利 用 CycleGAN[11],可以將 3.2.1 分類出品質好的影像,轉換出水下風格的影像,進 而產出paired image,其概念如圖 3.1。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
CycleGAN 為:從 X 生成 Y,再從 Y 生成 X,如此的迴圈(cycle),而其所需的
訓練資料集與一般 GAN 不同,不必成對,乃是需要兩種不同風格的資料即可,
如;欲想將白天的影像變成晚上的影像,則分別準備白天的影像與晚上的影像。
實作上,採用圖 3.2 的想法去實現。分別為 2 個 Generator:G & F;另外 2 個 Discriminator:Dx & Dy。
圖3.2、CycleGAN 實現
同GAN 相同,一樣採用 Loss 優化,但分 2 個部分,對 D 及 G 進行優化,式 3.1。
𝑳𝑮𝑨𝑵(𝑮, 𝑫𝒀, 𝑿, 𝒀) = 𝔼𝒚~𝒑𝒅𝒂𝒕𝒂(𝒚)Q𝒍𝒐𝒈𝑫𝒚(𝒚)T + 𝔼𝒙~𝒑𝒅𝒂𝒕𝒂(𝒙)[𝒍𝒐𝒈(𝟏 − 𝑫𝒀(𝑮(𝒙)))]
𝑳𝑮𝑨𝑵(𝑭, 𝑫𝑿, 𝑿, 𝒀) = 𝔼𝒙~𝒑𝒅𝒂𝒕𝒂(𝒙)[𝒍𝒐𝒈𝑫𝑿(𝒙)] + 𝔼𝒚~𝒑𝒅𝒂𝒕𝒂(𝒚)[𝒍𝒐𝒈(𝟏 − 𝑫𝑿(𝑭(𝒚)))]
式3.1、CycleGAN D&G loss
Y’
X
Y X’
X’
Y’
G F
G F
Dy
Dx
‧
式3.2、CycleGAN cycle loss
因此,全部的loss function 可以看成式 3.3:
𝑳𝑮𝑨𝑵(𝑮, 𝑭, 𝑫𝑿, 𝑫𝒀) = 𝑳𝑮𝑨𝑵(𝑮, 𝑫𝒀, 𝑿, 𝒀) + 𝑳𝑮𝑨𝑵(𝑭, 𝑫𝑿, 𝑿, 𝒀) + 𝑳𝒄𝒚𝒄(𝑮, 𝑭) 式3.3、CycleGAN total loss
3.2.3. 模型評估
目前GAN 相關的模型很多,而影響參數變化的 loss function 也很多,因此 在完成paired image 後,可進行這兩部分的評估。
由於目標為需要將原本為水下拍攝的圖像生成如同水面上拍攝的圖像,因此 選用GAN base 來做初步評估,但傳統的 GAN 模型有以下的缺點:
1. 無法由使用者控制,基本上為輸入一個隨機雜訊(random noise),然後輸 出一個隨機影像(random image),而我們需要的是一個輸入,產出一個對 應於輸入的輸出(同型態);
2. 解低度低,影像品質不佳。
為了達成可以控制輸出,也就是產生出我們需要的圖像,而基於GAN 模型的概 念,開始評估實際可使用的 model。首先我們思考到的是:既然 GAN 為隨機產 出輸出,直觀上來看,為了控制這個輸出,就必須加上條件(condition),cGAN
(conditional GAN)[13]為最早的 GAN 變形出的模型,將原本 GAN 中的機率改
‧
成條件機率,達到控制的需求,而條件可以是image、label、或是 text 等,其 loss function 如式 3.4。
𝐦𝐚𝐱𝑫 d𝔼𝒙~𝒑𝒅𝒂𝒕𝒂(𝒚)[𝒍𝒐𝒈𝑫(𝒙|𝒚)]+𝔼𝒙~𝒑𝑮(𝒚)[𝐥𝐨𝐠 (𝟏 − 𝑫(𝒙|𝒚))]i
式3.4、cGAN loss function
訓練時,先將條件接上原始數據,再行訓練,圖3.3 為其概念,也就是任一個 pair 都可選一個條件及一個輸出,然後訓練GAN。
圖3.3、cGAN 概念
再進一步來看,cGAN 可以使用 image 當成條件機率,當然也可將影像大小當成 條件,使得輸入大小等於輸出大小,藉由 cGAN 概念產出成對之影像(paired image),例如輸入輪廓或 mask,產出相同輪廓或 mask 的真實圖片,當然也可將 黑白圖片當輸入,產出彩色圖的輸出。這樣的想法下,pix2pix network [14]便是 一個可以實現的神經網路,架構如圖3.4。
‧
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 保存所有的變量及網路結構,供給未來需要的時候使用。,
訊,同時也可讀取該模型的網路結構,也就是說,我們在tensorflow 下訓練的結 果藉由CKPT 保存所有的變量及網路結構,供給未來需要的時候使用。,