このコンテンツを表示するには、JoVEへの購読が必要です。 または、無料トライアルをお申し込みください。

方法論記事

深層学習を用いた先天性横隔膜ヘルニアの肺血管の自動定量解析

117 閲覧数

DOI:

10.3791/70428

2026年5月8日

この記事について

サマリー

このプロトコルは、新生児CTスキャンにおける肺血管のセグメント解析のための完全自動化された深層学習パイプラインを記述しています。この手法は先天性横隔膜ヘルニア(CDH)および対照群の血管発生の定量的な形態計測評価を可能にし、肺低形成および血管未発達の非侵襲的特徴付けを支援します。

要約

先天性横隔膜ヘルニア(CDH)は肺低形成と血管の未発達を特徴とし、ガス交換の障害と高い新生児死亡率を引き起こします。肺血管の正確かつ定量的な評価は疾患の重症度を理解する上で重要ですが、医療画像における三次元血管ネットワークの手動分割は時間がかかり、操作者にも依存します。

本プロトコルは、出生後のコンピュータ断層撮影(CT)スキャンを用いた肺血管の断片および形態計測解析のための完全自動化された深層学習ベースの手法を提供します。パイプラインには、標準化された前処理ステップ(ハウンズフィールド単位への変換、ウィンドウイング、等方性再サンプリング、コントラスト制限適応ヒストグラム均等化(CLAHE)が含まれており、画像データの正規化と血管の可視性向上を目的としています。その後、U-Net畳み込みニューラルネットワーク(CNN)アーキテクチャを学習して肺血管をセグメント化し、その後、三次元骨格化アルゴリズムで分岐数、平均分岐長、世代深さなどの形態計測パラメータを定量化します。

代表的な結果は、提案されたモデルが高いセグメンテーション精度を達成し、転移学習構成が最良の性能をもたらすことを示しています。定量的な形態計測解析により、CDHは対照群に比べて血管複雑性が著しく低下しており、肺低形成の既知の病理的特徴と一致しています。

この自動化されたアプローチにより、CDHにおける肺血管形態の再現性、定量的かつ非侵襲的な評価が可能となります。この手法は他の画像診断モダリティにも応用でき、胎児および新生児の肺の発達研究にも応用できるため、トランスレーショナルリサーチや将来の臨床統合を促進します。

概要

先天性横隔膜ヘルニア(CDH)は、横隔膜欠損を特徴とする生命を脅かす先天性異常であり、腹部内臓が胸部1,2にヘルニアを形成します。この物理的な圧迫は肺の発達を著しく妨げ、その結果、肺低形成や持続性肺高血圧症(PPHN)を引き起こし、これらが罹患率や死亡率の主な要因となっています。肺低形成や血管未発達に加え、心臓発育障害や心室機能障害もCDH新生児の臨床転帰に有意に影響を与えることが示されています。基礎的な病態生理は、気道と肺血管床の両方の異常な発達を伴い、血管数の減少、小動脈の筋肉化の増加、結果として血管抵抗の増加を招く3,4。CDH患者のリスクを正確に階層化し、介入を導き、治療反応をモニタリングするためには、客観的かつ定量的なバイオマーカーが必要です5.この評価の重要な側面の一つは、肺血管の詳細な解析であり、これにより肺低形成の範囲や肺の機能的能力に関する洞察が得られます。特にコンピュータ断層撮影(CT)などの画像技術の進歩により、肺血管を詳細に可視化・定量化する能力が向上しました 6,7

出生後のコンピュータ断層撮影(CT)は肺の高解像度解剖学的詳細を提供しますが、複雑な肺血管樹の解析は依然として困難です。既存の血管分割法は、従来の画像処理技術に依存しており、手作業が大きく必要で、画像アーティファクトに弱く、CDH 7,8,9,10の深刻な解剖学的歪みに対しても堅牢でない場合があります。ディープラーニング、特にU-Netアーキテクチャのような畳み込みニューラルネットワーク(CNN)は、自動化された医療画像セグメンテーションにおいて顕著な成功を収めています。しかし、多くの既存のモデルは健康な被験者や他の疾患文脈で訓練されており、CDH10111213のような先天的異常に適用範囲が限定されています。

これらの進歩にもかかわらず、文献には依然として大きな空白が残っています。多くの研究は健康な個人や特定の肺疾患に焦点を当てており、CDH12のような先天的異常にはあまり注目されていません。さらに、ディープラーニングモデルは性能の向上を示しましたが、訓練には大量の注釈付きデータセットが必要になることが多く、CDHのような希少な条件では必ずしも利用可能とは限りません。さらに、既存のモデルはCDHによる重度の解剖学的歪みの存在下で、異なる種類の肺血管(例:動脈や静脈)を区別する課題に十分に対応していません。この制約は、CDH患者の肺血管を正確に区分・解析できるより堅牢なモデルを開発するためのさらなる研究の必要性を強調しています。

本研究は、肺血管をセグメント化し、CTスキャンから定量的な形態計測的特徴を抽出する完全自動化の深層学習フレームワークの開発と検証を通じて、これらのギャップを埋めることを目的としています。私たちのアプローチの重要な革新は、CDH患者と対照患者の統合データセットでモデルを訓練し、正常および病理的な血管パターンの両方を堅牢な表現で学習できるようにすることです。CT画像は電離放射線を含み、通常の縦断スクリーニングには適していませんが、本研究は重要な概念実証として機能します。本研究の主な目的は、血管構造の自動放射線定量が実現可能であり、CDH患者と対照群を確実に区別できることを確立することです。この分野での成功は、将来の臨床応用のために、この定量的枠組みを磁気共鳴画像法(MRI)などの放射線のない画像手法に適応させるための検証を提供します。

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

プロトコル

人間参加者を含むすべての手続きは、機関の人間研究倫理委員会のガイドラインに従って実施され、機関審査委員会(IRB #2017-6361)によって承認されました。本研究は適用される規制基準に準拠して実施されました。患者データは分析前に後ろから収集され、匿名化されました。開発されたシステムの概要は 図1に示されています。

1. 画像前処理

  1. 新生児患者の生CTスキャンをDICOM形式で作業環境に読み込みます。
    1. 医療画像解析ソフトを開き、新しいプロジェクトワークスペースを作成します。
    2. ファイル> DICOMシリーズ>インポートをクリックします。
    3. 新生児胸部CTスキャンのDICOM形式のフォルダに移動し、画像シリーズ全体を選択してください。
    4. シリーズ内のすべてのスライスが正しく検出され、取得メタデータ(例:インスタンス番号)に基づいて順序付けされているか確認してください。
    5. 画像の寸法、ボクセル間隔、スライス厚さをメタデータパネルで確認し、スキャン間の一貫性を確保します。
    6. シリーズをワークスペースに読み込み、軸方向、コロナ方向、矢状面の視界を目視で確認して、正しい向きと読み込み誤差の有無を確認します。
  2. オープンソースソフトウェアを使ってDICOMファイルをNIfTI形式に変換し、操作や解析を容易にします。
    1. 科学計算環境内の端末ウィンドウを開いてみましょう。
    2. cコマンドを使ってDICOMイメージシリーズを含むディレクトリに移動します。
    3. DICOMからNIfTIへの変換ツールは、以下のコマンド構造で実行します:dcm2niix -z y -f output_filename -o /output_directory /input_directory
    4. 圧縮.nii.gzファイルを生成するために、圧縮(-z y)が有効になっていることを確認してください。
    5. 出力ファイルが指定された出力ディレクトリで正常に生成されているか確認してください。
    6. 変換済みのNIfTIファイルを医療画像ビューアで開き、軸方向、冠状面、矢状面を目視的に検査して、正しい空間的向きと画像の整合性を確認します。
    7. 前処理前に、すべての被験者で一貫性を確保するためにボクセル間隔と画像寸法を確認してください。
  3. スキャナー固有のメタデータや標準式を用いて画像強度をハウンズフィールド単位(HU)に変換できます。
    1. 各スキャンの画像ヘッダーからDICOMメタデータパラメータ「 Rescale Slope 」と 「Rescale Intercept 」を抽出します。
    2. 各ボクセル強度値(I_raw)に対して、対応するハウンズフィールド単位(HU)を次の式で計算します:HU = (I_raw × Rescale Slope) + Rescale Intercept。
    3. 科学計算環境内で要素ごとの行列操作を用いて、3D画像全体のボリュームに変換を適用します。
    4. 空気領域が約−1000 HUであり、軟部組織領域が生理的範囲内にあることを確認することで正しい変換を確認しましょう。
    5. 変換したボリュームを新しいNIfTIファイルとして保存して元のデータを保持します。
  4. ウィンドウイングを塗って肺や軟部組織を強調します。 ウィンドウレベル(WL) を-400 HU、 ウィンドウ幅(WW) を1500 HUに設定してください。
    1. 変換されたNIfTIファイルを画像可視化ソフトで開いてください。
    2. 画像表示または明るさ設定パネルに移動します。
    3. ウィンドウ/レベル調整オプションを選択してください。
    4. ウィンドウ レベル(WL) 値を手動で-400ハウンズフィールドユニット(HU)に設定してください。
    5. ウィンドウ幅(WW)の値を1500 HUに設定してください。
    6. 確認して設定を適用して画像の可視化を更新してください。
    7. 肺実質および肺血管が骨や縦隔構造と明確に区別できることを確認し、その後さらに前処理に進みます。
  5. 三線補間を用いて、ボクセル寸法が均一であることを保証するために等方的再サンプリングを行います(例:1 mm × 1 mm× 1 mm)。
    1. NIfTI画像をPython環境に医療画像処理ライブラリで読み込みます。
    2. 画像ヘッダーのメタデータから元のボクセル間隔を抽出します。
    3. 目標の等方間隔を(1.0, 1.0, 1.0) mmと定義します。
    4. 新しい画像寸法は次の式で計算します:new_size = original_size ×(original_spacing / target_spacing)
    5. リサンプリングオブジェクトを初期化します。
    6. 補間法をトリリニア補間に設定します。
    7. ターゲットのボクセル間隔を割り当てます(1.0 mm × 1.0 mm × 1.0 mm)。
    8. 計算された新しい画像サイズを設定します。
    9. 元の画像の方向と元のメタデータを保持してください。
    10. リサンプリング操作を実行してください。
    11. リサンプリング画像はNIfTI形式で保存し、その後の前処理ステップに備えます。
    12. 進む前に画像ヘッダーの更新されたボクセル寸法を確認して等方間隔を確認してください。
  6. 造影制限適応直球図均等化(CLAHE)を適用して、コントラストを高め、血管構造の視認性を向上させます。
    1. 必要な画像処理ライブラリをPython環境にインポートします。
    2. 必要に応じてリサンプリングされた3D CTボリュームを8ビットグレースケール形式に変換し、線形強度正規化を用いて選択したHU範囲を0–255にマッピングします。
    3. CT体積を軸方向面でスライスごとに処理し、2DでCLAHEを適用します。
    4. CLAHEオブジェクトを初期化するには、 clipLimit = 2.0、 tileGridSize = (8, 8)
    5. 各軸方向スライスに対して、局所的なコントラストを高めるために CLAHE 関数を適用します。
    6. CLAHE適用後、処理済みのスライスを3Dボリュームに再構成します。
    7. コントラスト強化されたボリュームはNIfTI形式で保存し、その後のセグメンテーション用に保存してください。
    8. 進行前に、肺血管が周囲の実質と過度なノイズ増幅なしにより区別しやすいことを視覚的に確認してください。
  7. 事前処理済み画像の一部を視覚的に検査し、データセット全体の品質と一貫性を確保します。
    1. 全データセットの少なくとも10%を無作為に選び、手動の品質評価を行います。
    2. 選択した各処理済みボリュームを医療画像ビューアで開いてください。
    3. 軸方向、冠面、矢状面を点検して以下の点を確認しましょう:正しい空間的向き;切断アーティファクトの不在;ウィンドウパラメータの適切な適用;等方的再サンプリング(均一なボクセル間隔)に成功;CLAHE後の十分な造影強化。
    4. 肺血管が隣接する実質構造と過度なノイズ増幅なしに明確に区別できることを確認しましょう。
    5. 前処理画像と元のHU変換体積を比較し、前処理の工程で歪みや解剖学的不整合が生じていないか確認してください。
    6. 前処理の誤りがあれば記録し、必要に応じて影響を受けたケースに対して再処理を行います。

2. 手動注釈

  1. 手動注釈に用いる対照患者およびCDH患者の両方から代表的なCTスキャンのサブセットを選びます。解剖学的多様性のバランスを保つこと。
    1. 対照群およびCDHコホートの両方から対象となる全ての前処理CTスキャンを特定します。
    2. 重度の運動アーティファクトや肺の不完全なカバーがあるスキャンは除外してください。
    3. 各グループからあらかじめ決められた数のケースをランダムに選び、バランスの取れた代表を確保します。
    4. 肺容量、血管密度、縦隔シフトの重症度など、解剖学的多様性を示す症例を必ず含めてください。
    5. 選ばれたCDH症例が利用可能な場合、肺低形成の程度が異なることを確認する。
    6. 手動注釈を進める前に、選択したケース識別子を必ず記録してください。
  2. 前処理済みのNIfTI画像を3D医療画像注釈ツールに読み込みます。
    1. 3D医療画像注釈ソフトを開きます。
    2. 新しいプロジェクトやセグメンテーションセッションを作成しましょう。
    3. ファイル > 画像を開く (または同等のインポートオプション)」をクリックします。
    4. 前処理済みのNIfTIファイル(.niiまたは.nii.gz)を含むディレクトリに移動し、画像を選択してください。
    5. 軸方向、冠側、矢状面の画像の正しい向きを確認し、ロード成功を確認しましょう。
    6. 必要に応じて表示設定を調整して視覚化を最適化しましょう。
    7. 手動の血管注釈を保存するための新しいセグメンテーションラベルまたはマスクレイヤーを作成します。
    8. 手動注釈を始める前にプロジェクトファイルを保存してください。
  3. 軸方向、冠状、矢状面の各角度を用いて、関連する各スライスに血管構造を輪郭として描き、肺血管を手動で区画します。
    1. ステップ2.2で作成されたセグメンテーションラベルレイヤーを有効化してください。
    2. 注釈ソフト内で手動描画またはブラシツールを選択してください。
    3. 血管の直径に応じてブラシ サイズ を動的に調整し、境界の正確なトレースを確実にします。
    4. 軸方向の断片を主要な基準面として用い、動脈枝と静脈枝を含む見える肺血管構造を手動で輪郭を描きます。
    5. 気管支、気道壁、縦隔組織などの非血管構造は除外します。
    6. 肺全体をスライスごとにスクロールして、各血管枝の連続的な注釈を確保します。
    7. 各注釈領域を冠状および矢狀面の視点で相互検証し、解剖学的一貫性を確認し、不連続性を回避します。
    8. ノイズアーティファクトの過剰な分割を避けつつ、視覚的に識別可能な最小の枝まで血管を含みます。
    9. 定期的に分割の3Dプレビューをレンダリングし、維管束樹の空間的連続性を検証します。
    10. 完成したセグメンテーションマスクをNIfTI形式で保存してから、モデルトレーニングに進みます。
  4. 心臓、気管支、主要な非肺構造を除き、肺血管のみを注釈してください。
    1. 肝断面を主要な基準として肺実質内の肺動脈と静脈を特定します。
    2. 主要な肺動脈から始まり、肺野の遠位に伸びる実質内血管枝も含まれます。
    3. 心室、心房、心室、大血管は除外します。
    4. 気管支や気管支壁を含む気道構造は、形態や腔体特性に基づいて血管と区別して除外します。
    5. 縦隔軟組織、胸膜、胸壁構造へのラベル表示は避けてください。
    6. 多平面図(軸方向、冠状面、矢状面)を用いて、注釈付き構造が期待される血管の連続性と分岐パターンに従うことを確認する。
    7. 血管と気道の分化が不確かな場合は、ラベル付け前に隣接するスライス間の連続性を確認し、血管の軌跡を確認します。
    8. 分割体積の最終3Dレンダリングを行い、肺血管樹のみが含まれていることを確認します。
  5. 可能であれば、注釈中の曖昧な領域を検証するために臨床画像専門家に相談してください。
    1. コントラストが低い、解剖学的歪み、気管支や縦隔構造に近いため血管境界が不確かな領域を特定します。
    2. これらの領域は、一時的なラベルやコメントツールを使って注釈ソフト内でフラグ付けします。
    3. フラグ付けされた領域を臨床画像診断の専門家に提示してください。
    4. 軸方向、冠状面、矢状面の各ビューを同時に確認し、その構造が肺血管系を表しているかどうかを判断してください。
    5. 専門家の合意に基づいてセグメンテーションマスクを修正してください。
    6. 修正された領域があれば、グラウンドトゥルースマスクを最終決定する前に必ず記録してください。
  6. 少なくとも2人の独立したアノテーターが各セグメンテーションをレビューし、修正することで評価者間検証を行います。意見が合わない場合は、議論や仲裁を通じて合意に達しましょう。
    1. 選択したCTスキャンは、胸部画像解析の経験を持つ2名の独立したアノテーターに割り当てます。
    2. アノテーター同士が独立してセグメンテーションを行い、互いの結果を無視するようにしましょう。
    3. 独立した注釈が完了した後、定量的な重複指標(例:ダイス類似係数)を用いてセグメンテーションマスクを比較します。
    4. マスク間のボクセルの違いを計算して、意見の相違の領域を特定します。
    5. 軸面、冠状面、矢状面の不一致領域を同時に確認します。
    6. 構造化された議論を通じて合意形成。
    7. 意見の相違が続く場合は、最終決定を仲裁するために3人目のシニアレビュアーを招きましょう。
    8. コンセンサスセグメンテーションマスクはモデルトレーニングの最終的なグラウンドトゥルースラベルとして保存してください。
  7. 注釈付き血管マスクは元のCT画像と同じ解像度と空間で保存してください。NIfTI形式で一貫した命名規則で保存してください。
    1. 最終的なコンセンサス分割マスクは、血管ボクセルに値が1、背景ボクセルに値が割り当てられるバイナリラベルマップとして保存されていることを確認してください。
    2. セグメンテーションマスクが対応する前処理CT画像と同じボクセル間隔、画像寸法、原点、向きマトリックスを保持していることを確認します。
    3. アノテーションソフトウェアのエクスポート機能を使って、セグメンテーションマスクをNIfTI形式(.niiまたは.nii.gz)にエクスポートします。
    4. 以下の構造で一貫した命名規則を用いてください:SubjectID_Group_VesselMask.nii.gz;(例:CDH_012_VesselMask.nii.gz)。
    5. ペアリングの一貫性を維持するために、画像データセットと並列にマスキングを専用ディレクトリに保存します。
    6. モデルトレーニング前に、CT画像と対応するマスクの両方を再ロードして完全な空間整合を確認し、最終検証を行います。
  8. これらの手動でラベル付けされたセグメンテーションをモデルのトレーニングと評価の基底として活用してください。

3. モデルトレーニングと検証

  1. データセットをトレーニング、検証、テストセットの3つのサブセットに整理します。本研究では、35件の対照症例と20件のCDH症例をトレーニングに、5件の対照症例と10件のCDH症例を検証に使い、残りは独立した検査のために保留します。
    1. すべての前処理されたCT画像と対応するコンセンサス血管マスクを単一のデータセットにまとめます。
    2. 患者レベルでデータセット分割を行い、サブセット間のデータ漏洩を防ぎます。
    3. トレーニングセットにランダムに35件の対照症例と20件のCDHケースを割り当てます。
    4. 検証セットにランダムに5つの対照ケースと10のCDHケースを割り当てます。
    5. 残りのすべてのケースを、モデルトレーニングやハイパーパラメータチューニング中にアクセスされない独立したホールドアウトテストセットに割り当てます。
    6. 分割プロセス中、各CT画像と対応する分割マスクがペアに保たれていることを確認しましょう。
    7. 各サブセットのクラス分布を検証し、コントロールケースとCDHケースの両方の表現を維持します。
    8. 再現性を確保するために、最終的な主題識別子の割り当てを記録してください。
  2. トレーニング中のニューラルネットワーク収束を改善するために、0から1の間のすべての画像の強度値を正規化します。
    1. 各CTボリュームに対して、まず強度値をあらかじめ定義されたHounsfield Unit範囲に制限し、極端な外れ値を削除します。
    2. 強度クリッピングを適用し、−1000 HU未満の値は−1000 HU、500 HUを超える値は500 HUに設定します。
    3. 各体積ごとに以下の変換を用いて独立してmin–max正規化を行います:正規化値=(I − I_min) / (I_max− I_min)、ここでI_minとI_maxは体積のクリップされた最小・最大強度値に対応します。
    4. 計算環境内で要素ごとの演算を用いて、3D全体の体積に正規化を適用します。
    5. データをニューラルネットワークに入力する前に、すべてのボクセル強度が[0, 1]の範囲内であることを確認しましょう。
    6. 各画像ごとに正規化パラメータを独立して導き出し、訓練、検証、テストセット間の情報漏洩を防ぎます。
  3. PyTorchやTensorFlowなどのディープラーニングフレームワークを用いてU-Net畳み込みニューラルネットワークアーキテクチャを実装します。
    1. ディープラーニング開発環境で新しいプロジェクトを作成し、再現性のために固定されたランダムシードを設定します。
    2. エンコーダ-デコーダ構造と接続スキップを用いたバイナリセグメンテーション用の2D U-Netアーキテクチャ(図2)を定義します。
    3. モデル入力を単一チャネルCTスライス(グレースケール)として設定し、モデル出力を血管尤度を表す単一チャネル確率マップとして設定します。
    4. 最終層をシグモイド活性化関数で[0, 1]の範囲の値を生成するように設定します。
    5. 二値分割(例:二項クロスエントロピー)の損失関数を定義し、最適化器を初期化します。
    6. バッチサイズ、エポック数、学習率などのトレーニングハイパーパラメータを指定し、これらの値を記録して報告します。
    7. トレーニングおよび検証データセットを一貫したシャッフルとバッチングでモデルに入力するデータローダーを準備します。
    8. 再現性のためにモデル定義とハイパーパラメータ構成の完全なデータを保存してください。
  4. モデルをエンコーダ-デコーダ構造で構成し、スキップ接続やバッチ正規化レイヤーを取り入れてセグメンテーションの精度を向上させます。
    1. 繰り返し畳み込みブロックからなるエンコーダを定義します。各ブロックには以下が含まれていることを確認してください:
      2つの連続した2次元畳み込み層(核サイズ3 × 3、パディング=1)
      各畳み込みの後にバッチ正規化が適用されます
      整流リニアユニット(ReLU)の活性化
    2. 各エンコーダブロックの後に2×2の最大プーリングを2のストライドで適用し、空間分解能を徐々に下げます。
    3. 各ダウンサンプリングステップ後に特徴チャンネル数を2倍にします。
    4. アップサンプリングのために転置畳み込み(2 × 2 カーネル、ストライド 2)を用いてデコーダを定義します。
    5. 対応するエンコーダ層からデコーダ層への特徴マップをスキップ接続を介して連結し、空間情報を保持します。
    6. 各連結ステップの後にバッチ正規化とReLU活性化を施した2つの畳み込み層を適用します。
    7. 最後に1×1畳み込みレイヤーを使って特徴をシングルチャンネル出力にマッピングします。
    8. グモイド活性化 関数を適用して、血管断片のためのボクセルごとの確率マップを作成します。
  5. モデルの3つの構成を訓練します:
    1. ベースラインモデル(ゼロからのトレーニング)
      1. U-Netの重みをランダムに初期化します(例:Heの初期化)。
      2. 手動注釈付き動脈静脈データセットのみを入力として使用してください。
      3. 入力画像を512ピクセル×512ピクセルにリサイズします。
      4. 強度値を範囲[0,1]に正規化します。
      5. バッチサイズを8(またはGPUメモリで許容される最大値)に設定してください。
      6. 学習率=1 × 10⁻4のAdamオプティマイザーを使います。
      7. バイナリークロスエントロピー(二分割)またはクロスエントロピーロス(動脈静脈分類)を用いてください。
      8. 30エポックの訓練を続けてください。
      9. 各エポック後に検証損失を監視します。
      10. 最も低い検証損失に対応するモデルの重みを保存します。
      11. PyTorchでは、手順3.5.1.13–3.5.1.1.14に従ってください。
      12. 最適化器を定義してください:torch.optim.Adam(model.parameters(), lr=1e-4)
      13. 損失の定義は以下の通りです:torch.nn.BCEithLogitsLoss() または torch.nn.CrossEntropyLoss()
      14. トレーニング中はmodel.train()、検証時にはmodel.eval()を使いましょう。
    2. セグメント入力モデル(補助血管マスク入力)
      1. 入力層を2つのチャンネルを受け入れるように変更します:
        チャンネル1:CT画像
        チャンネル2:二元血管断片マスク
      2. CT画像と容器マスクをチャネル次元に沿って連結し、ネットワークに入力します。
      3. アーキテクチャはベースラインモデルと同じに保ちましょう。
      4. ステップ3.5.1と同じオプティマイザー、学習率、バッチサイズ、エポック番号を使いましょう。
      5. 検証のF1スコアに基づいて最もパフォーマンスの良い重みを保存してください。
    3. 転移学習モデル(事前学習済み初期化)
      1. 進捗報告に記載されている一般的な船舶セグメンテーションデータセットで学習された事前学習済みのU-Net重みをロードします。
      2. エンコーダ層を最初の5エポック(オプションの安定化ステップ)凍結します。
      3. すべての層を解凍し、残りの時代のために微調整を続けてください。
      4. 微調整時には学習率を低減=5×10⁻5 を使いましょう。
      5. 合計30エポックのトレーニングを続けます。
      6. トレーニング中に水平反転をデータ補強として適用してください。
      7. 最も高い検証F1スコアのモデルを保存します。
  6. バイナリクロスエントロピー損失とアダム最適化器を使い、初期学習率は0.001です。検証損失が停滞した場合は学習率を適応的に下げてください。
    1. 損失関数の定義
      1. 二元血管断片には、ロジットを用いた二元クロスエントロピー損失を用いてください。
      2. PyTorchでは、criterion = torch.nn.BCEithLogitsLoss()
      3. 多クラス動脈静脈分類を行う場合は、criterion = torch.nn.CrossEntropyLoss()
    2. 最適化器の定義
      1. 初期学習率0.001のAdamオプティマイザーを使いましょう。
      2. PyTorchでは:optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
    3. 適応学習率の低下を可能にする
      1. 検証損失が改善しなくなった場合に学習率を下げる学習率スケジューラーを導入しましょう。
      2. ReduceLROnPlateauスケジューラーを使いましょう。
      3. PyTorchでは:スケジューラー=torch.optim.lr_scheduler。ReduceLROnPlateau(
        最適化者、
        mode='min',
        係数=0.5、
        忍耐=5、
        verbose=真
        )
      4. 各検証フェーズ終了後、scheduler.step(validation_loss)を呼び出します。
    4. トレーニングループの設定。
      1. 各時代ごとに、ステップ3.6.4.2–3.6.4.7を踏みます。
      2. モデルをトレーニングモードに設定:model.train()
      3. 前方パスを行え。
      4. 計算損失。
      5. バックプロパゲート:loss.backward()
      6. 更新重み:optimizer.step()
      7. 次の反復までの勾配ゼロ:optimizer.zero_grad()
      8. トレーニングフェーズ終了後、model.eval()を使って評価モードに切り替え、検証損失を計算します。
    5. 早めの停止(任意ですが推奨)
      1. 検証損失が10回連続で改善しない場合は、過学習防止のためにトレーニングを中断してください。
  7. ランダム回転、反転、弾性変形などのデータ増強技術を適用し、堅牢性を高め過学習を軽減します。
    1. 拡張パイプラインの定義
      1. 拡張はトレーニングデータセットにのみ適用してください。
      2. CT画像と対応するセグメンテーションマスクの両方に同一の空間変換を適用します。
    2. ランダムなローテーション。
      1. -15°から+15°の間でランダムな面内回転を適用します。
      2. PyTorch(トーチビジョンまたはアルブエンテーションを使用):RandomRotation(degrees=15)
    3. 水平と垂直のフリップ。
      1. 確率p = 0.5で水平反転を適用します。
      2. 解剖学的に許容される場合、p = 0.5の確率で垂直反転を適用します。
    4. 弾性変形。
      1. 弾性変換を適用して解剖学的変動をシミュレートします。
      2. 非現実的な歪みを避けるために小さな変形パラメータを用いてください。
    5. 実装例(PyTorch + アルブメンテーション)
      1. トレーニング前にトランスフォーメーションパイプラインを定義する:
        transform = A。Compose([
        A.回転(limit=15, p=0.5),
        A.HorizontalFlip(p=0.5),
        A.ElasticTransform(alpha=1, sigma=50, alpha_affine=10, p=0.3)
        ])
      2. 画像とマスクの同期変換を確保するために、データセット内の変換を__getitem__()メソッド内で適用します。
    6. 検証およびテストセット
      1. 検証やテストデータセットには拡張を適用しないでください。
      2. これらのセットには正規化とリサイズのみを使います。
    7. 品質管理。
      1. 訓練前に増強サンプルを目視で確認し、解剖学的な妥当性を確認してください。
      2. マスクが変換された画像と一致しているか確認してください。
  8. モデルを一定数のエポックまたは収束まで訓練し、各エポック後に検証セットのパフォーマンスを監視します。
    1. 訓練期間の定義
      1. 最大訓練エポック数を30に設定してください。
      2. あるいは、収束基準を満たすまで訓練を継続することも可能です(下記の早期停止を参照)。
    2. トレーニングループ
      1. 各エポックについて、ステップ3.8.2.2–3.8.2.10に従ってください:
      2. モデルをトレーニングモードに設定します:model.train()
      3. トレーニングセット内のすべてのミニバッチを反復します。
      4. CT画像と対応するマスクのバッチを読み込め。
      5. 前方パスを行え。
      6. 定義された損失関数を用いて損失を計算します。
      7. 逆伝播の勾配:loss.backward()
      8. モデルの重みを更新:optimizer.step()
      9. 次のバッチ前に勾配をリセットする:optimizer.zero_grad()
      10. エポックの平均トレーニング損失を計算します。
    3. 検証ステップ(各エポック後)
      1. モデルを評価モードに切り替える: model.eval()
      2. 勾配計算を無効にする:torch.no_grad():
      3. 検証データセットを反復分析します。
      4. 前方パスを行え。
      5. 検証損失を計算します。
      6. パフォーマンス指標(F1スコア、精度、感度、DICEスコア)を計算します。
      7. 検証損失と指標を記録します。
    4. 学習率調整
      1. 検証ステップ後にスケジューラーを更新:scheduler.step(validation_loss)
    5. 収束基準
      1. 検証喪失が10回連続で改善しない場合(早期停止)、またはパフォーマンス指標が停滞した場合はトレーニングを停止します。
    6. モデルチェックポイント
      1. 検証F1スコアが改善するたびにモデルの重みを保存してください。
      2. テストセットの最終評価のために最も性能の良いモデルを保持します。
    7. 伐採
      1. エポックごとのトレーニングおよび検証損失値を保存します。
      2. 収束挙動を検証するために学習曲線(損失と時代)をプロットします。
  9. 検証データセットで最も高いF1スコアに基づいて、最も性能を発揮するモデルを選択します。
    1. 検証指標トラッキング
      1. 各エポック終了後、検証データセットのF1スコアを計算します。
      2. F1スコアと対応するエポック番号を一緒に保存します。
    2. モデル比較
      1. すべての時代における検証F1スコアを比較してください。
      2. 最も高い検証F1スコアを獲得したエポックを特定してください。
    3. モデルチェックポイント
      1. トレーニング中は、検証F1スコアが改善するたびにモデルの重みを保存してください。
    4. 最終モデル選定
      1. トレーニング終了後、検証F1の最高スコアに対応する重みを読み込みます。
        model.load_state_dict(torch.load("best_model.pth"))
    5. 独立試験
      1. 選択されたモデルは独立したテストデータセット上で一度だけ評価してください。
      2. モデル選択にテストセットのパフォーマンスは使わないでください。
    6. 再現性
      1. 選択したエポック番号と対応する検証指標を記録します。
      2. 再現性を確保するためにランダムシードを修正しましょう。
  10. 訓練済みのモデルの重みや構成は、下流のセグメンテーションタスクのために保存してください。

4. セグメンテーションと骨格化

  1. 訓練済みのU-Netモデルを読み込み、独立テストセット内の前処理CTスキャンに適用します。
  2. 各スキャンに対して、モデルの確率的出力に閾値を適用して肺血管の二分割マスクを生成します。
  3. 特にCDHによる歪みの影響を受けた領域において、解剖学的な妥当性を確認するために、分断結果を目視で確認してください。
  4. セグメント化された3Dバイナリマスクを、ソフトウェアで実装された3D薄化アルゴリズムを用いてスケルトン化された表現に変換します。
  5. 血管骨格に幅優先探索アルゴリズムを用いてラベル付けし、肺幹を根ノードと指定し、接続性に基づいて各枝に世代レベルを割り当てます。
  6. ノイズやセグメンテーションエラーによる可能性のある小さく断絶された成分や誤った枝を除去し、最小ボクセルサイズまたは枝長の閾値を用います。
  7. スケルトン化された構造は、3Dメッシュまたはグラフ互換フォーマット(例:VTKやSWC)で保存し、さらなる形態計測解析に用いてください。

5. 形態計測的特徴抽出

  1. セグメント化されたCT画像から生成された骨格化された血管グラフを読み込みます。
  2. 分岐点と終端ノード間のグラフ構造を走査して、すべての個々の枝を特定します。
  3. 血管グラフ内で識別されたすべてのセグメントを合計して枝の総数を計算します。
  4. 骨格に沿って連結されたボクセル間のユークリッド距離を合計して各枝の長さを計算します。
  5. 各被験者の骨格内のすべての枝の長さを平均して平均的な枝長を算出します。
  6. 各枝に、主肺動脈から第0世代として、各分岐点で1ずつ増やすように、幅優先通過法を用いて割り当てます。
  7. ルートノードから任意の終端枝までの最長経路を特定することで、最長の遠位世代数を計算します。
  8. 周辺の枝から根までの最長経路を特定することで、近接世代の最大数を計算します。
  9. すべての形態計測的特徴を、主題識別子、診断グループ、抽出した指標とともに構造化されたスプレッドシートまたはデータベース形式(例:CSVやSQL)に保存します。
  10. 骨格グラフの一部と対応する形態計測的特徴を視覚的に検査し、正確性と生物学的妥当性を確認します。

6. 分類分析

  1. 形態計測的特徴(例:総枝数、平均枝長、遠位および近位生成深度)および対応する診断ラベル(CDHまたは対照)を含む構造化されたデータセットをインポートします。
  2. クラス分布を維持するために、階層化サンプリングを使ってデータセットをトレーニングセットとテストセットに分割します。
  3. 標準的な機械学習ライブラリを使ってランダムフォレストおよび決定木分類器を実装します。
  4. 推定量の数(例:ランダムフォレストでは100木)や最大深度などのモデルパラメータをクロス検証性能に基づいて設定します。
  5. 各分類器はデータの訓練部分集合を使って訓練します。
  6. ホールドアウトテストセットの分類性能を、精度を主要な指標として評価します。
  7. CDH検出の真陽性、真陰性、偽陽性、偽陰性率を評価するための混乱行列を生成する。
  8. ランダムフォレスト分類器と決定木分類器の性能を比較し、代表的な結果を報告するために最も高い精度を持つモデルを選びます。
  9. 分類結果は棒グラフ、ROC曲線、または該当する場合は決定木を用いて可視化し、出力を図に含めるために保存してください。
  10. すべてのモデルパラメータ、パフォーマンス指標、データに適用された前処理を記録し、再現性を確保しましょう。

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

結果

転移学習で訓練された深層学習モデルは、すべての構成の中で最高のセグメンテーション性能を達成し、独立テストセット上で精度0.714、感度0.706、F1スコア0.672を記録しました。ベースラインモデルはゼロから訓練したもので性能が低下しました(精度:0.703、感度:0.589、F1スコア:0.551)一方、セグメンテーション入力モデルは中程度の性能(F1スコア:0.630)でした。

分割後の形態計測解析により、CDH患者は対照群と比較して血管複雑性が有意に減少していることが示されました(表1)。具体的には、CDH患者の平均血管枝数は対照群(2596.33 ± 984.45)よりも少なく(949.60 ± 639.78)、平均枝長もCDH群で短く(10.91 ± 2.46 mm)、対照群(13.94 ± 2.76 mm)と比べて短かった。遠位発生数はCDHで顕著に減少しており(31.27 ± 16.14)、対照群(83.83 ± 36.62)と比べて、近位生成数も同様に減少しました...

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

ディスカッション

このプロトコルのいくつかのステップは、正確かつ再現性の高い結果を得るために重要です。画像前処理段階は慎重に実行され、特にハウンズフィールドユニットへの変換とウィンドウイング(WL = -400 HU、WW = 1500 HU)の適用が行われます。これらのパラメータは血管構造の可視性を決定します 14,15,16,17。スケルトン化はまた、形態計測測定を歪める可能性のある誤った枝や切り離された成分を避けるために、正確なパラメータ調整も必要です。手動注釈はスケールには制限がありますが、モデルトレーニングの高品質なグラウンドトゥルースを確保するためには、複数の専門家による一貫性と検証が必要です。

<...

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

開示事項

著者たちは財務開示を申告する必要はない。

謝辞

エムラ・アイディンはトルコ科学技術研究評議会(TÜBİTAK)2219 トルコ市民向け国際ポスドク研究フェローシッププログラム(1059B191501313)の支援を受けました。アスリギュル・アクサンとムスタファ・エクレム・エルカンは、トルコ科学技術研究評議会(TÜBİTAK) 2209-A - 学部生向け研究プロジェクト支援プログラムの支援を受けました。

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

材料

この記事で使用された材料の一覧
名前会社カタログ番号コメント
分析12.0アナライズダイレクトhttps://analyzedirect.com/CT画像のレビュー、編集、測定に使用されます
CTスキャンデータ(出生後の胸部スキャン)機関アーカイブ該当なしCDHおよび対照新生児の回顧データセット
DCM2NIIXオープンソース(GitHub)https://github.com/rordenlab/dcm2niixDICOMをNIfTI形式に変換
イッカパチッオープンソース(http://www.itksnap.org)http://www.itksnap.org3D医療画像注釈ツール
NetworkXオープンソースhttps://networkx.orgグラフベースの血管木解析に使用
OpenCV(CLAHE関数)オープンソースhttps://opencv.org画像コントラスト強調に使用
パンダス、ナンピーオープンソースhttps://pandas.pydata.org、https://numpy.orgデータ管理と数値操作
Python 3.8+Pythonソフトウェア財団https://www.python.org解析およびモデル開発のためのプログラミング言語
PyTorch 1.13+メタAIhttps://pytorch.orgU-Net実装のためのディープラーニングフレームワーク
シキットイメージオープンソースhttps://scikit-image.orgスケルトン化に使用される画像処理ライブラリ
Scikit-learn(シキット学習)オープンソースhttps://scikit-learn.org分類のための機械学習ライブラリ
Ubuntu 20.04 LTS正典https://ubuntu.comすべての処理で使用されるオペレーティングシステム
NVIDIA RTX 3090 GPU搭載ワークステーションNVIDIAhttps://www.nvidia.comディープラーニングモデルの訓練に必要です

参考文献

  1. Keijzer, R., et al. Dual-hit hypothesis explains pulmonary hypoplasia in the nitrofen model of congenital diaphragmatic hernia. Am J Pathol. 156 (4), 1299-1306 (2000).
  2. Aydin, E., et al. The survivorship bias in congenital diaphragmatic hernia. Children. 9 (2), 218(2022).
  3. Harting, M. T. Congenital diaphragmatic hernia-associated pulmonary hypertension. Semin Pediatr Surg. 26 (3), 147-153 (2017).
  4. Kool, H., et al. Pulmonary vascular development goes awry in congenital lung abnormalities. Birth Defects Res C Embryo Today. 102 (4), 343-358 (2014).
  5. Leeuwen, L., Fitzgerald, D. A. Congenital diaphragmatic hernia. J Paediatr Child Health. 50 (9), 667-673 (2014).
  6. Aydin, E., et al. Optimization of pulmonary vasculature tridimensional phenotyping in the rat fetus. Sci Rep. 9 (1), 1244(2019).
  7. Aydin, E., et al. Pulmonary vasculature development in congenital diaphragmatic hernia: a novel automated quantitative imaging analysis. Pediatr Surg Int. 40 (1), 1244(2024).
  8. Memon, N. A., Mirza, A. M., Gilani, S. A. M. Segmentation of lungs from CT scan images for early diagnosis of lung cancer. World Acad Sci Eng Technol. 20, 1050-1055 (2008).
  9. Fetita, C., Brillet, P. Y., Preteux, F. J. Morpho-geometrical approach for 3D segmentation of pulmonary vascular tree in multi-slice CT. Proceedings of SPIE - The International Society for Optical Engineering. , (2009).
  10. Orkisz, M., et al. Segmentation of the pulmonary vascular trees in 3D CT images using variational region-growing. IRBM. 35 (1), 11-19 (2014).
  11. Fabijanska, A. Segmentation of pulmonary vascular tree from 3D CT thorax scans. Biocybern Biomed Eng. 35 (2), 106-119 (2015).
  12. Zhai, Z., Staring, M., Stoel, B. C. Lung vessel segmentation in CT images using graph-cuts. , SPIE Medical Imaging. San Diego, California, United States. (2016).
  13. Khanna, A., Londhe, N. D., Gupta, S. Detection of pulmonary vessels in 3D lung CT using improved graph cut. 2018 5th International Conference on Signal Processing and Integrated Networks (SPIN), Noida, India, , (1109).
  14. DenOtter, T. D., Schubert, J. Hounsfield Unit. , StatPearls Publishing. Treasure Island, FL. (2023).
  15. Detection and classification of brain hemorrhage based on Hounsfield values and convolution neural network technique. Phan, A. C., Nguyen, T. M. N., Phan, T. C. 2019 IEEE-RIVF International Conference on Computing and Communication Technologies (RIVF), Danang, Vietnam, , (2019).
  16. Xue, Z., et al. Window classification of brain CT images in biomedical articles. AMIA Annu Symp Proc. 2012, 1023-1029 (2012).
  17. Contrast-limited adaptive histogram equalization: speed and effectiveness. Pizer, S. M., et al. Proceedings of the First Conference on Visualization in Biomedical Computing, Atlanta, GA, USA, , (1990).
  18. Moccia, S., De Momi, E., El Hadji, S., Mattos, L. S. Blood vessel segmentation algorithms – Review of methods, datasets and evaluation metrics. Comput Methods Programs Biomed. 158, 71-91 (2018).

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

再版と許可

タグ

U Net
動画は近日公開