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