CASE 02活性の予測

画像からウイルス活性を
数値で予測するモデルの開発

画像データから、ウイルス活性の強さを数値として予測する深層学習モデルを開発しました。事前学習済みのCNNを活用し、ネットワークや学習条件を設定ファイルで切り替えながら比較検討できる学習・推論の仕組みを構築しています。

CLIENT
微生物系研究室
SCOPE
予測モデルの学習・推論機能の実装
ENVIRONMENT
スーパーコンピューター(ジョブ投入)/GPU
TECHNOLOGY
  • Python
  • PyTorch
  • torchvision
  • scikit-learn
  • TensorBoard

研究で求められたこと

画像と活性値の組からなる研究データをもとに、画像から活性の強さを推定するモデルが必要でした。どのネットワークや学習条件が適しているかは、実際に学習して比べてみなければわかりません。

  • 活性の強さを数値で予測する「活性あり・なし」の分類ではなく、連続した値としての活性を推定する回帰モデルが求められました。
  • 限られたデータで精度を出す研究で得られる画像の数には限りがあるため、少ないデータでも学習しやすい方法が必要でした。
  • 多くの条件を試して比べるネットワーク、損失関数、最適化手法などの組み合わせを効率よく試し、結果を比較できることが重要でした。

処理の全体像

画像と活性値のデータを学習・検証・テストに分け、事前学習済みのCNNを回帰用に調整して学習します。学習の推移と評価指標を記録し、学習済みモデルでテストデータの予測値を出力します。

ウイルス活性予測モデルの仕組み活性値ラベル付きの画像データを、事前学習済みCNN(GoogLeNet・ResNet101・SE-ResNet101)に入力し、出力層を回帰用に置き換えて活性の強さを連続値で予測する。設定ファイルごとの学習条件を一括で学習・評価し、損失の推移とMAE・RMSE・R²などの指標を比較する。01 INPUT02 TRANSFER LEARNING03 OUTPUT04 CONDITIONS05 EVALUATION画像データ活性値ラベル付きGoogLeNet / ResNet101 / SE-ResNet101事前学習済みの重みを活用出力層を置き換え分類 → 回帰(1出力)活性の強さを数値で予測弱強連続値として出力し、CSVに保存A ResNet101 · MSEB GoogLeNet · L1C SE-ResNet · Huber一括で学習・評価スパコンへのジョブ投入損失エポック →ABCエポックごとの評価指標MAERMSER²調整済みR²AIC誤差率
FIGURE事前学習済みCNNの出力層を回帰用に置き換えて活性値を予測。設定ファイルごとの学習条件をまとめて実行し、指標の推移を比較できます。

INPUT

  • 画像データ
  • 活性値の教師データ画像ごとの活性の強さ
  • 学習条件YAML形式の設定ファイル

PROCESS

  1. データの分割学習・検証・テストに比率を指定して分割
  2. モデルの構築事前学習済みCNNの出力を回帰用に変更
  3. 学習設定した損失関数・最適化手法で学習
  4. 評価エポックごとに検証データで指標を算出
  5. 推論学習済みモデルでテストデータを予測

OUTPUT

  • 学習済みモデル
  • 評価指標の推移CSV・グラフ・TensorBoard
  • テストデータの予測結果CSV形式

開発のポイント

学習条件ごとに設定ファイルを用意すれば、まとめて学習・評価できる構成にしました。研究者が条件の比較に集中できることを重視しています。

POINT 01

事前学習済みCNNによる転移学習

大規模な画像データで事前学習したGoogLeNet・ResNet101・SE-ResNet101から選んで使えます。出力層を活性値の回帰用に置き換えることで、限られたデータでも学習を進めやすくしました。

  • 転移学習
  • GoogLeNet
  • ResNet101
  • SE-ResNet101

POINT 02

学習条件を名前の指定だけで切り替え

損失関数・最適化手法・学習率スケジューラは、PyTorchが提供するものから名前を指定するだけで切り替えられます。主な手法のパラメータも設定ファイルにまとめ、コードを変えずに条件を変更できます。

  • PyTorch
  • YAML

POINT 03

回帰モデル向けの多面的な評価

MAE・RMSE・決定係数(R²)・自由度調整済みR²・AICなど、回帰の評価指標をエポックごとに算出します。誤差率を表す指標も加え、活性値の大小に左右されにくい評価もできるようにしました。

  • scikit-learn
  • 評価指標

POINT 04

複数条件の一括実行と学習の可視化

条件ごとの設定ファイルをまとめて学習・テストできます。学習の推移はCSV・グラフ・TensorBoardで確認でき、スーパーコンピューターへのジョブ投入用スクリプトも用意しました。活性値を対数に変換して学習するオプションにも対応しています。

  • TensorBoard
  • Matplotlib
  • ジョブスケジューラ

技術構成

GPUとCPUのどちらでも動作し、スーパーコンピューターではメモリ量とスレッド数を指定して実行できます。

区分技術用途
深層学習PyTorch/torchvision事前学習済みCNNの転移学習・推論
画像処理OpenCV画像の読み込み・リサイズ
評価scikit-learn/NumPy回帰の評価指標の算出
可視化TensorBoard/Matplotlib損失と評価指標の推移の確認
設定管理YAMLネットワーク・学習条件・データ分割の管理
実行環境ジョブスケジューラスーパーコンピューターへの学習・テストジョブの投入

実現したこと

  • 画像から活性値を推定研究データの画像をもとに、ウイルス活性の強さを数値として予測できるようになりました。
  • 条件の比較が容易にネットワークや学習条件を設定ファイルで切り替え、複数の条件をまとめて学習・評価できます。
  • 結果を多面的に検証複数の評価指標と学習の推移を記録し、モデルの性能を多角的に確認できます。

研究テーマに合った開発方法を、
一緒に検討します

扱うデータや研究目的に応じて、必要なモデルとシステムをご提案します。検討中のテーマや実装したい機能からご相談ください。

研究開発について相談する