當前位置:編程學習大全網 - 源碼下載 - Cnn圖像壓縮源代碼

Cnn圖像壓縮源代碼

表示壹個卷積神經網絡。這是壹種特殊類型的神經網絡,專為具有空間結構的數據而設計。比如空間秩序自然的圖像就非常適合CNN。卷積神經網絡由許多“濾波器”組成,它們對數據進行卷積或滑動,並在每個滑動位置產生激活。這些激活產生了壹個“特征圖”,它指示了由該區域中的數據激活的過濾器(即神經元)的數量。例如,假設我們有壹個經過訓練的過濾器來識別人臉,這些可能是它的輸出特征圖:

卷積神經網絡的特殊之處在於空間不變性,這意味著無論圖像的顯著部分出現在哪裏,都會被網絡檢測到。這是因為濾鏡的權重在圖像的不同部分是不變的——因為濾鏡在圖像上滑動,所以圖像各部分的權重是壹樣的。

CNN的這種空間不變性不僅適用於二維圖像,也適用於三維視頻甚至壹維時間序列。CNN也被認為是偽循環神經網絡,因為濾波器可以在時間步長而不是數據部分滑動,允許它根據過去的數據點做出決策。

GAN代表生成性對抗網絡。這是壹個生成模型,因為他們學會了復制妳提供的數據的數據分布,所以他們可以生成看起來相似的新奇圖像。

GAN被稱為“對抗性的”,因為它涉及兩個競爭網絡。事實上,甘通常被比作警察和偽造者之間的類比。偽造者壹開始並不知道真錢是什麽樣的,所以會產生壹些看似完全假的錢。對偽造者來說幸運的是,警察不知道真錢是什麽樣的。

但是,當我們有真現金的時候,警察部門就開始教警察真錢是什麽樣子,假幣是什麽樣子,讓他辨別真錢和假錢。

然後,造假者會做更多的練習,學會讓現金更真實,最後騙過警察。

這個循環重復壹段時間,直到(理想情況下)警察分不清假鈔和真鈔的區別,因為假鈔看起來和真鈔壹模壹樣。壹旦這樣做了,我們就可以用發電機來永久地制造假鈔。

讓我們擴展到圖像。生成器是壹個神經網絡,它接收隨機變量Z的向量並生成圖像。

鑒別器也是壹個神經網絡,它接收壹個圖像,產生壹個單壹的輸出P(決定圖像為真的概率)。當p = 1時,鑒別器認為圖像是真的,當p = 0時,鑒別器認為圖像是假的。

鑒別器輸入到生成器圖像中,我們會輸入並被教導圖像是假的。更具體地說,鑒別器被最大化(1-)。然後給鑒別器輸入壹個真實的圖像,教它圖像是真實的,這樣最大化()。而生成器則試圖讓鑒別器最大化它認為假像是真的概率,所以生成器試圖最大化()。壹旦我們這樣訓練壹段時間,就會開始看到壹些非常真實的照片。

也被稱為自動編碼器,它們非常簡單。他們所做的只是盡可能地輸入和再現輸入。如果我輸入壹張數字為“2”的照片,自動編碼器應該會輸出完全相同的照片。

這看起來簡單而無意義,但它有壹些有趣的性質。我們通常不只有輸入層和輸出層,因為網絡只能把像素從輸入復制到輸出,完全沒用。我們通常在輸入層和輸出層之間有壹個隱藏層(或多個層),作為瓶頸層。

瓶頸可以通過許多不同的方式來實現,但我只關註最簡單的方法:擁有更少的隱藏神經元。

如果隱藏層中的神經元數量小於輸入圖像中的像素數量,網絡必須“壓縮”它看到的數據。

這種壓縮意味著只有圖像中最顯著的特征可以被保留,其他的都是不必要的。在隱藏神經元中,特征可以編碼關於數據的大部分信息。

這使得自動編碼器(理論上)非常有用,因為如果我們的監督訓練數據很少,我們可以為自動編碼器提供壹堆未標記的數據,它會學習有用的特征。然後我們可以將這些特征放入壹個更強大的神經網絡中,並在壹個小的監督數據集上訓練它們。雖然監督數據集很小,但它仍然可以很好地學習(理論上),因為它是由自動編碼器引導的。

不幸的是,自動編碼器並不是他們宣傳的那樣,這種培訓(稱為預培訓)很少用於自動編碼器。但是,我們可以讓亥姆霍茲玻爾茲曼機做初始重量分配。

VAE代表可變自動編碼器。根據它的名字,妳可以說VAE非常類似於自動編碼器。從技術上來說,它有壹個重大的變化。

自編碼器只需要復制輸入,而變分自編碼器需要復制輸出,同時保持其隱藏神經元處於特定分布。這意味著網絡的輸出將不得不適應基於分布的隱藏神經元的輸出,因此我們可以通過簡單地從分布中采樣並將它們輸入到網絡的隱藏層來生成新的圖像。

假設目標分布為正態分布,均值為0,方差為1。當我們將圖像輸入到VAE時,隱藏節點不會輸出輸出直接使用的值,但會輸出均值和方差。每個隱藏節點都有自己的高斯分布。我們將隱藏節點值表示為?然後呢。。然後,我們從實際的正態分布中采樣值,我們稱之為與隱藏層相同的大小。然後,我們將使用多個元素並用add添加元素。這允許網絡改變正態分布的方差。這是它編碼信息的方式。元素相加相乘後,我們得到壹個勢向量。我們將這個潛在向量輸入到輸出層,輸出層試圖生成輸入的副本。自動編碼器的損失是最小化重構損失(自動編碼器的輸出與其輸入之間的相似度)和潛在損失(隱藏節點與正態分布之間的接近度)。潛在損失越小,可編碼的信息越少,因此重建損失增加。因此,VAE陷入了潛在損失和重建損失之間的權衡之中。如果潛在損失非常小,我們新生成的圖像會和訓練時非常相似,但看起來都很可怕。如果重建損失小,重建圖像在訓練時會看起來非常好,但是我們新生成的圖像和重建圖像完全不壹樣。顯然我們都想要,所以找到平衡點很重要。

這些解釋並沒有很好的構造,只是給這些架構壹個大概的概念。

  • 上一篇:馬上就2021年了,在前端行業中如何提高自己的競爭力?
  • 下一篇:java 多線程模擬火車售票系統問題
  • copyright 2024編程學習大全網