github代码修改指南|乳腺超声肿块分割代码项目|Global Guidance Network for Breast Lesion Segmentation in Ultrasound Images

此项目相关信息

github链接:https://github.com/xorangecheng/GlobalGuidance-Net
论文链接(2021MIA论文):https://www.sciencedirect.com/science/article/pii/S1361841521000359
github提供的代码质量真的感人,我改了一下午,作者上传这种质量的代码良心不会痛吗???

显而易见的错误

1、train.pylog_path设置
改为:

timestamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_path = os.path.join(ckpt_path, exp_name, f"{timestamp}.txt")  # 日志路径

用源码里的log_path定义,是有冒号的,真服了,之后的语句会打不开
2、train.py中数据读取
不要用ImageFolder,用ImageFolder2。原因自己去看dataset.py
3、train.pydef train里有一句梯度异常检测的代码,删掉
with autograd.detect_anomaly():这个是debug时候用的
4、train.pydef test有一句w和h写倒了
谁懂跑完一个fold之后报错停了的感受
改为如下:

# 加载和预处理图像
img = Image.open(img_path).convert('RGB')
w, h = img.size  # 改这行,太坑了
img_var = Variable(img_transform(img).unsqueeze(0)).cuda()

文件缺失

1、ResNext预训练模型
自己去下载resnext_101_32x4d.pt文件,放在modeling\backbone\resnext路径下面
下载链接:https://drive.google.com/file/d/1dnH-IHwmu9xFPlyndqI6MfF4LvH6JKNQ/view
2、SynchronizedBatchNorm2d
多个文件中的相关的语句都注释掉吧,作者根本没提供
3、dataset文件夹下缺__init__.py文件
自己建一个空白的
4、modeling\backbone路径下的__init__.py文件
里面部分要引入的backbone模型根本没提供相关文件,而且还有别的小错误,anyway改为如下:

# from modeling.backbone import resnet, xception, drn, mobilenet,daf,daf_ds,dense,xception_glb,daf_ds_wrte
from modeling.backbone import resnet, drn, mobilenet, daf_ds, dense
from .resnext.resnext101_regular import ResNeXt101
from .daf_ds import daf_ds
def build_backbone(backbone, output_stride, BatchNorm):
    if backbone == 'resnet':
        return resnet.ResNet101(output_stride, BatchNorm)
    #elif backbone == 'xception':
     #   return xception.AlignedXception(output_stride, BatchNorm)
    elif backbone == 'drn':
        return drn.drn_d_54(BatchNorm)
    elif backbone == 'mobilenet':
        return mobilenet.MobileNetV2(output_stride, BatchNorm)
    elif backbone=='daf_ds':
        return daf_ds() # 这一句改了
    elif backbone=='dense':
        return dense.Dense()
    #elif backbone == 'xception_glb':
     #   return xception_glb.AlignedXception(output_stride, BatchNorm)
    else:
        raise NotImplementedError

类似地,daf_ds.py的import也改为如下(主要改动在最后3行):

import math
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.utils.model_zoo as model_zoo
# from modeling.sync_batchnorm.batchnorm import SynchronizedBatchNorm2d
# from modeling.backbone.resnext import ResNeXt101
from .resnext.resnext101_regular import ResNeXt101

很容易失误的地方

数据文件夹的命名很死板,作者也没有写在readme里。如下要求:图像放在images文件夹里,masks放在seg文件夹里,并且masks的文件名为图像文件名加_mask

其他

安装pydensecrf:使用conda install -c conda-forge pydensecrf会很丝滑,否则容易各种报错

posted @ 2024-12-09 20:04  xjl_ultrasound  阅读(117)  评论(0)    收藏  举报