通過(guò)BP神經(jīng)網(wǎng)絡(luò)對(duì)于圖像壓縮的實(shí)現(xiàn)

BP神經(jīng)網(wǎng)絡(luò)現(xiàn)在來(lái)說(shuō)是一種比較成熟的網(wǎng)絡(luò)模型了,因?yàn)樯窠?jīng)網(wǎng)絡(luò)對(duì)于數(shù)字圖像處理的先天優(yōu)勢(shì),特別是在圖像壓縮方面更具有先天的優(yōu)勢(shì),因此,我這一段時(shí)間在研究神經(jīng)網(wǎng)絡(luò)的時(shí)候同時(shí)研究了一下關(guān)于BP網(wǎng)絡(luò)實(shí)現(xiàn)圖像壓縮的原理和過(guò)程,并且是在MATLAB上進(jìn)行了仿真的實(shí)驗(yàn),結(jié)果發(fā)現(xiàn)設(shè)計(jì)的BP神經(jīng)網(wǎng)絡(luò)具有不錯(cuò)的泛化能力,對(duì)于用于圖像壓縮方面的效果還不錯(cuò).

1:BP神經(jīng)網(wǎng)絡(luò)的模型的架構(gòu)和訓(xùn)練的原理

BP神經(jīng)網(wǎng)絡(luò)是現(xiàn)在目前的發(fā)展的比較成熟的神經(jīng)網(wǎng)絡(luò)之一了,也是一種比較給力的非線性的可微分函數(shù)進(jìn)行權(quán)值修正和調(diào)整的多層前饋人工神經(jīng)網(wǎng)絡(luò),經(jīng)得住嚴(yán)密的數(shù)學(xué)邏輯推導(dǎo),在很多的模式識(shí)別的書(shū)中和很多的數(shù)據(jù)壓縮的論文中得以大量的廣泛和認(rèn)同.BP神經(jīng)網(wǎng)絡(luò)算法主要的特點(diǎn)是輸入信號(hào)的正向傳遞,誤差的反向傳播.BP網(wǎng)絡(luò)的學(xué)習(xí)算法的本質(zhì)其實(shí)就是把樣本集合的輸入輸出問(wèn)題變換為一個(gè)非線性?xún)?yōu)化的問(wèn)題.其中分為三層的網(wǎng)絡(luò)結(jié)構(gòu),包括輸入層,隱藏層,輸出層這樣的三層.典型的一個(gè)網(wǎng)絡(luò)模型的結(jié)構(gòu)可以由下邊的部分構(gòu)成:

首先說(shuō)一下前向傳播:

首先在BP的神經(jīng)網(wǎng)絡(luò)模型中我們現(xiàn)在假設(shè)為L(zhǎng)層,其中他的輸入層是第1層,輸出層是最后一層也就是L層,隱藏層的話其實(shí)就是從第2層到第L-1層了.要是在輸出層的第K個(gè)神經(jīng)單元,就可以簡(jiǎn)單的表示為

這個(gè)上標(biāo)表示為層數(shù),下標(biāo)表示為第K個(gè)神經(jīng)元,同理,其他的層數(shù)和神經(jīng)元也都可以如此概述.這樣的話對(duì)于第L層的神經(jīng)元個(gè)數(shù)就可以用|L|來(lái)表示.即第L層的第J個(gè)神經(jīng)元的輸入與輸出的關(guān)系如下圖所示:

其中

b表示為第L層的第J個(gè)神經(jīng)元與L-1層第J個(gè)神經(jīng)元的鏈接權(quán)重.

而其輸出的Oij如下所示,其中f是激勵(lì)函數(shù)

在神經(jīng)網(wǎng)絡(luò)中我們有很多的激活函數(shù)可以選擇,但是我們?cè)谶@里還是選擇使用sigmood函數(shù),為什么選用這個(gè)函數(shù)?因?yàn)樵谖宜鸭撕芏噘Y源來(lái)看,如果我們使用一些其他的激活函數(shù)或者直接放棄使用激活函數(shù),不過(guò)我們使用多少次隱藏層,我們最終得到的仍然是一個(gè)線性的函數(shù),但是在使用非線性的sigmoid函數(shù)以后,就不會(huì)有這個(gè)問(wèn)題,我們的網(wǎng)絡(luò)也可以去擬合非線性的函數(shù).

在這里我們只需要記住sigmoid函數(shù)的推導(dǎo),因?yàn)樵诮酉聛?lái)的反向傳播中我們要去使用.

求導(dǎo)以后:

反向傳播

關(guān)于反向傳播,這個(gè)部分大概是整個(gè)BP神經(jīng)網(wǎng)絡(luò)的精華所在了.那么反向傳播究竟是個(gè)什么東西呢?其實(shí)反向傳播就是通過(guò)最后的誤差來(lái)更新權(quán)值.打個(gè)比方,你現(xiàn)在是個(gè)學(xué)生,學(xué)校里搞了一大堆試卷,發(fā)給你們考試以后你們考完發(fā)現(xiàn)取得的效果并不好,當(dāng)校長(zhǎng)看到成績(jī)單后,校長(zhǎng)很生氣,校長(zhǎng)就說(shuō)了,年級(jí)主任你去給我找問(wèn)題,年級(jí)主任然后就跟班主任說(shuō)你給我去找問(wèn)題,,,一直到你們這些學(xué)生,老師讓你們?nèi)ジ?這樣對(duì)應(yīng)的就是我們神經(jīng)網(wǎng)絡(luò)的輸入層一直改到輸出層.在這里使用到的一個(gè)重要的法則就是梯度下降法則.

梯度下降法,大學(xué)高數(shù)的知識(shí),其實(shí)就是你更新權(quán)重的同時(shí)不能更新,而是按照梯度的方向更新才能夠給更新權(quán)重,能夠獲得更多的收斂.公式如下:

這里有一個(gè)負(fù)梯度方向需要說(shuō)明一下,因?yàn)槟愕膶W(xué)習(xí)速率是大于0的,對(duì)于誤差E來(lái)說(shuō),他對(duì)W的偏導(dǎo)數(shù)就必須要大于0這樣也就是說(shuō),誤差隨著權(quán)重的增大而增大,那我們就需要通過(guò)減少權(quán)重來(lái)減小誤差,所以W的變化率需要小于0,當(dāng)然,如果我們要求某某某的最大值的話,也可以使用正梯度.

直觀上來(lái)看神經(jīng)網(wǎng)絡(luò)的每個(gè)神經(jīng)元的權(quán)重更新都是通過(guò)誤差的偏導(dǎo)來(lái)更新的,在這里我們引入一個(gè)新的變量誤差,對(duì)于第l層的第j個(gè)神經(jīng)元的誤差定義為

這樣的權(quán)重更新過(guò)程可以為:

在這里我們需要用到的就是鏈?zhǔn)角髮?dǎo)法則,具體如下:

根據(jù)sigmoid函數(shù)的求導(dǎo)公式,并且對(duì)于誤差進(jìn)行偏導(dǎo),我們就可以得到第L層的神經(jīng)元的誤差項(xiàng):

所以就能夠得到輸出層上一層與輸出的權(quán)重更新公式:

所以就能夠得到輸出層上一層與輸出的權(quán)重更新公式:

對(duì)于隱藏層,我們需要在求導(dǎo)時(shí)對(duì)于他的輸出層單元的每個(gè)誤差影響進(jìn)行疊加,與輸出層類(lèi)似,不再贅述.

對(duì)于第L-1層的第j個(gè)神經(jīng)元的誤差項(xiàng)來(lái)說(shuō),由于每個(gè)神經(jīng)元連接到輸出層的每個(gè)單元,因此我們要對(duì)輸出層的|L|個(gè)單元進(jìn)行求和,從而得到了誤差項(xiàng)的計(jì)算公式:

所以便得到了L-2與L-1層的鏈接權(quán)重的公式:

而對(duì)于其他層,我們進(jìn)行推廣就可以得到第I層第J個(gè)的神經(jīng)單元的誤差公式額權(quán)重更新公式:

對(duì)于推導(dǎo)過(guò)程,簡(jiǎn)單的來(lái)說(shuō)就是鏈?zhǔn)角髮?dǎo),由上面公式我們可以看出反向傳播也是求導(dǎo)熏瞄,只是對(duì)于隱層以及輸入層來(lái)說(shuō)牵触,它們所產(chǎn)生的誤差在傳播過(guò)程中能夠影響每一個(gè)最終的輸出層單元处铛,所以我們需要對(duì)其產(chǎn)生的誤差求和错蝴。反向傳播的前提是前向傳播果覆,而前向傳播的公式相信大家很容易都能記住呜笑,而反向傳播其實(shí)就是對(duì)前向傳播的公式鏈?zhǔn)角髮?dǎo),只需要注意到求導(dǎo)過(guò)程中對(duì)于w對(duì)輸出層的影響來(lái)判斷什么時(shí)候需要進(jìn)行求和操作就可以.

2:BP神經(jīng)網(wǎng)絡(luò)的圖像壓縮原理

數(shù)字圖像壓縮實(shí)際上是以較少的比特?cái)?shù)有損或者無(wú)損的來(lái)表示原來(lái)像素矩陣的一種圖像處理技術(shù),實(shí)際上就是減少圖像數(shù)據(jù)中的時(shí)間冗余,空間冗余,頻譜冗余等等作為目的,從而同過(guò)減少上述的一種或者多種冗余的信息而達(dá)到更加高效的存儲(chǔ)與傳輸數(shù)據(jù).圖像的壓縮系統(tǒng)其實(shí)無(wú)論采用什么樣的具體的架構(gòu)或者技術(shù)方法,基本的過(guò)程都是一致的,主要還是可以概述為編碼,量化,解碼這三個(gè)部分,流程圖如下:

從理論上講,編解碼問(wèn)題其實(shí)就可以歸結(jié)為映射與優(yōu)化的問(wèn)題,從神經(jīng)網(wǎng)絡(luò)的方面來(lái)看無(wú)非就是實(shí)現(xiàn)了從輸入到輸出的一個(gè)非線性的映射關(guān)系,并且衡量性能的標(biāo)準(zhǔn)可以從并行處理能力是否高效,容錯(cuò)率是否合適,以及是否具有魯棒性.分析圖像壓縮的基本原理其實(shí)和上述的BP神經(jīng)網(wǎng)絡(luò)的原理一樣:如下圖所示:

在BP網(wǎng)絡(luò)中,輸入層到隱藏層之間的映射關(guān)系相當(dāng)于編碼器,用于對(duì)于圖像信號(hào)進(jìn)行線性或者非線性的變換,而隱藏層到輸出層之間的映射關(guān)系相當(dāng)于編碼器,通過(guò)對(duì)于壓縮后的信號(hào)數(shù)據(jù)進(jìn)行反變換來(lái)達(dá)到重建圖像數(shù)據(jù).壓縮比率S=輸入層神經(jīng)元個(gè)數(shù)/隱藏層神經(jīng)元節(jié)點(diǎn)數(shù).BP神經(jīng)網(wǎng)絡(luò)的輸入層與輸出層的神經(jīng)元節(jié)點(diǎn)數(shù)從理論上說(shuō)是一致的.而隱含層的神經(jīng)元數(shù)目比輸出層輸入層的數(shù)目要少得多.這樣理論上就可以通過(guò)調(diào)節(jié)隱藏層神經(jīng)元節(jié)點(diǎn)數(shù)目來(lái)達(dá)到對(duì)于不同圖像壓縮比的效果.

3:基于MATLAB的BP神經(jīng)網(wǎng)絡(luò)圖像壓縮過(guò)程的分析:

因?yàn)樵贛ATLAB上應(yīng)用BP神經(jīng)網(wǎng)絡(luò)對(duì)于數(shù)字圖像進(jìn)行壓縮主要包括訓(xùn)練樣本構(gòu)造,仿真以及圖像重建這三個(gè)環(huán)節(jié).

1:訓(xùn)練樣本的構(gòu)建

因?yàn)槲业臋C(jī)器的性能不夠,考慮到需要將整幅圖像中的所有像素?cái)?shù)據(jù)都需要作為BP網(wǎng)絡(luò)的輸入數(shù)據(jù),為了控制整個(gè)網(wǎng)絡(luò)的訓(xùn)練規(guī)模和訓(xùn)練速度,因此對(duì)于圖像進(jìn)行分塊化處理,但是考慮到臨近像素之間的相關(guān)性和差異性,因此小圖像的所占的像素比例不應(yīng)該太大,假設(shè)一個(gè)圖像是由N*N個(gè)像素構(gòu)成,將整個(gè)圖像切割為M個(gè)規(guī)則大小的小圖像塊,其中每個(gè)圖像由n*n個(gè)像素構(gòu)成,將每個(gè)小圖像的數(shù)據(jù)重構(gòu)為一個(gè)列向量,作為樣本的訓(xùn)練向量,然后進(jìn)行歸一化數(shù)據(jù)處理.

這里用的是最值線性函數(shù)轉(zhuǎn)換法,即:

Y(k)={X(k)-X(min)}/{X(max)-X(min)}

其中X(k)是轉(zhuǎn)換之前的數(shù)據(jù),Y(k)是轉(zhuǎn)換之后的數(shù)據(jù),X(min),X(max)是整個(gè)數(shù)據(jù)集合里邊的最小值和最大值.通過(guò)歸一化,可以將每個(gè)訓(xùn)練向量的像素值歸一到[0,1]的范圍內(nèi).

2:在創(chuàng)建并且訓(xùn)練好符合條件的BP網(wǎng)絡(luò)后,使用上邊提到Sigmoid對(duì)于歸一化后的處理的圖像數(shù)據(jù)進(jìn)行仿真壓縮,輸出仿真向量,然后通過(guò)圖像重建來(lái)還原為一幅完整的圖像數(shù)據(jù).

3:現(xiàn)在以靜態(tài)的圖像進(jìn)行試驗(yàn),控制大小為128*128,先將整幅圖像分隔成為4*4的小圖像快,再將每個(gè)小圖像轉(zhuǎn)化為16*1的列向量,統(tǒng)一歸一化處理進(jìn)行作為網(wǎng)絡(luò)的輸入的樣本,按照上述的操作進(jìn)行分析,創(chuàng)建BP網(wǎng)絡(luò),進(jìn)行訓(xùn)練,這一次壓縮比為4,結(jié)果所示如下:

從壓縮后的視覺(jué)效果來(lái)看,隱藏層的神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)一定范圍內(nèi)影響了圖像的壓縮效果,當(dāng)隱藏層節(jié)點(diǎn)的數(shù)目較多時(shí),壓縮比較低,壓縮的重建的圖像的質(zhì)量比較好,但是這樣的影響不是成線性的.同時(shí)網(wǎng)絡(luò)的訓(xùn)練的好壞也是對(duì)圖像壓縮有很顯著的影響,算是個(gè)有損壓縮吧.

具體的代碼修改后放出,有興趣的可以留意

參考資料:

1:數(shù)字圖像處理 賈永紅

2:人工神經(jīng)網(wǎng)絡(luò)導(dǎo)論 蔣宗禮

3:機(jī)器學(xué)習(xí) 周志華

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末夫否,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叫胁,更是在濱河造成了極大的恐慌凰慈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驼鹅,死亡現(xiàn)場(chǎng)離奇詭異微谓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)输钩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)豺型,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人买乃,你說(shuō)我怎么就攤上這事触创。” “怎么了为牍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵哼绑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我碉咆,道長(zhǎng)抖韩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任疫铜,我火速辦了婚禮茂浮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己席揽,他們只是感情好顽馋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著幌羞,像睡著了一般寸谜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上属桦,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天熊痴,我揣著相機(jī)與錄音,去河邊找鬼聂宾。 笑死果善,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的系谐。 我是一名探鬼主播巾陕,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼纪他!你這毒婦竟也來(lái)了惜论?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤止喷,失蹤者是張志新(化名)和其女友劉穎馆类,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弹谁,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乾巧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了预愤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沟于。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖植康,靈堂內(nèi)的尸體忽然破棺而出旷太,到底是詐尸還是另有隱情,我是刑警寧澤销睁,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布供璧,位于F島的核電站,受9級(jí)特大地震影響冻记,放射性物質(zhì)發(fā)生泄漏睡毒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一冗栗、第九天 我趴在偏房一處隱蔽的房頂上張望演顾。 院中可真熱鬧供搀,春花似錦、人聲如沸钠至。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棉钧。三九已至屿脐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掰盘,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工赞季, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愧捕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓申钩,卻偏偏與公主長(zhǎng)得像次绘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撒遣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容