作為一名對醫(yī)療應(yīng)用人工智能感到興奮的本科生,我很高興能加入 NVIDIA Clara 部署團(tuán)隊進(jìn)行實習(xí)。這是一個完美的組合:有機(jī)會在一家領(lǐng)先的技術(shù)公司工作,加速和采用人工智能,同時為未來(和現(xiàn)在)的團(tuán)隊建設(shè)做出貢獻(xiàn)用于醫(yī)療保健的人工智能部署。接下來的幾個月充滿了從才華橫溢但謙遜的同事那里學(xué)到的東西,學(xué)習(xí)了 CUDA 編程等新技能,以及關(guān)注組織病理學(xué)數(shù)據(jù)帶來的獨(dú)特技術(shù)挑戰(zhàn)的機(jī)會。
什么是 Clara Deploy?
Clara Deploy SDK 是一個基于容器的云本機(jī)開發(fā)和部署框架,用于智能醫(yī)院中的多 AI 和多域工作流。它使您能夠定義由多個階段組成的基于容器的管道,每個階段由操作員定義。管道由多個運(yùn)算符組成,是從數(shù)據(jù)源到數(shù)據(jù)接收器的有向無環(huán)圖( DAG )。每個操作符都是管道的一個步驟,比如加載輸入、預(yù)處理、人工智能推理等等。
在我探索建立 NVIDIA Clara Deploy 平臺和運(yùn)行 AI 推理管道的過程中,我獲得了部署 AI 工作流挑戰(zhàn)的第一手經(jīng)驗,特別是在標(biāo)準(zhǔn)化工作流和擴(kuò)展執(zhí)行方面。在運(yùn)行數(shù)字病理管道的過程中,我意識到了 I / O 和預(yù)處理步驟的性能瓶頸,這些步驟通常不會 GPU 加速。這影響了我在實習(xí)期間專注于加速數(shù)字病理學(xué)預(yù)處理過濾器的選擇。
什么是 cuCIM ?
cuCIM 是一個 RAPIDS 庫,用于加速 n 維圖像處理和圖像 I / O ,重點(diǎn)是醫(yī)學(xué)成像應(yīng)用。 cuCIM 由 I / O 、文件系統(tǒng)和操作模塊組成。 cuCIM 中的操作可以使用插件架構(gòu)進(jìn)行擴(kuò)展。 cuCIM 在醫(yī)學(xué)圖像處理應(yīng)用方面處于領(lǐng)先地位,我很高興在 NVIDIA 工作期間接觸并參與其中。
項目動機(jī)
組織病理學(xué)分析數(shù)字化的一個重大挑戰(zhàn)是病理學(xué)圖像中觀察到的染色變化。這些圖像可能由多種因素引起 染色差異大 ,包括染色供應(yīng)商、儲存條件、染色協(xié)議、數(shù)字掃描儀等。
鑒于因素的范圍,在圖像采集期間控制染色變化是不切實際的。取而代之的是,一個稱為染色標(biāo)準(zhǔn)化的圖像預(yù)處理步驟通常用于算法標(biāo)準(zhǔn)化圖像染色。染色規(guī)格化過濾器接受源圖像和目標(biāo)圖像作為輸入。將源圖像進(jìn)行染色歸一化,目標(biāo)圖像包含理想染色,并將其轉(zhuǎn)移到源圖像。最終,標(biāo)準(zhǔn)化的源圖像作為輸出返回。
圖 1 。染色標(biāo)準(zhǔn)化過濾器。來自 StainTools 。
先前的工作表明,在數(shù)字病理 AI 管道中,作為預(yù)處理步驟的染色歸一化可以縮短訓(xùn)練時間,提高準(zhǔn)確性,并使來自不同來源的數(shù)據(jù)能夠一起使用。由于染色病理圖像的稀缺性,您在相對較小的數(shù)據(jù)范圍內(nèi)操作,因此染色標(biāo)準(zhǔn)化使您能夠優(yōu)化在噪聲染色變化中獲得的信號。
然而,之前的染色標(biāo)準(zhǔn)化實施相對緩慢,因為它們沒有 GPU 加速。有機(jī)會實現(xiàn) GPU 加速染色歸一化算法,并為數(shù)字病理 AI 管道實現(xiàn)快速有效的預(yù)處理。
加速數(shù)字化病理學(xué)染色標(biāo)準(zhǔn)化
染色標(biāo)準(zhǔn)化方法分為三大類:
全局顏色歸一化
色斑反褶積后的顏色歸一化
基于深度網(wǎng)絡(luò)的顏色傳遞
有關(guān)更多信息,請參閱 染色顏色自適應(yīng)歸一化( SCAN )算法:數(shù)字病理學(xué)中組織染色的分離和標(biāo)準(zhǔn)化 。
我選擇專注于基于染色反褶積的方法,因為之前的文獻(xiàn)顯示,與基于深度網(wǎng)絡(luò)的方法相比,與全局顏色歸一化相比,其性能更高,并且在維持生物結(jié)構(gòu)完整性方面具有更好的理論保證。
基于染色反褶積的方法假設(shè)每個圖像都具有染色矩陣的特征,該矩陣包含 H & E 染色圖像中兩種染色(蘇木精和曙紅)的紅、綠、藍(lán)( RGB )值。
使用 比爾 – 蘭伯特定律 將 RGB 圖像轉(zhuǎn)換為光密度圖像。然后,光密度圖像可以與該圖像的像素濃度矩陣和染色矩陣的乘積相關(guān)。像素濃度矩陣表示每個像素的每個染色的濃度。如果使用 馬森科法 估算染色矩陣,則可獲得濃度矩陣。
最后,對于染色歸一化,源圖像的染色矩陣被替換為 目標(biāo)圖像的染色矩陣 。這用于將染色輪廓從目標(biāo)圖像傳輸?shù)皆磮D像。因為源圖像的濃度矩陣不變,所以生物結(jié)構(gòu)的形態(tài)保持不變。用于估計染色矩陣的 Macenko 方法是一種使用 奇異值分解 的無監(jiān)督方法。
圖 2 ?;趹?yīng)變反褶積的應(yīng)變歸一化
在修改了 NumPy 中的現(xiàn)有版本后,我為 CuPy 中的 Macenko 染色標(biāo)準(zhǔn)化方法設(shè)計并實現(xiàn)了一個過濾器。接下來,我比較了兩者的性能。
圖 3 顯示了使用 NVIDIA DGX-1 對不同圖像大小的 NumPy 和 CuPy 實現(xiàn)的著色歸一化的相對性能。 CuPy 實現(xiàn)的性能根據(jù)相對于 NumPy 實現(xiàn)的加速因子繪制。
圖 3 。 NumPy 與 CuPy 染色標(biāo)準(zhǔn)化實現(xiàn)的性能比較
考慮到使 GPU 加速染色標(biāo)準(zhǔn)化能夠用作數(shù)字病理學(xué)管道的預(yù)處理步驟的目標(biāo),我開始將該過濾器作為轉(zhuǎn)換(基于陣列和基于字典)集成到 MONAI 。 MONAI 是一個基于 PyTorch 的開源框架,用于醫(yī)學(xué)成像的深度學(xué)習(xí)。完全集成后,可以將染色歸一化變換添加到 Clara Train 或 MONAI 中的病理管道中。
彩色轉(zhuǎn)換濾波器的加速
接下來,我在 CUDA C ++中實現(xiàn)了顏色轉(zhuǎn)換 RGB2HED 函數(shù),這是一個常用的函數(shù),在 scikit-image 和 Cuim-Python 層中可用。從 RGB 到 HED 的顏色空間轉(zhuǎn)換與色斑歸一化密切相關(guān),因為該函數(shù)涉及獲得色斑濃度值,假設(shè)色斑向量是一個恒定的、預(yù)先計算的近似值。這忽略了不同圖像染色之間的差異。這個功能通過 C ++的操作符插件機(jī)制集成到 CuCIM 中。
我比較了純 C ++實現(xiàn)和 CUDA C ++實現(xiàn)的性能。圖 4 顯示了使用 NVIDIA GV100 GPU 和 Intel ( R ) Core ( TM ) i7-7800X CPU 的兩個版本在不同圖像大小下的相對性能。 CUDA C ++實現(xiàn)的性能以相對于純 C ++實現(xiàn)的加速因子的形式繪制。
需要注意的是,性能提升并沒有考慮到與 GPU 之間的任何數(shù)據(jù)傳輸。我之所以這樣做,是因為我正在考慮一種常見的場景,即在圖像處理工作流中的幾個后續(xù)操作中,數(shù)據(jù)傳輸通過留在 GPU 上而最小化,并且只在最后發(fā)生向主機(jī)的傳輸。
圖 4 :純 C ++與 CUDA C ++實現(xiàn)的性能比較 rgb2hed 顏色轉(zhuǎn)換函數(shù)
結(jié)論
總之,我的實習(xí)項目的重點(diǎn)是加速數(shù)字病理學(xué)的顏色轉(zhuǎn)換過濾器。具體來說,我致力于設(shè)計和實現(xiàn) Macenko 染色歸一化方法,使用 CuPy 進(jìn)行 GPU – 加速。我開始將其集成到 MONAI 中,作為一種轉(zhuǎn)換,以便將來用作數(shù)字病理管道的預(yù)處理步驟。接下來,我在 CUDA C ++中實現(xiàn)了顏色轉(zhuǎn)換 RGB2HED 函數(shù),通過基于 C ++的操作符插件機(jī)制將其集成到 CuCIM 中。
Macenko 染色規(guī)范化和 CUDA C ++實現(xiàn)的 RGB2HED 函數(shù)都表現(xiàn)出顯著的性能增益,與 NumPy 版本和純 C ++版本相比,它們都表現(xiàn)出顯著的性能增益。使用基于 NumPy 的過濾器,在 250 個圖像數(shù)據(jù)集和 4000 × 4000 像素圖像大小的情況下,訓(xùn)練 500 個時代以上的管道的染色歸一化預(yù)處理時間大約為 13 天。 CuPy 基過濾器的過濾時間減少到 3.5 小時。
最終,加速數(shù)字病理學(xué)的前處理和后處理過濾器可以提高數(shù)字病理學(xué)深度學(xué)習(xí)管道的性能,加快數(shù)字病理學(xué)的采用,并使人工智能能夠徹底改變病理學(xué)。
關(guān)于作者
Neha Srivathsa 是 NVIDIA 的 Clara Deploy 應(yīng)用程序團(tuán)隊的實習(xí)生。在實習(xí)期間,她一直致力于 GPU ——數(shù)字病理管道預(yù)處理過濾器的加速。 Neha 是斯坦福大學(xué)的一名本科生,研究計算機(jī)科學(xué),重點(diǎn)是人工智能和生物信息學(xué)。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5071瀏覽量
103505 -
計算機(jī)
+關(guān)注
關(guān)注
19文章
7530瀏覽量
88419 -
C++
+關(guān)注
關(guān)注
22文章
2114瀏覽量
73780
發(fā)布評論請先 登錄
相關(guān)推薦
評論