李麗娟 李 超 李念琪
(1.成都九洲電子信息系統股份有限公司,四川 成都 610041;2.上海電力大學,上海 200090;3.復旦大學,上海 200433)
靜脈輸注是患者接受治療的主要手段之一,為了提高輸液成品質量,促進合理用藥,保證患者用藥的安全性,通常由醫院靜脈用藥調配中心(以下簡稱“靜配中心”)統一負責全院患者靜脈輸液藥品的調配。在靜配中心,由于不同病患有不同的輸液藥品,因此要求醫護人員在配置輸液藥品前,必須認真核查藥品清單以保證配藥的正確性,現階段主要通過人工手動“三查七對”來保證配藥的正確性[1]。由于輸液配藥的工作量極大,人工核對不僅會占用大量的護理資源、降低護理質量,而且也會使醫護人員容易出現操作疲勞,在病員擁擠的情況下配藥出錯,造成醫療糾紛[2]。
為了規范醫護人員配藥的操作流程,降低藥品配置的出錯率,提高配藥工作質量,靜配中心通常使用視頻監控的方式,對醫護人員配藥操作全過程進行記錄以備事后查詢,但是該方法不能滿足對配藥操作進行實時監測、智能核對和及時報警等需求。該文提出了一種基于視頻圖像目標檢測的藥品外觀識別方法,通過使用圖像處理與神經網絡技術實現對藥品品類的檢測與識別,并自動與處方/醫囑進行核對,以達到輔助醫護人員準確配置藥品的目的。
當前基于深度學習的主流圖像目標檢測算法分為2 類[3]:1)基于區域的目標檢測算法。例如Faster R-CNN、Mask R-CNN等雙階段目標檢測模型。2)將檢測問題變為回歸問題的SSD、YOLO 等單階段目標檢測模型。雙階段目標檢測模型需要先提取圖像的候選區域,再基于候選區域做二次修正得到分類和位置坐標,其監測精度較高,但檢測速度較慢;而單階段目標檢測模型僅需要一個網絡即可同時產生候選區域并預測出物體的類別和位置坐標,其特點是提高了檢測速率,但目標定位的準確率略差于雙階段目標檢測模型。
YOLOv3 是采用單階段結構的目標檢測模型,使用單個神經網絡結構,與之前的YOLO 版本相比,YOLOv3 通過調整特征提取網絡、利用多尺度特征進行對象檢測以及使用邏輯回歸預測每個邊界框并進行多標簽分類等算法優化,提升了平均精確度(mAP)及小物體的檢測效果。如果采用COCO AP50做評估指標,那么YOLO3 的表現相當驚人,在精確度相當的情況下,YOLOv3 的檢測速度是其他模型的3~4 倍。綜合考慮靜配中心工作流程及實時檢測需求,該文在針對靜配中心輸液藥品配置檢測中選用了基于YOLOv3 的目標檢測模型。
該文在YOLOv3 網絡架構中改進了YOLOv3 模型中的先驗框部分,對先驗框進行提取特征,在先驗框前對特征圖進行預估算,對特征圖采取高斯建模,判斷特征圖是否達到自適應閾值,該閾值為超參數,隨訓練輪數進行調整,在卷積層中采用一個N維列向量對輸出的卷積層進行判斷,經過迭代調整出一個合適的閾值。該文改進的部分可以加快藥品檢測的速度,對不同類型的藥品進行檢測時有較好的識別效果。
在實際的靜脈注射中心的藥品配置環境中,存在藥品擺放、環境中光源干擾以及拍攝角度的問題,該文的數據集采用在排除干擾的環境中采集的一批數據如圖1(a)、圖1(b)所示,同時針對實際作業環境下的藥品采集的另一批數據如圖1(c)所示。

圖1 采集的藥品樣品
采集到數據集后,使用圖像數據標注工具對數據進行分類標注,該文采集的藥品種類包括靜脈注射藥品中常見的注射袋、水針劑以及粉針劑。針對不同種類的藥品進行單獨標注,針對同種藥品的不同規格的藥品設計2 種標注方式:1)針對藥品僅標注名稱,按照名稱進行識別,例如:200 mL 葡萄糖注射液、100 mL 葡萄糖注射液統一標注為葡萄糖注射液。2)將不同規格的藥品分開標注,例如將200 mL 葡萄糖注射液、100 mL 葡萄糖注射液標注成2 個不同的類別,以便進行精細識別。
該文采用基于YOLOv3 的目標檢測模型對藥品進行檢測,在所檢測的藥品中,存在4 種較為明顯的種類劃分,即袋狀注射液、盒狀藥品、圓柱形粉針劑和透明玻璃瓶形的水針劑。實際環境下檢測的藥品存在注射袋液體大多透明、現場作業環境中存在大量反光以及同類型藥品形狀相似的問題,因此,通過藥品標簽信息無法高效地獲取文本文字,使用輔助方法處理會增加檢測任務的復雜度,圖像拼接[4]手段也無法有效應用到實際的工作環境中。該文在實驗中發現,直接采用目標檢模模型訓練數據,會因為部分藥品相似度太高而出現識別精確度低于該模型在通用數據集平均精確度的問題,同時也存在召回率較低、模型穩定性較差的問題。
該文使用改進版YOLOv3 目標檢測模型對藥品進行檢測,提取模型先驗框的特征,在先驗框前對特征圖進行預估算,對特征圖采取高斯建模,判斷特征圖是否達到自適應閾值,該閾值對超參數隨訓練輪數進行調整。在骨干網的輸出卷積層中采用一個列向量對輸出的卷積層進行判斷,LT用來表示閾值損失(如公式(1)所示),經過迭代調整出一個合適的閾值。YOLOv3 將圖片劃分成若干個網格,每個網格負責一塊區域的檢測,該文對局部網格的平均值與閾值進行比較,大于閾值的先驗框繼續進行檢測;其次是在先驗框中選定預測框后設置搜索算法,并分析區域內的特征是否存在連續,針對體積較小的注射液的檢測,在先驗框中可能有多個區域存在粉針劑、水針劑這種小物體的特征,因此再將選中的先驗框劃分為若干小預測框進行預測。對若干個較小預測框進行篩選后,在預測框中找到較大的特征值,在較大的特征值中選擇位置坐標最大值Xmax、Ymax和最小值Xmin、Ymin,重新調整目標框為僅包含特征最大的幾個值的新目標框,再進行后序流程。

式中:LT為閾值損失;i為若干小預測框;Rd為先驗框;xi*、yi*為先驗框的若干位置預測。
該文所使用的YOLOv3 采用ResNet 網絡作為模型的骨干網,ResNet 增加了直連通道緩解網絡深度會導致出現退化的問題。為了提高識別的精度,使用了101 層的ResNet 來進行模型訓練。
該文藥品檢測模型的評價指標為平均精確率AP,對損失函數采用批量梯度下降的方法,優化深度學習模型的權重參數,最大程度地降低分類的錯誤率。訓練過程中各項超參數配置如下:權值初始化采用正態隨機初始化方法,根據訓練所使用GPU 的性能和內存容量,選取批大小為16;學習率采用動態學習率。訓練完成后,使用獨立的測試集損失函數進行誤差評估。
該文提出在YOLOv3 的基礎上結合圖像增強、遷移學習進行藥品檢測,該文使用的藥品檢測流程框架如圖2 所示。

圖2 藥品檢測流程框架圖
該文使用的數據集為在不同環境背景、不同拍攝角度以及不同擺放情況下靜脈注射藥品的多種類型圖像,共計3 637 張;使用pytorch 深度學習框架編寫代碼,基于detectron2 框架搭建目標檢測模型。
實驗過程中使用Ubuntu 16.04 系統和NVIDIA Tesla V100顯卡訓練YOLOv3 藥品檢測模型。
該文模型采用遷移學習方式,其過程涉及2 個階段:1)進行模型預訓練。使用COCO2017 數據集訓練目標檢測模型。小批量梯度下降法迭代40 000 次,學習率為0.001,動量設置為0.9,權重衰減率0.0001,批量大小Batchsize為16(Batchsize即一次訓練選取的樣本數)。2)進行數據集訓練。經過預訓練后,使用藥品數據集訓練目標檢測模型,小批量梯度下降法迭代80 000 次,學習率大小為0.001,動量設置為0.9,權重衰減率為0.0001,Batchsize為16。
經過訓練后,該文設計的模型在測試集上的訓練效果如圖3 所示。

圖3 YOLOv3 模型檢測藥品效果圖
該文在對藥品外觀進行檢測時,使用以YOLOv3 為基礎的目標檢測模型進行檢測識別,該文對采集的數據集進行測試時發現,當使用的每種藥品只有一種規格時,其平均精度可以達到93.84%,但是采用每種藥品按照名稱和不同規格詳細劃分出多種標簽的方法,其平均識別精度降低到了73.67%,低于YOLOv3 在COCO 數據集上的平均識別精度。該實驗所采集的藥品圖像是包含了多種不同類型的藥品(例如水針劑、粉針劑和注射液),實驗發現該文改進的模型對具備明顯特征的藥品具有良好的識別能力,同時在分析實驗結果中發現,由于同種藥品不同規格的標注標簽不同,導致召回率高于使用每種藥品僅有一個的數據集的情況,即外觀相似度過高的藥品會對模型的識別能力產生較大的干擾,而具備相同外觀的不同規格的藥品會嚴重干擾模型的識別精度。由于無法有效分辨圖像中藥品的實際大小,因此該文改進的模型對不同規格的藥品的識別能力略顯不足。
該文所選用的目標檢測模型對不同類型的藥品具備良好的識別能力,可以方便快速地部署在生成環境中。在實際工作中,由于YOLOv3 相比于其他模型,其輕量級的結構使參數遠遠少于二階段目標檢測模型,因此能夠做到在生成環境中快速檢測出目標,降低延遲,提高了實際運行效率。
藥物在臨床診療中具有重要地位,正確合理用藥是保證療效的基本前提,在嚴格遵守靜配中心操作流程的同時,也可以采用相應技術手段進行輔助確認。該文對靜配中心中的藥品配置環節進行實時監測,能夠輔助醫療人員進行藥品核對,降低因操作疲勞出現配藥差錯的概率。該文使用YOLOv3模型能夠精確識別藥品品類,可以實現在生產環境下高效快速識別藥品類別的目標,能夠做到近似實時輔助監測藥品配置,可以高效地輔助作業人員對藥品進行核對。該文使用的模型在同種藥品不同規格的識別區分檢測上存在一定的不足,在后續的研究中,會圍繞該文采用的目標檢測方法額外添加文本識別技術,采用藥品標簽文本識別和目標檢測結合的方式識別出藥品的具體種類和具體規格,實現對多種同類異類藥品標簽的快速檢測。