陳 哲 黃 巍 陳 昭
(東華大學計算機科學與技術學院 上海 201600)
深度學習[1]的興起為醫學圖像分析和研究注入了新的活力。以卷積神經網絡[2]為主的機器學習模型已經在很多醫學圖像領域達到了業界領先的水準[3],其準確性和可靠性均已達到應用級水平。但深度學習模型的訓練需要大量人工標注的樣本,并且當今醫學圖像領域缺少類似ImageNet[4]這樣大規模且可靠的基準測試數據集。而如果準備自制數據集,不僅需要花費巨大的人力和物力成本,而且由于醫學圖像本身的專業性和復雜性,其標注的正確性也很難保證。更復雜的是,不同醫學專家的標注結果之間存在較大分歧,甚至是同一位專家在多次標注同一幅圖像時也不盡相同[5-6],使得醫學圖像的標注工作更加棘手。
目前主流的標注工具有LabelMe[7]和ASAP[8]。LabelMe是一款基于Web應用的標注工具,并且支持數據集的分享。ASAP是一款專注數字病理圖像的分析、可視化和標注,支持整張切片(Whole-slide Images,WSI)的讀寫。在標注的實踐過程中,我們發現以上工具存在兩個突出問題:其一,均只支持多邊形標注(如圖1(a)所示),對于醫學圖像的標注工作來說,其準確性低于自由繪畫標注(如圖1(b)所示);其二,LabelMe通常是用來標注常規的計算機視覺任務,而ASAP只是加入了對WSI的支持,均沒有考慮到醫學圖像標注工作本身的復雜性。
因此,本文設計并實現了基于Web應用的醫學圖像半自動標注系統,它具備以下特點:提供了多邊形和自由繪畫兩種標注模式;加入了溝通和協作機制,盡量減少標注的分歧,提高標注準確率;加入了神經網絡的輔助標注,使得標注工作半自動化,大幅提升標注工作的效率。

(a) 多邊形標注 (b) 自由繪畫標注圖1 醫學圖像標注
系統的整體架構如圖2所示。客戶端包括Web應用程序,直接面向終端用戶。服務器端向客戶端提供RESTful API,同時還依賴數據庫以進行數據的增刪改查,并用來提供初始化標注的機器學習服務。

圖2 整體架構
(1) 客戶端的選擇 客戶端選擇的是基于Web的網頁應用。與桌面應用相比,Web應用具有無需安裝、跨平臺性好、更新迭代速度快等獨有的優勢。
(2) 通信方式的選擇 接口標準采用經典的RESTful API作為客戶端和服務端通信。數據交換格式采用JSON,因為其簡潔、易于閱讀和便于計算機處理等特點[9],已逐步取代XML成為最主流的數據格式。通信協議采用HTTPS而非HTTP,因為HTTP協議使用明文數據傳輸,且缺乏消息完整性檢測,而HTTPS很好地解決了上述安全性問題[10]。
(3) 機器學習模型的選擇 機器學習模型采用U-Net[3]。U-Net是經典的全卷積神經網絡架構,在醫學圖像等領域均取得了很好的效果。U-Net包括兩個組成部分:用于提取圖片上下文信息的收縮路徑和用于區域精準定位的擴展路徑,因整個網絡形似字母U,因而得名U-Net。系統所使用的U-Net模型具體參數如表1所示。

表1 U-Net模型參數
系統同時提供自由繪畫和多邊形兩種標注模式。在自由繪畫模式中,用戶拖動鼠標畫出曲線即可形成標注,用戶抬起鼠標后曲線會自動閉合形成標注區域;在多邊形標注模式中,用戶每次點擊鼠標即確定多邊形的一個頂點,并自動與前一個頂點連接,最后點擊第一個頂點即完成此多邊形的標注。但是對于標注區域處在圖像角落的情形,簡單地連接曲線的起點和終點并不能獲得想要的區域,如圖3所示。因此本文提出一種用于優化自由繪畫結果的曲線閉合算法,優化后的效果如圖4所示。

圖3 算法優化前的自由繪畫標注
具體過程如算法1所示。
算法1曲線閉合算法
輸入:曲線的起點s和終點t,畫布的寬度w和高度h,畫布的頂點集P={p1,p2,p3,p4},容錯率
輸出:涵蓋邊角的閉合區域
1: 對s和d做邊界限制,將小于0的坐標值置為0,大于邊界限制的置為邊界限制大小;
2:repeat
3: 從P中順序選取頂點p;
4: 分別計算s與p在橫軸上的距離dsph,t與p在縱軸上的距離dtpv;
5:ifdsph≤w·anddsph≤w·then
6: 添加一條從s到p的路徑,以及從p到t的路徑;
7:endif
8: 分別計算s與p在縱軸上的距離dspv,t與p在橫軸上的距離dtph;
9:ifdspv≤h·anddtph≤w·then
10: 添加一條從s到p的路徑,以及從p到t的路徑;
11:endif
12:until滿足停止條件
系統選擇用JSON文件存儲一幅圖像的所有標記,包括所有標記區域及每個區域的類別。當用戶想要查看一個圖像的標注時,客戶端從標注存儲地址下載JSON標注文件并渲染標注;當用戶對一幅圖像的標注工作完成后,客戶端將當前標注工作區的內容轉換為JSON文件并上傳至服務器,同時記錄下最終存儲的路徑。整個工作流程如圖5所示。

圖5 上傳和下載標注JSON文件
另外,系統還提供一些標注上的便捷功能,例如撤銷和反撤銷、放大縮小、調整和刪除單個標注等,以提高標注效率。
為了讓多個標注者之間能夠高效交流,每幅圖像都能夠發布討論。一個討論包括內容、所回復討論、對應標注區域和發布時間四個屬性。每幅圖像可以包括多個討論,每個用戶也可以發布多個討論。
在用戶標記足夠數量的圖像之后,系統就可以使用這些圖像訓練U-Net[3]模型。
模型的輸入是變形后統一大小的圖像,輸出是一個二值化掩模,在標注區域內的像素值為1(代表腫瘤),其余像素值為0(代表背景)。
模型的損失函數為交叉熵,其定義為:

(1)

優化算法采用Adam[11],設置學習率為0.000 05。
當用戶請求使用模型進行初始化時,模型就會對用戶提供的圖像進行預測,并將預測結果轉換為標注JSON文件以供客戶端下載。用戶便只需在模型預測的初始標注區域上進行修改,大大加快了標注的進度。
本系統均使用當今非常流行的開源技術實現。下面分客戶端和服務器端進行詳細講解。
客戶端采用Facebook推出的React框架進行開發。React憑借響應式UI、虛擬文檔對象模型(Document Object Model,DOM)和組件化這三大核心技術成為當今Web頁面開發最受歡迎的技術之一。 采用React來編寫用戶界面和邏輯,處理數據的展現,并且承接用戶與服務器的各種數據交互。
所有編寫的內容都通過單個頁面加載而檢索,該單頁面掛載到一個id為root的DOM節點上,通過從一個瀏覽器全局的瀏覽器對象模型BOM(Browser Object Model,BOM)元素History對象中推入或彈出頁面來完成頁面的跳轉。作為一個單頁應用(Single Page Application,SPA),系統客戶端需要設置一系列路由,即頁面跳轉的規則,包括如表2所示的10個路由。

表2 客戶端路由表
在React中通過HTML5的fetch函數與服務器端進行數據交換,并將頻繁使用的數據存儲在瀏覽器的LocalStorage中來實現狀態的持久化。
標注工作區的開發采用HTML5的Canvas技術。 Canvas使用JavaScript腳本可以繪制圖形,創建動畫,進行實時視頻的處理和渲染。由于Canvas原生的接口較為低級,因此選擇fabric.js[12]封裝過的Canvas進行開發。通過將fabric.js的Canvas實例屬性isDrawingMode屬性設置為true,用戶便可進行自由繪畫,并且fabric.js還實現了1.2節所提出的曲線自動閉合功能。標注工作區最終實現的結果如圖6和圖7所示。

圖7 帶有標注和討論的工作區
API服務器采用基于Node.js平臺的Express框架實現。Node.js 是基于Chrome V8引擎的JavaScript運行時,它提供一種基于事件驅動,異步非阻塞式I/O的編程范式,在構建快速、可擴展Web應用程序方面的優勢大于PHP[13]。Express是Node.js最受歡迎的框架,遵循最小設計原則,社區提供的大量中間件帶來了良好的擴展性,性能也比較優秀。
服務器的開發遵循MVC[14]的設計模式。因為使用了前后端分離的原則,所以MVC中的V層交給了React處理。API的設計遵循了RESTful的設計規范。 Express服務器的API列表見表3。

表3 服務器端路由
數據庫使用MongoDB,它是一個開源的、面向文檔的數據庫管理系統。與傳統的關系型數據庫相比,MongoDB具有更優秀的可擴展性、性能和可用性,能有效地應對大量非結構化數據[15]。系統使用MongoDB的JavaScript驅動,實現API服務器和數據庫的交互。
神經網絡模型采用TensorFlow來實現,并且用Flask來提供模型的訪問。TensorFlow是非常成熟的機器學習框架,且具備強大的可移植性、高度的靈活性和優異的性能[15],非常適合此系統。而Flask是基于Python語言的輕量級服務器框架,是搭建AI模型服務的首選方案之一。
在模型開發完畢后,用上海衡道醫學病理診斷中心提供的醫學圖像(寬和高均為1 000像素)進行訓練和測試。設分類正確且為腫瘤的像素個數為TP,分類正確且為背景的像素為TN,分類錯誤應為腫瘤的像素個數為FN,分類錯誤且應為背景的像素個數為FP,由此可得模型性能評價指標像素精度(Accuracy)、準確率(Precision)、召回率(Recall)以及F1分數:
(2)
(3)
(4)
(5)
實驗結果如表4所示,模型即使在訓練數據較少的情況下也能取得較為理想的預測性能。在實際使用本文系統時,只需用戶標記少量圖像,系統就能通過深層神經網絡模型預測其他圖像的標注區域。所以,無需用戶自行標注全部圖像,需要后期修改的區域也比較少,節省了人力,實現了標注的半自動化。

表4 神經網絡模型測試結果
本文針對醫學圖像標注工作專業性強、手工勞動強度大、標注之間存在分歧等特點,設計并實現了基于Web應用的半自動標注系統。此系統的自由繪畫標注模式能夠有效地提升標注的效率;同時,由于系統支持對圖像和標注的交流,標注者之間的分歧減少,準確率也會得到較大的提升。機器學習模型輔助標注隨著醫療行業與人工智能技術的不斷結合。此系統能夠為此方面的研究帶來數量大、質量高的數據集,并且可以作為定量評估最新成果的基準測試平臺,推動醫療AI行業的進步。