放射AI軟體的系統效率提公升

2021-10-07 20:27:49 字數 3036 閱讀 7202

每乙個伺服器內的服務都採用上面統一的結構組成。

全流程等待拉取資料

pacs模組接收資料

後端處理

演算法排隊

演算法模組計算

平均耗時

950s

630s

19s27s

189s

85s百分比

現有方案的時間消耗分析(以下以預設配置進行說明)

find periodic check → db (3 mins)

move periodic check → db (1 min)→ delay(10 mins)

(receive dicom, compress dicom, seconds level ingore)

整體延時的典型值為10-11分鐘。(伺服器的時鐘不准會影響該值)

新設計圖(初稿)

新設計邏輯講解

find和move採用rabbitmq作為訊息互動通道,比週期輪詢資料庫具有更及時的響應能力和更低的cpu和io消耗

find查詢pacs時,帶上原業務後端的過濾條件,不但可以減少ris的對接,而且可以按需獲取,而不是批量拉取再過濾放棄(浪費頻寬,磁碟io,磁碟儲存和cpu消耗)

資料拉取模組和業務後端的介面,從原來的資料拉取模組基於restful api主動推送,改為採用mq作為邊界,業務後端根據自己的處理能力按需獲取

影象壓縮後置。現有方案在拉取影象後,立即進行壓縮,導致業務後端和演算法模組在處理影象時,有乙個額外的解壓cpu開銷(典型值3秒)。新方案修改為演算法模組計算完成後,再進行影象的壓縮。

新設計的最樂觀時間分析

find periodic check (1 min)

if study instance nums keep the same, publish message to (rabbitmq) to move

最樂觀時間大約為1.5分鐘(實際時間以醫院執行為準)

pacs在測試環境的接收時間為20秒,需要注意的是,測試環境的都是單序列。

典型的study包括(正位片的薄層/和厚層,縱隔窗的薄層/和厚層,定位片),排除體積很小的定位片,常見的有2或4個序列,這裡取平均值3.

則正常按study級別接收,約需要60秒。

如果可以按照series進行目標序列的拉取,則只可以節省40秒。

後端從接收資料到向演算法模組傳送請求的平均時間為1分30秒(和層厚有關係,這個是廈大資料的平均時間)。主要做2件事,1是資料歸檔,2是序列篩選。主要耗時是資料歸檔。

資料歸檔是需要一張一張讀取dicom,然後將相同的seriesuid的放到同乙個資料夾下,同時將一些關鍵頭資訊(病人資訊,檢查資訊,序列資訊,資訊等)存入資料庫中。

還需要做一些容錯處理,將同乙個序列下的重複刪掉(instancenumber相同的),畫素不一致的刪掉。

可以調整的地方:

歸檔功能直接放到pacsinte***ce中處理,pacsinte***ce在接收資料時,本身也會解析dicom頭資訊,因此可以直接按照序列歸檔,同時將頭資訊儲存到資料庫中。就向pacs伺服器做的一樣。

ct肺小結節取消轉float16的操作,平均每例減少10秒。

前端效能優化

影象採用無失真壓縮之後,體積減少接近50%,頁面載入速度減少一半。(100m頻寬,1100層ct,壓縮前載入需要55秒,無失真壓縮後只需要26秒)

主要設計圖(省略了次要邏輯)

效率改進

lru cache: 採用lru_cache減少體積估算的2次重複計算(由於lru_cache不支援list的輸入,因此,只能對db的query進行快取)

process pool: 採用程序池對影象進行脫敏(脫敏需要cpu資源,因此選擇程序而不是執行緒。採用pool可以重複利用程序,減少不斷開啟程序的消耗)

query db necessary: 資料庫只索要必要的資料(過去使用db,簡單粗暴,將db的整個document拉過來,對於study這種以m為單位的document,只拉取需要的字段,能加速不少)

memory filesystem: 脫敏後,打包前的dicom影象輸出在記憶體檔案系統中,可以減少磁碟io消耗

only archive: dicom影象無法通過傳統壓縮演算法減少體積,因此,只需要打包,減少了打包和解包的cpu消耗

首先感謝外掛程式客戶端的去重處理

外掛程式在gui截圖後,會對影象做hash計算,如果發現影象沒有改變,則不傳送影象到ocr server中,這大大減輕了ocr server的壓力。

使用integer型別的fast模型取代float型別的best模型

過去為了追求最佳的識別率,一直採用best模型,甚至採用了融合模式(多模型)。

後面發現,基於integer的fast模型,和基於float的best模型,在ocr識別率幾乎一樣,因此,現在預設選擇fast模型。

fast模型比best模型能節省1/2 ~ 2/3 的執行時間。

凡是需要find的表字段,一定要配置索引

提公升工作學習效率100 的軟體

知識追尋者好久沒有分享軟體資源咯,做人不能太懶,我還是寫出來了,怕下週沒時間喵嗚嗚 本期的軟體分享大多是知識追尋者常用的軟體,提公升工作效率,辦公效率 知識追尋者 inheriting the spirit of open source,spreading technology knowledge ...

提公升軟體開發效率幾點體會

背景 進入9月份以來接手了兩個專案,乙個內網管理和 要求生成靜態html 乙個純資訊管理的。兩個專案如果正常計算人力都應該在5人月左右 都在20萬左右 可是我這邊總共才4個人 其中美工1人,開發人員3人 沒辦法只好我一人兼顧兩個專案,開發人員一人負責乙個專案。這次我的配置實現資訊管理 工作流 內容生...

提公升你的效率

最近發現工作中,老是有些很讓人煩躁的事情,而這些事情你不做就沒有人去做,從而會導致整個專案就會是有你的進度而確定的。先簡單概述下,狀況 我負責整合工作 有兩三個同事負責提供庫,還有乙個專案經理打包和一名測試人員,大家坐的位置比較分散。我這邊的 量不是很多,庫那邊的同事也主要是修改。但他媽的這個工作的...