国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單種群蛙跳優(yōu)化CNN的眼底圖像多病變檢測

2021-09-13 01:02:32任龍杰丁衛(wèi)平鞠恒榮曹金鑫
計(jì)算機(jī)與生活 2021年9期

任龍杰,孫 穎,丁衛(wèi)平,鞠恒榮,曹金鑫

南通大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南通226019

彩色眼底圖像是診斷眼科疾病最基本的檢查方式[1]。同時(shí),眼底圖像能使人們盡早地發(fā)現(xiàn)各種眼部病變,如青光眼、視神經(jīng)炎、黃斑病變等,方便及時(shí)、有效的治療[2]。早期診斷與及時(shí)治療可以有效地減少患病率。但由于中國人口數(shù)目龐大,眼科醫(yī)生數(shù)量相對(duì)有限,單純依靠醫(yī)生診斷眼科疾病,需要消耗大量的時(shí)間,亟需其他方法進(jìn)行大規(guī)模篩查。醫(yī)學(xué)圖像分析技術(shù)不僅可以大大減少醫(yī)生的工作量,而且具有客觀、快速、準(zhǔn)確的優(yōu)點(diǎn)[3]。

國內(nèi)外許多學(xué)者從事視網(wǎng)膜病變的研究。在眼底圖像病變檢測方面[4],Ganguly等人[5]針對(duì)糖尿病視網(wǎng)膜病變紅色病變這種廣泛的眼球病,提出了一種基于自適應(yīng)閾值的檢測方法。該方法能夠?qū)γ總€(gè)眼底圖像使用不同強(qiáng)度的閾值進(jìn)行處理,使其能夠應(yīng)用于不同攝像機(jī)獲取的質(zhì)量和分辨率不同的眼底圖像上;Balasubramanian 等人[6]利用方向梯度直方圖(HOG)特征提取和基于Gabor濾波器血管提取的視網(wǎng)膜眼底圖像支持向量機(jī)分類方法對(duì)青光眼檢測進(jìn)行評(píng)估;Liu 等人[7]提出了一種基于眼底圖像的杯盤比自動(dòng)測量系統(tǒng),可以對(duì)青光眼進(jìn)行自動(dòng)診斷。眼底圖像分割方面[8-9]:Hossain等人[10]采用基于MRF 模型的血管分割方法,該方法相對(duì)于高度復(fù)雜的圖像分割方法更有效;Samad等人[11]利用模糊C-均值對(duì)眼底圖像中糖尿病視網(wǎng)膜病變對(duì)象的邊界進(jìn)行聚類和檢測,可以高效、快速地分割糖尿病視網(wǎng)膜病變。深度學(xué)習(xí)方法在眼底圖像識(shí)別中的應(yīng)用也十分廣泛[12-14],Xu 等人[15]利用深度卷積神經(jīng)網(wǎng)絡(luò)方法,對(duì)彩色眼底圖像針對(duì)糖尿病視網(wǎng)膜病變進(jìn)行自動(dòng)分類;Prenta?i?等人[16]使用卷積神經(jīng)網(wǎng)絡(luò)檢測彩色眼底圖像中的滲出物,實(shí)驗(yàn)證明CNN能有效地檢測眼底圖像中的滲出物。

上述研究均是對(duì)某一病種的分類,例如糖尿病引發(fā)的眼體病變判斷分類,或者是對(duì)眼底圖像病變、血管進(jìn)行圖像分割,但眼底圖像中多種病變可能同時(shí)交織存在,如圖1 所示,上述研究未能實(shí)現(xiàn)對(duì)出現(xiàn)于視網(wǎng)膜的多種病變(如硬滲出物、出血等)同時(shí)檢測。本研究提出一種改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò),能對(duì)同時(shí)存在于眼球的多種病變進(jìn)行識(shí)別判斷,例如硬滲出物、軟滲出物等病變進(jìn)行檢測。眼底圖像內(nèi)容復(fù)雜,屬于不同類別的圖像可能相似度極高,對(duì)眼底圖像進(jìn)行檢測識(shí)別時(shí)受到血管形變、圖像本身的亮度、對(duì)比度及其他病變區(qū)域的影響[17],采用傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類檢測需要大量的訓(xùn)練樣本,而且容易陷入局部最優(yōu),訓(xùn)練效率較低。因此,本研究提出采用單種群蛙跳算法優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的權(quán)值初始化與反向傳播。通過高斯分布函數(shù)生成蛙群,不斷更新最差蛙的位置,找出全局最優(yōu)解并將其作為卷積神經(jīng)網(wǎng)絡(luò)的初始權(quán)值;然后監(jiān)聽每次訓(xùn)練的損失值,對(duì)異常梯度通過蛙跳算法進(jìn)行修正;最后對(duì)網(wǎng)絡(luò)最終權(quán)值進(jìn)行進(jìn)一步優(yōu)化,最終得到了較高的病變識(shí)別準(zhǔn)確率。

Fig.1 Fundus image with multiple lesions圖1 存在多種病變的眼底圖像

1 相關(guān)算法

1.1 CNN模型

卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)是一種多層前饋網(wǎng)絡(luò)[18],由LeCun等人[19]在1989年提出,作為深度學(xué)習(xí)的代表算法之一,近年來隨著帶注釋數(shù)據(jù)量的快速增長和圖形處理器單元性能的巨大提高,卷積神經(jīng)網(wǎng)絡(luò)的研究迅速興起,并在各種任務(wù)上取得了最新的成果[20]。CNN是一種包含卷積層的深度神經(jīng)網(wǎng)絡(luò)模型,已成為當(dāng)前語音分析和圖像識(shí)別領(lǐng)域的研究熱點(diǎn)[21]。

Fig.2 Classic LetNet structure圖2 經(jīng)典LetNet結(jié)構(gòu)

時(shí)間延遲網(wǎng)絡(luò)和LetNet-5是最早出現(xiàn)的網(wǎng)絡(luò)[22],經(jīng)典的LetNet-5如圖2所示。從結(jié)構(gòu)上看,卷積神經(jīng)網(wǎng)絡(luò)包含輸入層、隱層和輸出層,其中隱層包含卷積層、池化層和全連接層。卷積層的主要功能是對(duì)圖片特征進(jìn)行提取,其內(nèi)部包含幾個(gè)卷積核,卷積核包括權(quán)重系數(shù)組成的矩陣和一個(gè)偏差值。卷積計(jì)算公式如下:

式中,b為偏差值,Gl表示第l+1層卷積的輸入,Gl+1表示第l+1 層卷積的輸出,Ll+1表示Gl+1的大小,wl+1表示第l+1 層的卷積核,f表示卷積層參數(shù),s0和p分別表示Filter大小和步長。

在一次卷積計(jì)算之后,輸出的特征圖經(jīng)過激活函數(shù)計(jì)算后會(huì)進(jìn)入池化層,借助池化層來對(duì)結(jié)果進(jìn)行壓縮,降低數(shù)據(jù)的空間尺寸,減少網(wǎng)絡(luò)中參數(shù)的數(shù)量,使得計(jì)算資源耗費(fèi)變少,有效控制過擬合。池化也稱為下采樣,用S=down(C)表示。常見的池化操作主要有最大池化、平均池化等,其中應(yīng)用最廣泛的是最大池化[23]。最大池化如圖3所示。

Fig.3 MAX pooling圖3 MAX池化

經(jīng)過多層卷積池化計(jì)算后,最后輸出的特征圖會(huì)依次按行展開,連接成向量進(jìn)入全連接網(wǎng)絡(luò),經(jīng)過多層神經(jīng)網(wǎng)絡(luò)最后得到輸出。與BP 神經(jīng)網(wǎng)絡(luò)一樣,卷積神經(jīng)網(wǎng)絡(luò)也是通過梯度下降來進(jìn)行權(quán)值更新及反向傳播。

1.2 混合蛙跳算法

混合蛙跳算法(shuffled frog leaping algorithm,SFLA)是進(jìn)化計(jì)算領(lǐng)域中一種新興、有效的亞啟發(fā)式群體計(jì)算技術(shù)[24],一種結(jié)合了遺傳基因的模因演算算法[25],主要包含局部搜索和全局信息交換兩部分,局部搜索和全局信息交換一直持續(xù)進(jìn)行到滿足收斂條件[26]。SFLA 的基本工作流程:隨機(jī)生成由F只青蛙組成的蛙p={f1,f2,…,fF},則第i只青蛙表示為fi=[x1,x2,…,xs],s表示每只青蛙的維度。生成青蛙后,將所有青蛙按適應(yīng)值進(jìn)行降序排序,劃分成M個(gè)種群,劃分規(guī)則為:

每個(gè)種群包含有N只青蛙,滿足F=M×N。劃分種群之后,記錄全局最優(yōu)蛙fg,在每個(gè)種群內(nèi)部進(jìn)行局部搜索,在第j次局部搜索后種群內(nèi)適應(yīng)值最差蛙表示為fw(j),適應(yīng)值最優(yōu)蛙表示為fb(j),對(duì)每個(gè)子種群中的最差蛙循環(huán)更新,更新公式如下:

其中,Rand()表示0 到1 之間的隨機(jī)數(shù),Dmax表示最大蛙跳距離。青蛙位置更新之后,如果沒有得到改進(jìn),則將fg代替fw(j),如果仍然沒有改進(jìn),則隨機(jī)產(chǎn)生一個(gè)新的青蛙取代fw(j)。

當(dāng)所有種群經(jīng)過Umem次搜索時(shí),將所有青蛙混合到一起,按適應(yīng)值重新排序,重新劃分子種群,使得各個(gè)種群中青蛙的模因信息能夠充分傳遞,然后繼續(xù)進(jìn)行局部搜索。重復(fù)以上步驟,直至符合收斂條件,算法結(jié)束。

2 基于單種群蛙跳優(yōu)化的CNN模型

針對(duì)眼底圖像的復(fù)雜性,本研究將單種群蛙跳引入卷積神經(jīng)網(wǎng)絡(luò)權(quán)值初始化和權(quán)值更新中。通過不斷更新最差蛙的位置,尋找出全局最優(yōu)蛙作為網(wǎng)絡(luò)的初始權(quán)值。在網(wǎng)絡(luò)迭代過程中,監(jiān)聽每次計(jì)算的損失值,對(duì)產(chǎn)生異常損失值的網(wǎng)絡(luò)權(quán)值通過蛙跳算法進(jìn)行糾正。采用單種群蛙跳優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)算法(single population frog-leaping optimization convolutional neural network algorithm,SFCNN)流程如圖4所示。

Fig.4 SFCNN algorithm圖4 SFCNN算法

2.1 基于單種群蛙跳算法的權(quán)值初始化

卷積神經(jīng)網(wǎng)絡(luò)中,卷積核、全連接層權(quán)值等一般采用隨機(jī)的方式生成,由于眼底圖像中多種病變可能同時(shí)存在,呈現(xiàn)不規(guī)則分布,并且健康眼底圖像與病變眼底圖像區(qū)分不明顯,如圖5所示。當(dāng)網(wǎng)絡(luò)隨機(jī)生成的權(quán)值太差時(shí),網(wǎng)絡(luò)就需要花費(fèi)更多的時(shí)間和樣本進(jìn)行梯度下降運(yùn)算來對(duì)權(quán)值進(jìn)行修正,同時(shí)也容易使網(wǎng)絡(luò)陷入局部最優(yōu),影響最終結(jié)果。針對(duì)這個(gè)問題,本研究提出引入單種群蛙跳算法對(duì)卷積神經(jīng)網(wǎng)絡(luò)權(quán)值初始化。

Fig.5 Similar fundus images圖5 相似眼底圖像

混合蛙跳算法是一種亞啟發(fā)式群體進(jìn)化算法,具有優(yōu)良的全局搜索能力,能夠有效計(jì)算出全局最優(yōu)解,但是將其直接應(yīng)用于本研究中的權(quán)值初始化會(huì)產(chǎn)生大量的計(jì)算,增加算法整體運(yùn)行的時(shí)間成本,影響效率,因此本研究通過簡化混合蛙跳算法,提出了單種群蛙跳算法。與混合蛙跳算法不同,本文不再對(duì)初始樣本進(jìn)行種群的劃分,而是將所有青蛙視為一個(gè)種群,直接進(jìn)行全局尋優(yōu),并且在蛙跳規(guī)則上做了一些改進(jìn)。

算法具體步驟如下:

算法1權(quán)值初始化算法

步驟1參數(shù)初始化。確定青蛙數(shù)量m,根據(jù)高斯分布公式:

其中,設(shè)置μ=0,σ=1。

步驟2排序。將所有未計(jì)算損失值的青蛙帶入如圖2所示的CNN模型,從訓(xùn)練圖像庫中隨機(jī)選取n張圖像作為參照?qǐng)D像,進(jìn)行CNN前向傳播,計(jì)算每只青蛙的損失值,這里的損失值計(jì)算函數(shù)即為單蛙群算法的適應(yīng)度函數(shù),損失計(jì)算公式為:

其中,p表示網(wǎng)絡(luò)輸出值;t表示真實(shí)值;s表示每組病變標(biāo)簽的維度;b表示需要同時(shí)檢測的視網(wǎng)膜病變種類數(shù)。根據(jù)適應(yīng)度函數(shù)對(duì)所有青蛙進(jìn)行升序排序。

步驟3種群內(nèi)進(jìn)行搜索和位置更新。由步驟2可以得出最優(yōu)蛙fb和最差蛙fw,通過位置更新函數(shù)對(duì)最差蛙的位置進(jìn)行更新。針對(duì)青蛙位置更新,本研究在傳統(tǒng)蛙跳公式中添加了一個(gè)偏移量,同時(shí)適當(dāng)增大Rand()函數(shù)的隨機(jī)區(qū)間,公式如下:

式中,fp表示偏移量,其維度與每只青蛙的維度相同;fpi表示fp中第i個(gè)維度上的值;fnew表示更新后的青蛙。通過添加偏移量的方式,能夠有效提高蛙跳的性能,增大隨機(jī)區(qū)間使得算法更容易尋找到最優(yōu)解。將本步驟提到的跳躍方式映射到二維坐標(biāo)如圖6所示。

Fig.6 Improvement of frog leaping rule圖6 蛙跳規(guī)則改進(jìn)

步驟4檢驗(yàn)計(jì)算停止條件。判斷算法是否滿足收斂條件,如果滿足則停止算法,將最優(yōu)蛙的值作為卷積神經(jīng)網(wǎng)絡(luò)的初始權(quán)值,否則轉(zhuǎn)到步驟3。

2.2 基于單種群蛙跳算法的權(quán)值初始化

傳統(tǒng)的CNN 反向傳播本質(zhì)上就是梯度下降法,通過前向傳播計(jì)算得到的損失值更新網(wǎng)絡(luò)參數(shù),從而找到最優(yōu)解。而眼底圖像存在血管密布、病變處交織重疊、某些病變處十分微小等問題,并且受拍攝時(shí)光照影響嚴(yán)重,因此對(duì)眼底圖像進(jìn)行多種病變識(shí)別難度較大,采用梯度下降算法容易出現(xiàn)損失值變化幅度較大的異常情況,影響算法的執(zhí)行效率,甚至?xí)鹚惴ㄊ諗康骄植孔顑?yōu)等問題。針對(duì)上述問題,本研究采用單種群蛙跳算法對(duì)卷積神經(jīng)網(wǎng)絡(luò)反向傳播的較差梯度進(jìn)行修正。

在網(wǎng)絡(luò)迭代過程中,監(jiān)聽每次前向傳播計(jì)算得到的損失值,如果第i次計(jì)算的損失值與i-1 次的損失值差值的絕對(duì)值大于閾值o,即|li-li-1|>o,則認(rèn)為第i次前向傳播中的權(quán)值為無效權(quán)值,采用單種群蛙跳算法重新尋找最優(yōu)權(quán)值;在卷積神經(jīng)網(wǎng)絡(luò)符合結(jié)束條件后,得到訓(xùn)練完成的權(quán)值fqb,最終算法再執(zhí)行一次單種群蛙跳計(jì)算,通過最后一次的單種群蛙跳尋優(yōu)可以直接有效避免局部最優(yōu)。

算法2權(quán)值更新算法

步驟1輸入樣本。輸入眼底圖像和對(duì)應(yīng)的標(biāo)簽,對(duì)標(biāo)簽進(jìn)行one-hot編碼。

步驟2卷積,池化。對(duì)輸入的眼底圖像進(jìn)行多層的卷積與池化操作,每次池化計(jì)算結(jié)束對(duì)輸出結(jié)果采用ReLU函數(shù)進(jìn)行激活。

步驟3全連接計(jì)算。經(jīng)過多層全連接計(jì)算得到預(yù)測值,將預(yù)測值帶入softmax()函數(shù)計(jì)算得出結(jié)果后,通過式(6)計(jì)算損失值。

步驟4誤差值比對(duì)。判斷本次迭代的損失值與前一次損失值差的絕對(duì)值是否大于閾值o,如果不大于閾值,跳轉(zhuǎn)步驟10,否則執(zhí)行步驟5。

步驟5初始化參數(shù)。記錄第i-1 次前向傳播的權(quán)值wb,設(shè)置青蛙數(shù)c。

步驟6生成青蛙。與上文提到的采用高斯分布生成青蛙的方式不同,這里的青蛙主要圍繞wb生成,生成公式如下:

其中,1 ≤i≤c-1,wij表示生成的第i只青蛙的第j個(gè)維度上的值,n表示青蛙總數(shù)。此時(shí)蛙群中,必然存在青蛙wg滿足條件lg≤lb,lg和lb分別為wg和wb的損失值。

步驟7排序。隨機(jī)抽取少量訓(xùn)練圖片作為輸入值,將c中所有青蛙帶入圖2所示的CNN模型中,根據(jù)式(6)計(jì)算損失值,并將所有青蛙按損失值降序排序。

步驟8種群內(nèi)進(jìn)行搜索和位置更新。此步驟與2.1節(jié)中步驟3相同。

步驟9檢驗(yàn)蛙跳停止條件。判斷算法是否滿足收斂條件,如果滿足則停止算法,將最優(yōu)蛙的值更新網(wǎng)絡(luò)權(quán)值,否則轉(zhuǎn)到步驟8。

步驟10檢驗(yàn)網(wǎng)絡(luò)停止條件。判斷網(wǎng)絡(luò)是否符合收斂條件,如果滿足則停止迭代,否則跳轉(zhuǎn)到步驟1。

步驟11優(yōu)化最終權(quán)值。算法訓(xùn)練結(jié)束后,網(wǎng)絡(luò)中的權(quán)值即為最終權(quán)值,將最終權(quán)值作為初始蛙wb,通過式(10)生成蛙群,然后依次執(zhí)行步驟7~9,最終得到全局最優(yōu)蛙wqb即為算法最終訓(xùn)練完成的權(quán)值。

算法流程圖如圖7所示。

3 SFCNN眼底圖形多病變檢測實(shí)驗(yàn)

為驗(yàn)證本研究中算法的有效性,實(shí)驗(yàn)算法采用Python3.5 編程實(shí)現(xiàn),實(shí)驗(yàn)環(huán)境為Windows10/2.6 GHz/8 GB PC,實(shí)驗(yàn)中所有彩色視網(wǎng)膜眼底圖像均來自公共數(shù)據(jù)庫DRIVE(digital retinal images for vessel extraction)數(shù)據(jù)庫[27]和糖尿病性視網(wǎng)膜病變圖像數(shù)據(jù)庫DIAREDB1。

針對(duì)眼底圖像的復(fù)雜性,如受光照影響、病變處交織重疊等,實(shí)驗(yàn)中首先采用單種群蛙跳算法尋找最優(yōu)初始權(quán)值,然后監(jiān)聽卷積神經(jīng)網(wǎng)絡(luò)每次前向傳播計(jì)算的損失值,發(fā)現(xiàn)異常損失值時(shí),采用單種群蛙跳算法對(duì)產(chǎn)生異常損失值的權(quán)值進(jìn)行修正,從而提高網(wǎng)絡(luò)執(zhí)行效率,避免網(wǎng)絡(luò)陷入局部最優(yōu)。實(shí)驗(yàn)流程如圖8所示。

Fig.7 Weight optimization flow chart圖7 權(quán)值優(yōu)化流程圖

Fig.8 SFCNN algorithm experiment圖8 SFCNN算法實(shí)驗(yàn)

3.1 交叉熵?fù)p失計(jì)算方法

實(shí)驗(yàn)同時(shí)對(duì)硬滲出物、出血、微動(dòng)脈瘤和四種視網(wǎng)膜病變進(jìn)行檢測,首先對(duì)每張眼底圖像進(jìn)行標(biāo)簽標(biāo)注,并進(jìn)行one-hot編碼,組成包含8個(gè)元素的二維數(shù)組,如y_true=[[1,0],[0,1],[1,0],[1,0]],8 個(gè)元素被分成4 組,每組元素第一位值為1 代表沒有病變,第二位值為1 代表發(fā)生病變。經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)前向傳播計(jì)算后的預(yù)測值y_predict也是一個(gè)包含8 個(gè)元素的二維數(shù)組,將預(yù)測值中的每組分別進(jìn)行softmax()計(jì)算,然后通過式(6)計(jì)算得到損失值。

3.2 實(shí)驗(yàn)結(jié)果分析

單種群蛙跳算法通過全局尋優(yōu),找到最優(yōu)的初始權(quán)值,能夠有效降低網(wǎng)絡(luò)初始損失值,提高網(wǎng)絡(luò)計(jì)算效率,甚至能夠?qū)ψ詈蟮姆诸惤Y(jié)果產(chǎn)生較大的影響。如表1 所示,可以看出,通過蛙跳算法尋優(yōu)后的初始值第一次損失值計(jì)算相比較于傳統(tǒng)高斯分布隨機(jī)產(chǎn)生的初始損失值降低了很多,由于眼底圖像有一定的復(fù)雜性,不同病變的圖像可能存在一定的相似性,這使得傳統(tǒng)方法生成的初始網(wǎng)絡(luò)權(quán)值穩(wěn)定性較差,計(jì)算的損失值優(yōu)劣差距較大,較差的初始參數(shù)就需要更多步梯度下降計(jì)算來優(yōu)化,并且還可能導(dǎo)致算法陷入局部最優(yōu)。因此通過單種群蛙跳算法優(yōu)化初始值,能有效保證卷積神經(jīng)網(wǎng)絡(luò)在眼底圖像多標(biāo)簽分類中初始值生成的穩(wěn)定性,并且優(yōu)質(zhì)的網(wǎng)絡(luò)初始權(quán)值,可以有效減少網(wǎng)絡(luò)迭代次數(shù),提高網(wǎng)絡(luò)執(zhí)行效率,在一定程度上避免網(wǎng)絡(luò)陷入局部最優(yōu)。

Table 1 Comparison table of initial loss表1 初始損失值對(duì)比表

隨著迭代次數(shù)的增加,網(wǎng)絡(luò)的損失值呈曲折下降趨勢,但是由于眼底圖像圖片相似性高,受光照、微小病變點(diǎn)影響嚴(yán)重,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)誤差會(huì)出現(xiàn)波動(dòng)值較大的情況,這就會(huì)影響算法的執(zhí)行效率,甚至?xí)?dǎo)致陷入局部最優(yōu),如圖9所示。

本研究通過監(jiān)聽誤差值與閾值進(jìn)行比較,針對(duì)造成異常損失值的權(quán)值,通過單種群蛙跳算法進(jìn)行糾正。權(quán)值比較方法如下:

Fig.9 Loss reduction chart of CNN圖9 CNN損失下降折線圖

其中,o1和o2是定義的兩個(gè)閾值,li為第i次迭代的損失值,abs()為取絕對(duì)值函數(shù)。通過單種群蛙跳算法優(yōu)化之后的損失值折線圖如圖10 所示,可以看出相對(duì)于優(yōu)化之前,優(yōu)化之后的波動(dòng)更小,過大波動(dòng)較少,從而有效減少陷入局部最優(yōu)的可能性。

Fig.10 Loss reduction chart of improved algorithm圖10 改進(jìn)算法損失下降折線圖

在卷積神經(jīng)網(wǎng)絡(luò)執(zhí)行結(jié)束后,再對(duì)網(wǎng)絡(luò)最終權(quán)值進(jìn)行一次單種群蛙跳尋優(yōu),可以直接有效避免陷入局部最優(yōu),同時(shí)也是對(duì)網(wǎng)絡(luò)權(quán)值的進(jìn)一步優(yōu)化,使其對(duì)于光照過亮、光照過暗、病變交織重疊等復(fù)雜眼底圖像的病變檢測更為準(zhǔn)確。圖11 展示了CNN 和本文算法對(duì)三種受不同因素影響的復(fù)雜眼底圖像的多病變檢測效果,圖中HE(hard exudates)表示硬滲出物,SE(soft exudates)表示軟滲出物,M(microaneurysms)表示微動(dòng)脈瘤,H(hemorrhages)表示出血,Loss 表示網(wǎng)絡(luò)對(duì)四種病變檢測的總損失值(精確到小數(shù)點(diǎn)后兩位)。圖12 顯示了兩種方法對(duì)相似眼底圖像進(jìn)行多病變識(shí)別的準(zhǔn)確度和損失之和,從圖中可以看出,SFCNN 算法對(duì)此類眼底圖像的準(zhǔn)確率更高,損失值更低。從圖中可以看出,傳統(tǒng)CNN算法在部分眼底圖像上個(gè)別病變檢測不準(zhǔn)確,而SFCNN 在這類眼底圖像上準(zhǔn)確率較高,并且損失值更小。

Fig.11 Complex fundus image detection圖11 復(fù)雜眼底圖像檢測

實(shí)驗(yàn)中卷積神經(jīng)網(wǎng)絡(luò)部分主要通過兩層卷積、兩層池化層和一層全連接層對(duì)眼底圖像進(jìn)行多病變分類檢測。主要從準(zhǔn)確率(accuracy)和靈敏度(sensitivity)兩方面對(duì)算法進(jìn)行評(píng)價(jià),公式分別如下:

Fig.12 Similar fundus images圖12 相似眼底圖像

其中,pre_true表示識(shí)別正確的眼底圖像數(shù)量,t表示真存在病變的數(shù)量,p_f表示假存在病變的數(shù)量,并且加入綜合識(shí)別率和整體識(shí)別率作為參考,其中綜合識(shí)別率為p=(c1+c2+c3+c4)/n,這里c1、c2、c3、c4分別代表四種病變識(shí)別正確的數(shù)量,n代表測試集樣本總數(shù);整體識(shí)別率為每個(gè)樣本同時(shí)對(duì)四種病變檢測正確的百分比。從表2 和圖13 中可以看出,相對(duì)于SFLA-CNN、AlexNet 神經(jīng)網(wǎng)絡(luò)、LetNet-5 神經(jīng)網(wǎng)絡(luò),SFCNN 都有不同程度的提高。圖14 展示了SFCNN 和SFLA-CNN 算法的運(yùn)行時(shí)間對(duì)比,分別取運(yùn)行150步、300步、500步、1 000步、1 500步和2 000步的3次運(yùn)算時(shí)間平均值。從圖中可以看出,運(yùn)行時(shí)間隨步數(shù)增加而增長,具有一定的隨機(jī)性,但相同運(yùn)行次數(shù)的SFLA-CNN 的運(yùn)行時(shí)間普遍要比SFCNN的運(yùn)行時(shí)間長,因此通過對(duì)混合蛙跳算法進(jìn)行改進(jìn)后,更適合用于本文的改進(jìn)方式中。

實(shí)驗(yàn)還將本文提出的SFCNN算法與傳統(tǒng)的CNN算法、SVM[28]算法和KPCA+SVM 融合算法[29]單獨(dú)對(duì)眼底圖像硬滲出物分類檢測準(zhǔn)確率進(jìn)行比較,檢測準(zhǔn)確率用柱狀圖表示為如圖15所示。從分類效果柱狀圖可以看出,SFCNN 算法在多病變檢測和單一病變檢測方面,相對(duì)于已有算法,準(zhǔn)確率均有所提高,證明了單種群蛙跳優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)具有一定的優(yōu)越性及有效性。

Table 2 Comparison of experimental accuracy表2 實(shí)驗(yàn)準(zhǔn)確率對(duì)比 %

Fig.13 Accuracy contrast of multiple lesions圖13 多病變準(zhǔn)確率對(duì)比

Fig.14 Comparison of time圖14 時(shí)間對(duì)比

Fig.15 Hard exudation detection accuracy圖15 硬滲出檢測準(zhǔn)確率

4 結(jié)束語

本文提出利用簡化的SFLA算法,將全局視為一個(gè)種群進(jìn)行蛙跳計(jì)算,提出單種群蛙跳算法優(yōu)化CNN 應(yīng)用于眼底圖像多種病變的識(shí)別。由于CNN的初始權(quán)值選擇存在不確定性,容易影響網(wǎng)絡(luò)執(zhí)行效率,CNN自身的反向傳播計(jì)算容易陷入局部最優(yōu),本文提出采用單種群蛙跳算法來對(duì)損失值異常的權(quán)值進(jìn)行優(yōu)化,修正參數(shù)值,避免算法陷入局部最優(yōu),提高病變的識(shí)別率,降低訓(xùn)練成本。

對(duì)于多分類的準(zhǔn)確率進(jìn)一步提升,今后需要繼續(xù)對(duì)訓(xùn)練樣本庫進(jìn)行擴(kuò)充,提高樣本和標(biāo)簽質(zhì)量;同時(shí)對(duì)于執(zhí)行時(shí)間方面,結(jié)合最新蛙跳算法研究成果,尋找效率更高的改進(jìn)方法提高算法訓(xùn)練時(shí)效。在后續(xù)研究中,可以探索卷積神經(jīng)網(wǎng)絡(luò)在眼底圖像中的分割、病變定位等應(yīng)用,以解決傳統(tǒng)方法難以解決的綜合問題。

洛浦县| 延安市| 赣州市| 铅山县| 铜山县| 琼海市| 兴和县| 天全县| 元氏县| 吴川市| 浑源县| 嘉祥县| 东海县| 陆川县| 班戈县| 大港区| 巴青县| 平舆县| 大余县| 桐城市| 白城市| 哈尔滨市| 普陀区| 肃南| 民权县| 井陉县| 炉霍县| 阳谷县| 壤塘县| 竹北市| 万源市| 玛多县| 宁国市| 班戈县| 屏边| 团风县| 吉隆县| 延边| 五家渠市| 鸡东县| 黄冈市|