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