資源簡介
在此之前,腦腫瘤專欄中的2D網絡預測的時候,是把所有的切片預測完指標再求平均值,這樣測的值極容易收到一些差的切片而影響整體的指標.所以以后的2D網絡預測都采用下面方式進行計算指標,即把所有預測的切片拼接回3D,然后對3D數據整體進行計算指標.這樣計算的值會偏高點.不只是2D網絡這樣,3D網絡也是如此,把所有分塊拼接后再對整體進行指標的計算.這樣統一之后,我們就可以將2D和3D網絡進行對比了.此外,代碼預測生成的數據都是NII格式的,可以通過ITK-SNAP軟件查看三維的分割效果,如果想看2D切片的分割效果,可以用該軟件導出即可.
代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
import?time
import?os
import?math
import?argparse
from?glob?import?glob
from?collections?import?OrderedDict
import?random
import?warnings
from?datetime?import?datetime
import?numpy?as?np
from?tqdm?import?tqdm
from?sklearn.model_selection?import?train_test_split
from?skimage.io?import?imread?imsave
import?torch
import?torch.nn?as?nn
import?torch.nn.functional?as?F
from?torch.autograd?import?Variable
import?torch.optim?as?optim
from?torch.optim?import?lr_scheduler
from?torch.utils.data?import?DataLoader
import?torch.backends.cudnn?as?cudnn
import?torchvision
from?torchvision?import?datasets?models?transforms
from?dataset?import?Dataset
import?Unet
from?metrics?import?dice_coef?batch_iou?mean_iou?iou_score?ppvsensitivity
import?losses
from?utils?import?str2bool?count_params
from?sklearn.externals?import?joblib
#from?hausdorff?import?hausdorff_distance
import?imageio
#import?ttach?as?tta
import?SimpleITK?as?sitk
wt_dices?=?[]
tc_dices?=?[]
et_dices?=?[]
wt_sensitivities?=?[]
tc_sensitivities?=?[]
et_sensitivities?=?[]
wt_ppvs?=?[]
tc_ppvs?=?[]
et_ppvs?=?[]
wt_Hausdorf?=?[]
tc_Hausdorf?=?[]
et_Hausdorf?=?[]
def?hausdorff_distance(lTlP):
????labelPred=sitk.GetImageFromArray(lP?isVector=False)
????labelTrue=sitk.GetImageFromArray(lT?isVector=False)
????hausdorffcomputer=sitk.HausdorffDistanceImageFilter()
????hausdorffcomputer.Execute(labelTrue>0.5labelPred>0.5)
????return?hausdorffcomputer.GetAverageHausdorffDistance()#hausdorffcomputer.GetHausdorffDistance()
def?CalculateWTTCET(wtpbregionwtmaskregiontcpbregiontcmaskregionetpbregionetmaskregion):
????#開始計算WT
????dice?=?dice_coef(wtpbregionwtmaskregion)
????wt_dices.append(dice)
????ppv_n?=?ppv(wtpbregion?wtmaskregion)
????wt_ppvs.append(ppv_n)
????Hausdorff?=?hausdorff_distance(wtmaskregion?wtpbregion)
????wt_Hausdorf.append(Hausdorff)
????sensitivity_n?=?sensitivity(wtpbregion?wtmaskregion)
????wt_sensitivities.append(sensitivity_n)
????#?開始計算TC
????dice?=?dice_coef(tcpbregion?tcmaskregion)
????tc_dices.append(dice)
????ppv_n?=?ppv(tcpbregion?tcmaskregion)
????tc_ppvs.append(ppv_n)
????Hausdorff?=?hausdorff_distance(tcmaskregion?tcpbregion)
????tc_Hausdorf.append(Hausdorff)
????sensitivity_n?=?sensitivity(tcpbregion?tcmaskregion)
????tc_sensitivities.append(sensitivity_n)
????#?開始計算ET
????dice?=?dice_coef(etpbregion?etmaskregion)
????et_dices.append(dice)
????ppv_n?=?ppv(etpbregion?etmaskregion)
????et_ppvs.append(ppv_n)
????Hausdorff?=?hausdorff_distance(etmaskregion?etpbregion)
????et_Hausdorf.append(Hausdorff)
????sensitivity_n?=?sensitivity(etpbregion?etmaskregion)
????et_sensitivities.append(sensitivity_n)
def?parse_args():
????parser?=?argparse.ArgumentParser()
????parser.add_argument(‘--name‘?default=None
????????????????????????help=‘model?name‘)
????parser.add_argument(‘--mode‘?default=None
????????????????????????help=‘‘)
- 上一篇:HTMLTestRunnerNew.py
- 下一篇:流水作業調度.py
評論
共有 條評論