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