星空體育APP下載

業(yè)務(wù)聯(lián)系電話:028-65785509

怎么運(yùn)用卷積自編碼器對圖片進(jìn)行降噪?

發(fā)布時(shí)間:2021-07-16 05:50:00 來源:星空體育官方平臺  

  這周作業(yè)太忙,原本想更把Attention tranlsation寫出來,但一向抽不出時(shí)刻,等后邊有時(shí)刻再來寫,先給大家種個(gè)草。

  咱們這周來看一個(gè)簡略的自編碼器實(shí)戰(zhàn)代碼,關(guān)于自編碼器的理論介紹我就不具體介紹了,網(wǎng)上一搜一大把。

  最簡略的自編碼器便是經(jīng)過一個(gè)encoder和decoder來對輸入進(jìn)行復(fù)現(xiàn),例如咱們將一個(gè)圖片輸入到一個(gè)網(wǎng)絡(luò)中,自編碼器的encoder對圖片進(jìn)行緊縮,得到緊縮后的信息,然后decoder再將這個(gè)信息進(jìn)行解碼然后復(fù)現(xiàn)原圖。

  自編碼器實(shí)際上是經(jīng)過去最小化target和input的差別來進(jìn)行優(yōu)化,即讓輸出層盡或許地去復(fù)現(xiàn)原本的信息。因?yàn)樽跃幋a器的根底方式比較簡略,關(guān)于它的一些變體也十分之多,包含DAE,SDAE,VAE等等,假如感興趣的小伙伴能夠去網(wǎng)上搜一下其他相關(guān)信息。

  本篇文章將完結(jié)兩個(gè)Demo,榜首部分即完結(jié)一個(gè)簡略的input-hidden-output結(jié)的自編碼器,第二部分將在榜首部分的根底上完結(jié)卷積自編碼器來對圖片進(jìn)行降噪。

  在這兒,咱們運(yùn)用MNIST手寫數(shù)據(jù)集來進(jìn)行試驗(yàn)。首要咱們需求導(dǎo)入數(shù)據(jù),TensorFlow現(xiàn)已封裝了這個(gè)試驗(yàn)數(shù)據(jù)集,所以咱們運(yùn)用起來也十分簡略。

  經(jīng)過input_data就能夠加載咱們的數(shù)據(jù)集。假如小伙伴本地現(xiàn)已有了MNIST數(shù)據(jù)集(四個(gè)緊縮包),能夠把這四個(gè)緊縮包放在目錄MNIST_data下,這樣TensorFlow就會直接Extract數(shù)據(jù),而不必再從頭下載。咱們能夠經(jīng)過imshow來隨意檢查一個(gè)圖畫。

  因?yàn)樵蹅兗虞d進(jìn)來的數(shù)據(jù)現(xiàn)已被處理成一個(gè)784維度的向量,因而從頭顯現(xiàn)的時(shí)分需求reshape一下。

  咱們把數(shù)據(jù)加載進(jìn)來今后就能夠進(jìn)行最簡略的建模。在這之前,咱們首要來獲取一下input數(shù)據(jù)的巨細(xì),咱們加載進(jìn)來的圖片是28x28的像素塊,TensorFlow現(xiàn)已幫咱們處理成了784維度的向量。一起咱們還需求指定一下hidden layer的巨細(xì)。

  在這兒我指定了64,hidden_units越小,意味著信息丟失的越多,小伙伴們也能夠測驗(yàn)一下其他的巨細(xì)來看看成果。

  至此,一個(gè)簡略的AutoEncoder就結(jié)構(gòu)完結(jié),接下來咱們能夠發(fā)動(dòng)TensorFlow的graph來進(jìn)行練習(xí)。

  經(jīng)過上面的進(jìn)程,咱們結(jié)構(gòu)了一個(gè)簡略的AutoEncoder,下面咱們將對成果進(jìn)行可視化看一下它的體現(xiàn)。

  這兒,我選擇了測試數(shù)據(jù)會集的5個(gè)樣原本進(jìn)行可視化,相同的,假如想調(diào)查灰度圖畫,指定cmap參數(shù)為’Greys_r’即可。上面一行為test數(shù)據(jù)會集原始圖片,第二行是經(jīng)過AutoEncoder復(fù)現(xiàn)今后的圖片,能夠很明顯的看到像素信息的丟失。

  經(jīng)過上面一個(gè)簡略的比如,咱們了解了AutoEncoder的根本作業(yè)原理,下面咱們將更進(jìn)一步改善咱們的模型,將隱層轉(zhuǎn)換為卷積層來進(jìn)行圖畫降噪。

  在了解了上面AutoEncoder作業(yè)原理的根底上,咱們在這一部分將對AutoEncoder參加多個(gè)卷積層來進(jìn)行圖片的降噪處理。

  相同的咱們?nèi)允沁\(yùn)用MNIST數(shù)據(jù)集來進(jìn)行試驗(yàn),關(guān)于數(shù)據(jù)導(dǎo)入的進(jìn)程不再贅述,請下載代碼檢查。在開端之前,咱們先經(jīng)過一張圖片來看一下咱們的整個(gè)模型結(jié)構(gòu):

  咱們經(jīng)過向模型輸入一個(gè)帶有噪聲的圖片,在輸出端給模型沒有噪聲的圖片,讓模型經(jīng)過卷積自編碼器去學(xué)習(xí)降噪的進(jìn)程。

  這兒的輸入層和咱們上一部分的輸入層現(xiàn)已不同,因?yàn)檫@兒咱們要運(yùn)用卷積操作,因而,輸入層應(yīng)該是一個(gè)height x width x depth的一個(gè)圖畫,一般的圖畫depth是RGB格局三層,這兒咱們的MNIST數(shù)據(jù)集的depth只要1。

  緊接著對卷積成果進(jìn)行最大池化操作(max pooling),這兒我設(shè)置了size和stride都是2 x 2,池化操作不改動(dòng)卷積成果的深度,因而池化今后的巨細(xì)為 14 x 14 x 64。

  經(jīng)過三層的卷積和池化操作今后,咱們得到的conv3實(shí)際上就相當(dāng)于上一部分中AutoEncoder的隱層,這一層的數(shù)據(jù)現(xiàn)已被緊縮為4 x 4 x 32的巨細(xì)。

  接下來咱們就要開端進(jìn)行Decoder端的卷積。在這之前,或許有小伙伴要問了,已然Encoder中都現(xiàn)已把圖片卷成了4 x 4 x 32,咱們假如持續(xù)在Decoder進(jìn)行卷積的話,那豈不是得到的數(shù)據(jù)size越來越小?

  所以,在Decoder端,咱們并不是單純進(jìn)行卷積操作,而是運(yùn)用了Upsample(中文翻譯能夠?yàn)樯喜蓸樱? 卷積的組合。

  咱們知道卷積操作是經(jīng)過一個(gè)濾波器對圖片中的每個(gè)patch進(jìn)行掃描,然后對patch中的像素塊加權(quán)求和后再進(jìn)行非線性處理。

  舉個(gè)比如,原圖中咱們的patch的巨細(xì)假如是3 x 3(說的淺顯點(diǎn)便是一張圖片中咱們?nèi)∑渲幸粋€(gè)3 x 3巨細(xì)的像素塊出來),接著咱們運(yùn)用3 x 3的濾波器對這個(gè)patch進(jìn)行處理,那么這個(gè)patch經(jīng)過卷積今后就變成了1個(gè)像素塊。

  可是Deconvolution有一些壞處,它會導(dǎo)致圖片中呈現(xiàn)checkerboard patterns,這是因?yàn)樵贒econvolution的進(jìn)程中,濾波器中會呈現(xiàn)許多堆疊。為了處理這個(gè)問題,有人提出了運(yùn)用Upsample加卷積層來進(jìn)行處理。

  經(jīng)過三次Upsample的操作,咱們得到了28 x 28 x 64的數(shù)據(jù)巨細(xì)。終究,咱們要將這個(gè)成果再進(jìn)行一次卷積,處理成咱們原始圖畫的巨細(xì)。

  經(jīng)過上面的進(jìn)程咱們就結(jié)構(gòu)完了整個(gè)卷積自編碼器模型。因?yàn)樵蹅兿虢?jīng)過這個(gè)模型對圖片進(jìn)行降噪,因而在練習(xí)之前咱們還需求在原始數(shù)據(jù)的根底上結(jié)構(gòu)一下咱們的噪聲數(shù)據(jù)。

  咱們經(jīng)過上面一個(gè)簡略的比如來看一下怎么參加噪聲,咱們獲取一張圖片的數(shù)據(jù)img(巨細(xì)為784),在它的根底上參加噪聲因子乘以隨機(jī)數(shù)的成果,就會改動(dòng)圖片上的像素。

  接著,因?yàn)镸NIST數(shù)據(jù)的每個(gè)像素?cái)?shù)據(jù)都被處理成了0-1之間的數(shù),所以咱們經(jīng)過numpy.clip對參加噪聲的圖片進(jìn)行clip操作,確保每個(gè)像素?cái)?shù)據(jù)仍是在0-1之間。

  在練習(xí)模型時(shí),咱們的輸入現(xiàn)已變成了參加噪聲后的數(shù)據(jù),而輸出是咱們的原始沒有噪聲的數(shù)據(jù),首要要對原始數(shù)據(jù)進(jìn)行reshape操作,變成與inputs_相同的格局。因?yàn)榫矸e操作的深度,所以模型練習(xí)時(shí)分有些慢,主張運(yùn)用GPU跑。

  能夠看到經(jīng)過卷積自編碼器,咱們的降噪作用仍是十分好的,終究生成的圖片看起來十分順滑,噪聲也簡直看不到了。

  有些小伙伴或許就會想,咱們也能夠用根底版的input-hidden-output結(jié)構(gòu)的AutoEncoder來完結(jié)降噪。因而我也完結(jié)了一版用最簡略的input-hidden-output結(jié)構(gòu)進(jìn)行降噪練習(xí)的模型(代碼在我的GitHub)。咱們來看看它的成果:

  能夠看出,跟卷積自編碼器比較,它的降噪作用更差一些,在重塑的圖畫中還能夠看到一些噪聲的影子。

  至此,咱們完結(jié)了根底版別的AutoEncoder模型,還在此根底上參加卷積層來進(jìn)行圖片降噪。信任小伙伴對AntoEncoder也有了一個(gè)開始的知道。

  每日頭條、業(yè)界資訊、熱門資訊、八卦爆料,全天盯梢微博播報(bào)。各種爆料、內(nèi)情、花邊、資訊一掃而光。百萬互聯(lián)網(wǎng)粉絲互動(dòng)參加,TechWeb官方微博等待您的重視。



上一篇:都是自動(dòng)降噪「安聲科技」有什么不一樣?
下一篇:不只有主動(dòng)降噪還有更多驚喜 華為FreeLace Pro無線日開售

友情鏈接:百度中鐵二院環(huán)??萍?/a>

星空體育APP下載(星空·體育)官方平臺網(wǎng)站入口 版權(quán)所有 技術(shù)支持:星空體育APP下載

公司地址:成都市天府新區(qū)寧波路377號中鐵卓越中心裙樓512 企業(yè)郵箱:sales@clqcwz.cn 電話:028-65785509