X線画像から肺炎を検出するためのディープラーニング
X線画像から肺炎を検出するためのエンドツーエンドのパイプライン
ペイウォールの後ろに立ち往生? 私の友人のリンクで完全な物語を読むにはここをクリック!
肺炎のリスクは、特に何十億ものエネルギー貧困に直面し、汚染された形のエネルギーに依存している発展途上国では、多くの人にとって計り知れ WHOは、肺炎を含む家庭の大気汚染関連疾患から毎年400万人以上の早期死亡が発生すると推定しています。 150万人以上の人々は、特に5歳未満の子供たちに毎年肺炎に感染します。 このような地域では、医療資源や人員の不足のために問題がさらに悪化する可能性があります。 例えば、アフリカの57カ国では、2.3万人の医師と看護師のギャップが存在します。 これらの集団にとって、正確で迅速な診断はすべてを意味します。 それは処置への時機を得たアクセスを保証し、既に貧困を経験しているそれらのための大いに必要な時間そしてお金を救うことができます。このプロジェクトは、Kaggleで開催された胸部X線画像(肺炎)の一部です。
胸部X線画像を見ることによって、患者が肺炎に苦しんでいるかどうかを自動的に識別するアルゴリズムを構築します。 人々の生活が危機に瀕しているので、アルゴリズムは非常に正確でなければなりませんでした。
- scikit-learn
- keras
- numpy
- pandas
- matplotlib
data
データセットはkaggleのウェブサイトからダウンロードできます。
コードはどこにありますか?
あまり騒ぎがなければ、コードを始めましょう。 Github上の完全なプロジェクトはここにあります。
すべてのライブラリと依存関係をロードすることから始めましょう。
次に、私はいくつかの正常な肺炎の画像を表示して、肉眼とどのくらい違うかを見てみました。 まああまりない!div>
次に、データセットを3つのセットに分割しました-train、validation、およびtestセット。
次に、データの増強を行い、トレーニングとテストセットの画像をネットワークに供給する関数を書 また、私は画像のラベルを作成しました。
データ増強の練習は、トレーニングセットのサイズを増やす効果的な方法です。 トレーニング例を強化することで、ネットワークはトレーニング中に、より多様ではあるが代表的なデータポイントを”見る”ことができます。
その後、私はいくつかのデータジェネレータを定義しました:1つはトレーニングデータ用で、もう1つは検証データ用です。 データジェネレータは、ソースフォルダから必要な量のデータ(画像のミニバッチ)を直接ロードし、それらをトレーニングデータ(モデルに供給される)およびトレーニン私の実験では、通常、batch_size = 64
を設定します。 一般に、32と128の間の値はうまくいくはずです。 通常、計算リソースとモデルの性能に応じてバッチサイズを増減する必要があります。その後、後で使用するためにいくつかの定数を定義しました。
その後、私は
次のステップは、モデルを構築することでした。 これは、以下の5つのステップで説明できます。
- 畳み込み層、最大プーリング、バッチ正規化で構成される5つの畳み込みブロックを使用しました。その上に私はフラット層を使用し、4つの完全に接続された層によってそれに続いた。また、私はオーバーフィッティングを減らすためにドロップアウトを使用しています。
- 活性化関数は、これがバイナリ分類問題であるため、シグモイドであった最後の層を除いて、全体にわたってReluでした。私はadamをオプティマイザとして使用し、クロスエントロピーを損失として使用しました。
モデルを訓練する前に、一つ以上のコールバックを定義するのに便利です。 かなり便利なものは、ModelCheckpoint
EarlyStopping
です。
- ModelCheckpoint:トレーニングが良い結果を達成するために多くの時間を必要とする場合、多くの反復が必要です。 この場合、指標を改善するエポックが終了した場合にのみ、最もパフォーマンスの高いモデルのコピーを保存することをお勧めします。
- EarlyStopping:トレーニング中に、一般化ギャップ(つまり、トレーニングと検証エラーの差)が減少するのではなく増加し始めることがあります。 これは、多くの方法(モデル容量の削減、トレーニングデータの増加、データの増加、正則化、ドロップアウトなど)で解決できるオーバーフィットの症状です。 多くの場合、実用的で効率的な解決策は、一般化のギャップが悪化しているときに訓練を停止することです。