<style> .reveal .slides { text-align: left; font-size:30px; } </style> <!-- .slide: data-background="https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg" --> # 人工智慧報告 ### 水下影像還原與評估方式 #### 00957101 林一 --- <!-- .slide: data-background="https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg" --> ## 實驗說明 * 實驗動機 * 實驗目的 * 分析問題 * 設計解決方案 --- <!-- .slide: data-background="https://images.unsplash.com/photo-1576707948881-b485713fbad7" --> ### 實驗動機 在潛水、游泳時,會想拍攝關於水中的照片, 但拍攝出來的照片總是呈現藍綠色, 不但觀感不好還十分模糊。 如果能完成 水下影像還原的程式, 是不是就能看到觀感更好的照片呢? ---- ### 實驗目的 利用深度學習方法,對水下拍攝的影像進行還原和增強,以改善影像品質、還原真實色彩並提升細節清晰度。 ---- ### 分析問題 在水中拍攝的影像,會受到光線衰減、水中雜質、海水吸收與散射等物理光學效應的影響,導致拍攝的圖片有以下問題: 1. 圖片模糊、不清晰 2. 顏色偏移:不同波長的色光衰減率不同。 3. 顏色失真:波長越長的色光,可能被海水完全吸收。 使得水下拍攝的影像,基本會呈現藍綠色的樣子,難以觀察與研究。 ---- ### 設計解決方案 | 問題 | 目的 | 方案 | | -------- | -------- | -------- | | 如何還原影像? | 實驗目的 | CNN模型 | | 如何判斷影像還原的成效? | 如何修正演算法 | 色板分析 | | 如何應用? | 隨時可以使用 | Google插件| --- ## 實驗步驟 1. 找到水下影像還原的 CNN 模型 2. 在測試影像中放入色板,透過 fasterRCNN 抓取色板 3. 分析色板資料 4. 不斷修改 dataset 與參數,改進影像還原模型 5. 在Google chrome中,以 Google 插件加以應用 ---- ### <font color="black">程式架構</font> <!-- .slide: style="background-color: white; text-align: center; padding: 30px;" --> ```flow st=>start: 水下影像還原 op1=>operation: fasterRCNN (抓取色板) op2=>operation: ColorAnalysis (校正與分析色板) op3=>operation: 應用Google插件 para=>parallel: waternet (影像還原) e=>end: 顯示還原數據 e2=>end: 還原網路上的圖片 st->para para(path1, right )->op3->e2 para(path2, bottom)->op1->op2->e ``` --- ### 1. 找到水下影像還原的 CNN 模型 ![](https://hackmd.io/_uploads/HyNZjrJ8n.png =300x) ![](https://hackmd.io/_uploads/r1P5nHy8n.png =530x) * Paper:Li, Chongyi, et al. "An underwater image enhancement benchmark dataset and beyond." IEEE Transactions on Image Processing 29 (2019): 4376-4389. * Github:tnwei/waternet ---- <!-- .slide: style="background-color: white; text-align: center; padding: 30px;" --> #### <font color="black">訓練過程</font> ```flow= st=>123 op=>operation: VGG19:判斷模型 → perceptual_loss op2=>operation: mse, ssim, psnr op3=>operation: 評估生成圖與真實的差異 para=>parallel: WaterNet:生成模型 → 水體分割、精煉、組合(wb,gc,he) para(path1, bottom)->op->op3 para(path2, right )->op2->op3 ``` <font color="black">Datasets:水下照片、真實(還原)照片</font> 評估指標包括 "mse"、"ssim"、"psnr" 和 "perceptual_loss"。 ---- #### WaterNet 網路 * ConfidenceMapGenerator * Refiner * WaterNet ```python def __init__(self): super().__init__() self.cmg = ConfidenceMapGenerator() self.wb_refiner = Refiner() self.ce_refiner = Refiner() self.gc_refiner = Refiner() def forward(self, x, wb, ce, gc): wb_cm, ce_cm, gc_cm = self.cmg(x, wb, ce, gc) #分割 refined_wb = self.wb_refiner(x, wb) # 精煉 refined_ce = self.ce_refiner(x, ce) refined_gc = self.gc_refiner(x, gc) return ( # 組合 torch.mul(refined_wb, wb_cm) + torch.mul(refined_ce, ce_cm) + torch.mul(refined_gc, gc_cm) ) ``` ---- ![](https://hackmd.io/_uploads/S1tsAmX83.png) ---- #### 與原圖的比較 | 原圖 | 還原 | | -------- | -------- | | ![](https://i.imgur.com/M1SUVE1.jpg) | ![](https://hackmd.io/_uploads/BJjS3D1Lh.jpg) | --- ### 2. 在測試影像中放入色板,透過 fasterRCNN 抓取色板 ![](https://hackmd.io/_uploads/S1M1n_yUn.png) ---- <!-- .slide: style="background-color: white; text-align: center; padding: 30px;" --> #### <font color="black">抓取色板的過程</font> ```flow st=>start: 抓取色板 e=>end: 色板分析 op=>operation: 標籤 Label Studio op1=>operation: 訓練fasterRCNN op2=>operation: 分析色板顏色 cond=>condition: 是否正確 cond2=>condition: 是否正確 para=>parallel: 標注更多資料 para2=>parallel: 修正 st->op(right)->op1(right)->cond cond(yes)->e cond(no)->para para(path2)->op ``` --- ### 3. 分析色板資料 ![](https://hackmd.io/_uploads/S1gioO1I2.png =450x) ![](https://hackmd.io/_uploads/SktLouyUh.png =400x) ---- <!-- .slide: style="background-color: white; text-align: center; padding: 30px;" --> #### <font color="black">分析色版的過程</font> ```flow st=>start: 分析色板 op1=>operation: 抓取角點 op2=>operation: 透視校正 op3=>operation: 提取色板裡的各色塊 op4=>operation: 分析色塊顏色:delta_e, 色彩通道差距 e=>end: 輸出結果 st->op1->op2->op3->op4->e ``` ---- #### 抓取角點 與 透視校正 ![](https://hackmd.io/_uploads/S1gioO1I2.png =450x) ---- #### 校正 ![](https://hackmd.io/_uploads/BJ6UvOyI3.png) ---- ![](https://hackmd.io/_uploads/BJ6UvOyI3.png =300x) ![](https://hackmd.io/_uploads/ryOzuOyLn.png =530x)  ---- #### 數據分析 ![](https://hackmd.io/_uploads/S1xIivukL2.png =700x) ![](https://hackmd.io/_uploads/rJf35_183.png =100x) * 圖片:視覺化數據 * 文字:用 excel 紀錄 ---- 有了評估還原的方法後,就可以改進影像還原模型 --- ### 4. 不斷修改 dataset 與參數,改進影像還原模型 ![](https://hackmd.io/_uploads/rJTuhIk8n.png =500x) ![](https://hackmd.io/_uploads/HJ4pnUJUh.png =400x) * 水下场景数据集 Underwater Datasets * An Underwater Image Enhancement Benchmark Dataset and Beyond ---- #### 改進前後的比較 | 模型 | 改進前 | 改進後 | | -------- | -------- | -------- | | 還原圖 | ![](https://hackmd.io/_uploads/BJjS3D1Lh.jpg)| ![](https://i.imgur.com/W1atHSe.jpg) | | 色塊色差 | ![](https://hackmd.io/_uploads/HybGvO183.png)| ![](https://hackmd.io/_uploads/HytWPdyLn.png)| | 平均deleta | 64.44 | 63.71 | ---- #### 與其他 CNN 模型做比較 | 模型 | WaterNet (raw-890) | neural-colorization (G-pth) | | -------- | -------- | -------- | | 還原圖 | ![](https://hackmd.io/_uploads/BkQiIuJL2.jpg)| ![](https://i.imgur.com/8IhyNsZ.jpg)| | 色塊色差 | ![](https://hackmd.io/_uploads/BJgpLdkIh.png)| ![](https://i.imgur.com/Zc7rEg1.png)| | 平均deleta | 63.71 | 62.55 | --- ### 5. 在Google chrome中,以 Google 插件加以應用 ![](https://hackmd.io/_uploads/S1AlGYyLn.png) ---- <!-- .slide: style="background-color: white; text-align: center; padding: 30px;" --> ```flow st=>start: 網路的水下影像還原 op1=>operation: 前端:google插件 op2=>operation: 傳送靜態的圖片 url op3=>operation: 後端:從 url 下載圖片並使用waternet還原 op4=>operation: 回傳 base64 字串 e=>end: 解碼並顯示還原圖片 st->op1->op2->op3->op4->e ``` ---- #### 前端:google插件 ![](https://hackmd.io/_uploads/SkJ11YkL3.png =500x) ---- #### 後端: ![](https://hackmd.io/_uploads/H1wsxtyL2.png =600x) ---- #### 新視窗:顯示還原圖片 ![](https://hackmd.io/_uploads/rJl7lFyIh.jpg =500x) ---- #### 資料的傳輸 ```python # 接收 POST 請求後,進行圖片處理 # 從 server/temp.jpg 讀入 # 將設定好的參數輸入至特定的 processing python file # 輸出至 server/temp.jpg # return server/temp.jpg 的 base64 字串 # input json # { # "url": "IMAGE_URL", # "option": "PROCESSING OPTION" # } # output json # { # "img_data": "BASE64", # "width": "IMAGE_WIDTH", # "height": "IMAGE_HEIGHT" # } ``` ----
{"title":"人工智慧報告","breaks":true,"slideOptions":"{\"transition\":\"fade;\"}","contributors":"[{\"id\":\"d1ce5988-a8d9-47ae-a71f-dd518d97057f\",\"add\":7815,\"del\":1338}]"}
    366 views