CF2-Net: Coarse-to-Fine Fusion Convolutional Network for Breast Ultrasound Image Segmentation
摘要乳腺超声(BUS)图像分割在计算机辅助诊断系统中起着至关重要的作用,它被认为是帮助提高乳腺癌诊断准确性的有用工具。近年来,许多深度学习方法被开发出来用于BUS图像的分割,并与传统的区域分割、模型分割和传统的基于学习的分割方法相比显示出一些优势。然而,以往的深度学习方法通常使用跳接连接进行编码器和解码器的连接,这可能无法完全融合编码器和解码器的粗到细特征。由于BUS图像中病灶的结构和边缘通常是模糊的,这将导致很难学习到结构和边缘的判别信息,从而降低了性能。为此,我们提出并评估了一种基于新型特征集成策略(形成一个“E”型)的粗到精融合卷积网络(CF2-Net)用于总线图像分割。为了增强轮廓和提供结构信息,我们将超像素图像与原始图像连接起来作为CF2-Net的输入。同时,为了突出不同大小病变区域的差异,缓解不平衡问题,我们进一步设计了加权平衡损失函数来有效训练CF2-Net。通过四次交叉验证,在一个开放的数据集上评估了提出的CF2-Net。实验结果表明,与其他基于深度学习的方法相比,CF2-Net获得了最先进的性能。
2. 网络框架 3.损失函数这个二元交叉熵的损失函数确定不是写错了吗?log里面怎么能放标签呢???
4. loss部分复现pred = torch.rand(2, 2, 32, 32)
pred = torch.softmax(pred, dim=1)
mask = torch.rand(2, 1, 32, 32)
mask[mask > 0.5] = 1
mask[mask <= 0.5] = 0
w1 = torch.sum(mask == 1) / (torch.sum(mask == 0) + torch.sum(mask == 1))
b, c, h, w = pred.shape
loss_all = 0
for j in range(1, pred.shape[1]):
input_1 = pred[:, j, :, :]
target_1 = (mask == j).float().squeeze(1)
loss1 = torch.sum(input_1 * target_1) / (torch.sum(target_1) + torch.sum(input_1 * target_1))
# target_2 = (mask == 0).float()
loss2 = torch.sum((1 - input_1) * (1 - target_1)) / torch.sum((2 - input_1 * (1 - target_1)))
loss_d = 1 - w1 * loss1 - (1 - w1) * loss2
loss_c1 = torch.sum(target_1 * torch.log(input_1) + (1 - target_1) * (1 - torch.log(input_1)))
loss_c = torch.sum(target_1 * torch.log(input_1) + (1 - target_1) * (1 - torch.log(input_1))) / (b * c * h * w)
loss = loss_c + loss_d
loss_all += loss
print(loss_all / (c - 1))



