紹興免費做網(wǎng)站專業(yè)搜索引擎seo服務(wù)
代碼以及視頻講解
本文所涉及所有資源均在傳知代碼平臺可獲取
概述
本文將基于多示例深度學(xué)習(xí)EPLA模型實現(xiàn)對乳腺癌數(shù)據(jù)集BreaKHis_v1的分類。EPLA模型是處理組織病理學(xué)圖像的經(jīng)典之作。EPLA模型是基于多示例學(xué)習(xí)來進行了,那么多示例學(xué)習(xí)模型對處理病理學(xué)圖像具有天然的優(yōu)勢,因為多示例學(xué)習(xí)(Multiple Instance Learning 簡稱 MIL)是由監(jiān)督型學(xué)習(xí)算法演變出的一種方法,定義“包”為多個示例的集合,具有廣泛的應(yīng)用。學(xué)習(xí)者不是接收一組單獨標記的實例,而是接收一組帶標簽的包,每個包擁有多個實例。在多實例二進制分類的簡單情況下,如果包中的所有實例都是否定的,則可以將包標記為否定。另一方面,如果包中只要至少有一個是正面的,則包被標記為陽性。所以這與將組織病理學(xué)圖像WSI就可以認為是一個包;而從WSI切分下來的patch就可以認為是一個個示例。
EPLA框架解讀
EPLA原文是用來預(yù)測結(jié)直腸癌微衛(wèi)星不穩(wěn)定性MSI的,但是在摘要部分明確說明了可以用來預(yù)測其他數(shù)據(jù)集,這也得益于多示例模型處理病理學(xué)圖像的天然優(yōu)勢。下面就來看一下論文整體的框架結(jié)構(gòu)圖:
數(shù)據(jù)預(yù)處理
在原文中拿到組織病理學(xué)圖像WSI后,首先要對WSI中的腫瘤區(qū)域進行標注,然后進行切成小patch,這是因為:
聚焦關(guān)鍵區(qū)域:病理圖像通常非常大,包含大量的背景信息(如正常組織、脂肪組織等),這些信息對腫瘤檢測和分類沒有幫助。通過對腫瘤區(qū)域進行標注,可以引導(dǎo)模型關(guān)注關(guān)鍵的病變區(qū)域,從而提高模型的訓(xùn)練效率和性能。
減小計算復(fù)雜度:病理學(xué)圖像(特別是全切片圖像,WSI)通常非常大,直接處理整張圖像需要消耗大量的計算資源和內(nèi)存。將大圖像切片成小塊(patch)不僅降低了計算的復(fù)雜性,還能有效利用現(xiàn)有的計算資源進行模型訓(xùn)練。
數(shù)據(jù)增強和多樣性:通過將圖像切成多個patch,可以大大增加可用于訓(xùn)練的數(shù)據(jù)量。這些patch代表了同一圖像中的不同局部區(qū)域,能夠讓模型在學(xué)習(xí)時看到更多的變異性,提升模型的泛化能力。
平衡正負樣本比例:在病理圖像中,腫瘤區(qū)域通常占比較小。通過切片成patch并對腫瘤區(qū)域進行標注,能夠更好地平衡腫瘤區(qū)域(正樣本)和非腫瘤區(qū)域(負樣本)的比例,防止模型過擬合于背景信息。
捕捉局部細節(jié):病理圖像中有許多重要的微觀結(jié)構(gòu),例如細胞形態(tài)、細胞核大小、密度等。切成patch后,模型可以更專注于局部特征的學(xué)習(xí),從而更好地捕捉與疾病相關(guān)的細節(jié)。
提高訓(xùn)練效率:小尺寸的patch在計算上更快,易于并行處理。這樣不僅能夠加快模型的訓(xùn)練速度,還能更好地利用硬件資源(如GPU)。
在patch級別的預(yù)測中,使用殘差卷積神經(jīng)網(wǎng)絡(luò)(ResNet-18)進行訓(xùn)練,通過MIL框架計算patch的預(yù)測概率,其中每個patch被分配了WSI的標簽。網(wǎng)絡(luò)的優(yōu)化采用了二元交叉熵(BCE)損失函數(shù),使用小批量梯度下降法進行訓(xùn)練。
詞袋模型
在BoW方法中,每個patch被映射為一個TF-IDF浮點變量,并計算TF-IDF特征向量來表示W(wǎng)SI。然后使用傳統(tǒng)機器學(xué)習(xí)分類器對這些特征向量進行訓(xùn)練,以預(yù)測每個WSI的MS狀態(tài)。具體可以理解為:
在BoW方法中,首先把大圖像切成小塊(patch),然后通過一種叫做TF-IDF的技術(shù),把每個小塊的特征轉(zhuǎn)化為數(shù)值。TF-IDF原本是用在文本分析中的,可以幫助我們理解哪些詞在一篇文章里更重要。這里,我們用類似的方法來判斷每個小塊圖像的重要性。
接著,把這些數(shù)值組合成一個特征向量,用來代表整張大圖像。然后,使用傳統(tǒng)的機器學(xué)習(xí)算法,比如樸素貝葉斯,來對這些特征進行訓(xùn)練,最終的目標是預(yù)測這張大圖像的微衛(wèi)星狀態(tài)(即判斷圖像是否有微衛(wèi)星不穩(wěn)定性,和癌癥相關(guān))。
PALHI模型
在PALHI方法中,先對大圖像(WSI)進行分割成小塊(patch),然后為每個小塊進行預(yù)測,得出這些小塊的預(yù)測概率。接著,將這些小塊的預(yù)測概率用直方圖的形式匯總,直方圖記錄了每種概率值出現(xiàn)的頻率,從而形成一個特征表示,這個特征就用來表示整個大圖像(WSI)。
之后,利用一種叫做極端梯度提升(xgboost)的機器學(xué)習(xí)分類器,來處理這些直方圖特征,并通過訓(xùn)練預(yù)測該大圖像的微衛(wèi)星狀態(tài)(即判斷圖像是否表現(xiàn)出微衛(wèi)星不穩(wěn)定性)。xgboost是一種非常強大的分類器,它通過結(jié)合多個決策樹模型來提高分類性能。
聚合
最后通過一定的比例將BoW模型和PALHI模型按照一定的比例進行聚合,從而做出最終的預(yù)測。
論文復(fù)現(xiàn)
數(shù)據(jù)集介紹
Spanhol等人(2016)發(fā)布BreakHis (breast cancer histopathological database )數(shù)據(jù)集包含了來自82位患者的7909幅乳腺組織病理圖像。BreakHis對乳腺的病變給出了細粒度的臨床分型標注信息包括良性病變中的乳腺病(adenosis, A)、纖維腺瘤(fibroadenoma, F)、葉狀瘤( phyllodes tumor, PT)管狀腺瘤(tubular adenoma, TA) ,以及惡性病變中的導(dǎo)管癌(ductal carcinoma, DC)、小葉癌(lobular carcinoma, LC),黏液癌(mucinous carcinoma, MC)和乳頭狀癌(papillary carcinoma, PC)。這讓BreakHis數(shù)據(jù)集不僅能推進良惡性二分類算法研究,還可以推進臨床意義更重大的病理分型算法(多分類)研究。本文只針對良性和惡行進行二分類。
數(shù)據(jù)集處理
由于整張WSI的處理過程中涉及到腫瘤區(qū)域的標注,但是在實際情況中難以找到專業(yè)的病理學(xué)家為我們標注數(shù)據(jù),因此,我們選用了已經(jīng)數(shù)據(jù)預(yù)處理好的BreaKHis_v1數(shù)據(jù)集進行復(fù)現(xiàn)。
除此之外需要將切分好的數(shù)據(jù)集處理成csv文件:路徑和標簽兩列。如下圖:
以上是patch級別的標簽,它繼承了WSI的標簽,為了獲取WSI級別的預(yù)測結(jié)果也需要wsi級別的標簽,如下:
環(huán)境配置
* torch 1.1.0
* torchvision 0.2.1
* numpy 1.15.2
* pandas 1.0.3
* xgboost 0.90
* pillow 5.3.0
* sklearn 0.23.1
* logging 0.5.1.2
* joblib 0.15.1
* pickle 4.0
運行步驟
- 特征提取
python dnnPatchClser_rst.py # dnnPatchClser_rst.py為**附件**中的腳本,主要作用是**提取圖像特征**。
def build_model_on(device):model_ft = models.resnet18(pretrained=True)#model_ft = torch.load(model_path,map_location=device)#num_ftrs = model_ft.fc.in_features#model_ft.fc = nn.Linear(num_ftrs, 2)#model_ft = model_ft.to(device)return model_ft
這里可以使用經(jīng)過該數(shù)據(jù)集訓(xùn)練過的模型進行提取特征會更準確。比如使用ResNet網(wǎng)絡(luò)對該數(shù)據(jù)集提取特征后保存的權(quán)重文件,重新加載到這個腳本中。這個腳本運行完成后會產(chǎn)生兩個特征文件,train和test。
2. PALHI模型
python PALHI.py # PALHI.py 為**附件**中的腳本,主要作用是**得到patch的重要性**。
該腳本會加載 dnnPatchClser_rst.py產(chǎn)生的兩個文件。
- BoW模型
python BoW.py # BoW.py 為**附件**中的腳本,主要作用是**WSI級別的概率**。
該腳本同樣會加載 dnnPatchClser_rst.py產(chǎn)生的兩個文件。
- 模型聚合
python ensemble.py # ensemble.py 為**附件**中的腳本,主要作用是**聚合上述兩個結(jié)果**。
該腳本同樣會加載 PALHI和BoW模型產(chǎn)生的兩個文件。從而產(chǎn)生最終的預(yù)測結(jié)果。
模型特點與改進建議
該模型能夠從最基礎(chǔ)的提取圖像特征,得到每一個patch的特征值,然后將這些patch的預(yù)測概率用直方圖的形式匯總,直方圖記錄了每種概率值出現(xiàn)的頻率,從而形成一個特征表示。改進建議是可以采用其他的匯總方式得到的結(jié)果來表征WSI。接著使用詞袋模型將每個patch被映射為一個TF-IDF浮點變量,并計算TF-IDF特征向量來表示W(wǎng)SI,然后使用傳統(tǒng)機器學(xué)習(xí)分類器對這些特征向量進行訓(xùn)練,以預(yù)測每個WSI的MS狀態(tài)。改進建議那么這里可以使用具有針對性的分類器,也可以進行相應(yīng)的分類器的調(diào)參,提高預(yù)測準確率。
源碼下載