GitHubコード修正ガイド:乳腺超音波腫瘍セグメンテーションプロジェクト

目次- プロジェクト概要

  • 明らかなバグ修正
  • 必要なファイル追加
  • 落としやすいポイント
  • その他の注意点

プロジェクト概要

GitHubリポジトリ:https://github.com/xorangecheng/GlobalGuidance-Net 論文リンク(2021年MIA論文):https://www.sciencedirect.com/science/article/pii/S1361841521000359 GitHubで公開されているコードにはいくつかの問題点があるため、本記事では修正方法を解説します。

明らかなバグ修正

  1. train.pyにおけるlog_pathの設定 以下のように修正してください:
time_stamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = os.path.join(ckpt_path, exp_name, f"{time_stamp}.txt")  # ログファイルのパス

元のコードでのlog_pathの定義にはコロンが含まれており、その後の処理でファイルを開けなくなる問題があります。 2. train.pyでのデータ読み込み ImageFolderではなくImageFolder2を使用してください。理由はdataset.pyを参照してください。 3. train.pydef train内にある勾配異常検出のコードを削除 with autograd.detect_anomaly():はデバッグ用のコードです。 4. train.pydef test内でwとhが入れ替わっています 1つのfoldの実行後にエラーで停止する問題を修正します:

# 画像の読み込みと前処理
medical_image = Image.open(img_path).convert('RGB')
image_width, image_height = medical_image.size  # この行を修正
img_var = Variable(img_transform(medical_image).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モデルのいくつかは関連ファイルが提供されておらず、他にも小さなエラーがあります。以下のように修正してください:
# 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_name, output_stride, BatchNorm):
    if backbone_name == 'resnet':
        return resnet.ResNet101(output_stride, BatchNorm)
    #elif backbone_name == 'xception':
     #   return xception.AlignedXception(output_stride, BatchNorm)
    elif backbone_name == 'drn':
        return drn.drn_d_54(BatchNorm)
    elif backbone_name == 'mobilenet':
        return mobilenet.MobileNetV2(output_stride, BatchNorm)
    elif backbone_name=='daf_ds':
        return daf_ds() # この行を修正
    elif backbone_name=='dense':
        return dense.Dense()
    #elif backbone_name == '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フォルダに、マスクをsegフォルダに配置し、マスクのファイル名は画像ファイル名に_maskを追加したものにしてください。

その他の注意点

pydensecrfのインストール:conda install -c conda-forge pydensecrfを使用するとスムーズにインストールできます。それ以外の方法では様々なエラーが発生しやすいです。

タグ: 乳腺超音波 セグメンテーション 深層学習 医療画像 github

6月16日 17:39 投稿