摘 要: 針對(duì)醫(yī)學(xué)顯微圖像自動(dòng)分析系統(tǒng)在應(yīng)用中的實(shí)時(shí)性需求,根據(jù)顯微鏡細(xì)胞圖像識(shí)別原理和多核流水設(shè)計(jì)準(zhǔn)則,分析了細(xì)胞圖像識(shí)別算法實(shí)時(shí)性,提出了一種基于TMS320C6678 顯微鏡細(xì)胞圖像識(shí)別并行流水實(shí)現(xiàn)方法。該方法實(shí)現(xiàn)了任務(wù)級(jí)并行流水,提高了系統(tǒng)的魯棒性,達(dá)到了系統(tǒng)穩(wěn)定和性能加速的目的。實(shí)驗(yàn)結(jié)果表明,該方法是可行、有效、可靠的,并且基于TMS320C6678 的顯微鏡細(xì)胞識(shí)別系統(tǒng)的實(shí)時(shí)處理能力有很大提升。
關(guān)鍵詞: 圖像識(shí)別; TMS320C6678; DSP多核; 并行處理; 魯棒性
中圖分類號(hào): TN964?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)02?0110?04
0 引 言
顯微鏡細(xì)胞圖像識(shí)別系統(tǒng)是采用圖像處理和模式識(shí)別對(duì)顯微鏡細(xì)胞圖像中特定成分進(jìn)行自動(dòng)測(cè)量和分析[1]。在臨床檢驗(yàn)中,利用顯微鏡細(xì)胞圖像識(shí)別系統(tǒng)快速的檢驗(yàn)顯微鏡鏡檢,可以節(jié)省醫(yī)生的大量勞動(dòng)力,提高檢驗(yàn)速度,提高檢驗(yàn)準(zhǔn)確率。
針對(duì)醫(yī)學(xué)顯微圖像自動(dòng)分析系統(tǒng)在應(yīng)用中的實(shí)時(shí)性需求,設(shè)計(jì)了一種基于TMS320C6678 顯微鏡細(xì)胞圖像識(shí)別并行實(shí)現(xiàn)方法,該方法實(shí)現(xiàn)了任務(wù)級(jí)并行流水,提高了系統(tǒng)的魯棒性,達(dá)到了系統(tǒng)穩(wěn)定和性能加速的目的。
1 細(xì)胞圖像識(shí)別系統(tǒng)原理
顯微鏡細(xì)胞圖像識(shí)別是一個(gè)典型的模式識(shí)別過程。它主要由圖像預(yù)處理、圖像分割、目標(biāo)提取、特征提取和圖像識(shí)別等關(guān)鍵技術(shù)組成,其原理如圖1所示。
其中,圖像預(yù)處理通過各種自適應(yīng)濾波技術(shù)和圖像增強(qiáng)算法過濾由于各種因素引起的噪聲,同時(shí)增強(qiáng)細(xì)胞圖像的邊緣信息;圖像分割是從細(xì)胞圖像中將各種有形成分凸顯出來;目標(biāo)提取是從分割后的細(xì)胞圖像中提取出凸顯的有形成分,使其成為單一的脫離背景的目標(biāo);特征提取是從形態(tài)、紋理和顏色等方面提取能夠區(qū)分各種有形成分的107維特征參數(shù);圖像識(shí)別根據(jù)計(jì)算得到的特征采用神經(jīng)網(wǎng)絡(luò)對(duì)有形成分進(jìn)行識(shí)別分類,最后得到識(shí)別結(jié)果。
2 圖像識(shí)別多核并行流水設(shè)計(jì)
TMS320C6678 是基于TI 公司最新DSP 系列器件TMS320C66x、在單芯片上集成了8顆1.25 GHz內(nèi)核,不僅可支持最高性能密度,而且節(jié)約成本、功耗與板級(jí)空間;1 片8 核的TMS320C6678 提供等效達(dá)10 GHz 的內(nèi)核頻率,單個(gè)指令周期可以執(zhí)行4個(gè)32位定點(diǎn)數(shù)據(jù)運(yùn)算,或者執(zhí)行1個(gè)16個(gè)浮點(diǎn)數(shù)據(jù)運(yùn)算,整個(gè)芯片提供320GMAC定點(diǎn)計(jì)算或者160GFLOP浮點(diǎn)計(jì)算能力[2];提供多種多核之間的信息和數(shù)據(jù)交換方式,如EDMA、MessageQ Queue和QMSS等[3]。在C6678 平臺(tái)上設(shè)計(jì)細(xì)胞識(shí)別系統(tǒng),采用數(shù)據(jù)流方式的任務(wù)并行方式。
2.1 并行流水設(shè)計(jì)準(zhǔn)則
并行流水是每個(gè)流水級(jí)采用不同的運(yùn)算法則處理數(shù)據(jù),再將數(shù)據(jù)傳遞到下一個(gè)流水級(jí)處理,不同流水級(jí)上的任務(wù)由上一級(jí)的流水結(jié)果來激活。適合于數(shù)據(jù)流模式的程序通常包含計(jì)算復(fù)雜度較大的模塊,且模塊間存在著數(shù)據(jù)依賴[4]。圖2為并行流水的示意圖。
流水線劃分的設(shè)計(jì)準(zhǔn)則如下:
(1) 所有的流水級(jí)應(yīng)該有相似的運(yùn)算延遲,這是因?yàn)橄到y(tǒng)性能受到計(jì)算負(fù)載最大的核的限制,為了提高系統(tǒng)數(shù)據(jù)吞吐率,所以各流水級(jí)的運(yùn)算時(shí)間應(yīng)盡量均勻[5]。
(2) 流水線系統(tǒng)要求流水級(jí)之間的數(shù)據(jù)相關(guān)性是單向傳遞的,只能由上級(jí)流水傳輸數(shù)據(jù)到下級(jí)流水,所以流水級(jí)中的模塊及其以下級(jí)別的數(shù)據(jù)必須是一個(gè)相關(guān)性環(huán)路。
2.2 細(xì)胞圖像識(shí)別算法實(shí)時(shí)性分析
以兩張800[×]600的BMP圖片為輸入,一張是目標(biāo)較少的細(xì)胞圖像,而另一張目標(biāo)較多,輸入到經(jīng)過優(yōu)化的程序中,在C66X單核內(nèi)運(yùn)行,利用CCSv5.3 的環(huán)境進(jìn)行軟件仿真得到各個(gè)處理過程所花的時(shí)間,結(jié)果如表1所示。
由表1可知, 整個(gè)微鏡細(xì)胞圖像識(shí)別系統(tǒng)測(cè)試中, 在算法代碼經(jīng)過優(yōu)化的情況下,其中提取模塊耗時(shí)最多,大約相當(dāng)于其他過程的3倍;一張800[×]600的BMP圖片在單個(gè)TMS320C66x CPU 內(nèi)核上的處理時(shí)間約為1.06 s,另外一張的處理時(shí)間為1.31 s,對(duì)于不同的圖像輸入,在單個(gè)TMS320C66x CPU內(nèi)核上各個(gè)模塊的處理時(shí)間相差較大,故對(duì)于測(cè)試結(jié)果設(shè)計(jì)相應(yīng)的并行流水算法。
2.3 圖像識(shí)別流水任務(wù)分配設(shè)計(jì)
根據(jù)流水模式的兩個(gè)設(shè)計(jì)準(zhǔn)則和系統(tǒng)算法實(shí)時(shí)性分析,把0核設(shè)計(jì)為通信控制核,把顯微鏡細(xì)胞圖像識(shí)別各模塊映射到剩余的7個(gè)C66X核, 組成一個(gè)5 級(jí)流水線,如圖3所示。
將圖像預(yù)處理、分割、目標(biāo)提取、特征提取和圖像識(shí)別分配到不同核,實(shí)現(xiàn)算法的任務(wù)級(jí)流水。由于特征提取計(jì)算復(fù)雜度較大,制約了任務(wù)級(jí)流水的處理速度,為了充分發(fā)揮C6678 性能優(yōu)勢(shì),將特征提取分配到了3個(gè)核,以3個(gè)核并行運(yùn)算來提高系統(tǒng)的識(shí)別速度。
2.4 基于隊(duì)列的相鄰流水級(jí)之間的存儲(chǔ)設(shè)計(jì)
傳統(tǒng)的多核流水的解決方案絕大部分都是基于單向的控制,沒有反饋機(jī)制,這些結(jié)構(gòu)的處理性能受到最大計(jì)算復(fù)雜度的流水級(jí)限制。
對(duì)于不同圖片的輸入,顯微細(xì)胞圖像的處理時(shí)間有很大差異,為了充分發(fā)掘流水級(jí)間處理的并行度,并適應(yīng)細(xì)胞圖像識(shí)別數(shù)據(jù)流的特點(diǎn),提出一種反饋系統(tǒng)級(jí)流水線體系結(jié)構(gòu)。每一級(jí)流水線包含至少一個(gè)可編程的C66X核,不同流水級(jí)之間數(shù)據(jù)傳遞用循環(huán)隊(duì)列存儲(chǔ)(先進(jìn)先出)單元完成,當(dāng)下級(jí)流水級(jí)處理完當(dāng)前次流水時(shí),需要返回一個(gè)消息給上級(jí)流水級(jí),以通知上級(jí)流水級(jí)對(duì)循環(huán)隊(duì)列的控制。
如圖4所示,兩個(gè)相鄰流水級(jí)之間的聯(lián)系,分為控制層和數(shù)據(jù)層。對(duì)于一般流水設(shè)計(jì),受到計(jì)算負(fù)載最大的核的限制,假如輸入一張目標(biāo)較少的細(xì)胞圖片,導(dǎo)致各個(gè)流水級(jí)的處理時(shí)間很短,流水級(jí)任務(wù)處于掛起狀態(tài),等待下一個(gè)輸入,浪費(fèi)資源,且當(dāng)輸入到流水系統(tǒng)的數(shù)據(jù)超過了系統(tǒng)的負(fù)載最大核的限制可能導(dǎo)致系統(tǒng)崩潰。而采用在兩個(gè)流水級(jí)之間加入一個(gè)循環(huán)隊(duì)列存儲(chǔ)器的設(shè)計(jì),增加系統(tǒng)的冗余存儲(chǔ)空間,只要隊(duì)列存儲(chǔ)器沒有存儲(chǔ)滿,系統(tǒng)可以繼續(xù)處理下一張細(xì)胞圖片,不需要等待,從而增加系統(tǒng)的穩(wěn)定性和吞吐率。
3 細(xì)胞圖像識(shí)別系統(tǒng)多核流水實(shí)現(xiàn)
根據(jù)細(xì)胞圖像識(shí)別系統(tǒng)流水設(shè)計(jì)思路, 將本文提出的DSP多核流水設(shè)計(jì)在CCSv5 上進(jìn)行軟件仿真實(shí)現(xiàn)。其中,利用SYS/BIOS[6]提供核間任務(wù)調(diào)度,利用IPC[7]實(shí)現(xiàn)核間同步和通信,利用NDK[8]實(shí)現(xiàn)與上位機(jī)通信。整個(gè)細(xì)胞圖像識(shí)別系統(tǒng)有8個(gè)DSP C66X核,6塊DDR存儲(chǔ)區(qū),其中核0負(fù)責(zé)與外部通信,其余7個(gè)DSP核負(fù)責(zé)運(yùn)算, 6塊存儲(chǔ)器區(qū),作為每個(gè)系統(tǒng)輸入/輸出和流水級(jí)之間的循環(huán)隊(duì)列存儲(chǔ)區(qū)。整個(gè)系統(tǒng)的結(jié)構(gòu)如圖5所示。
細(xì)胞圖像識(shí)別系統(tǒng)運(yùn)行步驟如下:
(1) 啟動(dòng)系統(tǒng),完成所有核的初始化后,首先調(diào)用IPC_start函數(shù)讓各核進(jìn)入同步等待狀態(tài)。
(2) 上位機(jī)通過網(wǎng)口啟動(dòng)并發(fā)送數(shù)據(jù)到核0后,核0接收了第一個(gè)圖片后,利用Notify_sendEvent()函數(shù)啟動(dòng)核1,并通知核1該從隊(duì)列的那個(gè)存儲(chǔ)區(qū)取數(shù)據(jù)。
(3) 核1開始預(yù)處理圖像,而此時(shí)核0接收第二張圖片,核2、3、4、5、6、7都處于掛起狀態(tài);核1處理完成后,利用Notify_sendEvent()通知核2開始圖像分割,并通知核2該從隊(duì)列的哪個(gè)存儲(chǔ)區(qū)取數(shù)據(jù)。
(4) 核2開始圖像分割,而此時(shí)核0正在接收第三張圖片,核1預(yù)處理第二張圖片,核3、4、5、6、7都處于掛起狀態(tài);直到核2處理完,利用Notify_sendEvent()通知核3開始目標(biāo)提取,并通知核3該從隊(duì)列的哪個(gè)存儲(chǔ)區(qū)取數(shù)據(jù)。
(5) 核3對(duì)分割后的圖片提取目標(biāo),而此時(shí)核0正在接收第四張圖片,核1預(yù)處理第三張圖片,核2分割第二張圖片,核4、5、6、7都處于掛起狀態(tài);直到核3處理完,把得到的目標(biāo)數(shù)分成三份,利用Notify_sendEvent()通知核4、5、6三個(gè)核開始工作,并通知核4、5、6該從隊(duì)列的哪個(gè)存儲(chǔ)區(qū)取數(shù)據(jù)。
(6) 核4、5、6計(jì)算目標(biāo)特征,而此時(shí)核0正在接收第五張圖片,核1預(yù)處理第四張圖片,核2分割第三張圖片,核3提取第二張圖片的目標(biāo),核7都處于掛起狀態(tài);直到處理完成,核4、5、6各自通知核7,并通知核7該從隊(duì)列的哪個(gè)存儲(chǔ)區(qū)取數(shù)據(jù)。
(7) 當(dāng)核7接到核4、5、6三個(gè)核的通知后,開始識(shí)別目標(biāo)類型,處理完后,通知核0,核0把識(shí)別的結(jié)果發(fā)送各上位機(jī),而此時(shí)核0正在接收第六張圖片,核1預(yù)處理第五張圖片,核2分割第四張圖片,核3提取第三張圖片的目標(biāo),核4、5、6計(jì)算第二張圖片目標(biāo)的特征。
(8) 所有核并行處理。
以上步驟對(duì)應(yīng)的流水時(shí)序圖如圖6所示。
4 實(shí)驗(yàn)結(jié)果分析
根據(jù)細(xì)胞圖像識(shí)別系統(tǒng)的TMS320C6678 任務(wù)并行設(shè)計(jì)方案, 本節(jié)將給出CCSv5 平臺(tái)下的軟件仿真結(jié)果,并進(jìn)行分析。
為了測(cè)試基于TMS320C6678的顯微鏡細(xì)胞圖像識(shí)別系統(tǒng)的性能,將相同顯微鏡細(xì)胞圖像識(shí)別程序在C6678的單個(gè)C66x核和C6678上的運(yùn)行,把6張2.2節(jié)用來測(cè)試的兩張圖片交替的圖片連續(xù)輸入到單個(gè)C66x核和C667兩個(gè)版本中運(yùn)行,先輸入圖片1,再輸入圖片2,再重復(fù)輸入2次,實(shí)驗(yàn)結(jié)果如表2所示。
從表2可知,對(duì)比不同平臺(tái)的顯微鏡細(xì)胞圖像識(shí)別系統(tǒng),第一張圖片的處理時(shí)間相近,但是從第二張圖片在C66x平臺(tái)上處理的周期是C6678平臺(tái)上的6.28倍,且其后輸入的圖片情況都是如此,說明基于TMS320C6678的顯微鏡細(xì)胞圖像識(shí)別系統(tǒng)并行的可行性。
5 結(jié) 語
針對(duì)顯微鏡細(xì)胞圖像識(shí)別系統(tǒng)的實(shí)時(shí)性需求,根據(jù)顯微鏡細(xì)胞圖像識(shí)別原理和多核流水設(shè)計(jì)準(zhǔn)則,分析了細(xì)胞圖像識(shí)別算法實(shí)時(shí)性,提出了一種基于TMS320C6678 顯微鏡細(xì)胞圖像識(shí)別并行流水實(shí)現(xiàn)方法,該方法實(shí)現(xiàn)了任務(wù)級(jí)并行流水,提高了系統(tǒng)的魯棒性,達(dá)到系統(tǒng)穩(wěn)定和性能加速的目的。
參考文獻(xiàn)
[1] 梁光明.體液細(xì)胞圖像有形成分智能識(shí)別關(guān)鍵技術(shù)研究[D].長(zhǎng)沙:國(guó)防科技大學(xué),2008.
[2] Texas Instruments. TMS 320C6678 multicore fixed and floating?point digital signal processor [R]. USA: TI, 2012.
[3] Texas Instruments. Multicore programming guide [R]. USA: TI, 2012.
[4] 彭益智,霍家道,徐偉.一種基于TMS320C6678的JPEG編碼算法并行實(shí)現(xiàn)方法[J].指揮控制與仿真,2012,34(1):119?122.
[5] 張鵬,杜建國(guó),解曉東,等.一種基于多核流水的多標(biāo)準(zhǔn)視頻編解碼器體系結(jié)構(gòu)[J].計(jì)算機(jī)研究與發(fā)展,2008,45(11):1985?1993.
[6] Texas Instrument. TI SYS/BIOS v6.33 realtime operating system user's guide [R]. USA: TI, 2011.
[7] Texas Instrument. SYS/BIOS inter?processor communication (IPC) 1.25 user’s guide [R]. USA: TI, 2012.
[8] Texas Instrument. TI network developer's kit (NDK) v2.21 user′s guide [R]. USA: TI, 2012.