一種用於圖像分割的單層脈衝神經網絡結構的製作方法
2023-05-08 21:29:16 2
本發明涉及神經網絡領域,涉及一種用於圖像分割的單層脈衝神經網絡結構。
背景技術:
:spiking神經網絡(snn)將信息編碼為脈衝的時間而非傳統的平均脈衝發放率,被稱作第三代人工神經網絡,該網絡更加符合生物神經元的特性。正是由於snn的時間編碼機制,使得其與前兩代人工神經網絡(ann)大有不同,吸引了大量學者對其進行相關研究。目前脈衝神經網絡在圖像分割方面的研究比較多,多數的圖像分割算法是用三層網絡結構實現的,分別是輸入層,中間層,輸出層。結構如圖1所示。1.輸入層:脈衝編碼:將輸入圖像的像素值轉換為脈衝時間;發送脈衝:將感受野中的脈衝時間序列發送給中間層相對應的神經元。2.中間層:接收脈衝:接收輸入層的脈衝序列,根據連接權值等計算中間層神經元的膜電壓;發送脈衝:根據神經元膜電壓函數,當膜電壓達到神經元的電壓閾值時向輸出層對應的神經元發送脈衝。3.輸出層:決定輸出值:根據中間層神經元傳遞的脈衝發放時間和時間閾值的關係決定輸出值。已有的基於脈衝神經網絡的圖像分割算法都是利用三層網絡結構實現的,網絡結構和計算複雜,在集成電路硬體實現時需要消耗更多的硬體資源。同時,已有的算法中,圖像的一個像素對應一個神經元,高像素的圖片需要的神經元個數太多,計算過程複雜而漫長,給硬體實現帶來了很大的困難。技術實現要素:本發明為了簡化網絡結構,使得計算更簡單,在硬體上更容易實現,硬體消耗資源更少,提出一種用於圖像分割的單層脈衝神經網絡結構,使得需要的網絡神經元個數可以大大減少,極大的降低了計算的複雜度和硬體的資源消耗。本發明的目的是這樣實現的,一種用於圖像分割的單層脈衝神經網絡結構,其特徵是:至少包括如下步驟:1)根據已知的神經元個數對圖片進行分塊;2)將三層脈衝神經網絡結構改進成單層脈衝神經網絡,利用該網絡對步驟1的分塊圖依次進行分割處理,得到多張分割後小圖;3)將步驟2的小圖分割圖拼接得到最終的分割結果。所述的步驟1包括如下步驟:101步,輸入要進行分割的圖片:假設圖片大小為h*w(h和w是圖片的寬和高),先要對圖片進行分塊,假設分塊的大小為m*n(m和n是分塊小圖的寬和高);102步,判斷h*w是否剛好能夠被m*n的大小進行分塊:即h是否能被m整除以及w是否能被n整除,如果能夠整除,則直接進行第104步,如果不能整除,則進行103步;103步,如果圖片不能被剛好分割,則要對其添加邊緣:即給圖片數據邊緣補0,使其大小變為h1*w1(添加了邊緣的圖片的寬和高),使得h1和w1剛好能被m和n整除;104步,對圖片進行分塊1操作:將大圖以m*n的大小進行分塊,依次得到numbers(分塊的個數numbers=h1/m*w1/n或h/m*w/n)張小圖,每張小圖大小為m*n;105步,給每張小圖添加邊緣:將大圖以(m+2)*(n+2)的大小再次進行分塊操作,同樣能夠得到numbers張圖片,分塊得到的圖片稱為分塊2圖片;如圖2所示,圖中黑色虛線矩形為分塊1小圖(m*n),圖中黑色點虛線矩形為每個分塊1小圖對應的分塊2小圖(m+2)*(n+2)。若分塊2小圖(如黑色點虛線矩形)的邊緣是0,則給分塊1小圖(黑色虛線矩形)的邊緣添加0,若分塊2小圖的邊緣不是0,則將分塊2小圖的邊緣數據賦給分塊1小圖作為其邊緣即可,依次類推,可得到每張小圖對應的邊緣數據;所述的步驟2包括如下步驟:106步,將三層網絡簡化為單層網絡結構:對三層網絡結構進行修改,得到單層脈衝神經網絡結構,如圖3所示。單層網絡結構是對上述三層網絡結構做了如下修改:.是將第一層編碼的功能放在晶片之外,輸入直接是編碼後的脈衝信號。.輸入和神經元之間採用n*n(n是感受野的長和寬)到1的連接關係。.每個神經元的功能如下:a.接收到輸入的脈衝後調整神經元的膜電壓;b.每個神經元有三個主要的參數:輸入連接權值、電壓閾值、時間閾值;c.當神經元膜電壓達到神經元的電壓閾值時根據達到時間與時間閾值的關係,決定神經元的輸出為0或1.107步,利用ttfs線性編碼方法,將分塊1圖像的灰度值編碼為脈衝時間。具體方法是:將像素灰度值為255時對應的脈衝發時間定義為tmaxms,將像素灰度值為0時對應的脈衝發放時間賦值為0ms,根據公式(1)實現圖像灰度值p到脈衝時間t的轉換:108步,將脈衝時間轉換為脈衝序列輸入給該單層脈衝神經網絡:以每個神經元為中心,選擇n*n的感受野將這些脈衝時間轉化為脈衝序列t(t),將脈衝序列輸入給對應的神經元;109步,經過單層脈衝神經網絡處理後得到神經元的脈衝發放時間:神經元接受輸入的脈衝序列t(t),根據權值w,電壓閾值vth,分塊2圖像數據利用膜電壓公式(見式(2))計算神經元的膜電壓u(t);當電壓到達膜電壓閾值vth時,發放脈衝,記錄脈衝發放的時間tf;式中gswsps(es-u(t))起著電流源的作用,它的變化引起膜電容的變化;gs和ps表示離子通道的開通程度,ws是突觸權重,es是突觸的靜態電位,gl是恆定電導,cm是膜電容,el是膜反向電位;110步,根據閾值進行分割:比較脈衝發放時間tf和分割閾值tthresk來決定網絡的輸出output是255(黑)還是0(白),從而實現圖像分割。參考關係如式(3),當脈衝發放時間小於tthresk時,輸出為0,對應黑色,當脈衝發放時間大於tthresk時,輸出為1,對應白色;所述的步驟3是將分割後的小圖拼接合成大圖,得到最終的分割結果:如果沒有進行103步,則直接將分割後的各個小圖拼接合成大圖,即為最終的分割結果;如果進行了103步,則將分割後的小圖拼接合成大圖後,去掉103步中添加的邊緣數據,則為最終的分割結果。本發明與現有技術比較:1.目前的圖像分割算法都是利用三層前饋網絡結構實現的,網絡結構和計算比較複雜,本發明中是單層脈衝網絡,簡化了網絡結構,同時降低了計算複雜度,降低了硬體實現的難度。2.目前的算法中,圖像的一個像素對應一個神經元,高像素的圖片需要的神經元個數太多,計算過程複雜而漫長,給硬體實現帶來了很大的困難。本發明利用圖片分塊和拼接合成使得神經元個數可以大大減少,極大的降低了計算的複雜度和效率,也大大降低了硬體的資源消耗。同時通過圖像分塊和拼接合成減少了網絡中脈衝神經元的個數,使得算法處理速度更快,效率更高,硬體消耗資源更少。附圖說明下面結合實施例子和附圖對本發明作進一步說明:圖1是現有的三層網絡結構;圖2是分塊1小圖對應的邊緣圖;圖3是本發明的單層網絡結構;圖4是三層網絡處理效果圖;圖5是三層網絡分割後圖像數據;圖6是本發明單層網絡處理效果圖;圖7是本發明單層網絡分割後圖像數據圖;圖8是三層網絡處理效果圖;圖9是三層網絡分割後圖像數據;圖10是本發明單層網絡的各小圖處理效果圖;圖11是本發明單層網絡分塊分割後的效果圖;圖12是本發明單層網絡分塊分割後圖像數據圖。具體實施方式如圖3所示,一種用於圖像分割的單層脈衝神經網絡結構,包括如下步驟:101步,輸入要進行分割的圖片:假設圖片大小為h*w,先要對圖片進行分塊,假設分塊的大小為m*n;102步,判斷h*w是否剛好能夠被m*n的大小進行分塊:即h是否能被m整除以及w是否能被n整除,如果能夠整除,則直接進行第104步,如果不能整除,則進行103步;103步,如果圖片不能被剛好分割,則要對其添加邊緣:即給圖片數據邊緣補0,使其大小變為h1*w1,使得h1和w1剛好能被m和n整除;104步,對圖片進行分塊1操作:將大圖以m*n的大小進行分塊,依次得到numbers(h1/m*w1/n或h/m*w/n)張小圖,每張小圖大小為m*n;105步,給每張小圖添加邊緣:將大圖以(m+2)*(n+2)的大小再次進行分塊操作,同樣能夠得到numbers張圖片,分塊得到的圖片稱為分塊2圖片;如圖2所示,圖中黑色虛線矩形為分塊1小圖(m*n),圖中黑色點虛線矩形為每個分塊1小圖對應的分塊2小圖(m+2)*(n+2)。若分塊2小圖(如黑色點虛線矩形)的邊緣是0,則給分塊1小圖(黑色虛線矩形)的邊緣添加0,若分塊2小圖的邊緣不是0,則將分塊2小圖的邊緣數據賦給分塊1小圖作為其邊緣即可,依次類推,可得到每張小圖對應的邊緣數據;106步,將三層網絡簡化為單層網絡結構:對三層網絡結構進行修改,得到單層脈衝神經網絡結構,如圖3所示。該單層網絡結構是對上述三層網絡結構做了如下修改:.是將第一層編碼的功能放在晶片之外,輸入直接是編碼後的脈衝信號。.輸入和神經元之間採用n*n到1的連接關係。.每個神經元的功能如下:a.接收到輸入的脈衝後調整神經元的膜電壓;b.每個神經元有三個主要的參數:輸入連接權值、電壓閾值、時間閾值;c.當神經元膜電壓達到神經元的電壓閾值時根據達到時間與時間閾值的關係,決定神經元的輸出為0或1.107步,利用ttfs線性編碼方法,將分塊1圖像的灰度值編碼為脈衝時間。具體方法是:將像素灰度值為255時對應的脈衝發時間定義為tmaxms,將像素灰度值為0時對應的脈衝發放時間賦值為0ms,根據公式(4)實現圖像灰度值p到脈衝時間t的轉換:108步,將脈衝時間轉換為脈衝序列輸入給該單層脈衝神經網絡:以每個神經元為中心,選擇n*n的感受野將這些脈衝時間轉化為脈衝序列t(t),將脈衝序列輸入給對應的神經元;109步,經過單層脈衝神經網絡處理後得到神經元的脈衝發放時間:神經元接受輸入的脈衝序列t(t),根據權值w,電壓閾值vth,分塊2圖像數據等參數利用膜電壓公式(見式(5))計算神經元的膜電壓u(t);當電壓到達膜電壓閾值vth時,發放脈衝,記錄脈衝發放的時間tf;式中gswsps(es-u(t))起著電流源的作用,它的變化引起膜電容的變化;gs和ps表示離子通道的開通程度,ws是突觸權重,es是突觸的靜態電位,gl是恆定電導,cm是膜電容,el是膜反向電位;110步,根據閾值進行分割:比較脈衝發放時間tf和分割閾值tthresk來決定網絡的輸出output是255(黑)還是0(白),從而實現圖像分割。參考關係如式(6),當脈衝發放時間小於tthresk時,輸出為0,對應黑色,當脈衝發放時間大於tthresk時,輸出為1,對應白色;111步,將分割後的小圖拼接合成大圖,得到最終的分割結果:如果沒有進行103步,則直接將分割後的各個小圖拼接合成大圖,即為最終的分割結果;如果進行了103步,則將分割後的小圖拼接合成大圖後,去掉103步中添加的邊緣數據,則為最終的分割結果。圖4是利用三層網絡對其進行分割處理的結果,分割後圖像對應的數據如圖5所示。再利用本發明的單層網絡對其進行處理,分割後的結果如圖6所示,分割後圖像對應的數據如圖7所示。從圖中可看到,圖6是本發明處理後的效果圖,圖4是三層網絡處理後的效果圖,兩個輸出結果相同;圖7是本發明處理後圖片的數據,圖5是三層網絡處理後圖片的數據,兩個數據相同,說明本發明是正確的。再分析硬體資源消耗對比表1,可發現:表1以107*203大小的圖片為例,對比三層網絡和本發明的單層網絡所消耗的存儲資源大小。分析三個硬體消耗指標(乘法器、加法器、與或邏輯門)可知,本發明所需的各種資源都比三層網絡少。如三層網絡需要65805個乘法器,而本發明利用單層網絡只需要39483個乘法器。其他資源消耗就不一一列舉。所以本發明的單層簡化網絡使得計算更簡單,硬體資源消耗更少。表1三層網絡和本發明單層網絡(未結合分塊)的硬體資源消耗對比表fpga硬體指標三層網絡本發明單層網絡(未結合分塊)乘法器6580539483加法器15793292127與或邏輯門368508355347圖8是原圖片經過三層網絡進行分割後的結果,其分割後的圖像數據如圖9所示。再利用本發明的單層網絡(結合分塊)對其進行處理:先對圖片分塊,各小圖依次分割後的結果如圖10所示,然後將分割後的小圖拼接合成大圖,結果如圖11所示,圖11中左圖是原圖添加邊緣數據(分塊時添加的)後的分割結果,圖11中右圖是去掉邊緣即原圖的分割結果。分割後圖像對應的數據如圖12所示。從圖片中可看到,三層網絡的處理結果是圖8右圖,本發明分割後的結果圖是圖11右圖,兩種方法進行分割後的圖片相同,分割後圖像對應的數據也相同(圖10和圖12),但是原網絡結構用了h*w(h為圖片的寬,w為圖片的高,如107*123)個神經元,而本發明中,不管圖片像素是多大,只需要用m*n個神經元(m*n遠小於h*w),大大減少了神經元的個數,降低了計算的複雜度和硬體資源消耗。分析硬體消耗資源對比表2可發現:表2以107*203大小的圖片為例,對比三層網絡和本發明的單層網絡(對圖片分塊)所消耗的存儲資源大小。分析三個硬體消耗指標(乘法器、加法器、與或邏輯門、fpga運行時間)可知,本發明所需的各種資源都比三層網絡少。如三層網絡需要65805個乘法器,而本發明利用單層網絡(對圖片分塊)只需要384個乘法器。其他資源消耗就不一一列舉。可見本發明不但簡化了網絡結構,降低了神經元的個數,也大大降低了硬體的資源消耗。表2三層網絡和本發明單層網絡(結合分塊)的硬體資源消耗對比表fpga硬體指標三層網絡本發明單層網絡(結合分塊)乘法器65805384加法器157932896與或邏輯門3685083456當前第1頁12