解放軍總醫(yī)院:利用深度學(xué)習(xí)技術(shù)構(gòu)建藥品包裝識別系統(tǒng)方法研究
近幾年隨著硬件計算力的提高、機器學(xué)習(xí)算法技術(shù)的改進以及大數(shù)據(jù)技術(shù)的深入發(fā)展,越來越多的人工智能技術(shù)成果開始在醫(yī)學(xué)影像診斷、藥物研發(fā)、精準醫(yī)療等臨床醫(yī)療領(lǐng)域有所應(yīng)用。因此,為人工智能產(chǎn)品構(gòu)建標準、可靠、高效的研發(fā)及運營平臺,將成為今后醫(yī)院信息化建設(shè)中的一部分工作內(nèi)容。本文將解放軍總醫(yī)院(以下簡稱“我院”)自主研發(fā)的基于深度學(xué)習(xí)技術(shù)的藥品包裝識別系統(tǒng)作為開發(fā)案例,闡述深度學(xué)習(xí)系統(tǒng)所需的基礎(chǔ)環(huán)境,以及訓(xùn)練、推理、開發(fā)管理三類平臺的相關(guān)技術(shù)與方法。
1藥品包裝識別系統(tǒng)及其工作原理
藥品包裝識別系統(tǒng)的工作流程:窗口藥師在向患者發(fā)放藥品時,會在工作臺上對藥品進行清點,這時工作臺上方的攝像頭自動對藥品包裝圖像進行采集,并對藥品圖像使用深度學(xué)習(xí)技術(shù)中的卷積神經(jīng)網(wǎng)絡(luò)模型(convolutional neural network,CNN)進行推理識別,識別出的藥品信息會與電子處方進行核對,在發(fā)現(xiàn)品種或數(shù)量出現(xiàn)錯誤時,系統(tǒng)將對藥師發(fā)出預(yù)警。此系統(tǒng)可輔助藥師及時發(fā)現(xiàn)人工配劑過程中所發(fā)生的差錯,避免因配劑錯誤所帶來的醫(yī)患糾紛,其工作原理見圖1。
圖1 藥品包裝識別系統(tǒng)工作原理
首先,藥師使用藥品圖像采集系統(tǒng)對門診藥房中的各個藥品進行拍攝和分類,并將藥品圖像作為數(shù)據(jù)集,藥品信息作為標簽集放入訓(xùn)練平臺中的CNN神經(jīng)網(wǎng)絡(luò)進行反復(fù)訓(xùn)練,生成識別準確率高、可應(yīng)用于實際業(yè)務(wù)中的神經(jīng)網(wǎng)絡(luò)模型。
其次,神經(jīng)網(wǎng)絡(luò)模型被部署到推理平臺上。當推理平臺接收到客戶端實時拍攝到的藥品圖像后,會調(diào)用神經(jīng)網(wǎng)絡(luò)模型對藥品圖像進行推理識別,并將識別到的藥品信息返回給客戶端。
最后,開發(fā)管理平臺則利用遠程開發(fā)技術(shù)在訓(xùn)練和推理平臺開發(fā)和調(diào)試深度學(xué)習(xí)模型代碼,并對平臺中服務(wù)器進行系統(tǒng)配置與軟件安裝。
2深度學(xué)習(xí)系統(tǒng)的基礎(chǔ)環(huán)境
2.1操作系統(tǒng)的選擇
從資源利用率、系統(tǒng)的穩(wěn)定性與安全性考慮,推薦使用CentOS作為訓(xùn)練平臺的操作系統(tǒng)。CentOS使用純命令行的方式進行交互,雖然有一定的學(xué)習(xí)成本,但卻沒有因圖形交互界面所帶來的系統(tǒng)資源消耗。并且CentOS作為主流Linux的服務(wù)器版本一直以穩(wěn)定性聞名,可長時間運行多個任務(wù)而不出現(xiàn)系統(tǒng)崩潰。Linux系統(tǒng)的安全性更為出色,鮮有針對其進行攻擊的病毒程序。
2.2開發(fā)語言與開發(fā)框架的選擇
Python是當前熱門的面向?qū)ο蟮慕忉屝统绦蛟O(shè)計語言,以其簡潔、易用、高效的特點,已廣泛應(yīng)用于人工智能、大數(shù)據(jù)分析、網(wǎng)站開發(fā)等重要領(lǐng)域,積累了大量成熟度高、功能強大的開發(fā)資源。
Tensorflow是Google公司發(fā)布的專門針對機器學(xué)習(xí)領(lǐng)域的經(jīng)典開發(fā)框架。通過Tensorflow強大的數(shù)據(jù)流圖功能可實現(xiàn)各類復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型。
Keras是以Tensorflow為后端,高度模塊化的神經(jīng)網(wǎng)絡(luò)開發(fā)框架,通過序列化的方式幫助開發(fā)者快速搭建神經(jīng)網(wǎng)絡(luò)架構(gòu),有效簡化了神經(jīng)網(wǎng)絡(luò)模型的構(gòu)建過程。Keras現(xiàn)在已集成在2019年下半年發(fā)布的Tensorflow2.0中,以彌補Tensorflow1.X在易用性上的不足。
2.3軟件環(huán)境的安裝
如服務(wù)器具備連接互聯(lián)網(wǎng)條件,軟件環(huán)境可使用Anaconda或yum進行在線安裝,各種開發(fā)包及其依賴包的下載、配置及安裝基本上是自動化的方式完成,可在很短的時間內(nèi)快速構(gòu)建深度學(xué)習(xí)所需的訓(xùn)練及推理平臺。
如在局域網(wǎng)條件下,可從Python官方的第三方開發(fā)包倉庫(Pypi)網(wǎng)站上下載離線開發(fā)包及其依賴包文件,并通過PIP命令進行安裝。此方法雖然較為耗時,但仍可順利完成構(gòu)建任務(wù)。
2.4神經(jīng)網(wǎng)格模型與運行環(huán)境
藥品包裝識別系統(tǒng)現(xiàn)階段使用LeNet模型對藥品圖像進行特征提取及分類識別。其他CNN模型還包括MobileNet、Inception、ResNet、VGG等,這些CNN開源神經(jīng)網(wǎng)格模型代碼都是由各個著名的開源組織維護與發(fā)布。此外,運行CNN神經(jīng)網(wǎng)絡(luò)模型還需要服務(wù)器具備一定的浮點運算力,最好是在配置GPU的環(huán)境下進行訓(xùn)練與推理。若在只有CPU的環(huán)境,雖可正常執(zhí)行訓(xùn)練及推理功能,但需要很長的運行時間。
3訓(xùn)練平臺
3.1模型超參優(yōu)化
超參是指在神經(jīng)網(wǎng)絡(luò)模型中直接影響訓(xùn)練準確度的重要參數(shù),包括學(xué)習(xí)率、激活函數(shù)、損失函數(shù)、優(yōu)化函數(shù)、訓(xùn)練次數(shù)、正則化函數(shù)、每批次訓(xùn)練的樣本數(shù)等。超參的優(yōu)化與調(diào)整也被稱為調(diào)參,是提高模型識別準確度的重要手段。
調(diào)參是深度學(xué)習(xí)系統(tǒng)開發(fā)過程中最為繁瑣耗時的工作,開發(fā)人員需要反復(fù)調(diào)整參數(shù)并訓(xùn)練模型,直到訓(xùn)練后的模型準確率達到要求的標準。因此產(chǎn)生了許多調(diào)參優(yōu)化方法,包括表格搜索法、隨機參數(shù)法、貝葉斯優(yōu)化法等,可以幫助開發(fā)人員在節(jié)省訓(xùn)練時間的同時找到合適的參數(shù)配置。
3.2早停法與保存最優(yōu)模型
早停法是指當每次訓(xùn)練完成后,如發(fā)現(xiàn)準確率已持續(xù)下降了一定次數(shù)的情況,系統(tǒng)將自動停止訓(xùn)練過程。因為在訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型過程中過多的訓(xùn)練次數(shù)并不能提高模型識別的準確率,在實際情況中當模型訓(xùn)練到一定次數(shù)后,基本會進入過擬合狀態(tài),準確率一般會出現(xiàn)持續(xù)下降的情況(圖2),所以使用早停法可以避免無效的訓(xùn)練過程。
同樣因為過擬合的原因,最后一次訓(xùn)練出的模型未必是最優(yōu)狀態(tài)下的模型。因此,當每次訓(xùn)練完成后在程序中判斷此次訓(xùn)練的驗證準確率是否是歷次訓(xùn)練中最高的,如果是則將當前模型中的結(jié)構(gòu)及權(quán)重值輸出為神經(jīng)網(wǎng)絡(luò)模型文件并保存到硬盤上。
圖2 訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型時生成的準確率趨勢圖
3.3訓(xùn)練過程可視化
為更好地觀察訓(xùn)練的運行狀況,可在訓(xùn)練程序中加入TensorBoard可視化工具。TensorBoard可根據(jù)每次訓(xùn)練所產(chǎn)生的數(shù)據(jù)生成日志,通過解析日志數(shù)據(jù)生成可視化的Web頁面,幫助開發(fā)人員實時觀察訓(xùn)練狀態(tài)、計算圖結(jié)構(gòu)、變量直方圖等重要運行數(shù)據(jù)。
4推理平臺
推理平臺根據(jù)其部署模式分為以推理服務(wù)器為中心的Web服務(wù)模式,以及在終端使用嵌入式設(shè)備的邊緣計算模式。
4.1Web服務(wù)模式
Web服務(wù)模式是現(xiàn)階段藥品包裝識別系統(tǒng)所使用的部署模式,主要流程如下:首先將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型文件部署到推理服務(wù)器上,再通過Python語言使用Flask網(wǎng)絡(luò)應(yīng)用框架編寫RESTFul網(wǎng)絡(luò)服務(wù)接口。當業(yè)務(wù)終端需要推理服務(wù)時,將藥品圖像數(shù)據(jù)打包成標準的Http協(xié)議報文,并通過RESTFul網(wǎng)絡(luò)服務(wù)接口上傳至推理服務(wù)器,推理服務(wù)器調(diào)用神經(jīng)網(wǎng)絡(luò)模型對藥品圖像進行推理預(yù)測,最后將推理到的藥品信息數(shù)據(jù)以JSON格式返回業(yè)務(wù)終端。
Web服務(wù)模式以推理服務(wù)器為中心,將深度學(xué)習(xí)的推理過程轉(zhuǎn)換為網(wǎng)絡(luò)的服務(wù)接口,其他業(yè)務(wù)系統(tǒng)都可通過調(diào)用RESTFul接口的方式調(diào)用推理過程。此模式技術(shù)成熟、部署簡單快捷、具備可復(fù)用性,是現(xiàn)今主流的部署模式。但此模式對推理服務(wù)器要求性能很高,尤其使用Inception、VGG這類層級很高的模型或出現(xiàn)高并發(fā)請求時,會出現(xiàn)大量的系統(tǒng)消耗,如服務(wù)器不具備相應(yīng)的運算資源,將會導(dǎo)致系統(tǒng)響應(yīng)時間被拖延至幾秒甚至幾十秒,嚴重影響用戶體驗。
4.2邊緣計算模式
邊緣計算技術(shù)的主要目的是去中心化,將處理過程從服務(wù)器端交由本地終端的邊緣計算層來處理。而在深度學(xué)習(xí)系統(tǒng)中的邊緣計算層的功能是由專門集成高速運算器的嵌入式設(shè)備來完成。此類嵌入式設(shè)備現(xiàn)階段典型的有Intel神經(jīng)網(wǎng)格計算棒,以及Google公司的TPU開發(fā)板。
Intel神經(jīng)網(wǎng)格計算棒是通過USB接口連接到終端計算機上,使用OpenVINO技術(shù)在客戶端就可加速神經(jīng)網(wǎng)絡(luò)模型的推理操作。
Google公司的TPU開發(fā)板實際上是集成了CPU、GPU、TPU 3種高速運算器,專門為處理深度學(xué)習(xí)業(yè)務(wù)設(shè)計的微型嵌入式Linux計算機。TPU開發(fā)板可通過USB接口直接調(diào)用攝像頭采集圖片,再調(diào)用經(jīng)Tensorflow lite轉(zhuǎn)化過的神經(jīng)網(wǎng)絡(luò)模型對圖片推理,最后將推理結(jié)果以有線的USBOTG(On-The-Go)模式,或無線的Wifi模式傳送到客戶端。
以上兩種邊緣計算方式,設(shè)備成本較GPU服務(wù)器要低廉很多,其中最貴的TPU開發(fā)板也不過1000余元,而且是按需配置,有多少終端就配置幾個設(shè)備即可,可有效節(jié)省設(shè)備成本。但邊緣計算技術(shù)推出的時間尚短,Intel神經(jīng)網(wǎng)格計算棒于2018年上市,而TPU開發(fā)板更是在2019年3月才正式發(fā)售,性能及可靠性方面還有待驗證。但邊緣計算技術(shù)以成本小、配置靈活、響應(yīng)快、無需網(wǎng)絡(luò)連接的優(yōu)勢,有著非常高的實用價值,具備非常好的發(fā)展前景。
5開發(fā)管理平臺
藥品包裝識別系統(tǒng)使用PyCharm作為開發(fā)管理平臺。PyCharm是由JetBrains公司研發(fā)的Python語言開發(fā)工具,使用PyCharm的遠程開發(fā)功能并不需要在開發(fā)端安裝Python環(huán)境,直接使用Deployment(部署)功能即可通過SFTP協(xié)議將本地的Python開發(fā)項目同步到服務(wù)器上。同時自動下載服務(wù)器已安裝的Python開發(fā)包信息,在開發(fā)端生成本地的代碼導(dǎo)航,方便開發(fā)人員進行編碼工作,提高開發(fā)效率。使用PyCharm也可在開發(fā)端遠程調(diào)試服務(wù)器上的Python代碼,服務(wù)器產(chǎn)生的調(diào)試信息會自動反饋到開發(fā)端,效果與在開發(fā)端進行本地調(diào)試基本一致。PyCharm除開發(fā)功能外,也支持標準的SSH會話功能,幫助開發(fā)人員通過SSH協(xié)議連接到服務(wù)器進行系統(tǒng)配置與軟件的安裝。
6結(jié)語
現(xiàn)在對藥品包裝識別系統(tǒng)的研發(fā)已進入完善階段,訓(xùn)練平臺已對500種藥品進行了圖像采集與模型訓(xùn)練,訓(xùn)練時驗證準確度已達到96.4%。但要將此系統(tǒng)實際應(yīng)用到業(yè)務(wù)中,還需要實現(xiàn)對門診藥房1600多種藥品的識別能力,這需要對現(xiàn)有神經(jīng)網(wǎng)絡(luò)模型進行更深層次的改造。推理平臺方面Web服務(wù)模式現(xiàn)已部署完成,邊緣計算模式中的TPU開發(fā)板也已調(diào)通,等改造CNN模型工作完成后就可進行對比實驗,決定最終的部署模式。
訓(xùn)練、推理、開發(fā)管理這三類平臺的應(yīng)用并不僅局限在此項目中,對其他CNN網(wǎng)絡(luò)或長短期記憶網(wǎng)絡(luò)等深度學(xué)習(xí)系統(tǒng)的研發(fā)都有一定的借鑒價值。
本文節(jié)選自《中國醫(yī)院》雜志2019年10月刊
作者:施華宇、 劉敏超、辛海莉、李闖、張震江
單位:解放軍總醫(yī)院
摘要、關(guān)鍵詞、參考文獻略