ホーム » MONAI » MONAI 0.7 : tutorials : モジュール – 公開データセットと新しいデータセットのクイックスタート

MONAI 0.7 : tutorials : モジュール – 公開データセットと新しいデータセットのクイックスタート

MONAI 0.7 : tutorials : モジュール – 公開データセットと新しいデータセットのクイックスタート (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 11/05/2021 (0.7.0)

* 本ページは、MONAI の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

 

MONAI 0.7 : tutorials : モジュール – 公開データセットと新しいデータセットのクイックスタート

このノートブックは MedNISTDataset と DecathlonDataset に基づいた訓練ワークフローを素早くセットアップする方法と、新しいデータセットを作成する方法を示します。

このチュートリアルでは、MONAI 公開データセットでワークフローを素早くセットアップする方法と新しいデータセットを追加する方法を紹介します。現在、MONAI は MedNISTDataset と DecathlonDataset を提供していて、MedNIST と Decathlon データセットを自動的にダウンロードして抽出し、そして訓練/検証/テストデータを生成する PyTorch データセットとして機能します。

このチュートリアルでは以下のトピックをカバーします :

  • MedNISTDataset による訓練実験とワークフローを作成する
  • DecathlonDataset による訓練実験とワークフローを作成する
  • 他の公開データを共有して MONAI でデータセットを追加する

 

環境のセットアップ

!python -c "import monai" || pip install -q "monai-weekly[nibabel, pillow, ignite, tqdm]"
!python -c "import matplotlib" || pip install -q matplotlib
%matplotlib inline

from monai.transforms import (
    AddChanneld,
    AsDiscreted,
    Compose,
    LoadImaged,
    Orientationd,
    Randomizable,
    Resized,
    ScaleIntensityd,
    Spacingd,
    EnsureTyped,
)
from monai.networks.nets import UNet, DenseNet121
from monai.networks.layers import Norm
from monai.losses import DiceLoss
from monai.inferers import SimpleInferer
from monai.handlers import MeanDice, StatsHandler, from_engine
from monai.engines import SupervisedTrainer
from monai.data import CacheDataset, DataLoader
from monai.config import print_config
from monai.apps import DecathlonDataset, MedNISTDataset, download_and_extract
import torch
import matplotlib.pyplot as plt
import ignite
import tempfile
import sys
import shutil
import os
import logging

 

インポートのセットアップ

# Copyright 2020 MONAI Consortium
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#     http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


print_config()
MONAI version: 0.6.0rc1+23.gc6793fd0
Numpy version: 1.20.3
Pytorch version: 1.9.0a0+c3d40fd
MONAI flags: HAS_EXT = True, USE_COMPILED = False
MONAI rev id: c6793fd0f316a448778d0047664aaf8c1895fe1c

Optional dependencies:
Pytorch Ignite version: 0.4.5
Nibabel version: 3.2.1
scikit-image version: 0.15.0
Pillow version: 7.0.0
Tensorboard version: 2.5.0
gdown version: 3.13.0
TorchVision version: 0.10.0a0
ITK version: 5.1.2
tqdm version: 4.53.0
lmdb version: 1.2.1
psutil version: 5.8.0
pandas version: 1.1.4
einops version: 0.3.0

For details about installing the optional dependencies, please visit:
    https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies

 

データディレクトリのセットアップ

MONAI_DATA_DIRECTORY 環境変数でディレクトリを指定できます。これは結果をセーブしてダウンロードを再利用することを可能にします。指定されない場合、一時ディレクトリが使用されます。

directory = os.environ.get("MONAI_DATA_DIRECTORY")
root_dir = tempfile.mkdtemp() if directory is None else directory
print(root_dir)
/workspace/data/medical

 

ロギングのセットアップ

logging.basicConfig(stream=sys.stdout, level=logging.INFO)

 

MedNISTDataset による訓練実験とワークフローを作成する

MedMNIST データセットは TCIA, RSNA Bone Age チャレンジNIH Chest X-ray データセット からの様々なセットから集められました。

 

前処理変換のセットアップ

transform = Compose(
    [
        LoadImaged(keys="image"),
        AddChanneld(keys="image"),
        ScaleIntensityd(keys="image"),
        EnsureTyped(keys="image"),
    ]
)

 

訓練のために MedNISTDataset を作成する

MedNISTDataset は MONAI CacheDataset から継承して期待する動作を実現するために豊富なパラメータを提供しています :

  1. root_dir: MedNIST データセットをダウンロードしてロードするターゲットディレクトリ。
  2. section: 想定されるデータ・セクション、以下のいずれかです : training, validation or test.
  3. transform: 入力データ上で操作を実行する変換。デフォルト変換は LoadPNGd と AddChanneld から成り、これはデータを [C, H, W] shape を持つ numpy 配列にロードできます。
  4. download: リソース・リンクから MedNIST をダウンロードして抽出するか否か、デフォルトは False です。想定されるファイルが既に存在していれば、それが True に設定されていてもダウンロードはスキップします。ユーザは MedNIST.tar.gz ファイルか MedNIST フォルダをルートディレクトリに手動でコピーできます。
  5. seed: 訓練、検証とテストデータセットをランダムに分割するためのランダムシード、デフォルトは 0 です。
  6. val_frac: データセット全体の検証比率のパーセンテージ、デフォルトは 0.1 です。
  7. test_frac: データセット全体のテスト比率のパーセンテージ、デフォルトは 0.1 です。
  8. cache_num: キャッシュされる項目の数。デフォルトは sys.maxsize です。(cache_num, data_length x cache_rate, data_length) の最小値を取ります。
  9. cache_rate: トータルでキャッシュされるデータのパーセンテージで、デフォルトは 1.0 (cache all) です。(cache_num, data_length x cache_rate, data_length) の最小値を取ります。
  10. num_workers: 使用するワーカースレッドの数です。0 であればシングルスレッドが使用されます。デフォルトは 0 です。

“tar フアイル” は最初にダウンロードした後でキャッシュされることに注意してください。self.__getitem__() API は、self.__len__() 内の指定されたインデックスに従って 1 {“image”: XXX, “label”: XXX} 辞書を生成します。

train_ds = MedNISTDataset(
    root_dir=root_dir, transform=transform, section="training", download=True)
# the dataset can work seamlessly with the pytorch native dataset loader,
# but using monai.data.DataLoader has additional benefits of mutli-process
# random seeds handling, and the customized collate functions
train_loader = DataLoader(train_ds, batch_size=300,
                          shuffle=True, num_workers=10)
Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.
file /workspace/data/medical/MedNIST.tar.gz exists, skip downloading.
extracted file /workspace/data/medical/MedNIST exists, skip extracting.
100%|██████████| 46946/46946 [00:27<00:00, 1684.89it/s]

 

可視化して確認するために MedNISTDataset から画像をピックアップする

plt.subplots(3, 3, figsize=(8, 8))
for i in range(9):
    plt.subplot(3, 3, i + 1)
    plt.imshow(train_ds[i * 5000]["image"][0].detach().cpu(), cmap="gray")
plt.tight_layout()
plt.show()

 

訓練コンポーネントの作成

device = torch.device("cuda:0")
net = DenseNet121(spatial_dims=2, in_channels=1, out_channels=6).to(device)
loss = torch.nn.CrossEntropyLoss()
opt = torch.optim.Adam(net.parameters(), 1e-5)

 

最も簡単な訓練ワークフローを定義して実行する

訓練ワークフローを素早くセットアップするために MONAI SupervisedTrainer ハンドラを使用します。

trainer = SupervisedTrainer(
    device=device,
    max_epochs=5,
    train_data_loader=train_loader,
    network=net,
    optimizer=opt,
    loss_function=loss,
    inferer=SimpleInferer(),
    key_train_metric={
        "train_acc": ignite.metrics.Accuracy(
            output_transform=from_engine(["pred", "label"]))
    },
    train_handlers=StatsHandler(
        tag_name="train_loss", output_transform=from_engine(["loss"], first=True)),
)
trainer.run()
INFO:ignite.engine.engine.SupervisedTrainer:Engine run resuming from iteration 0, epoch 0 until 5 epochs
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 1/157 -- train_loss: 1.8252 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 2/157 -- train_loss: 1.7637 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 3/157 -- train_loss: 1.7338 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 4/157 -- train_loss: 1.7239 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 5/157 -- train_loss: 1.6950 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 6/157 -- train_loss: 1.6414 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 7/157 -- train_loss: 1.6280 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 8/157 -- train_loss: 1.6190 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 9/157 -- train_loss: 1.5820 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 10/157 -- train_loss: 1.5858 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 11/157 -- train_loss: 1.5342 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 12/157 -- train_loss: 1.4917 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 13/157 -- train_loss: 1.4970 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 14/157 -- train_loss: 1.4540 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 15/157 -- train_loss: 1.4422 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 16/157 -- train_loss: 1.4415 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 17/157 -- train_loss: 1.4168 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 18/157 -- train_loss: 1.4373 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 19/157 -- train_loss: 1.3618 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 20/157 -- train_loss: 1.3188 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 21/157 -- train_loss: 1.3052 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 22/157 -- train_loss: 1.3105 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 23/157 -- train_loss: 1.2936 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 24/157 -- train_loss: 1.2629 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 25/157 -- train_loss: 1.2414 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 26/157 -- train_loss: 1.2488 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 27/157 -- train_loss: 1.1862 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 28/157 -- train_loss: 1.1873 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 29/157 -- train_loss: 1.1685 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 30/157 -- train_loss: 1.1491 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 31/157 -- train_loss: 1.1658 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 32/157 -- train_loss: 1.1465 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 33/157 -- train_loss: 1.1273 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 34/157 -- train_loss: 1.1121 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 35/157 -- train_loss: 1.1016 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 36/157 -- train_loss: 1.0937 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 37/157 -- train_loss: 1.0664 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 38/157 -- train_loss: 1.0472 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 39/157 -- train_loss: 0.9981 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 40/157 -- train_loss: 0.9918 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 41/157 -- train_loss: 0.9644 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 42/157 -- train_loss: 0.9875 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 43/157 -- train_loss: 0.9691 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 44/157 -- train_loss: 0.9285 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 45/157 -- train_loss: 0.9872 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 46/157 -- train_loss: 0.9350 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 47/157 -- train_loss: 0.8944 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 48/157 -- train_loss: 0.9034 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 49/157 -- train_loss: 0.8550 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 50/157 -- train_loss: 0.8690 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 51/157 -- train_loss: 0.8494 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 52/157 -- train_loss: 0.8600 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 53/157 -- train_loss: 0.7888 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 54/157 -- train_loss: 0.8017 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 55/157 -- train_loss: 0.8211 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 56/157 -- train_loss: 0.8050 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 57/157 -- train_loss: 0.7900 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 58/157 -- train_loss: 0.7971 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 59/157 -- train_loss: 0.7693 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 60/157 -- train_loss: 0.7425 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 61/157 -- train_loss: 0.7386 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 62/157 -- train_loss: 0.7208 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 63/157 -- train_loss: 0.7203 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 64/157 -- train_loss: 0.7036 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 65/157 -- train_loss: 0.6863 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 66/157 -- train_loss: 0.6678 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 67/157 -- train_loss: 0.6729 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 68/157 -- train_loss: 0.6435 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 69/157 -- train_loss: 0.6373 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 70/157 -- train_loss: 0.6616 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 71/157 -- train_loss: 0.6325 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 72/157 -- train_loss: 0.6357 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 73/157 -- train_loss: 0.6333 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 74/157 -- train_loss: 0.5840 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 75/157 -- train_loss: 0.6075 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 76/157 -- train_loss: 0.5632 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 77/157 -- train_loss: 0.5624 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 78/157 -- train_loss: 0.5698 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 79/157 -- train_loss: 0.5504 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 80/157 -- train_loss: 0.5456 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 81/157 -- train_loss: 0.5512 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 82/157 -- train_loss: 0.5329 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 83/157 -- train_loss: 0.5306 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 84/157 -- train_loss: 0.5312 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 85/157 -- train_loss: 0.5226 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 86/157 -- train_loss: 0.5166 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 87/157 -- train_loss: 0.5152 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 88/157 -- train_loss: 0.4779 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 89/157 -- train_loss: 0.5044 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 90/157 -- train_loss: 0.5009 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 91/157 -- train_loss: 0.4685 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 92/157 -- train_loss: 0.4510 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 93/157 -- train_loss: 0.4815 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 94/157 -- train_loss: 0.4358 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 95/157 -- train_loss: 0.4570 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 96/157 -- train_loss: 0.4495 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 97/157 -- train_loss: 0.4120 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 98/157 -- train_loss: 0.4414 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 99/157 -- train_loss: 0.4252 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 100/157 -- train_loss: 0.4197 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 101/157 -- train_loss: 0.4312 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 102/157 -- train_loss: 0.4120 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 103/157 -- train_loss: 0.4054 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 104/157 -- train_loss: 0.4341 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 105/157 -- train_loss: 0.3731 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 106/157 -- train_loss: 0.3637 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 107/157 -- train_loss: 0.3850 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 108/157 -- train_loss: 0.3813 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 109/157 -- train_loss: 0.3464 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 110/157 -- train_loss: 0.3810 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 111/157 -- train_loss: 0.3641 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 112/157 -- train_loss: 0.3643 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 113/157 -- train_loss: 0.3592 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 114/157 -- train_loss: 0.3635 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 115/157 -- train_loss: 0.3190 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 116/157 -- train_loss: 0.3745 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 117/157 -- train_loss: 0.3255 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 118/157 -- train_loss: 0.3126 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 119/157 -- train_loss: 0.3331 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 120/157 -- train_loss: 0.3332 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 121/157 -- train_loss: 0.3412 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 122/157 -- train_loss: 0.2994 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 123/157 -- train_loss: 0.3147 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 124/157 -- train_loss: 0.3394 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 125/157 -- train_loss: 0.3133 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 126/157 -- train_loss: 0.3016 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 127/157 -- train_loss: 0.2861 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 128/157 -- train_loss: 0.2973 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 129/157 -- train_loss: 0.2843 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 130/157 -- train_loss: 0.2936 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 131/157 -- train_loss: 0.2902 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 132/157 -- train_loss: 0.2588 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 133/157 -- train_loss: 0.2815 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 134/157 -- train_loss: 0.2529 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 135/157 -- train_loss: 0.2647 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 136/157 -- train_loss: 0.2909 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 137/157 -- train_loss: 0.2883 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 138/157 -- train_loss: 0.3009 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 139/157 -- train_loss: 0.2295 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 140/157 -- train_loss: 0.2391 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 141/157 -- train_loss: 0.2902 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 142/157 -- train_loss: 0.2217 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 143/157 -- train_loss: 0.2387 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 144/157 -- train_loss: 0.2454 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 145/157 -- train_loss: 0.2214 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 146/157 -- train_loss: 0.2477 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 147/157 -- train_loss: 0.2534 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 148/157 -- train_loss: 0.2287 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 149/157 -- train_loss: 0.2381 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 150/157 -- train_loss: 0.2240 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 151/157 -- train_loss: 0.2288 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 152/157 -- train_loss: 0.2337 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 153/157 -- train_loss: 0.2109 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 154/157 -- train_loss: 0.2132 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 155/157 -- train_loss: 0.1772 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 156/157 -- train_loss: 0.2177 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 157/157 -- train_loss: 0.1833 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_acc: 0.8910450304605291
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[1] Metrics -- train_acc: 0.8910 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_acc best value: 0.8910450304605291 at epoch: 1
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[1] Complete. Time taken: 00:00:22
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 1/157 -- train_loss: 0.2187 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 2/157 -- train_loss: 0.1953 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 3/157 -- train_loss: 0.2099 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 4/157 -- train_loss: 0.1911 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 5/157 -- train_loss: 0.1970 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 6/157 -- train_loss: 0.1962 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 7/157 -- train_loss: 0.1935 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 8/157 -- train_loss: 0.2117 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 9/157 -- train_loss: 0.1942 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 10/157 -- train_loss: 0.2168 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 11/157 -- train_loss: 0.1968 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 12/157 -- train_loss: 0.1700 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 13/157 -- train_loss: 0.2183 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 14/157 -- train_loss: 0.2052 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 15/157 -- train_loss: 0.1826 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 16/157 -- train_loss: 0.1790 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 17/157 -- train_loss: 0.2115 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 18/157 -- train_loss: 0.1955 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 19/157 -- train_loss: 0.1888 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 20/157 -- train_loss: 0.1706 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 21/157 -- train_loss: 0.1812 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 22/157 -- train_loss: 0.1542 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 23/157 -- train_loss: 0.1554 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 24/157 -- train_loss: 0.1728 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 25/157 -- train_loss: 0.1681 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 26/157 -- train_loss: 0.1579 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 27/157 -- train_loss: 0.1803 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 28/157 -- train_loss: 0.1819 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 29/157 -- train_loss: 0.1789 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 30/157 -- train_loss: 0.1591 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 31/157 -- train_loss: 0.1464 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 32/157 -- train_loss: 0.1687 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 33/157 -- train_loss: 0.1740 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 34/157 -- train_loss: 0.1438 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 35/157 -- train_loss: 0.1432 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 36/157 -- train_loss: 0.1790 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 37/157 -- train_loss: 0.1615 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 38/157 -- train_loss: 0.1457 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 39/157 -- train_loss: 0.1639 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 40/157 -- train_loss: 0.1887 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 41/157 -- train_loss: 0.1642 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 42/157 -- train_loss: 0.1487 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 43/157 -- train_loss: 0.1519 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 44/157 -- train_loss: 0.1506 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 45/157 -- train_loss: 0.1562 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 46/157 -- train_loss: 0.1436 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 47/157 -- train_loss: 0.1527 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 48/157 -- train_loss: 0.1184 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 49/157 -- train_loss: 0.1562 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 50/157 -- train_loss: 0.1344 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 51/157 -- train_loss: 0.1734 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 52/157 -- train_loss: 0.1416 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 53/157 -- train_loss: 0.1601 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 54/157 -- train_loss: 0.1302 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 55/157 -- train_loss: 0.1560 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 56/157 -- train_loss: 0.1393 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 57/157 -- train_loss: 0.1624 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 58/157 -- train_loss: 0.1227 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 59/157 -- train_loss: 0.1354 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 60/157 -- train_loss: 0.1270 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 61/157 -- train_loss: 0.1595 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 62/157 -- train_loss: 0.1158 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 63/157 -- train_loss: 0.1426 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 64/157 -- train_loss: 0.1158 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 65/157 -- train_loss: 0.1218 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 66/157 -- train_loss: 0.1408 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 67/157 -- train_loss: 0.1318 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 68/157 -- train_loss: 0.1169 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 69/157 -- train_loss: 0.1218 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 70/157 -- train_loss: 0.1448 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 71/157 -- train_loss: 0.1177 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 72/157 -- train_loss: 0.1105 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 73/157 -- train_loss: 0.1308 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 74/157 -- train_loss: 0.1065 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 75/157 -- train_loss: 0.1464 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 76/157 -- train_loss: 0.1296 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 77/157 -- train_loss: 0.1276 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 78/157 -- train_loss: 0.1239 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 79/157 -- train_loss: 0.1269 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 80/157 -- train_loss: 0.1382 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 81/157 -- train_loss: 0.1123 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 82/157 -- train_loss: 0.1223 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 83/157 -- train_loss: 0.1120 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 84/157 -- train_loss: 0.1225 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 85/157 -- train_loss: 0.1137 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 86/157 -- train_loss: 0.1216 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 87/157 -- train_loss: 0.1397 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 88/157 -- train_loss: 0.1087 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 89/157 -- train_loss: 0.1158 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 90/157 -- train_loss: 0.1171 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 91/157 -- train_loss: 0.1165 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 92/157 -- train_loss: 0.1073 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 93/157 -- train_loss: 0.1082 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 94/157 -- train_loss: 0.1055 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 95/157 -- train_loss: 0.1054 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 96/157 -- train_loss: 0.0869 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 97/157 -- train_loss: 0.1184 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 98/157 -- train_loss: 0.1490 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 99/157 -- train_loss: 0.1033 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 100/157 -- train_loss: 0.0991 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 101/157 -- train_loss: 0.1009 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 102/157 -- train_loss: 0.1224 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 103/157 -- train_loss: 0.1098 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 104/157 -- train_loss: 0.0965 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 105/157 -- train_loss: 0.1097 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 106/157 -- train_loss: 0.1287 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 107/157 -- train_loss: 0.1126 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 108/157 -- train_loss: 0.1096 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 109/157 -- train_loss: 0.1235 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 110/157 -- train_loss: 0.0929 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 111/157 -- train_loss: 0.0996 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 112/157 -- train_loss: 0.0982 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 113/157 -- train_loss: 0.0942 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 114/157 -- train_loss: 0.1076 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 115/157 -- train_loss: 0.0978 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 116/157 -- train_loss: 0.1017 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 117/157 -- train_loss: 0.0882 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 118/157 -- train_loss: 0.1133 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 119/157 -- train_loss: 0.0938 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 120/157 -- train_loss: 0.0902 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 121/157 -- train_loss: 0.1098 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 122/157 -- train_loss: 0.0852 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 123/157 -- train_loss: 0.0835 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 124/157 -- train_loss: 0.0857 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 125/157 -- train_loss: 0.0822 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 126/157 -- train_loss: 0.0956 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 127/157 -- train_loss: 0.0966 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 128/157 -- train_loss: 0.1105 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 129/157 -- train_loss: 0.0925 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 130/157 -- train_loss: 0.0875 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 131/157 -- train_loss: 0.0856 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 132/157 -- train_loss: 0.0854 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 133/157 -- train_loss: 0.0728 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 134/157 -- train_loss: 0.0928 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 135/157 -- train_loss: 0.0884 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 136/157 -- train_loss: 0.1160 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 137/157 -- train_loss: 0.0679 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 138/157 -- train_loss: 0.1008 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 139/157 -- train_loss: 0.0959 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 140/157 -- train_loss: 0.0868 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 141/157 -- train_loss: 0.0797 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 142/157 -- train_loss: 0.0869 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 143/157 -- train_loss: 0.0884 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 144/157 -- train_loss: 0.0675 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 145/157 -- train_loss: 0.0856 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 146/157 -- train_loss: 0.1024 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 147/157 -- train_loss: 0.0965 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 148/157 -- train_loss: 0.0864 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 149/157 -- train_loss: 0.0700 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 150/157 -- train_loss: 0.0698 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 151/157 -- train_loss: 0.0871 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 152/157 -- train_loss: 0.0680 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 153/157 -- train_loss: 0.0719 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 154/157 -- train_loss: 0.0706 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 155/157 -- train_loss: 0.0620 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 156/157 -- train_loss: 0.0814 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 157/157 -- train_loss: 0.0689 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_acc: 0.9833425637967026
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[2] Metrics -- train_acc: 0.9833 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_acc best value: 0.9833425637967026 at epoch: 2
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[2] Complete. Time taken: 00:00:23
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 1/157 -- train_loss: 0.0757 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 2/157 -- train_loss: 0.0663 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 3/157 -- train_loss: 0.0792 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 4/157 -- train_loss: 0.0586 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 5/157 -- train_loss: 0.0749 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 6/157 -- train_loss: 0.0906 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 7/157 -- train_loss: 0.0684 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 8/157 -- train_loss: 0.0677 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 9/157 -- train_loss: 0.0870 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 10/157 -- train_loss: 0.0835 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 11/157 -- train_loss: 0.0652 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 12/157 -- train_loss: 0.0805 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 13/157 -- train_loss: 0.0663 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 14/157 -- train_loss: 0.0744 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 15/157 -- train_loss: 0.0653 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 16/157 -- train_loss: 0.0717 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 17/157 -- train_loss: 0.0520 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 18/157 -- train_loss: 0.0743 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 19/157 -- train_loss: 0.0975 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 20/157 -- train_loss: 0.0981 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 21/157 -- train_loss: 0.0632 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 22/157 -- train_loss: 0.0904 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 23/157 -- train_loss: 0.0762 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 24/157 -- train_loss: 0.0700 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 25/157 -- train_loss: 0.0915 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 26/157 -- train_loss: 0.1116 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 27/157 -- train_loss: 0.0731 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 28/157 -- train_loss: 0.0694 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 29/157 -- train_loss: 0.0657 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 30/157 -- train_loss: 0.0826 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 31/157 -- train_loss: 0.0822 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 32/157 -- train_loss: 0.0687 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 33/157 -- train_loss: 0.0553 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 34/157 -- train_loss: 0.0591 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 35/157 -- train_loss: 0.0676 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 36/157 -- train_loss: 0.0588 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 37/157 -- train_loss: 0.0668 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 38/157 -- train_loss: 0.0736 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 39/157 -- train_loss: 0.0560 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 40/157 -- train_loss: 0.0557 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 41/157 -- train_loss: 0.0574 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 42/157 -- train_loss: 0.0946 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 43/157 -- train_loss: 0.0600 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 44/157 -- train_loss: 0.0700 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 45/157 -- train_loss: 0.0600 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 46/157 -- train_loss: 0.0573 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 47/157 -- train_loss: 0.0596 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 48/157 -- train_loss: 0.0803 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 49/157 -- train_loss: 0.0676 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 50/157 -- train_loss: 0.0669 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 51/157 -- train_loss: 0.0731 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 52/157 -- train_loss: 0.0735 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 53/157 -- train_loss: 0.0578 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 54/157 -- train_loss: 0.0675 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 55/157 -- train_loss: 0.0642 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 56/157 -- train_loss: 0.0646 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 57/157 -- train_loss: 0.0613 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 58/157 -- train_loss: 0.0472 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 59/157 -- train_loss: 0.0723 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 60/157 -- train_loss: 0.0661 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 61/157 -- train_loss: 0.0651 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 62/157 -- train_loss: 0.0490 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 63/157 -- train_loss: 0.0557 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 64/157 -- train_loss: 0.0714 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 65/157 -- train_loss: 0.0462 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 66/157 -- train_loss: 0.0475 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 67/157 -- train_loss: 0.0600 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 68/157 -- train_loss: 0.0479 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 69/157 -- train_loss: 0.0484 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 70/157 -- train_loss: 0.0610 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 71/157 -- train_loss: 0.0740 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 72/157 -- train_loss: 0.0574 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 73/157 -- train_loss: 0.0637 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 74/157 -- train_loss: 0.0448 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 75/157 -- train_loss: 0.0600 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 76/157 -- train_loss: 0.0663 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 77/157 -- train_loss: 0.0511 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 78/157 -- train_loss: 0.0641 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 79/157 -- train_loss: 0.0644 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 80/157 -- train_loss: 0.0644 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 81/157 -- train_loss: 0.0608 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 82/157 -- train_loss: 0.0516 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 83/157 -- train_loss: 0.0659 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 84/157 -- train_loss: 0.0429 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 85/157 -- train_loss: 0.0508 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 86/157 -- train_loss: 0.0713 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 87/157 -- train_loss: 0.0608 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 88/157 -- train_loss: 0.0534 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 89/157 -- train_loss: 0.0461 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 90/157 -- train_loss: 0.0522 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 91/157 -- train_loss: 0.0565 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 92/157 -- train_loss: 0.0464 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 93/157 -- train_loss: 0.0716 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 94/157 -- train_loss: 0.0456 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 95/157 -- train_loss: 0.0469 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 96/157 -- train_loss: 0.0645 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 97/157 -- train_loss: 0.0618 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 98/157 -- train_loss: 0.0767 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 99/157 -- train_loss: 0.0418 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 100/157 -- train_loss: 0.0559 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 101/157 -- train_loss: 0.0430 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 102/157 -- train_loss: 0.0373 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 103/157 -- train_loss: 0.0594 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 104/157 -- train_loss: 0.0677 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 105/157 -- train_loss: 0.0366 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 106/157 -- train_loss: 0.0457 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 107/157 -- train_loss: 0.0385 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 108/157 -- train_loss: 0.0568 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 109/157 -- train_loss: 0.0623 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 110/157 -- train_loss: 0.0580 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 111/157 -- train_loss: 0.0548 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 112/157 -- train_loss: 0.0379 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 113/157 -- train_loss: 0.0395 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 114/157 -- train_loss: 0.0444 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 115/157 -- train_loss: 0.0362 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 116/157 -- train_loss: 0.0416 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 117/157 -- train_loss: 0.0429 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 118/157 -- train_loss: 0.0332 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 119/157 -- train_loss: 0.0452 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 120/157 -- train_loss: 0.0638 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 121/157 -- train_loss: 0.0389 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 122/157 -- train_loss: 0.0532 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 123/157 -- train_loss: 0.0561 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 124/157 -- train_loss: 0.0622 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 125/157 -- train_loss: 0.0387 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 126/157 -- train_loss: 0.0620 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 127/157 -- train_loss: 0.0426 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 128/157 -- train_loss: 0.0361 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 129/157 -- train_loss: 0.0439 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 130/157 -- train_loss: 0.0472 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 131/157 -- train_loss: 0.0363 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 132/157 -- train_loss: 0.0461 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 133/157 -- train_loss: 0.0365 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 134/157 -- train_loss: 0.0414 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 135/157 -- train_loss: 0.0546 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 136/157 -- train_loss: 0.0396 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 137/157 -- train_loss: 0.0347 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 138/157 -- train_loss: 0.0411 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 139/157 -- train_loss: 0.0563 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 140/157 -- train_loss: 0.0579 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 141/157 -- train_loss: 0.0415 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 142/157 -- train_loss: 0.0435 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 143/157 -- train_loss: 0.0674 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 144/157 -- train_loss: 0.0372 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 145/157 -- train_loss: 0.0447 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 146/157 -- train_loss: 0.0427 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 147/157 -- train_loss: 0.0406 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 148/157 -- train_loss: 0.0423 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 149/157 -- train_loss: 0.0391 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 150/157 -- train_loss: 0.0345 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 151/157 -- train_loss: 0.0534 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 152/157 -- train_loss: 0.0304 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 153/157 -- train_loss: 0.0364 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 154/157 -- train_loss: 0.0612 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 155/157 -- train_loss: 0.0383 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 156/157 -- train_loss: 0.0389 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 157/157 -- train_loss: 0.0441 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_acc: 0.9922464107698207
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[3] Metrics -- train_acc: 0.9922 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_acc best value: 0.9922464107698207 at epoch: 3
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[3] Complete. Time taken: 00:00:23
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 1/157 -- train_loss: 0.0391 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 2/157 -- train_loss: 0.0445 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 3/157 -- train_loss: 0.0479 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 4/157 -- train_loss: 0.0516 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 5/157 -- train_loss: 0.0459 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 6/157 -- train_loss: 0.0306 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 7/157 -- train_loss: 0.0654 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 8/157 -- train_loss: 0.0536 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 9/157 -- train_loss: 0.0547 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 10/157 -- train_loss: 0.0461 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 11/157 -- train_loss: 0.0283 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 12/157 -- train_loss: 0.0377 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 13/157 -- train_loss: 0.0543 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 14/157 -- train_loss: 0.0476 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 15/157 -- train_loss: 0.0265 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 16/157 -- train_loss: 0.0320 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 17/157 -- train_loss: 0.0531 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 18/157 -- train_loss: 0.0324 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 19/157 -- train_loss: 0.0416 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 20/157 -- train_loss: 0.0318 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 21/157 -- train_loss: 0.0399 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 22/157 -- train_loss: 0.0348 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 23/157 -- train_loss: 0.0313 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 24/157 -- train_loss: 0.0442 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 25/157 -- train_loss: 0.0339 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 26/157 -- train_loss: 0.0383 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 27/157 -- train_loss: 0.0463 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 28/157 -- train_loss: 0.0483 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 29/157 -- train_loss: 0.0471 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 30/157 -- train_loss: 0.0477 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 31/157 -- train_loss: 0.0327 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 32/157 -- train_loss: 0.0444 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 33/157 -- train_loss: 0.0424 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 34/157 -- train_loss: 0.0361 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 35/157 -- train_loss: 0.0399 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 36/157 -- train_loss: 0.0337 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 37/157 -- train_loss: 0.0505 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 38/157 -- train_loss: 0.0297 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 39/157 -- train_loss: 0.0241 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 40/157 -- train_loss: 0.0298 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 41/157 -- train_loss: 0.0579 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 42/157 -- train_loss: 0.0244 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 43/157 -- train_loss: 0.0372 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 44/157 -- train_loss: 0.0493 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 45/157 -- train_loss: 0.0465 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 46/157 -- train_loss: 0.0396 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 47/157 -- train_loss: 0.0517 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 48/157 -- train_loss: 0.0388 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 49/157 -- train_loss: 0.0513 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 50/157 -- train_loss: 0.0411 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 51/157 -- train_loss: 0.0274 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 52/157 -- train_loss: 0.0413 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 53/157 -- train_loss: 0.0366 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 54/157 -- train_loss: 0.0321 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 55/157 -- train_loss: 0.0336 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 56/157 -- train_loss: 0.0469 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 57/157 -- train_loss: 0.0430 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 58/157 -- train_loss: 0.0381 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 59/157 -- train_loss: 0.0321 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 60/157 -- train_loss: 0.0414 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 61/157 -- train_loss: 0.0393 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 62/157 -- train_loss: 0.0410 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 63/157 -- train_loss: 0.0292 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 64/157 -- train_loss: 0.0327 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 65/157 -- train_loss: 0.0270 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 66/157 -- train_loss: 0.0320 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 67/157 -- train_loss: 0.0384 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 68/157 -- train_loss: 0.0270 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 69/157 -- train_loss: 0.0411 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 70/157 -- train_loss: 0.0295 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 71/157 -- train_loss: 0.0388 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 72/157 -- train_loss: 0.0290 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 73/157 -- train_loss: 0.0374 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 74/157 -- train_loss: 0.0511 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 75/157 -- train_loss: 0.0455 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 76/157 -- train_loss: 0.0369 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 77/157 -- train_loss: 0.0359 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 78/157 -- train_loss: 0.0416 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 79/157 -- train_loss: 0.0287 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 80/157 -- train_loss: 0.0357 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 81/157 -- train_loss: 0.0333 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 82/157 -- train_loss: 0.0307 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 83/157 -- train_loss: 0.0355 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 84/157 -- train_loss: 0.0364 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 85/157 -- train_loss: 0.0355 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 86/157 -- train_loss: 0.0336 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 87/157 -- train_loss: 0.0302 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 88/157 -- train_loss: 0.0312 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 89/157 -- train_loss: 0.0238 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 90/157 -- train_loss: 0.0235 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 91/157 -- train_loss: 0.0381 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 92/157 -- train_loss: 0.0218 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 93/157 -- train_loss: 0.0404 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 94/157 -- train_loss: 0.0338 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 95/157 -- train_loss: 0.0236 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 96/157 -- train_loss: 0.0356 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 97/157 -- train_loss: 0.0354 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 98/157 -- train_loss: 0.0321 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 99/157 -- train_loss: 0.0340 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 100/157 -- train_loss: 0.0281 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 101/157 -- train_loss: 0.0402 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 102/157 -- train_loss: 0.0439 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 103/157 -- train_loss: 0.0291 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 104/157 -- train_loss: 0.0262 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 105/157 -- train_loss: 0.0255 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 106/157 -- train_loss: 0.0483 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 107/157 -- train_loss: 0.0235 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 108/157 -- train_loss: 0.0342 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 109/157 -- train_loss: 0.0294 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 110/157 -- train_loss: 0.0316 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 111/157 -- train_loss: 0.0318 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 112/157 -- train_loss: 0.0307 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 113/157 -- train_loss: 0.0303 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 114/157 -- train_loss: 0.0298 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 115/157 -- train_loss: 0.0254 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 116/157 -- train_loss: 0.0207 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 117/157 -- train_loss: 0.0212 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 118/157 -- train_loss: 0.0233 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 119/157 -- train_loss: 0.0296 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 120/157 -- train_loss: 0.0286 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 121/157 -- train_loss: 0.0424 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 122/157 -- train_loss: 0.0263 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 123/157 -- train_loss: 0.0291 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 124/157 -- train_loss: 0.0218 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 125/157 -- train_loss: 0.0293 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 126/157 -- train_loss: 0.0395 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 127/157 -- train_loss: 0.0274 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 128/157 -- train_loss: 0.0302 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 129/157 -- train_loss: 0.0240 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 130/157 -- train_loss: 0.0281 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 131/157 -- train_loss: 0.0172 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 132/157 -- train_loss: 0.0321 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 133/157 -- train_loss: 0.0272 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 134/157 -- train_loss: 0.0163 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 135/157 -- train_loss: 0.0419 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 136/157 -- train_loss: 0.0296 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 137/157 -- train_loss: 0.0374 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 138/157 -- train_loss: 0.0451 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 139/157 -- train_loss: 0.0190 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 140/157 -- train_loss: 0.0241 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 141/157 -- train_loss: 0.0219 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 142/157 -- train_loss: 0.0354 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 143/157 -- train_loss: 0.0297 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 144/157 -- train_loss: 0.0222 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 145/157 -- train_loss: 0.0282 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 146/157 -- train_loss: 0.0288 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 147/157 -- train_loss: 0.0236 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 148/157 -- train_loss: 0.0301 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 149/157 -- train_loss: 0.0240 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 150/157 -- train_loss: 0.0291 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 151/157 -- train_loss: 0.0379 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 152/157 -- train_loss: 0.0239 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 153/157 -- train_loss: 0.0225 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 154/157 -- train_loss: 0.0254 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 155/157 -- train_loss: 0.0185 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 156/157 -- train_loss: 0.0252 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 157/157 -- train_loss: 0.0317 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_acc: 0.9951433561964811
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[4] Metrics -- train_acc: 0.9951 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_acc best value: 0.9951433561964811 at epoch: 4
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[4] Complete. Time taken: 00:00:23
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 1/157 -- train_loss: 0.0224 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 2/157 -- train_loss: 0.0260 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 3/157 -- train_loss: 0.0490 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 4/157 -- train_loss: 0.0172 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 5/157 -- train_loss: 0.0202 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 6/157 -- train_loss: 0.0324 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 7/157 -- train_loss: 0.0305 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 8/157 -- train_loss: 0.0186 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 9/157 -- train_loss: 0.0262 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 10/157 -- train_loss: 0.0171 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 11/157 -- train_loss: 0.0207 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 12/157 -- train_loss: 0.0129 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 13/157 -- train_loss: 0.0281 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 14/157 -- train_loss: 0.0236 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 15/157 -- train_loss: 0.0233 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 16/157 -- train_loss: 0.0265 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 17/157 -- train_loss: 0.0257 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 18/157 -- train_loss: 0.0246 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 19/157 -- train_loss: 0.0229 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 20/157 -- train_loss: 0.0194 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 21/157 -- train_loss: 0.0141 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 22/157 -- train_loss: 0.0279 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 23/157 -- train_loss: 0.0380 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 24/157 -- train_loss: 0.0220 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 25/157 -- train_loss: 0.0164 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 26/157 -- train_loss: 0.0230 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 27/157 -- train_loss: 0.0185 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 28/157 -- train_loss: 0.0323 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 29/157 -- train_loss: 0.0307 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 30/157 -- train_loss: 0.0435 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 31/157 -- train_loss: 0.0355 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 32/157 -- train_loss: 0.0288 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 33/157 -- train_loss: 0.0358 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 34/157 -- train_loss: 0.0286 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 35/157 -- train_loss: 0.0164 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 36/157 -- train_loss: 0.0358 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 37/157 -- train_loss: 0.0260 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 38/157 -- train_loss: 0.0189 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 39/157 -- train_loss: 0.0420 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 40/157 -- train_loss: 0.0239 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 41/157 -- train_loss: 0.0363 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 42/157 -- train_loss: 0.0280 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 43/157 -- train_loss: 0.0262 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 44/157 -- train_loss: 0.0288 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 45/157 -- train_loss: 0.0512 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 46/157 -- train_loss: 0.0249 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 47/157 -- train_loss: 0.0244 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 48/157 -- train_loss: 0.0218 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 49/157 -- train_loss: 0.0194 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 50/157 -- train_loss: 0.0209 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 51/157 -- train_loss: 0.0280 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 52/157 -- train_loss: 0.0287 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 53/157 -- train_loss: 0.0250 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 54/157 -- train_loss: 0.0183 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 55/157 -- train_loss: 0.0156 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 56/157 -- train_loss: 0.0171 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 57/157 -- train_loss: 0.0230 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 58/157 -- train_loss: 0.0166 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 59/157 -- train_loss: 0.0224 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 60/157 -- train_loss: 0.0192 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 61/157 -- train_loss: 0.0333 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 62/157 -- train_loss: 0.0315 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 63/157 -- train_loss: 0.0229 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 64/157 -- train_loss: 0.0155 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 65/157 -- train_loss: 0.0307 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 66/157 -- train_loss: 0.0289 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 67/157 -- train_loss: 0.0233 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 68/157 -- train_loss: 0.0293 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 69/157 -- train_loss: 0.0194 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 70/157 -- train_loss: 0.0206 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 71/157 -- train_loss: 0.0259 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 72/157 -- train_loss: 0.0241 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 73/157 -- train_loss: 0.0561 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 74/157 -- train_loss: 0.0294 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 75/157 -- train_loss: 0.0353 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 76/157 -- train_loss: 0.0126 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 77/157 -- train_loss: 0.0128 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 78/157 -- train_loss: 0.0187 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 79/157 -- train_loss: 0.0310 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 80/157 -- train_loss: 0.0166 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 81/157 -- train_loss: 0.0184 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 82/157 -- train_loss: 0.0288 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 83/157 -- train_loss: 0.0189 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 84/157 -- train_loss: 0.0292 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 85/157 -- train_loss: 0.0161 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 86/157 -- train_loss: 0.0167 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 87/157 -- train_loss: 0.0239 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 88/157 -- train_loss: 0.0185 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 89/157 -- train_loss: 0.0161 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 90/157 -- train_loss: 0.0214 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 91/157 -- train_loss: 0.0251 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 92/157 -- train_loss: 0.0332 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 93/157 -- train_loss: 0.0324 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 94/157 -- train_loss: 0.0172 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 95/157 -- train_loss: 0.0178 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 96/157 -- train_loss: 0.0195 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 97/157 -- train_loss: 0.0441 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 98/157 -- train_loss: 0.0202 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 99/157 -- train_loss: 0.0158 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 100/157 -- train_loss: 0.0134 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 101/157 -- train_loss: 0.0196 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 102/157 -- train_loss: 0.0286 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 103/157 -- train_loss: 0.0247 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 104/157 -- train_loss: 0.0245 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 105/157 -- train_loss: 0.0146 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 106/157 -- train_loss: 0.0165 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 107/157 -- train_loss: 0.0156 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 108/157 -- train_loss: 0.0221 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 109/157 -- train_loss: 0.0239 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 110/157 -- train_loss: 0.0198 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 111/157 -- train_loss: 0.0227 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 112/157 -- train_loss: 0.0125 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 113/157 -- train_loss: 0.0236 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 114/157 -- train_loss: 0.0132 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 115/157 -- train_loss: 0.0209 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 116/157 -- train_loss: 0.0190 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 117/157 -- train_loss: 0.0330 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 118/157 -- train_loss: 0.0175 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 119/157 -- train_loss: 0.0316 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 120/157 -- train_loss: 0.0182 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 121/157 -- train_loss: 0.0197 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 122/157 -- train_loss: 0.0214 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 123/157 -- train_loss: 0.0177 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 124/157 -- train_loss: 0.0173 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 125/157 -- train_loss: 0.0298 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 126/157 -- train_loss: 0.0126 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 127/157 -- train_loss: 0.0141 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 128/157 -- train_loss: 0.0275 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 129/157 -- train_loss: 0.0158 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 130/157 -- train_loss: 0.0203 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 131/157 -- train_loss: 0.0123 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 132/157 -- train_loss: 0.0263 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 133/157 -- train_loss: 0.0141 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 134/157 -- train_loss: 0.0117 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 135/157 -- train_loss: 0.0192 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 136/157 -- train_loss: 0.0240 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 137/157 -- train_loss: 0.0187 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 138/157 -- train_loss: 0.0209 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 139/157 -- train_loss: 0.0224 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 140/157 -- train_loss: 0.0154 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 141/157 -- train_loss: 0.0277 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 142/157 -- train_loss: 0.0274 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 143/157 -- train_loss: 0.0243 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 144/157 -- train_loss: 0.0132 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 145/157 -- train_loss: 0.0158 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 146/157 -- train_loss: 0.0138 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 147/157 -- train_loss: 0.0167 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 148/157 -- train_loss: 0.0135 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 149/157 -- train_loss: 0.0240 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 150/157 -- train_loss: 0.0194 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 151/157 -- train_loss: 0.0225 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 152/157 -- train_loss: 0.0229 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 153/157 -- train_loss: 0.0226 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 154/157 -- train_loss: 0.0224 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 155/157 -- train_loss: 0.0127 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 156/157 -- train_loss: 0.0165 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 157/157 -- train_loss: 0.0191 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_acc: 0.9965918289098112
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[5] Metrics -- train_acc: 0.9966 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_acc best value: 0.9965918289098112 at epoch: 5
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[5] Complete. Time taken: 00:00:22
INFO:ignite.engine.engine.SupervisedTrainer:Engine run complete. Time taken: 00:01:54

 

DecathlonDataset による訓練実験とワークフロー

Decathlon データセットは Medical Segmentation Decathlon AI challenge に由来します。

 

前処理変換のセットアップ

transform = Compose(
    [
        LoadImaged(keys=["image", "label"]),
        AddChanneld(keys=["image", "label"]),
        Spacingd(keys=["image", "label"], pixdim=(
            1.0, 1.0, 1.0), mode=("bilinear", "nearest")),
        Orientationd(keys=["image", "label"], axcodes="RAS"),
        ScaleIntensityd(keys="image"),
        Resized(keys=["image", "label"], spatial_size=(
            32, 64, 32), mode=("trilinear", "nearest")),
        EnsureTyped(keys=["image", "label"]),
    ]
)

 

訓練のために DeccathlonDataset を作成する

DecathlonDataset は MONAI CacheDataset から継承して期待する動作を実現するために豊富なパラメータを提供しています :

  1. root_dir: MSD データセットをキャッシュしてロードするためのユーザのローカルディレクトリ。
  2. task: どのタスクをダウンロードして実行するか : 次のリストの一つです (“Task01_BrainTumour”, “Task02_Heart”, “Task03_Liver”, “Task04_Hippocampus”, “Task05_Prostate”, “Task06_Lung”, “Task07_Pancreas”, “Task08_HepaticVessel”, “Task09_Spleen”, “Task10_Colon”).
  3. section: 想定されるデータ・セクション、以下のいずれかです : training, validation or test.
  4. transform: 入力データ上で操作を実行する変換。デフォルト変換は LoadPNGd と AddChanneld から成り、これはデータを [C, H, W, D] shape を持つ numpy 配列にロードできます。
  5. download: リソース・リンクから Decathlon をダウンロードして抽出するか否か、デフォルトは False です。想定されるファイルが既に存在していれば、それが True に設定されていてもダウンロードはスキップします。ユーザは tar ファイルか dataset フォルダをルートディレクトリに手動でコピーできます。
  6. seed: 訓練、検証とテストデータセットをランダムに分割するためのランダムシード、デフォルトは 0 です。
  7. val_frac: 訓練セクションからの検証比率のパーセンテージで、デフォルトは 0.2 です。Decathlon データはラベルを持つ訓練セクションとラベルなしのテストセクションだけを含みますので、検証セクションとして訓練セクションからランダムに一部を選択します。
  8. cache_num: キャッシュされる項目の数。デフォルトは sys.maxsize です。(cache_num, data_length x cache_rate, data_length) の最小値を取ります。
  9. cache_rate: トータルでキャッシュされるデータのパーセンテージで、デフォルトは 1.0 (cache all) です。(cache_num, data_length x cache_rate, data_length) の最小値を取ります。
  10. num_workers: 使用するワーカースレッドの数です。0 であればシングルスレッドが使用されます。デフォルトは 0 です。

“tar フアイル” は最初にダウンロードした後でキャッシュされることに注意してください。self.__getitem__() API は、self.__len__() 内の指定されたインデックスに従って 1 {“image”: XXX, “label”: XXX} 辞書を生成します。


train_ds = DecathlonDataset(
    root_dir=root_dir,
    task="Task04_Hippocampus",
    transform=transform,
    section="training",
    download=True,
)
# the dataset can work seamlessly with the pytorch native dataset loader,
# but using monai.data.DataLoader has additional benefits of mutli-process
# random seeds handling, and the customized collate functions
train_loader = DataLoader(train_ds, batch_size=32,
                          shuffle=True, num_workers=16)
Task04_Hippocampus.tar: 100%|██████████| 27.1M/27.1M [01:15<00:00, 377kB/s]
Verified 'Task04_Hippocampus.tar.part', md5: 9d24dba78a72977dbd1d2e110310f31b.
Verified 'Task04_Hippocampus.tar', md5: 9d24dba78a72977dbd1d2e110310f31b.
Verified 'Task04_Hippocampus.tar', md5: 9d24dba78a72977dbd1d2e110310f31b.
  0%|          | 0/208 [00:00<?, ?it/s]Default upsampling behavior when mode=trilinear is changed to align_corners=False since 0.4.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.
100%|██████████| 208/208 [00:34<00:00,  6.03it/s]

 

可視化して確認するために DecathlonDataset から画像をピックアップする

plt.subplots(3, 3, figsize=(8, 8))
for i in range(9):
    plt.subplot(3, 3, i + 1)
    plt.imshow(train_ds[i * 20]["image"]
               [0, :, :, 10].detach().cpu(), cmap="gray")
plt.tight_layout()
plt.show()

 

訓練コンポーネントの作成


device = torch.device("cuda:0")
net = UNet(
    spatial_dims=3,
    in_channels=1,
    out_channels=3,
    channels=(16, 32, 64, 128, 256),
    strides=(2, 2, 2, 2),
    num_res_units=2,
    norm=Norm.BATCH,
).to(device)
loss = DiceLoss(to_onehot_y=True, softmax=True)
opt = torch.optim.Adam(net.parameters(), 1e-2)

 

最も簡単な訓練ワークフローを定義して実行する

訓練ワークフローを素早くセットアップするために MONAI SupervisedTrainer ハンドラを使用します。

trainer = SupervisedTrainer(
    device=device,
    max_epochs=5,
    train_data_loader=train_loader,
    network=net,
    optimizer=opt,
    loss_function=loss,
    inferer=SimpleInferer(),
    postprocessing=AsDiscreted(
        keys=["pred", "label"], argmax=(True, False),
        to_onehot=True, num_classes=3,
    ),
    key_train_metric={
        "train_meandice": MeanDice(
            output_transform=from_engine(["pred", "label"]))
    },
    train_handlers=StatsHandler(
        tag_name="train_loss", output_transform=from_engine(["loss"], first=True)),
)
trainer.run()
INFO:ignite.engine.engine.SupervisedTrainer:Engine run resuming from iteration 0, epoch 0 until 5 epochs
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 1/7 -- train_loss: 0.7959 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 2/7 -- train_loss: 0.7505 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 3/7 -- train_loss: 0.7073 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 4/7 -- train_loss: 0.6903 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 5/7 -- train_loss: 0.6436 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 6/7 -- train_loss: 0.5983 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 1/5, Iter: 7/7 -- train_loss: 0.5609 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_meandice: 0.3706986674895653
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[1] Metrics -- train_meandice: 0.3707 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_meandice best value: 0.3706986674895653 at epoch: 1
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[1] Complete. Time taken: 00:00:01
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 1/7 -- train_loss: 0.5261 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 2/7 -- train_loss: 0.5211 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 3/7 -- train_loss: 0.5054 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 4/7 -- train_loss: 0.4820 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 5/7 -- train_loss: 0.4693 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 6/7 -- train_loss: 0.4541 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 2/5, Iter: 7/7 -- train_loss: 0.4388 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_meandice: 0.5458252521661612
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[2] Metrics -- train_meandice: 0.5458 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_meandice best value: 0.5458252521661612 at epoch: 2
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[2] Complete. Time taken: 00:00:03
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 1/7 -- train_loss: 0.4413 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 2/7 -- train_loss: 0.4305 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 3/7 -- train_loss: 0.4200 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 4/7 -- train_loss: 0.4210 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 5/7 -- train_loss: 0.4044 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 6/7 -- train_loss: 0.3963 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 3/5, Iter: 7/7 -- train_loss: 0.3781 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_meandice: 0.5662448773017297
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[3] Metrics -- train_meandice: 0.5662 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_meandice best value: 0.5662448773017297 at epoch: 3
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[3] Complete. Time taken: 00:00:03
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 1/7 -- train_loss: 0.3717 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 2/7 -- train_loss: 0.3557 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 3/7 -- train_loss: 0.3526 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 4/7 -- train_loss: 0.3365 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 5/7 -- train_loss: 0.3163 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 6/7 -- train_loss: 0.3026 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 4/5, Iter: 7/7 -- train_loss: 0.2737 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_meandice: 0.6949328046578628
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[4] Metrics -- train_meandice: 0.6949 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_meandice best value: 0.6949328046578628 at epoch: 4
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[4] Complete. Time taken: 00:00:03
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 1/7 -- train_loss: 0.2623 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 2/7 -- train_loss: 0.2445 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 3/7 -- train_loss: 0.2299 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 4/7 -- train_loss: 0.2190 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 5/7 -- train_loss: 0.2207 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 6/7 -- train_loss: 0.2051 
INFO:ignite.engine.engine.SupervisedTrainer:Epoch: 5/5, Iter: 7/7 -- train_loss: 0.1910 
INFO:ignite.engine.engine.SupervisedTrainer:Got new best metric of train_meandice: 0.7996270152238699
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[5] Metrics -- train_meandice: 0.7996 
INFO:ignite.engine.engine.SupervisedTrainer:Key metric: train_meandice best value: 0.7996270152238699 at epoch: 5
INFO:ignite.engine.engine.SupervisedTrainer:Epoch[5] Complete. Time taken: 00:00:03
INFO:ignite.engine.engine.SupervisedTrainer:Engine run complete. Time taken: 00:00:15

 

他の公開データを共有して MONAI にデータセットを追加する

MedNISTDataset or DecathlonDataset を参考にして、他の公開データのための新しいデータセットを作成することは簡単です。主として以下のステップを含みます :

  1. MONAI CacheDataset を継承して、訓練を高速化するためにキャッシング機構を利用します。
  2. データセットのライセンスが公開アクセスと共有を許容していることを確認してください。
  3. データセットでデータをダウンロードして抽出するために monai.apps.download_and_extract を使用します。
  4. 訓練、検証とテストセクションをランダムに分割するロジックを定義します。
  5. 辞書項目でデータリストを構築します :
    [
     {'image': image1_path, 'label': label1_path},
     {'image': image2_path, 'label': label2_path},
     {'image': image3_path, 'label': label3_path},
     ... ...
    ]
    
  6. データセット固有のロジックを定義します。

 

例として IXIDataset を定義する

ここでは新しい IXIDataset を作成する方法を示すために例として IXI データセット を使用します。

class IXIDataset(Randomizable, CacheDataset):
    resource = "http://biomedic.doc.ic.ac.uk/" \
        + "brain-development/downloads/IXI/IXI-T1.tar"
    md5 = "34901a0593b41dd19c1a1f746eac2d58"

    def __init__(
        self,
        root_dir,
        section,
        transform,
        download=False,
        seed=0,
        val_frac=0.2,
        test_frac=0.2,
        cache_num=sys.maxsize,
        cache_rate=1.0,
        num_workers=0,
    ):
        if not os.path.isdir(root_dir):
            raise ValueError("Root directory root_dir must be a directory.")
        self.section = section
        self.val_frac = val_frac
        self.test_frac = test_frac
        self.set_random_state(seed=seed)
        dataset_dir = os.path.join(root_dir, "ixi")
        tarfile_name = f"{dataset_dir}.tar"
        if download:
            download_and_extract(
                self.resource, tarfile_name, dataset_dir, self.md5)
        # as a quick demo, we just use 10 images to show

        self.datalist = [
            {"image": os.path.join(
                dataset_dir, "IXI314-IOP-0889-T1.nii.gz"), "label": 0},
            {"image": os.path.join(
                dataset_dir, "IXI249-Guys-1072-T1.nii.gz"), "label": 0},
            {"image": os.path.join(
                dataset_dir, "IXI609-HH-2600-T1.nii.gz"), "label": 0},
            {"image": os.path.join(
                dataset_dir, "IXI173-HH-1590-T1.nii.gz"), "label": 1},
            {"image": os.path.join(
                dataset_dir, "IXI020-Guys-0700-T1.nii.gz"), "label": 0},
            {"image": os.path.join(
                dataset_dir, "IXI342-Guys-0909-T1.nii.gz"), "label": 0},
            {"image": os.path.join(
                dataset_dir, "IXI134-Guys-0780-T1.nii.gz"), "label": 0},
            {"image": os.path.join(
                dataset_dir, "IXI577-HH-2661-T1.nii.gz"), "label": 1},
            {"image": os.path.join(
                dataset_dir, "IXI066-Guys-0731-T1.nii.gz"), "label": 1},
            {"image": os.path.join(
                dataset_dir, "IXI130-HH-1528-T1.nii.gz"), "label": 0},
        ]
        data = self._generate_data_list()
        super().__init__(
            data, transform, cache_num=cache_num,
            cache_rate=cache_rate, num_workers=num_workers,
        )

    def randomize(self, data=None):
        self.rann = self.R.random()

    def _generate_data_list(self):
        data = []
        for d in self.datalist:
            self.randomize()
            if self.section == "training":
                if self.rann < self.val_frac + self.test_frac:
                    continue
            elif self.section == "validation":
                if self.rann >= self.val_frac:
                    continue
            elif self.section == "test":
                if self.rann < self.val_frac or \
                        self.rann >= self.val_frac + self.test_frac:
                    continue
            else:
                raise ValueError(
                    f"Unsupported section: {self.section}, "
                    "available options are ['training', 'validation', 'test']."
                )
            data.append(d)
        return data

 

可視化して確認するために IXIDataset から画像をピックアップする

train_ds = IXIDataset(
    root_dir=root_dir,
    section="training",
    transform=Compose([LoadImaged("image"), EnsureTyped("image")]),
    download=True,
)
plt.figure("check", (18, 6))
for i in range(3):
    plt.subplot(1, 3, i + 1)
    plt.imshow(train_ds[i]["image"][:, :, 80].detach().cpu(), cmap="gray")
plt.show()
Verified 'ixi.tar', md5: 34901a0593b41dd19c1a1f746eac2d58.
file /workspace/data/medical/ixi.tar exists, skip downloading.
Verified 'ixi.tar', md5: 34901a0593b41dd19c1a1f746eac2d58.
100%|██████████| 9/9 [00:02<00:00,  3.51it/s]

 

データディレクトリのクリーンアップ

一時ディレクトリが使用された場合にはディレクトリを削除します。

if directory is None:
    shutil.rmtree(root_dir)
 

以上



ClassCat® Chatbot

人工知能開発支援

◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com

カテゴリー