基于TensorFolw的人工智能影像診斷平臺工作原理解析
文章對TensorFolw人工智能影像診斷平臺的工作原理進行了解析,希望這篇文章能夠幫助你更好地理解 Tensorflow。
使用人工智能來輔助病理醫生對樣本進行診斷,不僅能夠大幅度提高醫師的診斷效率,而且可以減少漏診,提高診斷準確率。
數字化的病理影像能夠觀察到組織細胞形態,在最高數字掃描時,文件尺寸達到GB量級,需要利用人工智能和系統工程學的技術去突破這些困難。
在這篇文章當中,我將會從人工智能系統的構建方法角度來入手,舉例消化道病理影響輔助系統研發過程中的技術細節。
當然,這是相對陌生的醫療科技領域知識,為了讀者能更快的理解和吸收,全篇也會圍繞產品經理的角度去解。
一、什么是病理?
病理就是通過分析病人的組織,細胞和體液樣本來診斷疾病。
那么,病理對于臨床醫生提供進一步治療策略的金指標。
這里有個容易混淆的是AI醫學影像,并不是所有都是從CT、X光、B超等分析得出。就拿胃癌篩查來說,它的病理影像通過掃描儀掃描組織放大形成大概1.4GB影像來進行分析判斷的。
不同病種的病理來源
病理影像都是與眾不同的,這也是技術上的挑戰。
那么在進行病理判斷之前,我們需要建立一套訓練模型,通過醫生標注的圖像進行增強訓練以及數據處理。
二、TENSORFOLW工作原理
我們講解TensorFolw訓練模型時,我們要了解整個的深度學習的流程。
簡易工作流程
數據源一般來自醫院的PACS、RIS系統等,形成數據隊列后進行數據增強圖像方向的魯棒性。
另外,我們要注意掃描儀的倍數,會造成在不同樣的倍數情況下圖像的魯棒性。
然后利用TensorBoard來進行模型監控,TensorBoard是一個可視化工具,能夠有效地展示Tensorflow在運行過程中的計算圖、各種指標隨著時間的變化趨勢以及訓練中使用到的數據信息。
再通過TensorFolw導出(病理)模型交給生產環境推理框架(TensorFolw Serving)進行自動處理。
那tensorfolw serving是怎么工作的呢?
Tensorserving工作流程
tensorfolw serving把病理切片分成坐標標記的小塊切分之后把節點讓一個map每個輸入分片會讓一個map任務來處理,默認情況下,以HDFS的一個塊的大?。J為64M)為一個分片,當然我們也可以設置塊的大小。
map輸出的結果會暫且放在一個環形內存緩沖區中(該緩沖區的大小默認為100M,由io.sort.mb屬性控制),當該緩沖區快要溢出時(默認為緩沖區大小的80%,由io.sort.spill.percent屬性控制),會在本地文件系統中創建一個溢出文件,將該緩沖區中的數據寫入這個文件。在寫入磁盤之前,線程首先根據reduce任務的數目將數據劃分為相同數目的分區,也就是一個reduce任務對應一個分區的數據。
這樣做是為了避免有些reduce任務分配到大量數據,而有些reduce任務卻分到很少數據,甚至沒有分到數據的尷尬局面。其實分區就是對數據進行hash的過程。
然后對每個分區中的數據進行排序,如果此時設置了Combiner,將排序后的結果進行Combia操作,這樣做的目的是讓盡可能少的數據寫入到磁盤。
MAP與reduce機制再將分區中的數據拷貝給相對應的reduce任務。Reduce會接收到不同map任務傳來的數據,并且每個map傳來的數據都是有序的。
如果reduce端接受的數據量相當小,則直接存儲在內存中(緩沖區大小由mapred.job.shuffle.input.buffer.percent屬性控制,表示用作此用途的堆空間的百分比),如果數據量超過了該緩沖區大小的一定比例(由mapred.job.shuffle.merge.percent決定),則對數據合并后溢寫到磁盤中。
隨著溢寫文件的增多,后臺線程會將它們合并成一個更大的有序的文件,這樣做是為了給后面的合并節省時間。
其實不管在map端還是reduce端,MapReduce都是反復地執行排序,合并操作,現在終于明白了有些人為什么會說:排序是hadoop的靈魂。合并的過程中會產生許多的中間文件(寫入磁盤了),但MapReduce會讓寫入磁盤的數據盡可能地少,并且最后一次合并的結果并沒有寫入磁盤,而是直接輸入到reduce函數。
最后返回數據到后端。
同樣的流程可以遷移學習,病理圖像有很多相似的地方,腺、息肉、囊腫等等都可以同理應用。
#專欄作家#
Rolia,微信公眾號:pmsummit,人人都是產品經理專欄作家。前??挡┦柯摵蟿撌既思娈a品總監,涉及智慧醫療領域需求產品化5年,致力于智慧醫療領域產品體驗設計以及新商業模式研究。
本文原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
寫的很棒,條理清晰,技術流程和關鍵指標抓得很準!