李宏彬,賀太平
(1.咸陽職業技術學院醫學院,陜西 咸陽 712000;2.陜西中醫藥大學附屬醫院影像科,陜西 咸陽 712000)
醫學圖像的計算機輔助診斷是一種機器學習過程,主要研究計算機如何模擬或實現人類的學習行為來獲取新的知識或技能,并對現有的知識結構進行重組以提高其性能。計算機輔助診斷是通過對大量數據的分析,從中找出客觀規律的技術,其主要包括2 個步驟:數據準備和規則發現。數據準備是從相關的數據源中選擇所需的數據;規則發現是以某種方式找出數據集中所包含的規則。B 超醫師每天要處理大量的影像資料,工作強度大,可能會出現誤診和漏診。但計算機不會因長期工作而產生疲勞,其分析結果是客觀的、一致的。因此,計算機輔助診斷已成為B 超診斷的迫切需求。目前,許多學者已對計算機輔助診斷在肝臟[1]、乳腺[2]、甲狀腺疾病[3]等的B 超診斷中的應用進行了系統深入的研究,但計算機輔助診斷的準確性仍有待提高。基于此,本文以陜西中醫藥大學附屬醫院PACS 系統數據為來源,探索計算機輔助診斷對肝部B 超圖像的分類效果,以期提高計算機輔助B 超診斷肝臟疾病的準確率。
1.1 數據來源 本研究數據來源于陜西中醫藥大學附屬醫院超聲診斷科。機器學習前對下載的肝部B超聲像圖進行篩選,挑選同一機型(C5-1ABD)下超聲探頭位姿關聯度高、肝區幅面相對比較大的3 個右肝斜切面(右肋間經右肝隔頂部右肝斜切面、右肋間經第一肝門右肝斜切面、右肋緣下經第一肝門右肝斜切面)進行圖像數據采樣,共采集正常肝(91個)、脂肪肝(82 個)、回聲增粗(70 個)、肝癌(59個)、肝囊腫(45 個)和其他肝外正常或病例(93 個)感興趣區圖塊合計440 個。肝部B 超聲像圖采集切面見圖1,感興趣區圖塊的圖像數據的獲取通過軟件來完成,見圖2。

圖1 肝部B 超聲像圖采集切面示意

圖2 感興趣區選取
1.2 感興趣區數據提取 運行軟件后,通過對話框上載一副超聲聲像圖。首先設置一個寬1200 高800 的窗口,窗口從左上角開始向下顯示約800×600 像素的B 超圖像;為使圖像細節更細膩,可選擇B 超圖像中25×25 像素的PNG 圖像對感興趣區圖像進行框選,也可對感興趣區圖像進行放大,使其清晰顯示;放大窗口下方為感興趣圖像灰階直方圖,從上到下分別代表0~255 灰階。當方框移動時,感興趣區放大圖像和直方圖同步改變。由于菜單發命令的速度較慢,本軟件因而采用快捷鍵方式發命令,其中鍵盤的上鍵、下鍵、左鍵、右鍵分別使方框向上、下、左、右運動1 個像素的距離,為提高方框的運動速度,又設置鍵盤的r、f、d、g 分別使方框向上、下、左、右運動10 個像素的距離。其他的功能鍵分別為q 鍵退出系統,n 鍵新建基于電子表格文件XLS 的分類模式數據包,s 鍵將當前感興趣圖像的所有特征值數據和圖塊歸類保存到自建的電子表格文件XLS 數據包中。本軟件可設置的類別分別包括正常肝、脂肪肝、回聲增粗(肝炎)、肝硬化、肝囊腫、肝占位(腫瘤)和其他(肝外組織或較少見、病灶太小的肝病如肝膿腫,肝內鈣化點和肝寄生蟲)。當用戶設置和確認后,合計380 個特征值和圖塊類別寫入到用戶建立的數據包文件中,供選擇其中的部分或全部進行訓練。由于電子表格文件通用、直觀不涉及數據庫版權,在本軟件中訓練建樹的感興趣區多參數特征數據均以通用的電子表格Excel XLS 格式保存在自建的數據包(小型數據庫)中,涉及電子表格的建立,頁(sheet)的建立,寫入、覆蓋和讀。數據包包括4 個頁,第1、第2 頁的每行用于保存感興趣區的直方圖256 個灰階值數據,第3 頁每行用于保存Python 標準72 紋理特征值、位置3 特征值和補充48 Haralick 紋理特征值,第4 頁用于保存當前塊圖的灰度共生矩陣,在每頁首行各列保存特征的名稱,首列各行代表不同圖塊序號,見圖3。

圖3 感興趣區參數
1.3 主要算法
1.3.1 紋理 紋理是一種反映圖像中同質現象的視覺特征,體現了物體表面共有的內在屬性,包含了物體表面結構組織排列的重要信息以及它們與周圍環境的聯系。紋理分析指通過一定的圖像處理技術提取出紋理特征參數,從而獲得紋理的定量或定性描述的處理過程。紋理分析廣泛應用于遙感圖像、醫學影像、顯微圖像的解釋和處理。如B 超正常肝回聲切面光點輕而細,分布均勻,而脂肪肝回聲切面呈彌漫性增強,分布均勻致密。目前,圖像分析中定義紋理的方法很多,常用的方法有灰度共生矩陣(GLCM)[4]、灰度梯度共生矩陣(GGCM)[5]和Laws 能量紋理[6]等。肝臟檢查是B 超檢查中最常見的部位,對脂肪肝、肝炎、肝硬化、肝囊腫、肝占位性病變等肝臟疾病的診斷和評估有一定的參考價值。結合機器學習算法,紋理成為識別正常肝臟或異常肝臟疾病的重要手段。
1.3.2 決策樹算法 決策樹算法是一種通用而優秀的機器學習和模式識別算法,常用于分類和回歸。其主要分為3 種子算法:ID3[7]、C4.5[8]和CART[9]。通過學習訓練數據的特征值和類別建樹,依據新數據的特征值并在決策樹的引導下對其進行分類。決策樹的每個節點表示一個屬性,該屬性可以是離散特征值(ID3)或連續特征值(C4.5 和CART)。根據該屬性的特征值劃分,用戶可以從根節點開始,在各個層次逐步訪問父節點的子節點,直至到達樹的末端葉節點,而每個葉節點均歸類為一個特定的類別。決策樹非常直觀,易于理解和實現,用戶在對訓練數據學習過程中不需要了解太多的背景知識,只要經生成后的決策樹解釋后能夠理解決策樹的含義。決策樹的樹狀結構使其分析速度非常快,能夠在較短的時間內對大數據源得到有效的分析和識別。CART 是Breiman 等于1984 年提出的一種應用最廣泛的分類回歸決策樹算法。與ID3 決策樹和C4.5 決策樹的多個子樣本集節點不同,CART 采用相似的二叉樹結構,每次對父樣本集節點進行細分,生成2 個兄弟樣本集節點。CART 分類樹的建立和改進分為兩個步驟:①基于訓練樣本的數據遞歸地建立分類樹;②利用測試樣本的數據對分類樹進行剪枝。
1.3.3 隨機森林算法 隨機森林(random forest)算法是Breiman 在2001 年[10]提出的一種基于決策樹的機器學習算法。為了得到更穩定、更準確的預測結果,在隨機森林中使用一定數量的決策樹。隨機森林通過從每個訓練數據集中隨機選取多個數據和屬性集中的多個屬性來構建決策樹,并通過多次抽樣替換來構建多個決策樹,分類的最終結果由所有決策樹中的大多數分類結果決定。隨機森林算法的工藝流程如下:從樣本集中隨機選取m 個樣本,即隨機樣本;從所有屬性中隨機選取k 個屬性,構建一個決策樹,即隨機屬性;重復上述兩步n 次,即構建n 個決策樹;以上n 個決策樹形成隨機森林,將由n 個決策樹的大多數分類結果來決定新數據的類別。隨機林的優點是:它具有非常高的預測準確率,對異常值和干擾具良好的容忍度,且很難出現過度擬合[11]。目前,一些學者使用隨機森林算法進行了乳腺癌[11]、阿爾茨海默病[12]、肺結節[13]和宮頸病變[14]等的醫學影像的計算機輔助診斷的研究。
1.3.4 極端隨機樹算法 極端隨機樹[15](Extremely randomized trees)算法與隨機森林算法十分相似,都是由許多決策樹構成。極端隨機樹與隨機森林的主要區別:隨機森林應用的是隨機選取的部分樣本,極端隨機樹使用的所有的樣本,只是特征是隨機選取的,因為分裂是隨機的,所以在某種程度上比隨機森林得到的結果更加好。隨機森林在特征子集中選擇最優分叉特征,而極端隨機樹直接隨機選擇分叉特征。優缺點:基本與隨即森林類似。由于極端隨機樹采用所有訓練樣本使得計算量相對隨機森林增大,而采用隨機特征,減少了信息增益比或基尼指數的計算過程,計算量又相對隨即森林減少。
1.3.5 機器學習 機器學習屬于人工智能范疇,其目的是基于現有的訓練集來尋找函數,以便以極可能高的正確性預測新的測試集的類別。Python 是一種通用的面向對象編程語言,具有高效、靈活、開源、功能豐富、可擴展性強、表達力強和較高的可移植性等特點,廣泛用于科學計算、數據分析與人工智能和機器學習領域。
1.4 特征集生成 GLCM 是對灰度圖像某一區域中特定角度的灰度結構的頻率進行統計。如對長寬為m×n 像素的窗口進行紋理分析,概率矩陣PΦ,d(a,b)用于描述窗口中出現的兩個像素的頻率,其灰度為a 和b,在Φ 方向上和像素距離為d。基于該矩陣,根據GLCM 的各屬性計算公式,Python 的機器學習庫scikit-learn 中設有灰度共生矩陣GLCM 和相關紋理特征計算函數(http://tonysyu.github.io/scikit-image/api/skimage.feature.html),但它和上述的標準灰度共生矩陣GLCM 又有區別,其灰度共生矩陣計算函數為greycomatrix,用戶輸入灰度圖像矩陣、間距、角度(0°,45°,90°,135°),就可以得到256×256 的灰度共生矩陣,矩陣的兩個維度代表0~255 的灰度值。屬性特征值計算函數為greycoprops,用戶輸入6個屬性的任意一個,就可得到屬性的特征值,各屬性的定義公式為:

當設置像素間距為1、2 和3,像素間角度為0°,45°,90°,135°,使用Python scikit-learn 庫中6 種標準GLCM 紋理特征公式后,可得到3×4×6 共72 個紋理描述特征。另外,為了提高紋理特征的全面性,又補充Haralick 的公式:

構成補充紋理特征3×4×3 共48 個特征。除了紋理特征外,感興趣區域圖像的灰度直方圖也反映圖像間差異,為了研究直方圖對分類準確性的影響,將其0~255 的256 個灰階頻率也列入特征集列入特征集。最后,由于B 超圖像近場圖像細膩,遠場圖像較粗糙,為評估位置對分類準確性的影響,將感興趣區橫、縱坐標,近遠場(近場即位于圖像的上1/2,遠場位于圖像的下1/2)3 個特征也列入標準特征集。這樣就產生了包括“C1:直方圖”“C2:Python 標準72”“C3:Python 標準72+近遠場1”“C4:Python 標準72+圖塊定位3”“C5:Python 標準72+圖塊定位3+補充紋理48”“C6:直方圖+Python 標準72+圖塊定位3”和“C7:直方圖+Python 標準72+圖塊定位3+補充紋理48”7 個不同的特征集。
1.5 軟件結構 軟件設計主要使用Python Numpy庫、Matplotlib 庫、Pygame 庫、Easygui 庫、Sklearn庫、Xlrd+Xlwd+Xlutils 庫,其中Numpy 用于科學計算,Matplotlib 庫用于繪圖,Pygame 用于人機接口,Easygui 用于對話框設計,Sklearn 用于機器學習,Xlrd+Xlwd+Xlutils 用于Excel 讀寫操作。軟件由三部分自軟件構成:其中子程序pmain.py 用于感興趣區塊圖框選和特征值計算和自建XLS 收取庫構建;子程序pclassifybyCART、pclassifybyRF 和pclassifybyET 分別用于根據用戶使用CART 決策樹、隨機森林和極端隨機樹3 種算法和用戶選擇的特征集對未知聲像圖的感興趣區進行模式預測即計算機輔助診斷;子程序plearnbyCART、plearnbyRF 和plearnbyET分別用于根據用戶CART 決策樹、隨機森林和極端隨機樹3 種算法和用戶選擇的特征集(C1~C7 共7種),使用戶提供的特征數據包進行機器學習的訓練、預測和準確率評估。CART 決策樹、隨機森林、極端隨機樹機器學習相關的Python 相關函數如下:CART 決策樹:
建模:CART_decision_tree=tree.DecisionTreeClassifier()
訓練:CART_decision_tree.fit(Train_data,Train_label)
預測:predict_result=CART_decision_tree.predict(Test_data)隨機森林:
建模:Random_forest=RandomForestClassifier(n_estimators,random_state,n_jobs)
訓練:Random_forest.fit(Train_data,Train_label)
預測:predict_result=Random_forest.predict(Test_data)
極端隨機樹:
建模:Extra_Trees=ExtraTreesClassifier (n_estimators,random_state)
訓練:Extra_Trees.fit(Train_data,Train_label)
預測:predict_result=Extra_Trees.predict(Test_data)
交叉校驗:
折數設定:kf=RepeatedKFold(n_splits)
分組校驗循環:for train_number,test_number in kf.split (Data,Data_label)
為了評估算法結合特征集的分類準確率,本研究使用10 折交叉校驗方法。隨機將用戶數據包中的全部樣本分成基本均等的10 組,將其中1 組設置為檢驗集,另外9 組設置為訓練集,并使用一定算法如CART 和特征集如直方圖進行訓練,然后進行檢驗,該過程每輪進行10 次,使10 組中的每組都得到檢驗,每次都計算準確率,共進行10 輪,共100 次,計算最終的平均準確率。
本次首先對全部數據進行訓練,又利用全部數據分別使用CART、隨機森林和極端隨機樹3 種算法,和C1~C77 種不同的特征集進行全樣本訓練、測試和正確率評估,結果見表1。隨后,使用這440 個樣本數據又對上述3 種算法和7 種特征集進行10折的交叉校驗正確率,結果見表2。3 種算法結合不同的特征集都能無誤的通過全樣本校驗,在交叉校驗中,隨機森林結合C7 特征集的正確率最高,達96.31%,其次是極端隨機樹結合C7,達95.11%,再次是CART 決策樹結合C7 特征集,達92.60%,即3種算法結合C7(直方圖+Python 標準72+圖塊定位3+補充紋理48,共380 個特征)都能獲得很好的交叉校驗正確率,提示3 種算法都有很好的應用前景。將CART 結合C7 特征集440 個樣本訓練和產生的決策樹通過gvedit.exe 軟件轉化為決策樹圖,見圖4,其中節點的第一排為特征在380 個特征的排位。

圖4 CART 算法結合C7 特征集對440 個肝部圖塊樣本訓練產生的決策樹及局部放大圖

表1 各算法和特征集全樣本校驗正確率評估(%)

表2 各算法和特征集10 折交叉校驗正確率評估(%)
本研究完成了支持CART 決策樹、隨機森林和極端隨機樹3 種決策樹同源算法,和包含直方圖、圖塊位置和紋理特征的7 種特征集,采用面向對象和開放源碼語言Python,同時具有圖像采集、機器學習和正確率評估多種功能的計算機輔助影像診斷軟件的開發工作。
本研究結果表明,在使用若干特定肝部B 超切面情況下,隨機森林、極端決策樹和決策樹結合C7特征集都有很高的正確率,其中隨機森林最高達96.31%。該軟件可用于如B 超影像特別是大器官如肝、脾和腎臟的計算機輔助診斷、科學研究和B 超影像醫師的培訓,軟件目前還不能完全代替B 超醫師的工作,處于試驗和完善階段。但本研究以積累了大量的研究經驗和數據,將醫學診斷和人工智能相結合,將來完善后可減輕B 超醫師的工作強度。
本研究的不足之處:①目前軟件還不能與B 超機硬件相結合和獲得接口,即用本軟件替代B 超工作站軟件,只能對B 超工作站產生的圖像數據進行分析和研究;②機器學習只能針對相同的機型,不同機型的學習結果不能套用;③分析結果準確率受B超檢查時探頭切面位姿一致性的影響,主要因為切面差異會使B 超圖像產生非線性,降低了分析的準確性;④B 超機有多段局部的時間增益控制調節,可對聲像圖不同高度的亮度進行調節,這也會對圖像灰階和紋理產生不確定影響,增加了學習的難度。針對這些問題,將來可考慮用使用大數據技術來研究B 超的計算機輔助診斷,以期解決上述問題。
綜上所述,3 種決策樹同源算法結合C7 特征集在B 超計算機輔助診斷肝臟疾病中都有較高的價值,其中隨機森林算法的表現最優。