【Pytorch】复现FCN for Left Ventricle(LV) segmentation记录
【持續(xù)更新中…】
算法概括
FCN將傳統(tǒng)卷積網(wǎng)絡(luò)后面的全連接層換成了卷積層,這樣網(wǎng)絡(luò)輸出不再是類別而是 heatmap;同時為了解決因為卷積和池化對圖像尺寸的影響,提出使用上采樣(upsampling)的方式恢復(fù)。
上采樣-反卷積(deconvolution)
經(jīng)過多次卷積和pooling以后,將得到尺寸越來越小、分辨率越來越低的圖像,最終得到高維特征圖(heatmap);接著我們需要對其進行upsampling,將圖像一步步放大至原圖像尺寸。最后的輸出是n(類別數(shù))個通道heatmap經(jīng)過upsampling變?yōu)樵瓐D大小的圖片,為了對每個像素進行分類預(yù)測label成最后已經(jīng)進行語義分割的圖像,通過逐個像素地求其在n個通道上該像素位置的最大數(shù)值描述(概率)作為該像素的分類依據(jù),由此得到一張完成分類的圖片。
FCN優(yōu)點
- 不含全連接層(fc)的全卷積(fully conv)網(wǎng)絡(luò)。可適應(yīng)任意尺寸輸入。
- 增大數(shù)據(jù)尺寸的反卷積(deconv)層。能夠輸出精細的結(jié)果。
- 結(jié)合不同深度層結(jié)果的跳級(skip)結(jié)構(gòu)。同時確保魯棒性和精確性。
FCNs的結(jié)構(gòu)如下圖所示:
Sunnybrook數(shù)據(jù)集
The dataset consists of 16-bit MRI images in DICOM format and expert-drawn contours in text format (coordinates of contour polylines). A sample image/label pair may look like:
數(shù)據(jù)集包含16位的核磁共振圖像(DICOM格式),下面是一對圖像和標(biāo)簽的例子:
使用Visdom實現(xiàn)DL訓(xùn)練可視化
簡介
Visdom是Facebook在2017年發(fā)布的一款針對PyTorch的可視化工具。visdom由于其功能簡單,一般被定義為“網(wǎng)頁版的matplot”,我們可以直接利用python的控制臺模式進行開發(fā)并在服務(wù)器上執(zhí)行,并通過向Visdom服務(wù)端傳輸可視化數(shù)據(jù)進行可視化。
示例
下圖便是神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,Visdom客戶端的界面,展示的內(nèi)容包括訓(xùn)練loss曲線、測試loss曲線、訓(xùn)練結(jié)果、測試結(jié)果等等,直觀明了。
實驗結(jié)果
實驗相關(guān)信息
- 數(shù)據(jù)集大小:原圖像、標(biāo)簽圖像各800余幅
- 運行輪次(epochs):25輪
- batch size:4
- 耗時:2h
- 運行設(shè)備:CPU【11th Gen Intel? Core? i5-11320H @ 3.20GHz 3.19 GHz】
Visdom結(jié)果可視化
下圖中左側(cè)三幅圖從上往下分別表示原圖像(MRI圖像),模型的預(yù)測結(jié)果,測試集標(biāo)簽;
右側(cè)的圖表為測試過程中的Dice Loss曲線,其原理將在【補充知識】模塊中作簡要講解。
補充知識
醫(yī)學(xué)圖像分割的Dice Loss
Dice系數(shù), 是一種集合相似度度量函數(shù),通常用于計算兩個樣本的相似度(值范圍為 [0, 1]):
s=2∣X∩Y∣∣X∣+∣Y∣s = \frac{2|X \cap Y|}{|X|+|Y|}s=∣X∣+∣Y∣2∣X∩Y∣?
其中∣X∩Y∣|X \cap Y|∣X∩Y∣表示X與Y的交集;∣X∣|X|∣X∣和∣Y∣|Y|∣Y∣分別表示X與Y 的元素個數(shù);分子乘上2是考慮到分母重復(fù)計算X、Y共同元素。
s=1?2∣X∩Y∣∣X∣+∣Y∣s=1-\frac{2|X \cap Y|}{|X|+|Y|}s=1?∣X∣+∣Y∣2∣X∩Y∣?
圖像里的“Ground Truth”
在有監(jiān)督學(xué)習(xí)中,數(shù)據(jù)是有標(biāo)注的,以(x, t)的形式出現(xiàn),其中x是輸入數(shù)據(jù),t是標(biāo)注.正確的t標(biāo)注是ground truth, 錯誤的標(biāo)記則不是。(也有人將所有標(biāo)注數(shù)據(jù)都叫做ground truth)由模型函數(shù)的數(shù)據(jù)則是由(x, y)的形式出現(xiàn)的。
其中x為之前的輸入數(shù)據(jù),y為模型預(yù)測的值。標(biāo)注會和模型預(yù)測的結(jié)果作比較。在損耗函數(shù)(loss function / error function)中會將y 和 t 作比較,從而計算損耗(loss / error)。
總結(jié)成一句話:
Ground Truth: 就是指正確打標(biāo)簽的訓(xùn)練數(shù)據(jù) 或 簡單來說就是有效的正確的數(shù)據(jù)。
訓(xùn)練網(wǎng)絡(luò)時CPU或GPU的使用
- 明確使用CPU:device=torch.device(“cpu”)
- 明確使用GPU:device=torch.device(“cuda”)
- 優(yōu)先使用GPU(如果有):device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)
VGG網(wǎng)絡(luò)簡介
(FCNs將VGG作為預(yù)訓(xùn)練網(wǎng)絡(luò),即在其基礎(chǔ)上搭建網(wǎng)絡(luò)結(jié)構(gòu))
- 意義:證明增加小卷積核個數(shù)及增加網(wǎng)絡(luò)深度以提升圖像分類能力的有效性
- 預(yù)處理:各通道減去RGB在訓(xùn)練集上的均值
- 特點:網(wǎng)絡(luò)深度大;使用小尺寸卷積核(3*3)替代大尺寸卷積核
- 優(yōu)點:網(wǎng)絡(luò)結(jié)構(gòu)簡潔,網(wǎng)絡(luò)表達能力更強
- 缺點:網(wǎng)絡(luò)參數(shù)數(shù)量多,存儲所需容量大,且需要的訓(xùn)練時間較長
總結(jié)
以上是生活随笔為你收集整理的【Pytorch】复现FCN for Left Ventricle(LV) segmentation记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯企业 html邮件模板,python
- 下一篇: windows11+wsl+clion调