diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..f6b1f326ca4ab7cf0c8798856f8fe0020ff82d58 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/app.py b/app.py new file mode 100644 index 0000000000000000000000000000000000000000..c79a818eb4bb5a964b7c31503f7556197db2e332 --- /dev/null +++ b/app.py @@ -0,0 +1,90 @@ +import torch +import system +from utils import load_cfg + +from PIL import Image +import torchvision.transforms as transforms +import gradio as gr +from torchvision.transforms import v2 + + +import wandb + +cfg = load_cfg("configs/effb0-base-breakhis.yaml") + +model = system.SimpleClassificationSystem.load_from_checkpoint( + "runs/03_20_2025_20_19_28/wandb/histopath/03_20_2025_20_19_28/checkpoints/epoch=210-step=41778.ckpt", + torch.device("cpu"), + cfg=cfg.system +) + +model.to("cuda") +model.eval() + +print("Model loaded successfully!") + +image_size = cfg.data.image_size + +def preprocess_image(image: Image): + '''Preprocess the image to be compatible with the model''' + transform = transforms.Compose([ + v2.Resize(image_size, antialias=True), + v2.PILToTensor(), + v2.ToDtype(torch.float32, scale=True), + v2.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) + ]) + + return transform(image).unsqueeze(0).to("cuda") + + +def predict(image_path: str): + '''Predict the class of the image''' + + image = Image.open(image_path).convert("RGB") + + image = preprocess_image(image) + with torch.no_grad(): + output = model(image) + output = output.squeeze() + pred = torch.sigmoid(output).round() + return f"Predicted Class: {'Benign' if int(pred.item())==0 else 'Malignant'}" + +examples = [ + "examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-40-001.png", + "examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-100-001.png", + "examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-200-013.png", + "examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-400-006.png", + "examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-40-001.png", + "examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-100-010.png", + "examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-200-011.png", + "examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-400-006.png", + "examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-40-010.png", + "examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-100-024.png", + "examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-200-027.png", + "examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-400-013.png", + "examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-40-002.png", + "examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-100-031.png", + "examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-200-031.png", + "examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-400-034.png" +] + +examples_labels = ["benign"] * 8 + ["malignant"] * 8 + +examples_with_labels = [[example, label] for example, label in zip(examples, examples_labels)] + +# Gradio Interface +interface = gr.Interface( + fn=predict, + inputs=gr.Image(type="filepath", label="Upload an image"), + outputs=gr.Label(), + live=True, + examples=examples_with_labels, + title="Histopathology Image Classification", + description="This application classifies histopathology images as either benign or malignant. Upload an image to get the prediction.", + examples_per_page=len(examples_with_labels), +) + +gr.DeepLinkButton() + +if __name__ == "__main__": + interface.launch(share=True) diff --git a/configs/effb0-base-breakhis.yaml b/configs/effb0-base-breakhis.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2177b8da2609145043641848a3dad130265150b8 --- /dev/null +++ b/configs/effb0-base-breakhis.yaml @@ -0,0 +1,79 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: ${get_trial_dir:${save_dir}} +save_cfg_path: ${path_append:${trial_dir},config.yaml} +seed: 0 + +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: ${get_shuffle:${train.trainer.devices}} + num_workers: 8 + image_size: [224, 224] + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: [-5, 5] + # GaussianNoise: + # p: 0.2 + ColorJitter: + brightness: 0.5 + contrast: 0.5 + + +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 1.e-3 + scheduler: + name: CosineAnnealingLR + args: + T_max: ${train.trainer.max_epochs} + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: [BinaryAccuracy] + metrics_short_names: [BA] + +train: + trainer: + accelerator: 'gpu' + devices: [0] + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: ${trial_dir} + logger: + names: [WandbLogger, CSVLogger] + args: + wandb: + name: ${get_run_id:${trial_dir}} + project: histopath + save_dir: ${path_append:${trial_dir},wandb} + id: ${get_run_id:${trial_dir}} + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: ${trial_dir} + callback: + names: [ModelCheckpoint] + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max \ No newline at end of file diff --git a/configs/effb0-base-camelyon.yaml b/configs/effb0-base-camelyon.yaml new file mode 100644 index 0000000000000000000000000000000000000000..535d3f7324bb4e982fd044fdba9e8a363bc700b6 --- /dev/null +++ b/configs/effb0-base-camelyon.yaml @@ -0,0 +1,68 @@ +name: effb0-base-camelyon +save_dir: runs +trial_dir: ${get_trial_dir:${save_dir}} +save_cfg_path: ${path_append:${trial_dir},config.yaml} +seed: 0 + +data_type: CamelyonDataModule +data: + data_source: /mnt/local-vision/quanda12/projects/DomainBed/domainbed/data + train_path: ${path_append:${data.data_source},train} + valid_path: ${path_append:${data.data_source},val} + test_path: ${path_append:${data.data_source},test} + batch_size: 4096 + shuffle: ${get_shuffle:${train.trainer.devices}} + num_workers: 3 + image_size: [96, 96] + +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 1.e-3 + scheduler: + name: CosineAnnealingLR + args: + T_max: ${train.trainer.max_epochs} + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: [BinaryAccuracy, BinaryF1Score, BinaryPrecision, BinaryRecall] + metrics_short_names: [BA, BF1, BP, BR] + +train: + trainer: + accelerator: 'gpu' + devices: [2] + max_epochs: 10 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: ${trial_dir} + logger: + # names: [WandbLogger, CSVLogger] + names: [CSVLogger] + args: + # wandb: + # name: ${get_run_id:${trial_dir}} + # project: histpath + # save_dir: ${path_append:${trial_dir},wandb} + # id: ${get_run_id:${trial_dir}} + # anonymous: false + # log_model: all + csv: + name: csv + save_dir: ${trial_dir} + callback: + names: [ModelCheckpoint] + args: + modelcp: + monitor: valid/BA + mode: max \ No newline at end of file diff --git a/configs/effb0-scratch.yaml b/configs/effb0-scratch.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3776ceab717a282760c1138db0dd14d6a828d9bb --- /dev/null +++ b/configs/effb0-scratch.yaml @@ -0,0 +1,68 @@ +name: effb0-scratch +save_dir: runs +trial_dir: ${get_trial_dir:${save_dir}} +save_cfg_path: ${path_append:${trial_dir},config.yaml} +seed: 0 + +data_type: BaseDataModule +data: + data_source: /media/mountHDD1/users/luffy/data/oral-cancer-hhp + train_path: ${path_append:${data.data_source},train} + valid_path: ${path_append:${data.data_source},val} + test_path: ${path_append:${data.data_source},test} + batch_size: 32 + shuffle: ${get_shuffle:${train.trainer.devices}} + num_workers: 3 + image_size: [224, 224] + +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 5.e-4 + scheduler: + name: CosineAnnealingLR + args: + T_max: ${train.trainer.max_epochs} + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: [BinaryAccuracy, BinaryF1Score, BinaryPrecision, BinaryRecall] + metrics_short_names: [BA, BF1, BP, BR] + +train: + trainer: + accelerator: 'gpu' + devices: [1] + max_epochs: 100 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: ${trial_dir} + logger: + # names: [WandbLogger, CSVLogger] + names: [CSVLogger] + args: + # wandb: + # name: ${get_run_id:${trial_dir}} + # project: histpath + # save_dir: ${path_append:${trial_dir},wandb} + # id: ${get_run_id:${trial_dir}} + # anonymous: false + # log_model: all + csv: + name: csv + save_dir: ${trial_dir} + callback: + names: [ModelCheckpoint] + args: + modelcp: + monitor: valid/BA + mode: max \ No newline at end of file diff --git a/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-100-001.png b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-100-001.png new file mode 100644 index 0000000000000000000000000000000000000000..7305a84d3c0db63d64b918a9b74c513a529d5d82 --- /dev/null +++ b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-100-001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17ee1b192eafa481d1123dea703f0f4369bba55201f19eac07ea593c2ca34cf6 +size 463800 diff --git a/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-200-013.png b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-200-013.png new file mode 100644 index 0000000000000000000000000000000000000000..11abb5dddb6a0ac328d5a00b32567a2cf1a98774 --- /dev/null +++ b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-200-013.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db594247db6a73892c1d09d5f130c9fc0048cbda259aeb45563dc1fab8b278c5 +size 467461 diff --git a/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-40-001.png b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-40-001.png new file mode 100644 index 0000000000000000000000000000000000000000..72178e2d33ed9629b4b2eb72be77257b53803069 --- /dev/null +++ b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-40-001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc0c2541240b9da3042e164b1b2caa0c7e42feac08b3f2568b224135e9ea6646 +size 476077 diff --git a/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-400-006.png b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-400-006.png new file mode 100644 index 0000000000000000000000000000000000000000..473c638b623e8a558890bb9e676d97063310a59e --- /dev/null +++ b/examples/breakhis/benign/adenosis/SOB_B_A-14-22549AB-400-006.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37dffc7cd7a043faab7b026e6cb99933186799c1c008afb85b61a415bef27b99 +size 408930 diff --git a/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-100-010.png b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-100-010.png new file mode 100644 index 0000000000000000000000000000000000000000..6498952f18398976bcd1cf8302ccf690831a2411 --- /dev/null +++ b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-100-010.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0efcd240ad718c118f2251dad8d725c0650ea5ade3f74ed97cc0ff2db73a9ebc +size 547224 diff --git a/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-200-011.png b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-200-011.png new file mode 100644 index 0000000000000000000000000000000000000000..42809ed2f6e6130302db6ff1e3f96d6d3c3bb07e --- /dev/null +++ b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-200-011.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6e711d7d7194fa5beff5c9865cf85c22ccf44794885fbff53c2156ad422bf9c +size 514243 diff --git a/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-40-001.png b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-40-001.png new file mode 100644 index 0000000000000000000000000000000000000000..54a9dc26ba15b9a7ebe5d541a497d352408c345a --- /dev/null +++ b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-40-001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48fb5fc8e012aae2d0cf73355d9024ef9a30ce99f7acd037d10c8e7dd265c3e5 +size 570701 diff --git a/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-400-006.png b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-400-006.png new file mode 100644 index 0000000000000000000000000000000000000000..46c1d0dab119708a3104e5cc37caff32933c8efb --- /dev/null +++ b/examples/breakhis/benign/fibroadenoma/SOB_B_F-14-9133-400-006.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfe4968214377a5905a1b540abdcb26f5f8f91e02d36eb248eb530ae9050cdbf +size 485742 diff --git a/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-100-024.png b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-100-024.png new file mode 100644 index 0000000000000000000000000000000000000000..17c3e2ca5ad4adf09dcccbfae6db491f336efda9 --- /dev/null +++ b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-100-024.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46dd8a50234b3e846cbe9a9ca8005b5f06a8665a9642687055ecc729fcf8224c +size 563643 diff --git a/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-200-027.png b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-200-027.png new file mode 100644 index 0000000000000000000000000000000000000000..640db0c9e06ca26ddc74d975fe176e5539679dff --- /dev/null +++ b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-200-027.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e55b2b3ecabebb507227452f1900c46e072f9e0e668fb4ca4880732d9748b209 +size 511971 diff --git a/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-40-010.png b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-40-010.png new file mode 100644 index 0000000000000000000000000000000000000000..ed2f39d99a8333b00fd410684e883afdf465c359 --- /dev/null +++ b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-40-010.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf2eda2cf07df6e1b5c8621bd032bb69f7a1a73656c1d2082b36a27b2facd322 +size 574877 diff --git a/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-400-013.png b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-400-013.png new file mode 100644 index 0000000000000000000000000000000000000000..89d0e9798a8269c457990454784276e6aaa61d5f --- /dev/null +++ b/examples/breakhis/malignant/ductal/SOB_M_DC-14-2523-400-013.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe204ab9d94cdc1d31c93646a59c5ac1b87c9e01e88485b1311d0ee7376e025a +size 509452 diff --git a/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-100-031.png b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-100-031.png new file mode 100644 index 0000000000000000000000000000000000000000..4a303a46f5680212e445bf36cb7d7079977594e9 --- /dev/null +++ b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-100-031.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2801bab80aa46788600cab1d4d4acc19f9520366a1ed5b3003b4e276fab17cf6 +size 505909 diff --git a/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-200-031.png b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-200-031.png new file mode 100644 index 0000000000000000000000000000000000000000..8d09d994223798b4f9a8a6908e3e3035eec4a25c --- /dev/null +++ b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-200-031.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1de26b815ff3b1ea13f95bb3d8f59a5ca2cf8eaaebf45514fef7856d00f2907b +size 517177 diff --git a/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-40-002.png b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-40-002.png new file mode 100644 index 0000000000000000000000000000000000000000..5d629b26e4c6ef2d5c5f64e9d6d2a109802b8eee --- /dev/null +++ b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-40-002.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13622383208b8826b65d4188e3c0a09f8f69ecb67b166075f7b161b411017e63 +size 484493 diff --git a/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-400-034.png b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-400-034.png new file mode 100644 index 0000000000000000000000000000000000000000..5529ad634584a79325439cff551a1fb53805a0d6 --- /dev/null +++ b/examples/breakhis/malignant/lobular/SOB_M_LC-14-12204-400-034.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38e21876f3cea16029851d52088048e6f7ab241197dd558ad3e8a603b7ed3ce6 +size 474735 diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..903567363a7b710006172acc6d5f288901cd86b7 --- /dev/null +++ b/models/__init__.py @@ -0,0 +1 @@ +from .timm_model import TimmModel \ No newline at end of file diff --git a/models/__pycache__/__init__.cpython-310.pyc b/models/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b03a735ec2e8c77644b996c066304b4b4c4330bb Binary files /dev/null and b/models/__pycache__/__init__.cpython-310.pyc differ diff --git a/models/__pycache__/timm_model.cpython-310.pyc b/models/__pycache__/timm_model.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b17cfbe48c2d5578cb9b8314e7515763e3dffd0d Binary files /dev/null and b/models/__pycache__/timm_model.cpython-310.pyc differ diff --git a/models/timm_model.py b/models/timm_model.py new file mode 100644 index 0000000000000000000000000000000000000000..e09ef4d78b4ca5a133c6b768b7c6d932f832bd49 --- /dev/null +++ b/models/timm_model.py @@ -0,0 +1,30 @@ +from torch import nn +from dataclasses import dataclass, field +from utils import parse_structure + +import timm + +@dataclass +class TimmModelConfig: + model_name: str = 'efficientnet_b0' + pretrained: bool = True + num_classes: int = 1 + +class TimmModel(nn.Module): + cfg: TimmModelConfig + def __init__(self, cfg: TimmModelConfig) -> None: + super(TimmModel, self).__init__() + + self.cfg = parse_structure(TimmModelConfig, cfg) + self.model_name = self.cfg.model_name + self.pretrained = self.cfg.pretrained + self.num_classes = self.cfg.num_classes + + self.model = timm.create_model( + model_name=self.model_name, + pretrained=self.pretrained, + num_classes=self.num_classes + ) + + def forward(self, x): + return self.model(x) \ No newline at end of file diff --git a/runs/03_20_2025_20_19_28/check_onnx.txt b/runs/03_20_2025_20_19_28/check_onnx.txt new file mode 100644 index 0000000000000000000000000000000000000000..29f13279995c5226793d5e639d753f4379469c1c --- /dev/null +++ b/runs/03_20_2025_20_19_28/check_onnx.txt @@ -0,0 +1,39 @@ +malignant - benign - -4.33505392074585 - 0.012931746648633455 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-21998CD/400X/SOB_B_F-14-21998CD-400-002.png +malignant - benign - -5.0183424949646 - 0.006572005831300832 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-14134/100X/SOB_B_F-14-14134-100-021.png +malignant - benign - -4.308588027954102 - 0.013273962400185626 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-14134/400X/SOB_B_F-14-14134-400-034.png +malignant - benign - 0.7163642048835754 - 0.6718058883186611 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-14134/200X/SOB_B_F-14-14134-200-030.png +malignant - benign - -4.19320821762085 - 0.014873217736598748 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-14134/200X/SOB_B_F-14-14134-200-034.png +malignant - benign - -2.4580321311950684 - 0.0788531555727457 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-23222AB/400X/SOB_B_F-14-23222AB-400-013.png +malignant - benign - -3.5009539127349854 - 0.02928510123260563 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-23222AB/400X/SOB_B_F-14-23222AB-400-016.png +malignant - benign - 3.9832870960235596 - 0.9817162045476688 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-14134E/100X/SOB_B_F-14-14134E-100-025.png +malignant - benign - 3.8090155124664307 - 0.9783108539445998 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/100X/SOB_B_F-14-25197-100-002.png +malignant - benign - -4.11960506439209 - 0.01599106160349348 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/100X/SOB_B_F-14-25197-100-031.png +malignant - benign - 3.016782522201538 - 0.9533265723803946 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/100X/SOB_B_F-14-25197-100-024.png +malignant - benign - -4.029786109924316 - 0.017467590973030852 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/100X/SOB_B_F-14-25197-100-018.png +malignant - benign - 4.73707914352417 - 0.9913119361675163 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/40X/SOB_B_F-14-25197-40-032.png +malignant - benign - -2.0689001083374023 - 0.11215651623167847 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/400X/SOB_B_F-14-25197-400-035.png +malignant - benign - 5.976008892059326 - 0.9974674906090553 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/200X/SOB_B_F-14-25197-200-044.png +malignant - benign - -4.534403324127197 - 0.01061932907616857 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-25197/200X/SOB_B_F-14-25197-200-039.png +malignant - benign - -3.760202646255493 - 0.022749437815595772 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/fibroadenoma/SOB_B_F_14-29960AB/40X/SOB_B_F-14-29960AB-40-011.png +malignant - benign - -5.58329439163208 - 0.003746071839190041 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-3411F/100X/SOB_B_TA-14-3411F-100-001.png +malignant - benign - 4.587532043457031 - 0.9899246007392932 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-3411F/40X/SOB_B_TA-14-3411F-40-003.png +malignant - benign - -3.814971923828125 - 0.02156311801735704 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-3411F/400X/SOB_B_TA-14-3411F-400-016.png +malignant - benign - 9.489089965820312 - 0.9999243327890416 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-16184CD/100X/SOB_B_TA-14-16184CD-100-003.png +malignant - benign - -5.953848361968994 - 0.002589110676997338 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-16184CD/400X/SOB_B_TA-14-16184CD-400-022.png +malignant - benign - -3.6893680095672607 - 0.024378621250484518 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-21978AB/100X/SOB_B_TA-14-21978AB-100-011.png +malignant - benign - -1.7499383687973022 - 0.14805497169615128 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-16184/40X/SOB_B_TA-14-16184-40-003.png +malignant - benign - -5.737329006195068 - 0.003213009671732214 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/tubular_adenoma/SOB_B_TA_14-13200/40X/SOB_B_TA-14-13200-40-010.png +malignant - benign - 4.169759750366211 - 0.9847792780965864 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/adenosis/SOB_B_A_14-22549AB/40X/SOB_B_A-14-22549AB-40-025.png +malignant - benign - -0.8399221301078796 - 0.30155118455021834 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/adenosis/SOB_B_A_14-22549AB/400X/SOB_B_A-14-22549AB-400-017.png +malignant - benign - -5.662906169891357 - 0.0034603948919703117 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/adenosis/SOB_B_A_14-22549AB/200X/SOB_B_A-14-22549AB-200-009.png +malignant - benign - -3.4140844345092773 - 0.03185817914785674 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/adenosis/SOB_B_A_14-22549G/40X/SOB_B_A-14-22549G-40-016.png +malignant - benign - 0.5923433899879456 - 0.6439026473476818 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/adenosis/SOB_B_A_14-22549G/40X/SOB_B_A-14-22549G-40-025.png +malignant - benign - -3.1917922496795654 - 0.039475765930985326 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/adenosis/SOB_B_A_14-22549G/200X/SOB_B_A-14-22549G-200-004.png +malignant - benign - -4.041451930999756 - 0.017268499589852174 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-21998AB/40X/SOB_B_PT-14-21998AB-40-057.png +malignant - benign - -5.547115802764893 - 0.00388354490088842 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-21998AB/40X/SOB_B_PT-14-21998AB-40-003.png +malignant - benign - -1.3316751718521118 - 0.20888240714803552 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-21998AB/400X/SOB_B_PT-14-21998AB-400-034.png +malignant - benign - 2.14650559425354 - 0.895341786102712 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-21998AB/400X/SOB_B_PT-14-21998AB-400-037.png +malignant - benign - -4.412107944488525 - 0.011984219294003636 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-21998AB/400X/SOB_B_PT-14-21998AB-400-014.png +malignant - benign - -4.79934549331665 - 0.008167871708461739 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-21998AB/400X/SOB_B_PT-14-21998AB-400-053.png +malignant - benign - -5.051648139953613 - 0.006358094627719743 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-29315EF/400X/SOB_B_PT-14-29315EF-400-003.png +malignant - benign - -5.201243877410889 - 0.005479516229230595 - /home/duong/Downloads/BreaKHis_v1/histology_slides/breast/benign/SOB/phyllodes_tumor/SOB_B_PT_14-29315EF/200X/SOB_B_PT-14-29315EF-200-012.png diff --git a/runs/03_20_2025_20_19_28/config.yaml b/runs/03_20_2025_20_19_28/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7f556b96534b84e4f0c07ffb2a2559853800d9d3 --- /dev/null +++ b/runs/03_20_2025_20_19_28/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_20_2025_20_19_28 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_20_2025_20_19_28/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_20_2025_20_19_28 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_20_2025_20_19_28' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_20_2025_20_19_28/wandb + id: '03_20_2025_20_19_28' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_20_2025_20_19_28 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_20_2025_20_19_28/csv/version_0/metrics.csv b/runs/03_20_2025_20_19_28/csv/version_0/metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..e1b151fc385a3bae83bb2bb96abff564fda7de2c --- /dev/null +++ b/runs/03_20_2025_20_19_28/csv/version_0/metrics.csv @@ -0,0 +1,602 @@ +epoch,step,test/BA,test/loss,train/BA,train/loss,valid/BA,valid/loss +0,197,,,,,0.91128009557724,0.22618624567985535 +0,197,,,0.8266307711601257,0.8237360119819641,, +1,395,,,,,0.8732572793960571,0.3565928637981415 +1,395,,,0.9097530245780945,0.2300402820110321,, +2,593,,,,,0.8871989846229553,0.35799628496170044 +2,593,,,0.838822066783905,0.4966137409210205,, +3,791,,,,,0.91128009557724,0.21734456717967987 +3,791,,,0.8787207007408142,0.298590749502182,, +4,989,,,,,0.9100126624107361,0.22183673083782196 +4,989,,,0.9116529226303101,0.23517104983329773,, +5,1187,,,,,0.9353612065315247,0.17478473484516144 +5,1187,,,0.9216276407241821,0.19987255334854126,, +6,1385,,,,,0.9543726444244385,0.13049817085266113 +6,1385,,,0.9347688555717468,0.165760800242424,, +7,1583,,,,,0.9556400775909424,0.10862576961517334 +7,1583,,,0.9444268345832825,0.13924971222877502,, +8,1781,,,,,0.9657794833183289,0.10233848541975021 +8,1781,,,0.9540848731994629,0.12452976405620575,, +9,1979,,,,,0.9581748843193054,0.11761254817247391 +9,1979,,,0.9520266056060791,0.12477860599756241,, +10,2177,,,,,0.9505703449249268,0.12792682647705078 +10,2177,,,0.959626317024231,0.10643217712640762,, +11,2375,,,,,0.9442331790924072,0.27892252802848816 +11,2375,,,0.9634262323379517,0.09695174545049667,, +12,2573,,,,,0.963244616985321,0.10432279109954834 +12,2573,,,0.9645345211029053,0.09397038072347641,, +13,2771,,,,,0.9619771838188171,0.12059788405895233 +13,2771,,,0.9707093238830566,0.07873617112636566,, +14,2969,,,,,0.9619771838188171,0.09977886825799942 +14,2969,,,0.9672260880470276,0.08290110528469086,, +15,3167,,,,,0.9594423174858093,0.1035413146018982 +15,3167,,,0.9700760245323181,0.0848989337682724,, +16,3365,,,,,0.9759188890457153,0.07965701073408127 +16,3365,,,0.9741925001144409,0.07293854653835297,, +17,3563,,,,,0.964512050151825,0.10284774005413055 +17,3563,,,0.9773591160774231,0.07058632373809814,, +18,3761,,,,,0.9670469164848328,0.090766042470932 +18,3761,,,0.9708676338195801,0.07356110215187073,, +19,3959,,,,,0.9657794833183289,0.09633155167102814 +19,3959,,,0.9526599049568176,0.13157635927200317,, +20,4157,,,,,0.9759188890457153,0.0883440151810646 +20,4157,,,0.958834707736969,0.10199683904647827,, +21,4355,,,,,0.946768045425415,0.156084343791008 +21,4355,,,0.974667489528656,0.06913915276527405,, +22,4553,,,,,0.9721165895462036,0.08312490582466125 +22,4553,,,0.9729259014129639,0.07442678511142731,, +23,4751,,,,,0.9594423174858093,0.1480405628681183 +23,4751,,,0.9605762958526611,0.11427582800388336,, +24,4949,,,,,0.9607097506523132,0.10634762793779373 +24,4949,,,0.9697593450546265,0.07575219869613647,, +25,5147,,,,,0.9543726444244385,0.16108494997024536 +25,5147,,,0.973400890827179,0.07516629993915558,, +26,5345,,,,,0.964512050151825,0.1050422266125679 +26,5345,,,0.9648512005805969,0.09419795870780945,, +27,5543,,,,,0.9657794833183289,0.10092919319868088 +27,5543,,,0.9745091795921326,0.07186593860387802,, +28,5741,,,,,0.9708491563796997,0.15055491030216217 +28,5741,,,0.9794173240661621,0.05507710203528404,, +29,5939,,,,,0.9302915334701538,0.17764027416706085 +29,5939,,,0.895345151424408,0.2747252881526947,, +30,6137,,,,,0.963244616985321,0.09958742558956146 +30,6137,,,0.939993679523468,0.15809319913387299,, +31,6335,,,,,0.9543726444244385,0.1166733056306839 +31,6335,,,0.9681760668754578,0.08958935737609863,, +32,6533,,,,,0.9594423174858093,0.10102291405200958 +32,6533,,,0.9716593027114868,0.07826186716556549,, +33,6731,,,,,0.9683143496513367,0.09771408140659332 +33,6731,,,0.9770424365997314,0.06185843423008919,, +34,6929,,,,,0.9543726444244385,0.1136109009385109 +34,6929,,,0.9691260457038879,0.07795652002096176,, +35,7127,,,,,0.9683143496513367,0.0865650549530983 +35,7127,,,0.9833755493164062,0.04929602891206741,, +36,7325,,,,,0.9581748843193054,0.10505101084709167 +36,7325,,,0.9791007041931152,0.05745977163314819,, +37,7523,,,,,0.9708491563796997,0.11264222860336304 +37,7523,,,0.9802089929580688,0.04933030903339386,, +38,7721,,,,,0.9759188890457153,0.08484450727701187 +38,7721,,,0.9781507253646851,0.05657196044921875,, +39,7919,,,,,0.9657794833183289,0.09902752935886383 +39,7919,,,0.984167218208313,0.04464126005768776,, +40,8117,,,,,0.9569074511528015,0.13454453647136688 +40,8117,,,0.9868587851524353,0.03959769755601883,, +41,8315,,,,,0.9670469164848328,0.08668804913759232 +41,8315,,,0.9844838380813599,0.04635176062583923,, +42,8513,,,,,0.9695817232131958,0.08418059349060059 +42,8513,,,0.9865421056747437,0.039653532207012177,, +43,8711,,,,,0.9683143496513367,0.11673538386821747 +43,8711,,,0.9843255281448364,0.04528821259737015,, +44,8909,,,,,0.979721188545227,0.06544008105993271 +44,8909,,,0.9816339612007141,0.04843834042549133,, +45,9107,,,,,0.9721165895462036,0.08609616011381149 +45,9107,,,0.9874920845031738,0.03588252514600754,, +46,9305,,,,,0.963244616985321,0.09158997237682343 +46,9305,,,0.9833755493164062,0.04585111886262894,, +47,9503,,,,,0.9455006122589111,0.11409356445074081 +47,9503,,,0.9692843556404114,0.07724805921316147,, +48,9701,,,,,0.8048162460327148,4.11112642288208 +48,9701,,,0.9781507253646851,0.0630633607506752,, +49,9899,,,,,0.9556400775909424,0.09496937692165375 +49,9899,,,0.9450601935386658,0.15064489841461182,, +50,10097,,,,,0.9746514558792114,0.07986995577812195 +50,10097,,,0.9756174683570862,0.07143565267324448,, +51,10295,,,,,0.979721188545227,0.053451087325811386 +51,10295,,,0.9805256724357605,0.05634794384241104,, +52,10493,,,,,0.9759188890457153,0.05603873357176781 +52,10493,,,0.9859088063240051,0.03934156149625778,, +53,10691,,,,,0.9683143496513367,0.08371423184871674 +53,10691,,,0.9859088063240051,0.03813127800822258,, +54,10889,,,,,0.9771863222122192,0.07740364223718643 +54,10889,,,0.9889170527458191,0.033773571252822876,, +55,11087,,,,,0.9708491563796997,0.08566024154424667 +55,11087,,,0.9852755069732666,0.041691336780786514,, +56,11285,,,,,0.9721165895462036,0.08996374905109406 +56,11285,,,0.988442063331604,0.03069281578063965,, +57,11483,,,,,0.9771863222122192,0.07561255991458893 +57,11483,,,0.9868587851524353,0.03482126072049141,, +58,11681,,,,,0.9708491563796997,0.08276224881410599 +58,11681,,,0.9881253838539124,0.03263067826628685,, +59,11879,,,,,0.980988621711731,0.0625801831483841 +59,11879,,,0.9870170950889587,0.03933216631412506,, +60,12077,,,,,0.9733840227127075,0.07826857268810272 +60,12077,,,0.9905003309249878,0.025533344596624374,, +61,12275,,,,,0.983523428440094,0.06416267156600952 +61,12275,,,0.9900253415107727,0.029157094657421112,, +62,12473,,,,,0.9746514558792114,0.07813039422035217 +62,12473,,,0.9867004156112671,0.036667365580797195,, +63,12671,,,,,0.9721165895462036,0.0755184218287468 +63,12671,,,0.98543381690979,0.04295148700475693,, +64,12869,,,,,0.9695817232131958,0.10482804477214813 +64,12869,,,0.989708662033081,0.02958068624138832,, +65,13067,,,,,0.963244616985321,0.09647582471370697 +65,13067,,,0.9906586408615112,0.02546156756579876,, +66,13265,,,,,0.9771863222122192,0.05880524218082428 +66,13265,,,0.9893920421600342,0.03271383419632912,, +67,13463,,,,,0.9847908616065979,0.044558364897966385 +67,13463,,,0.9939835071563721,0.017898285761475563,, +68,13661,,,,,0.9733840227127075,0.09825662523508072 +68,13661,,,0.9938251972198486,0.016473965719342232,, +69,13859,,,,,0.983523428440094,0.05523292347788811 +69,13859,,,0.9868587851524353,0.0391552560031414,, +70,14057,,,,,0.980988621711731,0.06532835215330124 +70,14057,,,0.9868587851524353,0.03504204377532005,, +71,14255,,,,,0.9784537553787231,0.06094582751393318 +71,14255,,,0.9865421056747437,0.04264308884739876,, +72,14453,,,,,0.980988621711731,0.042735300958156586 +72,14453,,,0.9908169507980347,0.02535533905029297,, +73,14651,,,,,0.9683143496513367,0.08389786630868912 +73,14651,,,0.9912919402122498,0.026907363906502724,, +74,14849,,,,,0.9771863222122192,0.06356687098741531 +74,14849,,,0.9938251972198486,0.017824431881308556,, +75,15047,,,,,0.980988621711731,0.084335096180439 +75,15047,,,0.991450309753418,0.02365293726325035,, +76,15245,,,,,0.9670469164848328,0.10154490917921066 +76,15245,,,0.9930335879325867,0.02122105285525322,, +77,15443,,,,,0.9683143496513367,0.08956309407949448 +77,15443,,,0.9895503520965576,0.028239324688911438,, +78,15641,,,,,0.980988621711731,0.08232609182596207 +78,15641,,,0.9939835071563721,0.015053302980959415,, +79,15839,,,,,0.964512050151825,0.10103853046894073 +79,15839,,,0.9908169507980347,0.02559562772512436,, +80,16037,,,,,0.9784537553787231,0.06955485045909882 +80,16037,,,0.9917669296264648,0.022009732201695442,, +81,16235,,,,,0.9759188890457153,0.06781225651502609 +81,16235,,,0.9911336302757263,0.0254986509680748,, +82,16433,,,,,0.983523428440094,0.05400312691926956 +82,16433,,,0.9900253415107727,0.02970358170568943,, +83,16631,,,,,0.9784537553787231,0.08725332468748093 +83,16631,,,0.9949334859848022,0.0165450070053339,, +84,16829,,,,,0.979721188545227,0.05815662816166878 +84,16829,,,0.9946168661117554,0.01924234628677368,, +85,17027,,,,,0.9771863222122192,0.06637077778577805 +85,17027,,,0.9900253415107727,0.03069026581943035,, +86,17225,,,,,0.9657794833183289,0.11527608335018158 +86,17225,,,0.984958827495575,0.05109690502285957,, +87,17423,,,,,0.9822559952735901,0.05289457365870476 +87,17423,,,0.9931918978691101,0.021846842020750046,, +88,17621,,,,,0.979721188545227,0.05119408294558525 +88,17621,,,0.9946168661117554,0.01824934035539627,, +89,17819,,,,,0.9759188890457153,0.07678959518671036 +89,17819,,,0.9943001866340637,0.017298119142651558,, +90,18017,,,,,0.9531052112579346,0.20438815653324127 +90,18017,,,0.9939835071563721,0.01715310476720333,, +91,18215,,,,,0.9771863222122192,0.06805048882961273 +91,18215,,,0.9952501654624939,0.015607032924890518,, +92,18413,,,,,0.9759188890457153,0.07329382002353668 +92,18413,,,0.9919252395629883,0.02451441064476967,, +93,18611,,,,,0.980988621711731,0.062255848199129105 +93,18611,,,0.9916086196899414,0.023391397669911385,, +94,18809,,,,,0.9746514558792114,0.05807337909936905 +94,18809,,,0.9949334859848022,0.015331448055803776,, +95,19007,,,,,0.9822559952735901,0.06528433412313461 +95,19007,,,0.9936668872833252,0.016201602295041084,, +96,19205,,,,,0.9771863222122192,0.06927241384983063 +96,19205,,,0.9962001442909241,0.01177881471812725,, +97,19403,,,,,0.9670469164848328,0.15398895740509033 +97,19403,,,0.9939835071563721,0.01606116257607937,, +98,19601,,,,,0.9759188890457153,0.07240235805511475 +98,19601,,,0.9917669296264648,0.022559357807040215,, +99,19799,,,,,0.980988621711731,0.07595259696245193 +99,19799,,,0.9947751760482788,0.015952855348587036,, +100,19997,,,,,0.983523428440094,0.062226466834545135 +100,19997,,,0.9939835071563721,0.01745740696787834,, +101,20195,,,,,0.9860582947731018,0.05851268023252487 +101,20195,,,0.9933502078056335,0.018397565931081772,, +102,20393,,,,,0.9759188890457153,0.07940566539764404 +102,20393,,,0.9949334859848022,0.014061633497476578,, +103,20591,,,,,0.9847908616065979,0.06346100568771362 +103,20591,,,0.9954084753990173,0.012222114950418472,, +104,20789,,,,,0.979721188545227,0.05452654883265495 +104,20789,,,0.9938251972198486,0.016009848564863205,, +105,20987,,,,,0.9784537553787231,0.0850495919585228 +105,20987,,,0.9943001866340637,0.012360834516584873,, +106,21185,,,,,0.9759188890457153,0.08113803714513779 +106,21185,,,0.9946168661117554,0.014928288757801056,, +107,21383,,,,,0.9847908616065979,0.04620102792978287 +107,21383,,,0.9968334436416626,0.010393146425485611,, +108,21581,,,,,0.979721188545227,0.047835301607847214 +108,21581,,,0.9920836091041565,0.02358030155301094,, +109,21779,,,,,0.9784537553787231,0.08611423522233963 +109,21779,,,0.9947751760482788,0.013980722986161709,, +110,21977,,,,,0.9873257279396057,0.028462395071983337 +110,21977,,,0.9920836091041565,0.023498160764575005,, +111,22175,,,,,0.9784537553787231,0.06256071478128433 +111,22175,,,0.9941418766975403,0.014946592971682549,, +112,22373,,,,,0.9708491563796997,0.11748050153255463 +112,22373,,,0.9962001442909241,0.011986144818365574,, +113,22571,,,,,0.9759188890457153,0.07329002022743225 +113,22571,,,0.9955667853355408,0.011278145015239716,, +114,22769,,,,,0.9784537553787231,0.07054559141397476 +114,22769,,,0.9955667853355408,0.013310931622982025,, +115,22967,,,,,0.9784537553787231,0.08519555628299713 +115,22967,,,0.9963584542274475,0.0092732859775424,, +116,23165,,,,,0.9683143496513367,0.09777345508337021 +116,23165,,,0.9946168661117554,0.014560170471668243,, +117,23363,,,,,0.9822559952735901,0.07528770714998245 +117,23363,,,0.9950918555259705,0.011983952485024929,, +118,23561,,,,,0.9784537553787231,0.061228346079587936 +118,23561,,,0.9947751760482788,0.014630312100052834,, +119,23759,,,,,0.9746514558792114,0.05873687192797661 +119,23759,,,0.9931918978691101,0.01723671890795231,, +120,23957,,,,,0.983523428440094,0.03915823996067047 +120,23957,,,0.9952501654624939,0.01568985916674137,, +121,24155,,,,,0.979721188545227,0.056773439049720764 +121,24155,,,0.998733401298523,0.0038402266800403595,, +122,24353,,,,,0.9708491563796997,0.11506932973861694 +122,24353,,,0.9955667853355408,0.010973827913403511,, +123,24551,,,,,0.9771863222122192,0.07678340375423431 +123,24551,,,0.9960417747497559,0.011717949993908405,, +124,24749,,,,,0.9733840227127075,0.11365211009979248 +124,24749,,,0.9974667429924011,0.006674290634691715,, +125,24947,,,,,0.9708491563796997,0.0965191051363945 +125,24947,,,0.996991753578186,0.009866101667284966,, +126,25145,,,,,0.9784537553787231,0.06471972912549973 +126,25145,,,0.9949334859848022,0.01684342883527279,, +127,25343,,,,,0.9784537553787231,0.07202308624982834 +127,25343,,,0.996991753578186,0.00971529632806778,, +128,25541,,,,,0.9822559952735901,0.06422771513462067 +128,25541,,,0.9963584542274475,0.009793774224817753,, +129,25739,,,,,0.980988621711731,0.08936640620231628 +129,25739,,,0.9976250529289246,0.007393220905214548,, +130,25937,,,,,0.979721188545227,0.0631658285856247 +130,25937,,,0.9949334859848022,0.015083561651408672,, +131,26135,,,,,0.9873257279396057,0.04081824794411659 +131,26135,,,0.995725154876709,0.011207129806280136,, +132,26333,,,,,0.9784537553787231,0.08429412543773651 +132,26333,,,0.9973084330558777,0.005907026119530201,, +133,26531,,,,,0.979721188545227,0.058390162885189056 +133,26531,,,0.9966751337051392,0.008403374813497066,, +134,26729,,,,,0.983523428440094,0.042450107634067535 +134,26729,,,0.9979417324066162,0.0071456157602369785,, +135,26927,,,,,0.983523428440094,0.06520560383796692 +135,26927,,,0.9958834648132324,0.012687979266047478,, +136,27125,,,,,0.9847908616065979,0.05175977945327759 +136,27125,,,0.9960417747497559,0.012210976332426071,, +137,27323,,,,,0.9860582947731018,0.03335307538509369 +137,27323,,,0.9982584118843079,0.005391063634306192,, +138,27521,,,,,0.9771863222122192,0.06183269992470741 +138,27521,,,0.992716908454895,0.020304201170802116,, +139,27719,,,,,0.980988621711731,0.06537109613418579 +139,27719,,,0.9962001442909241,0.011706886813044548,, +140,27917,,,,,0.9822559952735901,0.049692776054143906 +140,27917,,,0.9963584542274475,0.013724532909691334,, +141,28115,,,,,0.9847908616065979,0.050877124071121216 +141,28115,,,0.9979417324066162,0.005562719888985157,, +142,28313,,,,,0.980988621711731,0.07239655405282974 +142,28313,,,0.9981000423431396,0.005963429808616638,, +143,28511,,,,,0.9822559952735901,0.06254444271326065 +143,28511,,,0.9960417747497559,0.009650328196585178,, +144,28709,,,,,0.9784537553787231,0.07211428135633469 +144,28709,,,0.9984167218208313,0.0038499648217111826,, +145,28907,,,,,0.979721188545227,0.11993850767612457 +145,28907,,,0.9974667429924011,0.008335428312420845,, +146,29105,,,,,0.983523428440094,0.03949150815606117 +146,29105,,,0.9971501231193542,0.008983101695775986,, +147,29303,,,,,0.9759188890457153,0.07136277854442596 +147,29303,,,0.9968334436416626,0.011471491307020187,, +148,29501,,,,,0.9771863222122192,0.07131810486316681 +148,29501,,,0.9977834224700928,0.006553398445248604,, +149,29699,,,,,0.9784537553787231,0.06923770904541016 +149,29699,,,0.9981000423431396,0.005300062242895365,, +150,29897,,,,,0.980988621711731,0.05620964616537094 +150,29897,,,0.996991753578186,0.009695294313132763,, +151,30095,,,,,0.9898605942726135,0.04065917059779167 +151,30095,,,0.9992083311080933,0.0035564510617405176,, +152,30293,,,,,0.9784537553787231,0.09430571645498276 +152,30293,,,0.998733401298523,0.0040572346188127995,, +153,30491,,,,,0.980988621711731,0.03828497231006622 +153,30491,,,0.9960417747497559,0.013230671174824238,, +154,30689,,,,,0.983523428440094,0.05810399353504181 +154,30689,,,0.9958834648132324,0.010612358339130878,, +155,30887,,,,,0.983523428440094,0.0446629598736763 +155,30887,,,0.9984167218208313,0.004771776031702757,, +156,31085,,,,,0.983523428440094,0.038644395768642426 +156,31085,,,0.9966751337051392,0.010115464217960835,, +157,31283,,,,,0.9822559952735901,0.06521879136562347 +157,31283,,,0.9985750317573547,0.005385636817663908,, +158,31481,,,,,0.9746514558792114,0.055716708302497864 +158,31481,,,0.9979417324066162,0.007789017632603645,, +159,31679,,,,,0.980988621711731,0.06374744325876236 +159,31679,,,0.9976250529289246,0.008265458047389984,, +160,31877,,,,,0.9822559952735901,0.05605056509375572 +160,31877,,,0.9976250529289246,0.006577567663043737,, +161,32075,,,,,0.9822559952735901,0.06127680093050003 +161,32075,,,0.9977834224700928,0.005776307079941034,, +162,32273,,,,,0.983523428440094,0.048261240124702454 +162,32273,,,0.9984167218208313,0.0042326683178544044,, +163,32471,,,,,0.9847908616065979,0.059931617230176926 +163,32471,,,0.9974667429924011,0.009356062859296799,, +164,32669,,,,,0.9860582947731018,0.06381059437990189 +164,32669,,,0.9976250529289246,0.009060649201273918,, +165,32867,,,,,0.9771863222122192,0.07462432235479355 +165,32867,,,0.9977834224700928,0.007558924145996571,, +166,33065,,,,,0.979721188545227,0.04995865747332573 +166,33065,,,0.9976250529289246,0.0058783311396837234,, +167,33263,,,,,0.9885931611061096,0.035682324320077896 +167,33263,,,0.998733401298523,0.0046630059368908405,, +168,33461,,,,,0.9822559952735901,0.07515623420476913 +168,33461,,,0.9990500211715698,0.003101593814790249,, +169,33659,,,,,0.9860582947731018,0.03545568138360977 +169,33659,,,0.9985750317573547,0.005048222374171019,, +170,33857,,,,,0.9847908616065979,0.047167617827653885 +170,33857,,,0.9995250105857849,0.0015498134307563305,, +171,34055,,,,,0.9784537553787231,0.053005117923021317 +171,34055,,,0.9982584118843079,0.008295124396681786,, +172,34253,,,,,0.979721188545227,0.056284625083208084 +172,34253,,,0.9981000423431396,0.005602098535746336,, +173,34451,,,,,0.9847908616065979,0.056227728724479675 +173,34451,,,0.9985750317573547,0.004770137369632721,, +174,34649,,,,,0.9822559952735901,0.06164003163576126 +174,34649,,,0.9979417324066162,0.005215464625507593,, +175,34847,,,,,0.9860582947731018,0.0674462541937828 +175,34847,,,0.9976250529289246,0.006242494098842144,, +176,35045,,,,,0.9847908616065979,0.058756839483976364 +176,35045,,,0.9981000423431396,0.005389729514718056,, +177,35243,,,,,0.9847908616065979,0.059845712035894394 +177,35243,,,0.9981000423431396,0.004947479348629713,, +178,35441,,,,,0.9911280274391174,0.03355715796351433 +178,35441,,,0.9988917112350464,0.003161882981657982,, +179,35639,,,,,0.983523428440094,0.05782219022512436 +179,35639,,,0.9988917112350464,0.0022354815155267715,, +180,35837,,,,,0.9847908616065979,0.04859106242656708 +180,35837,,,0.9992083311080933,0.0027648673858493567,, +181,36035,,,,,0.9860582947731018,0.04887654259800911 +181,36035,,,0.9981000423431396,0.006457349751144648,, +182,36233,,,,,0.9885931611061096,0.026296185329556465 +182,36233,,,0.9996833205223083,0.0013758769491687417,, +183,36431,,,,,0.9822559952735901,0.07385034114122391 +183,36431,,,0.9982584118843079,0.00490459892898798,, +184,36629,,,,,0.979721188545227,0.07095672190189362 +184,36629,,,0.9979417324066162,0.007392126601189375,, +185,36827,,,,,0.9898605942726135,0.04020765423774719 +185,36827,,,0.9993667006492615,0.002596240257844329,, +186,37025,,,,,0.9860582947731018,0.04151257500052452 +186,37025,,,0.9988917112350464,0.0031582112424075603,, +187,37223,,,,,0.9885931611061096,0.05419075861573219 +187,37223,,,0.9992083311080933,0.002791826846078038,, +188,37421,,,,,0.983523428440094,0.052943188697099686 +188,37421,,,0.9996833205223083,0.0011672822292894125,, +189,37619,,,,,0.979721188545227,0.09425953775644302 +189,37619,,,0.9988917112350464,0.0029634060338139534,, +190,37817,,,,,0.980988621711731,0.0626310482621193 +190,37817,,,0.9992083311080933,0.0027124849148094654,, +191,38015,,,,,0.983523428440094,0.04945343732833862 +191,38015,,,0.9990500211715698,0.0037036563735455275,, +192,38213,,,,,0.983523428440094,0.06271631270647049 +192,38213,,,0.9971501231193542,0.006958182901144028,, +193,38411,,,,,0.9873257279396057,0.029307059943675995 +193,38411,,,0.9990500211715698,0.00408206507563591,, +194,38609,,,,,0.9885931611061096,0.022793849930167198 +194,38609,,,0.9993667006492615,0.0023431715089827776,, +195,38807,,,,,0.9860582947731018,0.05518006533384323 +195,38807,,,0.9993667006492615,0.0022564930841326714,, +196,39005,,,,,0.9911280274391174,0.030003560706973076 +196,39005,,,0.9990500211715698,0.002247144700959325,, +197,39203,,,,,0.9860582947731018,0.035126376897096634 +197,39203,,,0.9995250105857849,0.0016809903318062425,, +198,39401,,,,,0.9873257279396057,0.03205488994717598 +198,39401,,,0.9988917112350464,0.003424831200391054,, +199,39599,,,,,0.9898605942726135,0.04412782937288284 +199,39599,,,0.9992083311080933,0.0025228001177310944,, +200,39797,,,,,0.9885931611061096,0.03763449937105179 +200,39797,,,0.998733401298523,0.0023178106639534235,, +201,39995,,,,,0.9822559952735901,0.057991087436676025 +201,39995,,,0.9993667006492615,0.002417689422145486,, +202,40193,,,,,0.9847908616065979,0.05571934953331947 +202,40193,,,0.9990500211715698,0.0024996730498969555,, +203,40391,,,,,0.9860582947731018,0.06763935089111328 +203,40391,,,0.9990500211715698,0.0026093991473317146,, +204,40589,,,,,0.9860582947731018,0.07288935780525208 +204,40589,,,0.9981000423431396,0.004770738072693348,, +205,40787,,,,,0.9873257279396057,0.051156774163246155 +205,40787,,,0.9993667006492615,0.0025454023852944374,, +206,40985,,,,,0.9860582947731018,0.05217234417796135 +206,40985,,,1.0,0.0006471874075941741,, +207,41183,,,,,0.9885931611061096,0.058490119874477386 +207,41183,,,1.0,0.00023324822541326284,, +208,41381,,,,,0.9873257279396057,0.05417875200510025 +208,41381,,,0.9998416900634766,0.00143997254781425,, +209,41579,,,,,0.9822559952735901,0.08878231793642044 +209,41579,,,0.9993667006492615,0.0019743419252336025,, +210,41777,,,,,0.9923954606056213,0.033119894564151764 +210,41777,,,0.9996833205223083,0.0014772486174479127,, +211,41975,,,,,0.9847908616065979,0.043651532381772995 +211,41975,,,0.9992083311080933,0.0034548805560916662,, +212,42173,,,,,0.9873257279396057,0.04080284386873245 +212,42173,,,0.9995250105857849,0.0011059909593313932,, +213,42371,,,,,0.983523428440094,0.06345593929290771 +213,42371,,,0.9998416900634766,0.000962553545832634,, +214,42569,,,,,0.9885931611061096,0.05308623984456062 +214,42569,,,0.9990500211715698,0.003338178154081106,, +215,42767,,,,,0.9911280274391174,0.02874879539012909 +215,42767,,,0.9996833205223083,0.0011992891086265445,, +216,42965,,,,,0.9822559952735901,0.05261974409222603 +216,42965,,,0.9992083311080933,0.0017548154573887587,, +217,43163,,,,,0.9860582947731018,0.0487617626786232 +217,43163,,,0.998733401298523,0.0026731768157333136,, +218,43361,,,,,0.9898605942726135,0.03148455172777176 +218,43361,,,1.0,0.0005357497138902545,, +219,43559,,,,,0.9860582947731018,0.0436587892472744 +219,43559,,,0.998733401298523,0.005017465446144342,, +220,43757,,,,,0.983523428440094,0.06386443972587585 +220,43757,,,0.9992083311080933,0.0015340512618422508,, +221,43955,,,,,0.9847908616065979,0.05521780997514725 +221,43955,,,0.9995250105857849,0.0010385018540546298,, +222,44153,,,,,0.9860582947731018,0.029898539185523987 +222,44153,,,0.9993667006492615,0.0013007574016228318,, +223,44351,,,,,0.9847908616065979,0.06684428453445435 +223,44351,,,0.9998416900634766,0.000526946212630719,, +224,44549,,,,,0.9873257279396057,0.054234229028224945 +224,44549,,,0.9992083311080933,0.0025474554859101772,, +225,44747,,,,,0.9860582947731018,0.05710883066058159 +225,44747,,,1.0,0.00033268655533902347,, +226,44945,,,,,0.9860582947731018,0.045214422047138214 +226,44945,,,1.0,0.00029147928580641747,, +227,45143,,,,,0.9860582947731018,0.044951245188713074 +227,45143,,,0.9995250105857849,0.001568702864460647,, +228,45341,,,,,0.983523428440094,0.05281654745340347 +228,45341,,,0.9998416900634766,0.00032571537303738296,, +229,45539,,,,,0.9847908616065979,0.07321715354919434 +229,45539,,,0.9993667006492615,0.0018211400602012873,, +230,45737,,,,,0.983523428440094,0.05864441394805908 +230,45737,,,1.0,0.0003593153669498861,, +231,45935,,,,,0.9898605942726135,0.030429944396018982 +231,45935,,,1.0,0.00013250845950096846,, +232,46133,,,,,0.9885931611061096,0.04702717065811157 +232,46133,,,0.9996833205223083,0.0008222089963965118,, +233,46331,,,,,0.9885931611061096,0.06305951625108719 +233,46331,,,0.9998416900634766,0.0012902473099529743,, +234,46529,,,,,0.9885931611061096,0.05134285241365433 +234,46529,,,0.9995250105857849,0.0007860262412577868,, +235,46727,,,,,0.9898605942726135,0.044810280203819275 +235,46727,,,0.9992083311080933,0.001780643709935248,, +236,46925,,,,,0.9898605942726135,0.038076918572187424 +236,46925,,,0.9995250105857849,0.0011568657355383039,, +237,47123,,,,,0.9860582947731018,0.04884303733706474 +237,47123,,,0.9995250105857849,0.0021462026052176952,, +238,47321,,,,,0.9873257279396057,0.04209771379828453 +238,47321,,,0.9995250105857849,0.0007236531819216907,, +239,47519,,,,,0.980988621711731,0.038000352680683136 +239,47519,,,1.0,0.00013279131962917745,, +240,47717,,,,,0.9911280274391174,0.019087176769971848 +240,47717,,,1.0,0.0001682294241618365,, +241,47915,,,,,0.9847908616065979,0.06174926832318306 +241,47915,,,0.9996833205223083,0.0008513447246514261,, +242,48113,,,,,0.9873257279396057,0.048211704939603806 +242,48113,,,0.9996833205223083,0.0006509901722893119,, +243,48311,,,,,0.9885931611061096,0.05076059699058533 +243,48311,,,0.9995250105857849,0.0030816528014838696,, +244,48509,,,,,0.983523428440094,0.057266466319561005 +244,48509,,,0.9998416900634766,0.0009368474711664021,, +245,48707,,,,,0.9847908616065979,0.05780979245901108 +245,48707,,,0.9996833205223083,0.0010153183247894049,, +246,48905,,,,,0.9873257279396057,0.05361979454755783 +246,48905,,,0.9996833205223083,0.0013934840681031346,, +247,49103,,,,,0.9873257279396057,0.03923347592353821 +247,49103,,,0.9998416900634766,0.0010130524169653654,, +248,49301,,,,,0.9873257279396057,0.055411361157894135 +248,49301,,,0.9998416900634766,0.0006090358947403729,, +249,49499,,,,,0.9860582947731018,0.05261407792568207 +249,49499,,,1.0,0.0003156993188895285,, +250,49697,,,,,0.983523428440094,0.04242425411939621 +250,49697,,,0.9998416900634766,0.0003569174441508949,, +251,49895,,,,,0.9873257279396057,0.053399085998535156 +251,49895,,,0.9998416900634766,0.0003505538043100387,, +252,50093,,,,,0.9885931611061096,0.043381258845329285 +252,50093,,,0.9998416900634766,0.000777863955590874,, +253,50291,,,,,0.983523428440094,0.04768048971891403 +253,50291,,,0.9998416900634766,0.0007840316975489259,, +254,50489,,,,,0.9898605942726135,0.042767174541950226 +254,50489,,,0.9996833205223083,0.0006439540884457529,, +255,50687,,,,,0.9898605942726135,0.03195826709270477 +255,50687,,,1.0,0.0001199717225972563,, +256,50885,,,,,0.9873257279396057,0.04007335379719734 +256,50885,,,0.9996833205223083,0.0009965492645278573,, +257,51083,,,,,0.9873257279396057,0.05542847141623497 +257,51083,,,0.9998416900634766,0.00025928523973561823,, +258,51281,,,,,0.983523428440094,0.04897094517946243 +258,51281,,,0.9996833205223083,0.00033859515679068863,, +259,51479,,,,,0.9898605942726135,0.0239107608795166 +259,51479,,,0.9993667006492615,0.001483521074987948,, +260,51677,,,,,0.9873257279396057,0.0432552732527256 +260,51677,,,0.9995250105857849,0.0010324158938601613,, +261,51875,,,,,0.9860582947731018,0.042926985770463943 +261,51875,,,0.9996833205223083,0.0006802493007853627,, +262,52073,,,,,0.9860582947731018,0.05170322582125664 +262,52073,,,1.0,0.00013100694923195988,, +263,52271,,,,,0.9898605942726135,0.03813311830163002 +263,52271,,,0.9998416900634766,0.0006340056424960494,, +264,52469,,,,,0.9860582947731018,0.045041523873806 +264,52469,,,0.9996833205223083,0.0005117370164953172,, +265,52667,,,,,0.9847908616065979,0.06657154858112335 +265,52667,,,1.0,0.0002716396120376885,, +266,52865,,,,,0.9911280274391174,0.04092765599489212 +266,52865,,,1.0,5.906099613639526e-05,, +267,53063,,,,,0.9898605942726135,0.02769777551293373 +267,53063,,,1.0,0.00020548299653455615,, +268,53261,,,,,0.9898605942726135,0.04100058972835541 +268,53261,,,0.9998416900634766,0.0005592709640040994,, +269,53459,,,,,0.9873257279396057,0.052778858691453934 +269,53459,,,0.9998416900634766,0.0012377295643091202,, +270,53657,,,,,0.9860582947731018,0.08524071425199509 +270,53657,,,1.0,0.00012533634435385466,, +271,53855,,,,,0.9847908616065979,0.04437583312392235 +271,53855,,,0.9998416900634766,0.0003152514109387994,, +272,54053,,,,,0.9822559952735901,0.04805198311805725 +272,54053,,,0.9996833205223083,0.001034151529893279,, +273,54251,,,,,0.9898605942726135,0.03126559033989906 +273,54251,,,1.0,9.969884558813646e-05,, +274,54449,,,,,0.9923954606056213,0.021786164492368698 +274,54449,,,1.0,6.082404070184566e-05,, +275,54647,,,,,0.9923954606056213,0.035584550350904465 +275,54647,,,1.0,5.5003267334541306e-05,, +276,54845,,,,,0.9873257279396057,0.0393071174621582 +276,54845,,,0.9998416900634766,0.0004037953040096909,, +277,55043,,,,,0.9898605942726135,0.04132506623864174 +277,55043,,,0.9998416900634766,0.0003148422692902386,, +278,55241,,,,,0.9885931611061096,0.04560871794819832 +278,55241,,,0.9998416900634766,0.0007260704878717661,, +279,55439,,,,,0.9873257279396057,0.0370820052921772 +279,55439,,,0.9998416900634766,0.001000468386337161,, +280,55637,,,,,0.9885931611061096,0.027910295873880386 +280,55637,,,0.9995250105857849,0.0012426271568983793,, +281,55835,,,,,0.9860582947731018,0.04338834807276726 +281,55835,,,0.9998416900634766,0.0003572157002054155,, +282,56033,,,,,0.9873257279396057,0.045204032212495804 +282,56033,,,0.9996833205223083,0.0016764296451583505,, +283,56231,,,,,0.9911280274391174,0.02757694385945797 +283,56231,,,1.0,0.00015084358165040612,, +284,56429,,,,,0.9847908616065979,0.04655682295560837 +284,56429,,,0.9995250105857849,0.0004992728354409337,, +285,56627,,,,,0.9898605942726135,0.05260489881038666 +285,56627,,,0.9998416900634766,0.0003074496053159237,, +286,56825,,,,,0.9873257279396057,0.04643026739358902 +286,56825,,,1.0,3.189235940226354e-05,, +287,57023,,,,,0.9885931611061096,0.03109988197684288 +287,57023,,,0.9998416900634766,0.0006589863914996386,, +288,57221,,,,,0.9873257279396057,0.05397128313779831 +288,57221,,,0.9998416900634766,0.0002553544763941318,, +289,57419,,,,,0.9860582947731018,0.041838306933641434 +289,57419,,,0.9998416900634766,0.00040960844489745796,, +290,57617,,,,,0.9923954606056213,0.0365758016705513 +290,57617,,,1.0,0.0002533810620661825,, +291,57815,,,,,0.9860582947731018,0.053849007934331894 +291,57815,,,0.9998416900634766,0.0011053497437387705,, +292,58013,,,,,0.9860582947731018,0.04312862083315849 +292,58013,,,0.9992083311080933,0.004160226788371801,, +293,58211,,,,,0.9885931611061096,0.033814117312431335 +293,58211,,,0.9998416900634766,0.0003153568832203746,, +294,58409,,,,,0.9898605942726135,0.027616426348686218 +294,58409,,,1.0,0.00019460782641544938,, +295,58607,,,,,0.9873257279396057,0.03899732977151871 +295,58607,,,0.9996833205223083,0.0009958380833268166,, +296,58805,,,,,0.9860582947731018,0.07864692807197571 +296,58805,,,0.9998416900634766,0.0009192967554554343,, +297,59003,,,,,0.9822559952735901,0.050296783447265625 +297,59003,,,0.9998416900634766,0.0005852042813785374,, +298,59201,,,,,0.9873257279396057,0.05310799926519394 +298,59201,,,0.9998416900634766,0.0008308007381856441,, +299,59399,,,,,0.9885931611061096,0.04359392076730728 +299,59399,,,1.0,0.00034749333281069994,, +300,59400,0.9875621795654297,0.043402157723903656,,,, diff --git a/runs/03_20_2025_20_19_28/done.txt b/runs/03_20_2025_20_19_28/done.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/runs/03_20_2025_20_19_28/model.onnx b/runs/03_20_2025_20_19_28/model.onnx new file mode 100644 index 0000000000000000000000000000000000000000..fabf2d9d80fa31cb0c95fcdec73bbf1fd16368aa --- /dev/null +++ b/runs/03_20_2025_20_19_28/model.onnx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac7b78ae0a8e2c9142c03e134a4f361df01eba4c411d3905fbce302e9a0286cf +size 16029885 diff --git a/runs/03_20_2025_20_19_28/wandb/histopath/03_20_2025_20_19_28/checkpoints/epoch=210-step=41778.ckpt b/runs/03_20_2025_20_19_28/wandb/histopath/03_20_2025_20_19_28/checkpoints/epoch=210-step=41778.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..4897b5475bedb033efa7b99db402004efd32dd71 --- /dev/null +++ b/runs/03_20_2025_20_19_28/wandb/histopath/03_20_2025_20_19_28/checkpoints/epoch=210-step=41778.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4af806dc9c19a03e9d250796ca0c63f43412144a6367246092964f4fa69dcf2b +size 48590242 diff --git a/runs/03_20_2025_20_19_28/wandb/histopath/03_20_2025_20_19_28/checkpoints/last.ckpt b/runs/03_20_2025_20_19_28/wandb/histopath/03_20_2025_20_19_28/checkpoints/last.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..63226ab6836d3192a5422bc55a366bbef64983bf --- /dev/null +++ b/runs/03_20_2025_20_19_28/wandb/histopath/03_20_2025_20_19_28/checkpoints/last.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7736beffa8b1d54dbe0cea6c057cbd0f4405e1d85ba59162892d1dbc99d2785 +size 48590242 diff --git a/runs/03_28_2025_00_21_48/config.yaml b/runs/03_28_2025_00_21_48/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a3d1aa1f14a1f513eb9b7a350d9f58fb8ea7f596 --- /dev/null +++ b/runs/03_28_2025_00_21_48/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_21_48 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_21_48/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_21_48 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_00_21_48' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_21_48/wandb + id: '03_28_2025_00_21_48' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_21_48 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_00_32_51/config.yaml b/runs/03_28_2025_00_32_51/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..253b26e9b5a417c809044f8f82117487577bdc5e --- /dev/null +++ b/runs/03_28_2025_00_32_51/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_32_51 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_32_51/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_32_51 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_00_32_51' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_32_51/wandb + id: '03_28_2025_00_32_51' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_32_51 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_00_35_19/config.yaml b/runs/03_28_2025_00_35_19/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b31c81d6cc81c87fabd66abc4364df5db62c1633 --- /dev/null +++ b/runs/03_28_2025_00_35_19/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_35_19 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_35_19/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_35_19 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_00_35_19' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_35_19/wandb + id: '03_28_2025_00_35_19' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_00_35_19 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_01_36_41/config.yaml b/runs/03_28_2025_01_36_41/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b9cc4f276569c98bad0e7dae1aae7e96e3e71ffe --- /dev/null +++ b/runs/03_28_2025_01_36_41/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_36_41 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_36_41/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_36_41 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_01_36_41' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_36_41/wandb + id: '03_28_2025_01_36_41' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_36_41 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_01_56_02/config.yaml b/runs/03_28_2025_01_56_02/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a6f076eee4877515668ab7e88e42246eea2cf66f --- /dev/null +++ b/runs/03_28_2025_01_56_02/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_56_02 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_56_02/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_56_02 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_01_56_02' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_56_02/wandb + id: '03_28_2025_01_56_02' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_56_02 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_01_58_16/config.yaml b/runs/03_28_2025_01_58_16/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8e9cab0d34ff1affd5f19f67ce6b01c788f6bec1 --- /dev/null +++ b/runs/03_28_2025_01_58_16/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_16 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_16/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_16 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_01_58_16' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_16/wandb + id: '03_28_2025_01_58_16' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_16 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_01_58_52/config.yaml b/runs/03_28_2025_01_58_52/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fe36b8f4f2976c51db809998729ed2c8239666a3 --- /dev/null +++ b/runs/03_28_2025_01_58_52/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_52 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_52/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_52 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_01_58_52' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_52/wandb + id: '03_28_2025_01_58_52' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_01_58_52 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_00_29/config.yaml b/runs/03_28_2025_02_00_29/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f70107e7ad63a40a1afb2679bb6ff498f63ed41a --- /dev/null +++ b/runs/03_28_2025_02_00_29/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_00_29 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_00_29/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_00_29 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_00_29' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_00_29/wandb + id: '03_28_2025_02_00_29' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_00_29 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_03_04/config.yaml b/runs/03_28_2025_02_03_04/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..88d325eccb40b539d7980a6df4d1ccc527b9814d --- /dev/null +++ b/runs/03_28_2025_02_03_04/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_03_04 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_03_04/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_03_04 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_03_04' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_03_04/wandb + id: '03_28_2025_02_03_04' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_03_04 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_14_37/config.yaml b/runs/03_28_2025_02_14_37/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8c221da50e3bbf7f682b66f376ea6394791ed2eb --- /dev/null +++ b/runs/03_28_2025_02_14_37/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_14_37 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_14_37/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_14_37 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_14_37' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_14_37/wandb + id: '03_28_2025_02_14_37' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_14_37 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_15_38/config.yaml b/runs/03_28_2025_02_15_38/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..49d448e9523ab100efc4691a19b83e4cc9595407 --- /dev/null +++ b/runs/03_28_2025_02_15_38/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_15_38 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_15_38/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_15_38 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_15_38' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_15_38/wandb + id: '03_28_2025_02_15_38' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_15_38 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_17_13/config.yaml b/runs/03_28_2025_02_17_13/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f70100d00043930fd5182d84afaaecd9bce2348d --- /dev/null +++ b/runs/03_28_2025_02_17_13/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_17_13 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_17_13/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_17_13 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_17_13' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_17_13/wandb + id: '03_28_2025_02_17_13' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_17_13 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_22_37/config.yaml b/runs/03_28_2025_02_22_37/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9835e0b89c7d578c5698983a845c94a0a6512e92 --- /dev/null +++ b/runs/03_28_2025_02_22_37/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_22_37 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_22_37/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_22_37 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_22_37' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_22_37/wandb + id: '03_28_2025_02_22_37' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_22_37 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_31_16/config.yaml b/runs/03_28_2025_02_31_16/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e962a5efa46341a093fe1bd28b2a19ba6a92fec6 --- /dev/null +++ b/runs/03_28_2025_02_31_16/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_31_16 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_31_16/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_31_16 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_31_16' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_31_16/wandb + id: '03_28_2025_02_31_16' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_31_16 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_36_29/config.yaml b/runs/03_28_2025_02_36_29/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c582d7a1f83f1640cf8cc445210367c2afd8a18a --- /dev/null +++ b/runs/03_28_2025_02_36_29/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_36_29 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_36_29/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_36_29 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_36_29' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_36_29/wandb + id: '03_28_2025_02_36_29' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_36_29 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/runs/03_28_2025_02_40_09/config.yaml b/runs/03_28_2025_02_40_09/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6ca8b6d5f5c9511e047d29e6782805b97a33e427 --- /dev/null +++ b/runs/03_28_2025_02_40_09/config.yaml @@ -0,0 +1,83 @@ +name: effb0-base-breakhis +save_dir: runs +trial_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_40_09 +save_cfg_path: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_40_09/config.yaml +seed: 0 +data_type: BreakhisDataModule +data: + data_source: /home/duong/Downloads/BreaKHis_v1/histology_slides/breast + batch_size: 32 + shuffle: true + num_workers: 8 + image_size: + - 224 + - 224 + aug: + RandomHorizontalFlip: + p: 0.2 + RandomVerticalFlip: + p: 0.2 + RandomRotation: + degrees: + - -5 + - 5 + ColorJitter: + brightness: 0.5 + contrast: 0.5 +system_type: SimpleClassificationSystem +system: + model_type: TimmModel + model: + model_name: efficientnet_b0 + pretrained: true + num_classes: 1 + optimizer: + name: Adam + args: + lr: 0.001 + scheduler: + name: CosineAnnealingLR + args: + T_max: 300 + loss: + name: BCEWithLogitsLoss + metrics: + metrics_names: + - BinaryAccuracy + metrics_short_names: + - BA +train: + trainer: + accelerator: gpu + devices: + - 0 + max_epochs: 300 + check_val_every_n_epoch: 1 + enable_progress_bar: true + accumulate_grad_batches: 1 + log_every_n_steps: 50 + default_root_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_40_09 + logger: + names: + - WandbLogger + - CSVLogger + args: + wandb: + name: '03_28_2025_02_40_09' + project: histopath + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_40_09/wandb + id: '03_28_2025_02_40_09' + anonymous: false + log_model: all + entity: heartbeats + csv: + name: csv + save_dir: /home/duong/Github_repos/Histopathology_Project/runs/03_28_2025_02_40_09 + callback: + names: + - ModelCheckpoint + args: + modelcp: + save_last: true + monitor: valid/BA + mode: max diff --git a/system/__init__.py b/system/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..66b79516da419f98cec0729766af3e97be2e1cd4 --- /dev/null +++ b/system/__init__.py @@ -0,0 +1,4 @@ +from typing import * + +from .base import BaseSystem +from .simplecls import SimpleClassificationSystem \ No newline at end of file diff --git a/system/__pycache__/__init__.cpython-310.pyc b/system/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cdc5bf7df2c19ce7bc6e2c72040079b11af69392 Binary files /dev/null and b/system/__pycache__/__init__.cpython-310.pyc differ diff --git a/system/__pycache__/base.cpython-310.pyc b/system/__pycache__/base.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ecefcd42ba2c7bbd4212a158070b60a774eb1121 Binary files /dev/null and b/system/__pycache__/base.cpython-310.pyc differ diff --git a/system/__pycache__/simplecls.cpython-310.pyc b/system/__pycache__/simplecls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15132a8a2c033cba08036e1b961e895999c7b58c Binary files /dev/null and b/system/__pycache__/simplecls.cpython-310.pyc differ diff --git a/system/base.py b/system/base.py new file mode 100644 index 0000000000000000000000000000000000000000..a7815e198e4cb41c6d99d3884a2505a3d4bb629f --- /dev/null +++ b/system/base.py @@ -0,0 +1,69 @@ +from dataclasses import dataclass, field +from typing import * +from .ops import parse_optimizer, parse_scheduler, parse_loss +from utils import parse_structure +from metrics import BaseMetrics + +import lightning.pytorch as pl +import torch +import os + +@dataclass +class BaseSystemConfig: + model_type:str = 'BaseModel' + model:Dict = field(default_factory=dict) + optimizer:Dict = field(default_factory=dict) + scheduler:Dict = field(default_factory=dict) + loss:Dict = field(default_factory=dict) + metrics:Dict = field(default_factory=dict) + log_on_step: bool = False + log_on_epoch: bool = True + log_prog_bar: bool = True + log_logger: bool = True + +class BaseSystem(pl.LightningModule): + cfg: BaseSystemConfig + + def __init__(self, cfg: Dict, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + self.cfg = parse_structure(BaseSystemConfig, cfg) + self.criterion = parse_loss(self.cfg.loss) + self.metrics_func = BaseMetrics(self.cfg.metrics) + + def log_metrics(self, metrics:Dict[str, float]): + for name, value in metrics.items(): + self.log( + name, + value, + on_step=self.cfg.log_on_step, + on_epoch=self.cfg.log_on_epoch, + prog_bar=self.cfg.log_prog_bar, + logger=self.cfg.log_logger + ) + + def __str__(self): + return self.__class__.__name__ + + def set_save_dir(self, path:str): + self.trial_dir = path + os.makedirs(self.trial_dir, exist_ok=True) + + def configure_optimizers(self): + if self.model is None: + raise ValueError(f'self.model is not initialized') + optimizer = parse_optimizer(self.cfg.optimizer, self.model) + return { + "optimizer": optimizer, + "lr_scheduler": {"scheduler": parse_scheduler(self.cfg.scheduler, optimizer)} + } + + def on_fit_start(self) -> None: + super().on_fit_start() + print('[INFO]: Experiment Started') + + def on_fit_end(self) -> None: + super().on_fit_end() + print('[INFO]: Experiment Ended') + with open(os.path.join(self.trial_dir, 'done.txt'), 'w') as file: + file.close() \ No newline at end of file diff --git a/system/ops/__init__.py b/system/ops/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f8300b4ccd5afe45f2d8a98477b70cb309214903 --- /dev/null +++ b/system/ops/__init__.py @@ -0,0 +1 @@ +from .nn import parse_loss, parse_optimizer, parse_scheduler \ No newline at end of file diff --git a/system/ops/__pycache__/__init__.cpython-310.pyc b/system/ops/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9a5fc44d84be688a173eb244b40a2056f8daa4d Binary files /dev/null and b/system/ops/__pycache__/__init__.cpython-310.pyc differ diff --git a/system/ops/__pycache__/nn.cpython-310.pyc b/system/ops/__pycache__/nn.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2eda27884c89ac71a519ebd33df32c37c1e959d9 Binary files /dev/null and b/system/ops/__pycache__/nn.cpython-310.pyc differ diff --git a/system/ops/nn.py b/system/ops/nn.py new file mode 100644 index 0000000000000000000000000000000000000000..515de3d555c91ce687d2d27c0ec01cd0bb637e9a --- /dev/null +++ b/system/ops/nn.py @@ -0,0 +1,32 @@ +from dataclasses import dataclass, field +from torch import nn +from typing import * +from utils import parse_structure + +import torch.nn.functional as F +import torch + +@dataclass +class OptConfig: + name:str = 'Adam' + args:Dict = field(default_factory=dict) + +@dataclass +class LossConfig: + name:str = 'BCELoss' + args:Dict = field(default_factory=dict) + +def parse_loss(cfg: Dict)->nn.Module: + cfg:LossConfig = parse_structure(OptConfig, cfg) + loss = getattr(torch.nn, cfg.name)(**cfg.args) + return loss + +def parse_optimizer(cfg: Dict, model:nn.Module)->torch.optim.Optimizer: + cfg:OptConfig = parse_structure(OptConfig, cfg) + params = model.parameters() + optim = getattr(torch.optim, cfg.name)(params, **cfg.args) + return optim + +def parse_scheduler(cfg: Dict, optimizer: torch.optim.Optimizer): + lr_scheduler = getattr(torch.optim.lr_scheduler, cfg.name)(optimizer, **cfg.args) + return lr_scheduler \ No newline at end of file diff --git a/system/simplecls.py b/system/simplecls.py new file mode 100644 index 0000000000000000000000000000000000000000..08bde961a36c945628f0670e67daa284e4df4ca0 --- /dev/null +++ b/system/simplecls.py @@ -0,0 +1,81 @@ +from dataclasses import dataclass, field +from utils import parse_structure +from typing import Any, Dict, Mapping +from .base import BaseSystemConfig, BaseSystem +from torch import nn, Tensor + +import os +import torch +import numpy as np +import models + + +@dataclass +class SimpleClassificationConfig(BaseSystemConfig): + pass + + +class SimpleClassificationSystem(BaseSystem): + def __init__(self, cfg: Dict, *args: Any, **kwargs: Any) -> BaseSystem: + super().__init__(cfg, *args, **kwargs) + self.cfg:SimpleClassificationConfig = parse_structure(SimpleClassificationConfig, cfg) + self.model: nn.Module = getattr(models, self.cfg.model_type)(self.cfg.model) + + def forward(self, x: Tensor) -> Tensor: + return self.model(x) + + def training_step(self, batch: Mapping[str, Tensor], batch_idx: int) -> Tensor: + x: Tensor = batch[0] + y: Tensor = batch[1].float() + + y_hat: Tensor = self.model(x).squeeze(-1) + loss = self.criterion(y_hat, y) + + self.log( + "train/loss", + loss, + on_step=self.cfg.log_on_step, + on_epoch=self.cfg.log_on_epoch, + prog_bar=self.cfg.log_prog_bar, + logger=self.cfg.log_logger + ) + self.log_metrics(self.metrics_func(y_hat, y, 'train')) + + return loss + + def validation_step(self, batch: Mapping[str, Tensor], batch_idx: int) -> Tensor: + x: Tensor = batch[0] + y: Tensor = batch[1].float() + + y_hat: Tensor = self.model(x).squeeze(-1) + loss = self.criterion(y_hat, y) + + self.log( + "valid/loss", + loss, + on_step=self.cfg.log_on_step, + on_epoch=self.cfg.log_on_epoch, + prog_bar=self.cfg.log_prog_bar, + logger=self.cfg.log_logger + ) + self.log_metrics(self.metrics_func(y_hat, y, 'valid')) + + return loss + + def test_step(self, batch: Mapping[str, Tensor], batch_idx: int) -> Tensor: + x: Tensor = batch[0] + y: Tensor = batch[1].float() + + y_hat: Tensor = self.model(x).squeeze(-1) + loss = self.criterion(y_hat, y) + + self.log( + "test/loss", + loss, + on_step=self.cfg.log_on_step, + on_epoch=self.cfg.log_on_epoch, + prog_bar=self.cfg.log_prog_bar, + logger=self.cfg.log_logger + ) + metrics_dict = self.metrics_func(y_hat, y, 'test') + self.log_metrics(metrics_dict) \ No newline at end of file diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..cbcbb4ca01e04262d3c7c476f805124ce2bdb8d9 --- /dev/null +++ b/utils/__init__.py @@ -0,0 +1 @@ +from .config import load_cfg, parse_structure, ExpCfg \ No newline at end of file diff --git a/utils/__pycache__/__init__.cpython-310.pyc b/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9aaf778f5bfabe5ecd956f608491ff21ec4c13b9 Binary files /dev/null and b/utils/__pycache__/__init__.cpython-310.pyc differ diff --git a/utils/__pycache__/config.cpython-310.pyc b/utils/__pycache__/config.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9b7838ecf9ba68fd7c1c19feac72a2f6fe3acd46 Binary files /dev/null and b/utils/__pycache__/config.cpython-310.pyc differ diff --git a/utils/config.py b/utils/config.py new file mode 100644 index 0000000000000000000000000000000000000000..b6b3b6a64e960cee9f7fab73b58a3cb5b105c4d7 --- /dev/null +++ b/utils/config.py @@ -0,0 +1,58 @@ +from omegaconf import OmegaConf +from dataclasses import dataclass, field +from datetime import datetime + +import os + +def time_string(): + return datetime.now().strftime("%m_%d_%Y_%H_%M_%S") + +def _get_shuffle(lst): + if isinstance(lst, list): + return True if len(lst) == 1 else False + elif lst is None: + return True + else: + raise ValueError("Input must be a list or None") + +OmegaConf.register_new_resolver("path_append", lambda a, b: os.path.join(a, b)) +OmegaConf.register_new_resolver("get_trial_dir", lambda save_dir: os.path.join(os.getcwd(), save_dir, time_string())) +OmegaConf.register_new_resolver("get_run_id", lambda save_dir: save_dir.split('/')[-1]) +OmegaConf.register_new_resolver("get_shuffle", lambda lst: True if len(lst) == 1 else False) + +@dataclass +class ExpCfg: + name:str = 'default' + save_dir:str = 'runs' + trial_dir:str = None + save_cfg_path:str = None + seed:int = 0 + + data_type:str = 'BaseDataModule' + data:dict = field(default_factory=dict) + + system_type:str = 'TinyNerf' + system:dict = field(default_factory=dict) + + train:dict = field(default_factory=dict) + + def __post_init__(self): + print('[INFO]: Experiment Configured') + os.makedirs(self.trial_dir, exist_ok=True) + print(f'[INFO]: Experiment Directory is created at {self.trial_dir}') + self.dump(self.save_cfg_path) + print(f'[INFO]: Experiment YAML Config is saved at {self.save_cfg_path}') + + def dump(self, path:str): + with open(path, "w") as fp: + OmegaConf.save(config=self, f=fp) + +def load_cfg(cfg_path: str): + cfg = OmegaConf.load(cfg_path) + OmegaConf.resolve(cfg) + scfg = parse_structure(ExpCfg, cfg) + # print(f'[INFO]: Configuration: \n{OmegaConf.to_yaml(scfg)}') + return scfg + +def parse_structure(template, cfg): + return OmegaConf.structured(template(**cfg)) \ No newline at end of file