劉 麗,蔣龍泉,馮 瑞
(復旦大學 計算機科學技術學院,上海200433)
人工智能技術的飛速發展,給人類帶來巨大的便利性,人工智能技術逐漸進軍醫療領域.人工智能技術在醫療領域的應用有望帶來一場醫療服務模式的革新,從而極大的解放醫生的勞動力[1].以數據驅動的深度學習方法是人工智能技術常用的方法,有效的樣本數據對人工智能技術在醫療領域的發展非常重要.因此,開發一款能夠高效管理具有標注信息的醫療影像數據的系統也非常重要.
目前,在各大醫院用于采集、存儲并高效管理醫療影像數據的系統為PACS 系統,即圖像存檔與傳輸系統.作為影像數據管理系統,PACS 系統具有數據采集、數據存儲、數據查看、局域網內數據共享等基礎功能[2–5].在歐美等發達國家對于PACS 系統的研究比較早,早在20 世紀80年代就開始研究并且在90年代初期初見成效,一些具有簡單功能的PACS 系統陸續落地.而國內對PACS 系統的使用起步則較晚,20 世紀90年代中后期剛開始,少數醫院引入PACS 系統,實現簡單的數字化存檔[6].PACS 系統的使用對象是醫生,其功能也主要圍繞醫生設計,目前,醫生使用該系統能夠進行閱片、診斷、生成診斷報告等.毛靜設計了一款基于醫學影像PACS的數據管理系統,在保留其原有的采集模塊、數據存儲模塊的基礎上還增加了數據分析和處理模塊,能夠對每天數據量、每月數據量、各醫院數據量以及放射設備檢查數據量等進行分析[7],能夠實現對系統中數據的分布特點進行簡單的分析.PACS 系統的發展極大地方便了醫生診斷,降低成本,但是存儲的數據無法直接用于人工智能算法,導致人工智能技術與醫療數據結合的時候面臨著許多問題[8].
為了解決人工智能技術與醫療數據結合時,有效樣本數據缺乏的問題,每年各大機構都會推出一些具有標注信息的醫療影像數據集,著名的平臺包括CAMELYON和MICCAI,并且舉辦一些醫學競賽,推動AI 在臨床的發展.醫療影像數據的原始數據格式包括DICOM 文件,PNG 文件,JPG 文件或者NII 文件等.其中DICOM是指醫學數字成像和通信,是醫學圖像和相關信息的國際標準,醫院用于影像檢查的設備都采用DICOM 標準的規范化接口[9].競賽的數據雖然具有相關的標注信息,但是基于競賽的數據存在很大的局限性,這些數據的標注只是針對每種疾病,固定的臨床任務,這將導致在使用數據的時候有可能需要進行大量的預處理操作,不僅浪費時間而且如果處理不當則可能會給算法帶來負面影響,降低算法的適用性.
本文旨在實現對醫療影像數據進行半自動化分類,并且對標注后的數據進行高效管理,設計并實現多維醫療影像數據管理系統.該系統的服務人群是算法研究人員,一方面可以使算法研究人員更集中于研究算法本身,另一方面有助于加速醫療輔助診斷系統落地的步伐.
本文重點研究面向多病種的多模態醫療影像數據,數據的復雜性在于疾病種類的多樣性,多模態主要指的是數據的采集來源不同.
醫療數據最大的特點就是病種的多樣性,每個病種的數據都有其自身的特點.多維醫療影像數據管理系統針對常見的4 大類型疾病進行數據分析、整理并管理,包括胰腺癌數據、乳腺癌數據、肺結節數據以及肝癌數據.
醫療領域的數據呈現多態性,即數據的來源豐富,通過不同的設備、不同診斷目的產生不同的數據,比如CT 數據、MRI 數據、病理數據等,這種在表現形式上呈不同形態的數據稱醫療數據的不同模態.這些數據都有其特自身的特點、數據格式等,通過多種模態的數據的聯合診斷,能夠有效地增加數據呈現的信息,從而增加醫生診斷的正確率.本系統管理的數據模態主要包括CT 數據、MRI 數據和病理數據.
對于同一模態的數據,由于觀察到的組織結構的不同或者視野范圍的不同則會進行不同的掃描.
CT 掃描方法包括平掃、增強掃描和造影掃描.平掃即為常規掃描,一般指的是橫切.增強掃描則指的是通過為患者注射一些試劑,然后在進行掃描,可以更加清楚地顯示某些病變組織.造影掃描指的是醫生為患者先通過注射試劑的方法為器官或組織結構形成造影,然后再進行CT 掃描.
MRI 掃描也會進行不同序列的掃描,比如進行DWI 掃描、T1 加權掃描、T2 加權掃描以及T1 增強掃描等,這些不同的掃描序列圖像能夠使不同的組織呈現更不同的效果.例如DWI 對于病變非常敏感,如果有病變則DWI中病變區域會呈現亮色,而T2 加權掃描則可以更好地呈現掃描部位的組織結構,可以非常清楚地看到組織邊界的勾勒情況.
病理圖像[10],為了準確對腫瘤定性,則會進行不同放大倍數的掃描.腫瘤的惡性程度與組織內癌細胞的數量相關,因此為了準確的判斷腫瘤的惡性程度,需要為病理切片中的癌細胞進行計數,對于病理圖像,會有不同掃描倍數的切片,因此一張病理切片的大小通常都是以G為單位.
本文調研了各大平臺上公開的競賽數據集,并且對分類任務的標注方法進行總結,分類數據集的標注相對來說是比較統一的,主要通過CSV的方式對原始數據進行病人級別的標注,包含病人信息與標注信息兩種數據,因此本文規定,對于分類任務的數據標注詳細信息如表1所示.

表1 分類數據標注屬性
本節詳細介紹多維醫療影像數據管理系統的總體架構以及核心模塊.該系統采用的體系結構為基于B/S的體系結構,不管在何處都可以通過網址直接訪問到本系統.
如圖1所示為系統整體架構圖,系統從上到下依次為表現層、數據處理層、基礎設施層.表現層主要方便人機交互,對系統中頁面進行可視化展示.數據處理層主要包含系統中各個模塊對于醫療影像數據的處理,包括數據預處理模塊中用到的數據篩選、去重、脫敏、模糊匹配等,以及數據可視化模塊中對數據的統計分析等.基礎設施包含數據庫、磁盤陣列等硬件設施.

圖1 多維醫療影像數據管理系統架構圖
多維醫療影像數據管理系統包含數據預處理模塊、數據管理模塊以及數據可視化模塊3 部分.其中數據預處理模塊能夠實現對原始的醫療影像數據進行半自動化標注,數據管理模塊實現對不同種類的疾病進行數據管理,數據可視化模塊能夠以圖表的形式從不同維度對系統中擁有的數據進行數據可視化.多維醫療影像數據管理系統的功能模塊圖如圖2所示.

圖2 多維醫療影像數據管理系統功能模塊圖
數據預處理模塊包括數據清洗和數據標注模塊.數據清洗是對原始醫療影像數據進行數據清洗,包括去除重復數據、數據脫敏操作、數據重命名等一系列操作,最終將其處理為統一格式的數據.數據標注模塊則主要是根據醫院的影像圖像數據、影像報告、病理報告之間的聯系,通過關聯關系進行匹配,最終實現從病理報告中提取出對應影像圖像數據的分類標簽.
數據管理模塊主要包含不同類型疾病的醫療影像數據的管理,包括胰腺癌、肺結節、肝癌和乳腺癌四種類型疾病.每種疾病包括基本信息管理、影像資源管理、病理資源管理、其它資源管理、個人信息管理.其中每種疾病都提供一個數據獲取的功能,是為算法研究人員設計的功能,通過該功能能夠下載自己需要的醫療影像數據.由于醫療數據模態的多樣性,本系統的設計的其它數據管理能夠實現對不同數據間的差異性的兼容,根據不同類型的數據加載與其對應的模塊,進行數據展示.
數據可視化模塊主要是對系統中資源以圖表的形式進行可視化分析,包括醫療資源可視化和服務器資源可視化.醫療資源的可視化,是指從不同維度分析數據的分布特點,從而有可能挖掘到更多有利于疾病診斷的關鍵信息.而服務器資源可視化是對CPU、網絡、內存等服務器資源進行監控,一旦出現問題則立刻發出警告,避免不必要的損失.
隨著瀏覽器技術不斷成熟和功能不斷強大,B/S(Browser/Server)模式具有強大的可擴展性與健壯的體系結構[11],本系統在開發時,考慮到平臺的兼容性和可擴展性,采用了主流的B/S 模式,并且為了平臺的可維護性以及開發的高效性,采用前后端分離的開發模式[12].前端開發框架為Vue.js,其優點是數據的雙向綁定,使得開發人員聚焦于業務層,后端采用Django 框架,Python 對于醫療圖像的處理有很多成熟的插件,更利于快速開發醫療數據管理系統,數據庫選擇了開源免費的數據庫MySQL.
數據預處理模塊是多維醫療影像數據管理系統的關鍵模塊,數據進入系統的第一步都會通過數據預處理模塊,該模塊決定了系統數據的標注類別,數據預處理模塊的涉及的關鍵接口如表2所示.

表2 數據預處理模塊關鍵API 接口
如圖3所示為數據清洗操作的流程圖,數據清洗是對系統中數據進行直接的操作,因此管理員才具有權限使用,管理員根據提示信息選擇合適的數據,并輸入對應的字段,包括影像報告、病理報告、影像數據,以及最終分類的類別,然后點擊開始關聯匹配,系統首先會對數據進行清洗工作,刪除冗余數據以及空數據.然后從數據中提取該病例的ID 號、性別、年齡、掃描模態(CT、MRI)、序列(DWI、T1、T2 等)、層厚等基礎信息,分別從影像報告、病理報告中通過模糊匹配技術,獲取到數據分類結果等關鍵字段,然后將獲得的文本信息數據進行持久化操作,并且將清洗之后圖像數據的路徑也存入數據庫中,方便后續查看影像數據.

圖3 數據清洗流程圖
如圖4所示為平臺在數據管理模塊中的服務請求網絡圖,瀏覽器向服務器發起請求,請求中包含要訪問疾病類型的信息,然后路由根據該信息跳轉到對應的頁面并且向對應的數據庫服務器請求數據,將獲取到的數據反饋回前端頁面進而展示.

圖4 服務請求網絡圖
影像數據管理模塊主要功能是對當前疾病所擁有的數據進行增刪查改,影像數據管理比較特殊的一點是能夠對DIOCM 文件這種特殊醫學文件的展示,本系統采用dwv 框架,實現對DICOM 圖像的放大縮小瀏覽等功能.影像數據管理模塊中數據的建模非常重要,需要構建合理的數據結構,以下是數據結構構建的關鍵代碼.
class imgDataInfo(models.Model):# 影像數據信息
# 病人基本信息
# mainkey=models.CharField(max_length=15)
casename=models.CharField(max_length=20)
patientID=models.CharField(max_length=20)
houspitalID=models.CharField(max_length=20)
age=models.IntegerField()
sex=models.CharField(max_length=2)
#影像信息
modality=models.CharField(max_length=10)
checkMethod=models.CharField(max_length=20)
checkDate=models.CharField(max_length=20)
checkDevice=models.CharField(max_length=10)
imgReport=models.CharField(max_length=500)
reportResult=models.CharField(max_length=20)
uploadTime=models.DateTimeField(auto_now_add=True)
imgPath=models.CharField(max_length=100)
class Meta:
db_table="imgDataInfo" #結構化報告
ordering=['id']
數據可視化模塊的實現主要通過echarts 插件完成,通過網絡請求向服務端發送請求,服務端從數據庫中獲取到數據,經過計算后返回對應的數據,然后echarts 根據獲取到的數據繪制.醫療資源可視化包括按患者統計分析、按病種統計分析、按模態統計分析三大維度進行統計,其中每一大類中分別包括按照性別、年齡、疾病占比等不同的維度對數據進行可視化分析[13].以下是可視化頁面初始化數據的關鍵代碼.
init(){
var myChart=this.$echarts.init(document.getElement ById(this.main))
var option={
title:{ text:this.chartData.title },
tooltip:{},
legend:{ data:this.chartData.lenged},
xAxis:{ data:this.chartData.xdata},
yAxis:{},
series:[{
type:this.chartData.type,
data:this.chartData.ydata
}]};
// 使用剛指定的配置項和數據顯示圖表.
myChart.setOption(option);
}
在實現了系統的各個功能模塊后,對正常運行的系統進行關鍵功能的測試.如圖5所示是對于數據預處理模塊的測試,根據測試結果可以得出系統能夠對指定的數據按照一定的規則進行分類;圖6,圖7,圖8屬于影像數據管理中影像數據管理模塊,從打開頁面到數據請求完成并渲染在視覺可接受的范圍之內,測試正常;圖9是對影像數據管理模塊中的數據進行在線查看,并且其放大、縮小、滾動查閱、灰度變換等功能均滿足要求;圖10是數據統計分析模塊對系統資源的統計分析的展示,測試正常.

圖5 數據分類結果圖

圖6 影像數據管理頁面

圖7 數據詳細信息圖

圖8 按患者進行統計分析

圖9 顯示影像數據

圖10 數據可視化分析圖
本文在分析了當前人工智能在醫療領域存在的問題的基礎上,對系統進行規劃和整體設計[14].該系統實現了數據標注功能、數據管理和數據可視化三大功能.通過該系統能夠實現對數據的高效管理,同時算法人員能夠通過該系統下載具有標注信息的數據,從而為算法研究人員提供數據支持.當然本系統還存在一些不足,比如有些功能的實現太簡單,頁面的設計還比較單一等.本系統在下一步工作中將會加入人工智能算法[15],從而實現對醫療影像數據的分割標注.