日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

图像去模糊代码 python_用Keras搭建GAN:图像去模糊中的应用(附代码)

發布時間:2024/7/23 python 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像去模糊代码 python_用Keras搭建GAN:图像去模糊中的应用(附代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

雷鋒網 (公眾號:雷鋒網) 按:本文為 雷鋒字幕組 編譯的技術博客,原標題GAN with Keras: Application to Image Deblurring,作者為Rapha?l Meudec。

翻譯 | 廖穎? 陳俊雅? 整理 | 凡江

2014年 Ian Goodfellow 提出了 生成對抗網絡(GAN) 。這篇文章主要介紹在 Keras 中 搭建GAN實現圖像去模糊 。所有的Keras代碼可點擊 這里 。

快速回憶生成對抗網絡

GAN中兩個網絡的訓練相互競爭。生成器( generator) 合成具有說服力的假輸入 來誤導判別器(discriminator ),而判別器則是來 識別這個輸入是真的還是假的 。

生成對抗網絡訓練過程— 來源

訓練過程主要有三步

根據噪聲,生成器 合成假的輸入

用真的輸入和假的輸入 共同訓練判別器

訓練整個模型:整個模型中判別器與生成器連接

注意:在第三步中,判別器的權重是固定的

將這兩個網絡連接起來是由于生成器的輸出沒有可用的反饋。 我們唯一的準則就是看判別器是否接受生成器的合成的例子。

這些只是對生成對抗網絡的一個簡單回顧,如果還是不夠明白的話,可以參考 完整介紹 。

數據

Ian Goodfellow首次使用GAN模型是生成MNIST數據。 而本篇文章是 使用生成對抗網絡進行圖像去模糊 。因此生成器的輸入不是噪聲,而是模糊圖像。

數據集來自 GOPRO數據 ,你可以下載 精簡版數據集 (9GB),也可以下載 完整版數據集 (35GB)。其中 包含了來自不同街道視角的人造模糊圖像 ,根據不同的場景將數據集分在各個子文件夾中。

我們先把圖像分到 A (模糊)和 B (清晰)兩個文件夾。這個 A&B 結構對應于原始文章 pix2pix 。我創建了一個 自定義腳本來執行這個任務。 看看 README 后嘗試一下吧。

模型

訓練過程還是一樣,首先來看一下神經網絡結構。

生成器

生成器要生成清晰圖像,網絡是基于 ResNet blocks 的,它可以記錄對原始模糊圖像操作的過程。原文還使用了基于 UNet 的版本,但我目前還沒有實現。這兩種結構都可以很好地進行圖像去模糊。

DeblurGAN 生成器網絡 結構 — 來源

核心是采用 9 個ResNet blocks 對原始圖像進行上采樣。來看一下Keras上的實現!

ResNet 層就是一個基本的卷積層,其中,輸入和輸出相加,形成最終輸出。

生成器結構的 Keras 實現

按照計劃,用9個ResNet blocks對輸入進行上采樣。我們 在輸入到輸出增加一個連接 ,然后除以2 來對輸出進行歸一化。

這就是生成器了! 我們再來看看判別器的結構吧。

判別器

判別器的目標就是要確定一張輸入圖片是否為合成的。因此判別器的結構采用卷積結構,而且是一個 單值輸出 。

判別器結構的 Keras 實現

最后一步就是建立完整的模型。 這個GAN的一個特點 就是輸入的是真實圖片而不是噪聲 。因此我們就有了 一個對生成器輸出的直接反饋 。

接下來看看采用兩個損失如何充分利用這個特殊性。

訓練

損失

我們提取生成器最后和整個模型最后的損失。

第一個是 感知損失 ,根據生成器輸出直接可以計算得到。第一個損失保證 GAN 模型針對的是去模糊任務。 它比較了VGG第一次卷積的輸出 。

第二個損失是對整個模型輸出計算的 Wasserstein loss , 計算了兩張圖像的平均差值 。眾所周知,這種損失可以提高生成對抗網絡的收斂性。

訓練流程

第一步是加載數據并初始化模型。我們使用自定義函數加載數據集,然后對模型使用 Adam 優化器。我們設置 Keras 可訓練選項來防止判別器進行訓練。

然后我們進行epochs(一個完整的數據集通過了神經網絡一次并且返回了一次的過程,稱為一個epoch),并將整個數據集分批次(batches)。

最后根據兩者的損失,可以相繼訓練判別器和生成器。用生成器生成假的輸入,訓練判別器區別真假輸入,并對整個模型進行訓練。

你可以參考 Github 來查看完整的循環。

實驗

我使用的是在 AWS 實例(p2.xlarge)上配置深度學習 AMI (version 3.0)進行的 。對 GOPRO 精簡版 數據集的訓練時間大約有 5 個小時(50個epochs)。

圖像去模糊結果

從左到右:原始圖像,模糊圖像,GAN 輸出

上面的輸出結果都是我們用 Keras 進行 Deblur GAN 的結果。即使是對高度模糊,網絡也可以減小模糊,產生一張具有更多信息的圖片,使得車燈更加匯聚,樹枝更加清晰。

左圖: GOPRO 測試圖像,右圖:GAN 輸出結果

因為引入了VGG來計算損失,所以會產生圖像頂部出現感應特征的局限。

左圖: GOPRO 測試圖像,右圖:GAN 輸出結果

希望你們可以喜歡這篇關于生成對抗網絡用于圖像去模糊的文章。 你可以評論,關注我或者 聯系我 。

如果你對機器視覺感興趣,我們還寫過一篇用Keras實現 基于內容的圖像復原 。下面是生成對抗網絡資源的列表。

左圖: GOPRO 測試圖像,右圖:GAN 輸出結果

生成對抗網絡資源

更多文章,關注雷鋒網 雷鋒網雷鋒網

添加雷鋒字幕組微信號(leiphonefansub)為好友

備注「我要加入」,To be an? AI? Volunteer !

雷鋒網原創文章,未經授權禁止轉載。詳情見 轉載須知 。

總結

以上是生活随笔為你收集整理的图像去模糊代码 python_用Keras搭建GAN:图像去模糊中的应用(附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。