崔永剛,王 梅,陳德華,潘 喬
(東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201620)
腦脊液是在大腦的腔室和管腔,脊髓的中央管中以及在大腦和脊髓的外部發(fā)現(xiàn)的透明液體,其內(nèi)部包含二十多種細(xì)胞,這些細(xì)胞的數(shù)量及形態(tài)反映了機(jī)體的健康狀況。目前使用顯微鏡對(duì)腦脊液進(jìn)行檢查是診斷多種傳染性、炎性和代謝性疾病的主要手段。在臨床工作中,大多數(shù)醫(yī)院的檢查方式為使用電子顯微鏡對(duì)細(xì)胞影像進(jìn)行觀察,記錄電鏡圖片,再由醫(yī)生對(duì)不同的細(xì)胞或細(xì)菌進(jìn)行辨認(rèn)分類并計(jì)數(shù)[1]。由于腦脊液中所含有的細(xì)胞種類較多,且不同種類細(xì)胞的視覺(jué)特征非常相似,再加上需要辨別統(tǒng)計(jì)的細(xì)胞數(shù)量十分龐大,對(duì)于醫(yī)生來(lái)說(shuō)無(wú)疑是一項(xiàng)繁重的任務(wù)。除此之外,不同規(guī)模的醫(yī)院以及不同發(fā)展情況的城市對(duì)于病理醫(yī)師的配置情況也有所不同,一些地方醫(yī)院沒(méi)有能力配置病理醫(yī)師進(jìn)行腦脊液成像的辨別,而對(duì)病人來(lái)說(shuō),于各醫(yī)院之間的奔波不僅會(huì)加重病人的經(jīng)濟(jì)負(fù)擔(dān),甚至有可能延誤最佳的治療時(shí)機(jī)。
針對(duì)上述問(wèn)題,本文提出基于深度學(xué)習(xí)研發(fā)的腦脊液細(xì)胞學(xué)AI分析系統(tǒng),針對(duì)特定應(yīng)用場(chǎng)景,通過(guò)使用前后端分離系統(tǒng)實(shí)現(xiàn)技術(shù)、目標(biāo)檢測(cè)等技術(shù),進(jìn)而實(shí)現(xiàn)對(duì)細(xì)胞進(jìn)行檢測(cè)以及分類,不同類別細(xì)胞的計(jì)數(shù)統(tǒng)計(jì),輔助病理醫(yī)師標(biāo)注制作新的數(shù)據(jù)集,對(duì)數(shù)據(jù)集進(jìn)行處理以及模型的補(bǔ)充訓(xùn)練等功能。區(qū)別于一般的目標(biāo)檢測(cè)系統(tǒng),本系統(tǒng)引入了細(xì)胞形態(tài)學(xué)進(jìn)行特征提取以達(dá)到輔助分類的效果,并引入了事后解釋器對(duì)分類依據(jù)進(jìn)行解釋。
本文以實(shí)際醫(yī)院中病理科對(duì)腦脊液顯微鏡載玻片進(jìn)行細(xì)胞學(xué)檢查為應(yīng)用場(chǎng)景,開(kāi)發(fā)了腦脊液AI輔助分析Web系統(tǒng)。在實(shí)際應(yīng)用中,還需要配置相應(yīng)的硬件,本系統(tǒng)配套的主要硬件有:①光學(xué)顯微鏡;②CCD相機(jī);③控制箱;④計(jì)算機(jī)(內(nèi)置影像系統(tǒng));⑤邊緣微服務(wù)器。主要的使用過(guò)程為:首先,控制箱控制顯微鏡鏡頭移動(dòng),對(duì)多張載玻片進(jìn)行自動(dòng)掃描切片,同時(shí)光學(xué)顯微鏡的CCD模塊會(huì)截取到顯微鏡內(nèi)的腦脊液細(xì)胞涂片圖像,截取到的圖像通過(guò)連接線以電信號(hào)的形式傳輸最終編碼成bmp格式的圖片存儲(chǔ)到醫(yī)生端的計(jì)算機(jī)中。腦脊液細(xì)胞學(xué)AI分析系統(tǒng)采用B/S架構(gòu)模式,被部署在邊緣微服務(wù)器上,通過(guò)病理醫(yī)師端的計(jì)算機(jī)瀏覽器可以訪問(wèn)該Web應(yīng)用,實(shí)現(xiàn)對(duì)腦脊液影像的上傳、預(yù)測(cè)以及數(shù)據(jù)集的標(biāo)注、訓(xùn)練。
如圖1所示,本系統(tǒng)主要包含五個(gè)模塊。其中,采集的腦脊液圖像通過(guò)圖像上傳模塊上傳到服務(wù)器;通過(guò)預(yù)測(cè)模塊進(jìn)行處理,預(yù)測(cè)模塊主要包含了對(duì)細(xì)胞圖像進(jìn)行檢測(cè)分類,輸出模型的可解釋結(jié)果,以及細(xì)胞計(jì)數(shù)服務(wù);輔助標(biāo)注模塊用來(lái)對(duì)腦脊液圖像進(jìn)行標(biāo)注,擴(kuò)充數(shù)據(jù)集;通過(guò)補(bǔ)充訓(xùn)練模塊對(duì)數(shù)據(jù)集進(jìn)行處理,實(shí)現(xiàn)模型新的訓(xùn)練;通過(guò)信息管理模塊對(duì)患者就診記錄進(jìn)行管理。
系統(tǒng)采用了Spring Boot+Vue+Mybatis框架,B/S架構(gòu),將web系統(tǒng)的前端與后端分為兩個(gè)獨(dú)立的模塊分別進(jìn)行開(kāi)發(fā)部署。在前端,設(shè)計(jì)一個(gè)基于Web界面的交互及可視化工具,供用戶進(jìn)行交互式的操作及圖像的展示;在后端,使用服務(wù)器存儲(chǔ)醫(yī)學(xué)圖像數(shù)據(jù),接收客戶端的請(qǐng)求并對(duì)醫(yī)學(xué)圖像數(shù)據(jù)進(jìn)行處理和分析并返回到界面,這種方式可以有效提高開(kāi)發(fā)過(guò)程的靈活度以及用戶的體驗(yàn)。
本系統(tǒng)采用了MySQL和Redis兩種類型的數(shù)據(jù)庫(kù)。其中MySQL主要用來(lái)對(duì)病人信息、就診記錄、預(yù)測(cè)結(jié)果進(jìn)行持久儲(chǔ)存,對(duì)于經(jīng)常訪問(wèn)的熱點(diǎn)數(shù)據(jù),系統(tǒng)采用Redis作為緩存,以減少去MySQL獲取數(shù)據(jù)的時(shí)間,提升醫(yī)生端的訪問(wèn)體驗(yàn)。如圖2所示,數(shù)據(jù)庫(kù)主要設(shè)計(jì)了patient、record、prediction、image、slime、train和manager七個(gè)表,其中patient表用于存儲(chǔ)患者信息,record表存儲(chǔ)了每個(gè)患者的就診記錄,image表存儲(chǔ)了每次就診記錄的圖片,prediction表存儲(chǔ)了每個(gè)圖片的預(yù)測(cè)記錄,slime表用于存儲(chǔ)每個(gè)預(yù)測(cè)記錄的可解釋圖像,train表用于存儲(chǔ)每次模型的訓(xùn)練結(jié)果,manager表用于存儲(chǔ)管理員的賬戶密碼等信息。
預(yù)測(cè)模塊為整個(gè)系統(tǒng)的核心模塊,用于對(duì)患者每次就診記錄的AI預(yù)測(cè)分析,該模塊包含的服務(wù)主要有細(xì)胞檢測(cè)、分類可解釋以及細(xì)胞的計(jì)數(shù)統(tǒng)計(jì)功能。
2.1.1 細(xì)胞檢測(cè)
細(xì)胞檢測(cè)主要是對(duì)患者的一次腦脊液細(xì)胞學(xué)檢查獲得的所有細(xì)胞顯微鏡切片圖像進(jìn)行數(shù)據(jù)量較多的三類細(xì)胞:淋巴細(xì)胞、單核細(xì)胞、中性粒細(xì)胞的三分類目標(biāo)檢測(cè)。該功能選用了基于Faster R-CNN[2]的目標(biāo)檢測(cè)算法實(shí)現(xiàn),F(xiàn)aster R-CNN是經(jīng)典的目標(biāo)檢測(cè)算法,輸入圖像送入Faster R-CNN后會(huì)在特征提取模塊中進(jìn)行特征提取,并在生成的特征圖上設(shè)置多個(gè)候選框,之后對(duì)候選框進(jìn)行前景背景的分類和邊界調(diào)整,最后送入分類網(wǎng)絡(luò)中得到每個(gè)細(xì)胞的邊界和類別,由于腦脊液數(shù)據(jù)集的樣本不均衡,各樣本差異性小等特點(diǎn),本系統(tǒng)在該基礎(chǔ)上引入了人工特征進(jìn)行輔助分類,并實(shí)現(xiàn)了基于圖像分割的特征自動(dòng)提取。圖像分割可以看作是對(duì)圖像每個(gè)像素點(diǎn)進(jìn)行分類,本系統(tǒng)使用了U-net[3]進(jìn)行細(xì)胞的圖像分割,輸入圖像首先經(jīng)過(guò)編碼部分獲得分層特征,這些特征包含原始圖像的上下文信息以及語(yǔ)義信息(顏色、紋理等),之后在解碼部分得到的特征圖與編碼部分的特征圖進(jìn)行融合上采樣,最終在預(yù)測(cè)部分獲得每個(gè)像素點(diǎn)的類別。具體的實(shí)現(xiàn)方法為:使用Faster R-CNN模型獲得細(xì)胞的標(biāo)注框以及類別,使用U-net圖像分割模型將圖像的所有像素點(diǎn)區(qū)分為細(xì)胞核、細(xì)胞質(zhì)以及背景,并用Faster R-CNN得到的標(biāo)注框?qū)Ψ指罱Y(jié)果進(jìn)行截取,并將Faster R-CNN標(biāo)注框中的結(jié)果近似看作為該細(xì)胞的結(jié)果,如此便得到了每個(gè)細(xì)胞的細(xì)胞核與細(xì)胞質(zhì)的分割圖,再根據(jù)各個(gè)特征提取的算法得到細(xì)胞的特征,最后使用機(jī)器學(xué)習(xí)算法對(duì)提取到的人工特征細(xì)胞進(jìn)行二次分類。
本文根據(jù)幾何學(xué)以及細(xì)胞形態(tài)學(xué)共設(shè)計(jì)了細(xì)胞核凹凸度、細(xì)胞核粗糙度、細(xì)胞核圓度、細(xì)胞核長(zhǎng)寬比、核質(zhì)比、細(xì)胞核面積以及細(xì)胞面積七個(gè)人工特征供分類樹(shù)用作二次分類。訓(xùn)練好的模型會(huì)被部署到服務(wù)器上,提供接口供service層調(diào)用。進(jìn)入醫(yī)院使用該系統(tǒng)檢查的患者會(huì)在服務(wù)器工作目錄下生成一個(gè)以病人就診ID命名的文件夾,病人進(jìn)行一次細(xì)胞學(xué)檢查后生成的所有切片圖像上傳到服務(wù)器時(shí),系統(tǒng)會(huì)在每個(gè)病人的文件夾下針對(duì)每一次檢查記錄,生成以檢查時(shí)間命名的檢查記錄文件夾,該文件夾里面保存了此次檢查的所有腦脊液顯微鏡細(xì)胞圖像。病理醫(yī)師選擇一次就診記錄之后點(diǎn)擊預(yù)測(cè)按鈕就會(huì)跳轉(zhuǎn)到細(xì)胞縮略圖頁(yè)面,獲得每張圖像的標(biāo)注結(jié)果,選擇圖像后可以查看每個(gè)記錄的詳細(xì)信息,包括對(duì)每個(gè)標(biāo)注結(jié)果的預(yù)測(cè)類別、位置、置信度以及可解釋信息。
2.1.2 分類可解釋
在實(shí)際的應(yīng)用中,使用訓(xùn)練好的模型去預(yù)測(cè)新的圖像,特別是由于本實(shí)驗(yàn)所使用的醫(yī)療數(shù)據(jù)以及醫(yī)療背景的敏感性,僅僅給出模型的預(yù)測(cè)結(jié)果往往不能使醫(yī)生足夠放心。為此,本系統(tǒng)使用了S-LIME[4]事后解釋器,對(duì)模型的預(yù)測(cè)結(jié)果進(jìn)行解釋,最終得到模型的判斷依據(jù)。在S-LIME中,需要解釋的黑盒模型訓(xùn)練好后會(huì)被送入S-LIME中,在S-LIME中生成和原始黑盒模型預(yù)測(cè)能力最為接近的線性模型以及線性模型的權(quán)重信息,通過(guò)基于中心極限定理的假設(shè)檢驗(yàn)框架來(lái)確定保證結(jié)果解釋穩(wěn)定性所需的模擬數(shù)據(jù)集數(shù)量。在該模塊中,使用凹凸度等人工特征訓(xùn)練的模型會(huì)被保存,對(duì)于需要解釋的細(xì)胞實(shí)例,S-LIME會(huì)根據(jù)該實(shí)例進(jìn)行數(shù)據(jù)的擾動(dòng),生成一定數(shù)量的模擬數(shù)據(jù),在此基礎(chǔ)上建立分類模型并獲得特征的權(quán)重,此權(quán)重信息代表了對(duì)該實(shí)例分類最重要的人工特征信息。病理醫(yī)師在界面上點(diǎn)擊預(yù)測(cè)后可以獲得對(duì)分類結(jié)果的解釋,包括模型預(yù)測(cè)細(xì)胞三個(gè)類別的概率,人工特征的權(quán)重排序以及人工特征的值。
2.1.3 細(xì)胞計(jì)數(shù)
模型在進(jìn)行AI預(yù)測(cè)(即對(duì)腦脊液圖像檢測(cè)并辨別細(xì)胞)時(shí),除了生成標(biāo)注后的圖像外,模型的預(yù)測(cè)結(jié)果(類別、置信度、坐標(biāo)等信息)會(huì)保存在數(shù)據(jù)庫(kù)的prediction表中。在進(jìn)行細(xì)胞統(tǒng)計(jì)時(shí),CountCellService可以直接調(diào)取相應(yīng)的Dao接口,執(zhí)行SQL語(yǔ)句查詢本次記錄的所有預(yù)測(cè)結(jié)果,并分別對(duì)三個(gè)種類的細(xì)胞使用SQL中的count函數(shù)獲得細(xì)胞的數(shù)量,Vue獲得返回值之后會(huì)通過(guò)調(diào)用Vue封裝的sChart圖表組件生成相應(yīng)的分布圖展示在前端頁(yè)面上。病理醫(yī)師在導(dǎo)航欄選擇細(xì)胞統(tǒng)計(jì)功能后,選中希望統(tǒng)計(jì)的就診記錄,頁(yè)面就會(huì)顯示此次檢查的細(xì)胞統(tǒng)計(jì)情況。
該模塊用于輔助病理醫(yī)師標(biāo)記數(shù)據(jù)集,以生成數(shù)目更大、更具有實(shí)時(shí)性且標(biāo)注結(jié)果更精確的腦脊液細(xì)胞數(shù)據(jù)集,從而保證模型的預(yù)測(cè)準(zhǔn)確率長(zhǎng)期處在一個(gè)較高的區(qū)間。病理醫(yī)師首先選擇一次就診記錄,服務(wù)器會(huì)根據(jù)record_id檢索出該就診id的全部圖片url并返回到頁(yè)面上,醫(yī)生選擇感興趣的圖片后,系統(tǒng)會(huì)去prediction表里調(diào)出該圖像的預(yù)測(cè)記錄返回到頁(yè)面,其中包括該結(jié)果的局部放大展示、預(yù)測(cè)類別、邊界參數(shù)以及置信度,病理醫(yī)師可以選擇認(rèn)為有問(wèn)題的預(yù)測(cè)結(jié)果,對(duì)結(jié)果進(jìn)行再標(biāo)注(重新定位或重新分類),修改后的結(jié)果再直接保存到prediction表中,用作數(shù)據(jù)集生成。
該模塊可以使病理醫(yī)師在使用過(guò)程中隨著數(shù)據(jù)集的擴(kuò)充,繼續(xù)訓(xùn)練模型以保證模型的準(zhǔn)確性,為了方便模型切分?jǐn)?shù)據(jù)集并進(jìn)行訓(xùn)練,使用生成數(shù)據(jù)集功能后,系統(tǒng)首先會(huì)判斷數(shù)據(jù)庫(kù)是否存在更新,如果存在更新,系統(tǒng)會(huì)對(duì)預(yù)測(cè)記錄表進(jìn)行檢索,檢索的記錄會(huì)以txt文件的形式存儲(chǔ)在工作目錄/data/txt文件夾下,具體字段包括圖片路徑、標(biāo)注類別以及圖片的上、下、左、右邊界,并進(jìn)行數(shù)據(jù)集的分割。系統(tǒng)執(zhí)行g(shù)et_map.py腳本后,會(huì)在/log/result文件夾存儲(chǔ)此次訓(xùn)練的loss曲線以及最終結(jié)果的準(zhǔn)確率、map值等,對(duì)應(yīng)的train表里將會(huì)生成此次訓(xùn)練記錄。病理醫(yī)師可以對(duì)模型進(jìn)行補(bǔ)充訓(xùn)練,在模型訓(xùn)練結(jié)束后病理醫(yī)師可以查看每次訓(xùn)練的loss曲線以及細(xì)胞檢測(cè)的map指標(biāo)。
本文以實(shí)際病理醫(yī)師對(duì)腦脊液細(xì)胞學(xué)圖像進(jìn)行檢查為應(yīng)用場(chǎng)景,搭建了一個(gè)完整的細(xì)胞檢測(cè)系統(tǒng)并對(duì)該系統(tǒng)依托的硬件及配置環(huán)境進(jìn)行了介紹,對(duì)腦脊液細(xì)胞學(xué)圖像AI分析系統(tǒng)整個(gè)運(yùn)作流程進(jìn)行了描述,通過(guò)使用Spring Boot+Vue對(duì)Web系統(tǒng)進(jìn)行開(kāi)發(fā),使用引入人工特征的Faster R-CNN對(duì)腦脊液細(xì)胞圖像進(jìn)行檢測(cè),使用S-Lime算法實(shí)現(xiàn)了對(duì)分類結(jié)果的解釋,還實(shí)現(xiàn)了不同類別細(xì)胞的計(jì)數(shù)統(tǒng)計(jì),輔助病理醫(yī)師標(biāo)注制作新的數(shù)據(jù)集,對(duì)數(shù)據(jù)集進(jìn)行處理以及模型的補(bǔ)充訓(xùn)練等功能。綜上所述,本應(yīng)用可輔助病理醫(yī)師對(duì)腦脊液進(jìn)行細(xì)胞學(xué)分析,降低成本,具有較高的應(yīng)用價(jià)值和擴(kuò)展空間。