From 03892590006d151a6da86f66416b1978bd07f59f Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Wed, 29 Oct 2025 16:14:59 +1000 Subject: [PATCH 1/8] Test add and commit --- .gitignore | 4 + recognition/adni_convnext_47068591/README.md | 83 ++++++ recognition/adni_convnext_47068591/dataset.py | 115 ++++++++ recognition/adni_convnext_47068591/modules.py | 238 +++++++++++++++++ recognition/adni_convnext_47068591/predict.py | 0 recognition/adni_convnext_47068591/train.py | 247 ++++++++++++++++++ recognition/adni_convnext_47068591/utils.py | 0 requirements.txt | 12 + 8 files changed, 699 insertions(+) create mode 100644 .gitignore create mode 100644 recognition/adni_convnext_47068591/README.md create mode 100644 recognition/adni_convnext_47068591/dataset.py create mode 100644 recognition/adni_convnext_47068591/modules.py create mode 100644 recognition/adni_convnext_47068591/predict.py create mode 100644 recognition/adni_convnext_47068591/train.py create mode 100644 recognition/adni_convnext_47068591/utils.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..24a442f34 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +data/ +checkpoints/ +.venv/ +__pycache__/ diff --git a/recognition/adni_convnext_47068591/README.md b/recognition/adni_convnext_47068591/README.md new file mode 100644 index 000000000..c6ba30918 --- /dev/null +++ b/recognition/adni_convnext_47068591/README.md @@ -0,0 +1,83 @@ +# Alzheimer’s Disease Classification using ConvNeXt on ADNI Dataset + +*Author: Man Hin Lai (s47068591)* +*Course: COMP3710 Pattern Analysis (Topic-Recognition Branch)* +*Difficulty: Hard* + +--- + +## 1. Project Overview + +This project aims to classify **Alzheimer’s Disease (AD)** vs **Cognitively Normal (CN)** brain scans from the **ADNI dataset** using a **ConvNeXt** vision transformer-style CNN. + +--- + +## 2. Problem Description + +Alzheimer’s disease is a progressive neurodegenerative disorder identifiable in brain MRI scans. +The **goal** is to train a model that distinguishes AD from CN subjects using volumetric MRI slices. + +--- + +## 3. How the Algorithm Works + +The model is based on **ConvNeXt-Tiny**, a convolutional architecture that adapts Transformer-like design principles into pure CNNs.The network was fine-tuned on preprocessed 2D slices from ADNI MRI volumes using transfer learning from ImageNet weights.The pipeline includes: + +1. **Data Preprocessing:** Intensity normalization, skull stripping (via preprocessed ADNI dataset on Rangpur), and slice extraction. +2. **Augmentation:** Random flips, rotations, and intensity scaling to improve generalization. +3. **Training:** Binary cross-entropy loss with AdamW optimizer and cosine-annealing learning-rate scheduling. +4. **Evaluation:** Accuracy, ROC-AUC, confusion matrix, and Grad-CAM visualization for interpretability. + +--- + +## 4. Dataset and Preprocessing + +- **Dataset Source:** `/home/groups/comp3710/ADNI` (on Rangpur HPC) +- **Classes:** Alzheimer’s Disease (AD) and Cognitive Normal (CN) +- **Format:** Preprocessed NIfTI volumes (`.nii.gz`) +- **Splits:** 70 % training / 15 % validation / 15 % test +- **Justification:** Stratified splitting maintains class balance and ensures unseen subjects per split. +- **Tools Used:** `nibabel` for I/O, `torchvision.transforms` for augmentations. + +*Preprocessing steps and rationale:* + +- Converted 3D volumes into mid-axial 2D slices to balance training time and memory. +- Normalized intensities to [0, 1]. +- Removed non-brain tissue using provided preprocessed dataset. + +--- + +## 5. Dependencies and Environment + +| Package | Version | Purpose | +| ------------ | -------------- | ----------------------- | +| Python | 3.11.9 | Environment | +| PyTorch | 2.5.1 + cu124 | Deep learning (GPU) | +| Torchvision | 0.20.1 + cu124 | Model zoo / transforms | +| Nibabel | 5.2+ | MRI I/O | +| Scikit-learn | 1.4+ | Metrics / preprocessing | +| Matplotlib | 3.8+ | Plotting | +| Pandas | 2.2+ | Data handling | +| TQDM | 4.66+ | Progress bars | +| Pillow | 10.3+ | Image utilities | + +> Reproducibility: All results were obtained on Windows 10 + RTX 4070 Ti (CUDA 12.4 build). +> To replicate: +> +> ```bash +> git clone https://github.com/imfatball/PatternAnalysis-2025-47068591.git +> cd PatternAnalysis-2025-47068591/recognition/adni_convnext_47068591 +> python -m venv .venv && .venv\Scripts\activate +> pip install -r ../../requirements.txt +> python train.py +> ``` + +--- + +## 6. Example Usage + +### Training + +```bash +python train.py --epochs 50 --batch_size 16 --lr 1e-4 +``` diff --git a/recognition/adni_convnext_47068591/dataset.py b/recognition/adni_convnext_47068591/dataset.py new file mode 100644 index 000000000..49ace53b3 --- /dev/null +++ b/recognition/adni_convnext_47068591/dataset.py @@ -0,0 +1,115 @@ +""" +dataset.py +----------- +Loads grayscale JPEG slices for AD vs NC classification (ADNI dataset). + +Expected directory structure: + ADNI/ + AD_NC/ + train/ + AD/ + 123456_78.jpeg + 123456_79.jpeg + ... + NC/ + 654321_81.jpeg + 654321_82.jpeg + ... + test/ + AD/ + NC/ +""" + +import os +import glob +from typing import List, Tuple, Optional, Dict +from collections import defaultdict + +import torch +from torch.utils.data import Dataset +from PIL import Image +import torchvision.transforms as T + + +def _parse_subject_id(filename: str) -> str: + """ + Extract subject ID from filenames like '123456_78.jpeg' → '123456'. + """ + base = os.path.basename(filename) + stem, _ = os.path.splitext(base) + return stem.split("_")[0] + + +class ADNIJPEGSlicesDataset(Dataset): + """ + Dataset for grayscale JPEG MRI slices (AD vs NC). + + Returns: + img: FloatTensor [1, H, W] (grayscale) + label: LongTensor 0 (NC) or 1 (AD) + subject_id: str + """ + + def __init__( + self, + root: str, # e.g. "path/to/ADNI/AD_NC" + split: str, # "train" or "test" + image_size: int = 224, + augment: bool = True, + limit_slices_per_subject: Optional[int] = None, + ): + super().__init__() + assert split in ("train", "test"), "split must be 'train' or 'test'" + self.root = root + self.split = split + self.image_size = image_size + self.limit_slices_per_subject = limit_slices_per_subject + + # Map class names to labels + self.class_to_label = {"AD": 1, "NC": 0} + + split_dir = os.path.join(root, split) + self.samples: List[Tuple[str, int, str]] = [] # (path, label, subject_id) + + # Collect all JPEGs + for cls in ("AD", "NC"): + cls_dir = os.path.join(split_dir, cls) + paths = sorted(glob.glob(os.path.join(cls_dir, "*.jpeg"))) + \ + sorted(glob.glob(os.path.join(cls_dir, "*.jpg"))) + + label = self.class_to_label[cls] + by_subject = defaultdict(list) + for p in paths: + sid = _parse_subject_id(p) + by_subject[sid].append(p) + + for sid, plist in by_subject.items(): + if self.limit_slices_per_subject and len(plist) > self.limit_slices_per_subject: + plist = plist[: self.limit_slices_per_subject] + for p in plist: + self.samples.append((p, label, sid)) + + # Define transforms + base_tf = [ + T.Resize((image_size, image_size)), + T.ToTensor(), # → [1, H, W] + T.Normalize(mean=[0.5], std=[0.5]) + ] + if split == "train" and augment: + aug_tf = [ + T.RandomHorizontalFlip(p=0.5), + T.RandomRotation(10), + T.RandomResizedCrop(image_size, scale=(0.9, 1.0)) + ] + self.tf = T.Compose(aug_tf + base_tf) + else: + self.tf = T.Compose(base_tf) + + def __len__(self): + return len(self.samples) + + def __getitem__(self, idx): + path, label, sid = self.samples[idx] + img = Image.open(path).convert("L") # grayscale + img = self.tf(img) # tensor [1,H,W] + return img, torch.tensor(label, dtype=torch.long), sid diff --git a/recognition/adni_convnext_47068591/modules.py b/recognition/adni_convnext_47068591/modules.py new file mode 100644 index 000000000..e7f79f8a0 --- /dev/null +++ b/recognition/adni_convnext_47068591/modules.py @@ -0,0 +1,238 @@ +""" +modules.py +----------- +Self-built ConvNeXt-like (Tiny) for 1-channel input and binary output. + +Key pieces: +- ConvNeXtBlock: DW-7x7 -> LN (channels-last) -> 1x1 MLP (expand 4x) -> GELU -> 1x1 (project) -> layer scale -> DropPath -> residual +- Downsample: LN (channels-last) + Conv2d (stride=2) +- ConvNeXtTiny1C: stem (4x4/4) + stages with depths [3,3,9,3], dims [96,192,384,768] +- Head: GAP -> LN -> Dropout -> Linear(1) => single logit + +Use with BCE-with-logits. +""" + +from typing import Optional, Tuple +import math +import torch +import torch.nn as nn +import torch.nn.functional as F + + +# ----------------------------- Utilities ------------------------------------- # + +class DropPath(nn.Module): + """Stochastic depth (per-sample) — as in ConvNeXt/DeiT. Set drop_prob=0 to disable.""" + def __init__(self, drop_prob: float = 0.0): + super().__init__() + self.drop_prob = float(drop_prob) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + if self.drop_prob == 0.0 or not self.training: + return x + keep_prob = 1.0 - self.drop_prob + # Work with (N, ...) shaped input. Broadcast along all but batch. + shape = (x.shape[0],) + (1,) * (x.ndim - 1) + mask = torch.empty(shape, dtype=x.dtype, device=x.device).bernoulli_(keep_prob) + return x / keep_prob * mask + + +class LayerNorm2d(nn.Module): + """ + Convenience wrapper: apply LayerNorm expecting channels-last. + We permute (N,C,H,W) -> (N,H,W,C), LN over C, then back. + """ + def __init__(self, num_channels: int, eps: float = 1e-6): + super().__init__() + self.ln = nn.LayerNorm(num_channels, eps=eps) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + x = x.permute(0, 2, 3, 1) # NCHW -> NHWC + x = self.ln(x) + x = x.permute(0, 3, 1, 2) # NHWC -> NCHW + return x + + +# --------------------------- ConvNeXt Building Blocks ------------------------- # + +class ConvNeXtBlock(nn.Module): + """ + One ConvNeXt block: + DWConv7x7 -> LN (channels-last) -> Linear(4x) -> GELU -> Linear(1x) -> LayerScale(gamma) -> DropPath -> Residual + """ + def __init__( + self, + dim: int, + drop_path: float = 0.0, + layer_scale_init_value: float = 1e-6 + ): + super().__init__() + self.dwconv = nn.Conv2d(dim, dim, kernel_size=7, padding=3, groups=dim) # depthwise 7x7 + self.norm = nn.LayerNorm(dim, eps=1e-6) # LN expects channels-last + self.pwconv1 = nn.Linear(dim, 4 * dim) # pointwise (expand) + self.act = nn.GELU() + self.pwconv2 = nn.Linear(4 * dim, dim) # pointwise (project) + self.gamma = nn.Parameter(layer_scale_init_value * torch.ones(dim)) if layer_scale_init_value > 0 else None + self.drop_path = DropPath(drop_path) if drop_path > 0.0 else nn.Identity() + + def forward(self, x: torch.Tensor) -> torch.Tensor: + shortcut = x + + x = self.dwconv(x) # (N,C,H,W) + x = x.permute(0, 2, 3, 1) # -> (N,H,W,C) + x = self.norm(x) + x = self.pwconv1(x) + x = self.act(x) + x = self.pwconv2(x) + if self.gamma is not None: + x = self.gamma * x + x = x.permute(0, 3, 1, 2) # -> (N,C,H,W) + + x = shortcut + self.drop_path(x) + return x + + +class Downsample(nn.Module): + """ + ConvNeXt downsample layer: + LN (channels-last) -> Conv2d stride=2 + """ + def __init__(self, in_ch: int, out_ch: int): + super().__init__() + self.norm = LayerNorm2d(in_ch, eps=1e-6) + self.reduction = nn.Conv2d(in_ch, out_ch, kernel_size=2, stride=2) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + x = self.norm(x) + x = self.reduction(x) + return x + + +# ------------------------------ Full Model ----------------------------------- # + +class ConvNeXtTiny1C(nn.Module): + """ + ConvNeXt-Tiny-like network for 1-channel input. + - Stem: Conv(1->96, k=4,s=4) + LN + - Stages: depths [3,3,9,3], dims [96,192,384,768] + - Head: GAP -> LN -> Dropout -> Linear(1) (single logit for BCE-with-logits) + """ + def __init__( + self, + in_ch: int = 1, + num_classes: int = 1, # 1 => single logit for binary + depths: Tuple[int, int, int, int] = (3, 3, 9, 3), + dims: Tuple[int, int, int, int] = (96, 192, 384, 768), + drop_path_rate: float = 0.0, + head_drop: float = 0.1, + layer_scale_init_value: float = 1e-6 + ): + super().__init__() + + # Stem: patch embedding (4x4, stride 4) then LN + self.stem_conv = nn.Conv2d(in_ch, dims[0], kernel_size=4, stride=4) + self.stem_ln = LayerNorm2d(dims[0], eps=1e-6) + + # stochastic depth decay rule across all blocks + total_blocks = sum(depths) + dp_rates = torch.linspace(0, drop_path_rate, steps=total_blocks).tolist() + dp_iter = 0 + + # Stage 0 (no downsample before first stage) + stage0 = [] + for _ in range(depths[0]): + stage0.append(ConvNeXtBlock(dims[0], drop_path=dp_rates[dp_iter], layer_scale_init_value=layer_scale_init_value)) + dp_iter += 1 + self.stage0 = nn.Sequential(*stage0) + + # Stage 1 + self.down1 = Downsample(dims[0], dims[1]) + stage1 = [] + for _ in range(depths[1]): + stage1.append(ConvNeXtBlock(dims[1], drop_path=dp_rates[dp_iter], layer_scale_init_value=layer_scale_init_value)) + dp_iter += 1 + self.stage1 = nn.Sequential(*stage1) + + # Stage 2 + self.down2 = Downsample(dims[1], dims[2]) + stage2 = [] + for _ in range(depths[2]): + stage2.append(ConvNeXtBlock(dims[2], drop_path=dp_rates[dp_iter], layer_scale_init_value=layer_scale_init_value)) + dp_iter += 1 + self.stage2 = nn.Sequential(*stage2) + + # Stage 3 + self.down3 = Downsample(dims[2], dims[3]) + stage3 = [] + for _ in range(depths[3]): + stage3.append(ConvNeXtBlock(dims[3], drop_path=dp_rates[dp_iter], layer_scale_init_value=layer_scale_init_value)) + dp_iter += 1 + self.stage3 = nn.Sequential(*stage3) + + # Head + self.head_ln = nn.LayerNorm(dims[3], eps=1e-6) # applied after GAP, so vector LN + self.dropout = nn.Dropout(head_drop) + self.fc = nn.Linear(dims[3], num_classes) + + # Weight init (Kaiming for convs, xavier for linears) + self.apply(self._init_weights) + + def _init_weights(self, m: nn.Module): + if isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_(m.weight, mode="fan_out", nonlinearity="relu") + if m.bias is not None: + nn.init.zeros_(m.bias) + elif isinstance(m, (nn.Linear,)): + nn.init.xavier_uniform_(m.weight) + if m.bias is not None: + nn.init.zeros_(m.bias) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + # Stem + x = self.stem_conv(x) # (N, C0, H/4, W/4) + x = self.stem_ln(x) # channels-last LN wrapper + + # Stages + x = self.stage0(x) + x = self.down1(x); x = self.stage1(x) + x = self.down2(x); x = self.stage2(x) + x = self.down3(x); x = self.stage3(x) + + # Global average pooling + x = F.adaptive_avg_pool2d(x, output_size=1).flatten(1) # (N, C3) + x = self.head_ln(x) # vector LN (no permute needed) + x = self.dropout(x) + x = self.fc(x) # (N, 1) for binary + return x.squeeze(1) # (N,) single logit + + +# ---------------------------- Loss & Metrics --------------------------------- # + +def bce_with_logits_loss( + logits: torch.Tensor, + targets: torch.Tensor, + pos_weight: Optional[float] = None +) -> torch.Tensor: + """ + Stable BCE-with-logits for binary classification (targets in {0,1}). + Set pos_weight>1.0 if AD is the minority class. + """ + targets = targets.float() + if pos_weight is not None: + pw = torch.tensor([pos_weight], device=logits.device, dtype=logits.dtype) + return F.binary_cross_entropy_with_logits(logits, targets, pos_weight=pw) + return F.binary_cross_entropy_with_logits(logits, targets) + + +@torch.no_grad() +def binary_metrics(logits: torch.Tensor, targets: torch.Tensor) -> Tuple[float, float]: + """ + Returns: + acc: mean accuracy + mpt: mean probability for the positive class (on positive samples), NaN if none. + """ + probs = torch.sigmoid(logits) + preds = (probs >= 0.5).long() + acc = (preds == targets).float().mean().item() + mpt = probs[targets == 1].mean().item() if (targets == 1).any() else float('nan') + return acc, mpt diff --git a/recognition/adni_convnext_47068591/predict.py b/recognition/adni_convnext_47068591/predict.py new file mode 100644 index 000000000..e69de29bb diff --git a/recognition/adni_convnext_47068591/train.py b/recognition/adni_convnext_47068591/train.py new file mode 100644 index 000000000..136d1c424 --- /dev/null +++ b/recognition/adni_convnext_47068591/train.py @@ -0,0 +1,247 @@ +""" +train.py +--------- +Train a self-built ConvNeXtTiny1C on ADNI JPEG slices (AD vs NC). + +Example (local): + python train.py --root "D:/ADNI/AD_NC" --epochs 10 --batch 16 --image_size 224 + +Example (Rangpur): + python train.py --root /home/groups/comp3710/ADNI/AD_NC --epochs 30 --batch 64 --workers 8 --subject_eval +""" + +import os +import json +import time +import argparse +from pathlib import Path +from collections import defaultdict + +import torch +import torch.nn as nn +from torch.utils.data import DataLoader +from torch.optim import AdamW +from torch.optim.lr_scheduler import CosineAnnealingLR +import matplotlib.pyplot as plt + +from dataset import ADNIJPEGSlicesDataset +from modules import ConvNeXtTiny1C, bce_with_logits_loss, binary_metrics + + +# ------------------------------ Utilities ------------------------------------ # + +def set_seed(seed: int = 42): + import random, numpy as np + random.seed(seed); np.random.seed(seed); torch.manual_seed(seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(seed) + +def save_checkpoint(model: nn.Module, path: Path): + path.parent.mkdir(parents=True, exist_ok=True) + torch.save(model.state_dict(), path) + print(f"✅ Saved checkpoint: {path}") + +def plot_history(history: dict, outdir: Path): + outdir.mkdir(parents=True, exist_ok=True) + + plt.figure() + plt.plot(history["train_loss"], label="Train Loss") + plt.plot(history["val_loss"], label="Val Loss") + plt.xlabel("Epoch"); plt.ylabel("Loss"); plt.legend() + plt.tight_layout(); plt.savefig(outdir / "loss_curve.png", dpi=150); plt.close() + + plt.figure() + plt.plot(history["train_acc"], label="Train Acc") + plt.plot(history["val_acc"], label="Val Acc") + plt.xlabel("Epoch"); plt.ylabel("Accuracy"); plt.legend() + plt.tight_layout(); plt.savefig(outdir / "acc_curve.png", dpi=150); plt.close() + + if "val_subj_acc" in history and len(history["val_subj_acc"]) > 0: + plt.figure() + plt.plot(history["val_subj_acc"], label="Val Subject Acc") + plt.xlabel("Epoch"); plt.ylabel("Subject Accuracy"); plt.legend() + plt.tight_layout(); plt.savefig(outdir / "subject_acc_curve.png", dpi=150); plt.close() + + +# --------------------------- Train / Eval Loops ------------------------------- # + +def train_one_epoch(model, loader, optimizer, device, scaler=None): + model.train() + running_loss, running_acc, n_samples = 0.0, 0.0, 0 + + for imgs, labels, _sids in loader: # sids not needed for training + imgs, labels = imgs.to(device), labels.to(device) + + optimizer.zero_grad(set_to_none=True) + if scaler is not None: + with torch.cuda.amp.autocast(): + logits = model(imgs) + loss = bce_with_logits_loss(logits, labels) + scaler.scale(loss).backward() + scaler.step(optimizer) + scaler.update() + else: + logits = model(imgs) + loss = bce_with_logits_loss(logits, labels) + loss.backward() + optimizer.step() + + acc, _ = binary_metrics(logits.detach(), labels) + bs = imgs.size(0) + running_loss += loss.item() * bs + running_acc += acc * bs + n_samples += bs + + return running_loss / n_samples, running_acc / n_samples + + +@torch.no_grad() +def evaluate_slice_level(model, loader, device): + model.eval() + total_loss, total_acc, n_samples = 0.0, 0.0, 0 + + for imgs, labels, _sids in loader: + imgs, labels = imgs.to(device), labels.to(device) + logits = model(imgs) + loss = bce_with_logits_loss(logits, labels) + acc, _ = binary_metrics(logits, labels) + + bs = imgs.size(0) + total_loss += loss.item() * bs + total_acc += acc * bs + n_samples += bs + + return total_loss / n_samples, total_acc / n_samples + + +@torch.no_grad() +def evaluate_subject_level(model, loader, device): + """ + Aggregates predictions per subject by averaging slice probabilities. + Returns subject-level accuracy. + """ + model.eval() + bucket = defaultdict(list) # sid -> list of (prob, label) + + for imgs, labels, sids in loader: + imgs, labels = imgs.to(device), labels.to(device) + logits = model(imgs) + probs = torch.sigmoid(logits).cpu().numpy() + labs = labels.cpu().numpy() + for p, l, sid in zip(probs, labs, sids): + bucket[sid].append((float(p), int(l))) + + correct, total = 0, 0 + for sid, entries in bucket.items(): + mean_prob = sum(p for p, _ in entries) / len(entries) + pred = 1 if mean_prob >= 0.5 else 0 + true = entries[0][1] # all slices of same subject share label + correct += int(pred == true) + total += 1 + + return correct / max(total, 1) + + +# ---------------------------------- Main ------------------------------------- # + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--root", type=str, required=True, help="Path to ADNI/AD_NC directory") + parser.add_argument("--epochs", type=int, default=30) + parser.add_argument("--batch", type=int, default=16) + parser.add_argument("--lr", type=float, default=1e-4) + parser.add_argument("--weight_decay", type=float, default=1e-4) + parser.add_argument("--out", type=str, default="runs") + parser.add_argument("--workers", type=int, default=4) + parser.add_argument("--image_size", type=int, default=224) + parser.add_argument("--limit_slices_per_subject", type=int, default=None) + parser.add_argument("--subject_eval", action="store_true", help="Also compute subject-level accuracy on val/test") + parser.add_argument("--seed", type=int, default=42) + args = parser.parse_args() + + set_seed(args.seed) + + device = "cuda" if torch.cuda.is_available() else "cpu" + outdir = Path(args.out) + outdir.mkdir(parents=True, exist_ok=True) + + print(f"Device: {device}") + print(f"Root: {args.root}") + + # Datasets: use 'train' for training and 'test' for validation (as per your layout) + train_ds = ADNIJPEGSlicesDataset( + root=args.root, + split="train", + image_size=args.image_size, + augment=True, + limit_slices_per_subject=args.limit_slices_per_subject + ) + val_ds = ADNIJPEGSlicesDataset( + root=args.root, + split="test", + image_size=args.image_size, + augment=False + ) + + train_loader = DataLoader(train_ds, batch_size=args.batch, shuffle=True, + num_workers=args.workers, pin_memory=True) + val_loader = DataLoader(val_ds, batch_size=args.batch, shuffle=False, + num_workers=args.workers, pin_memory=True) + + # Model / Optimizer / Scheduler + model = ConvNeXtTiny1C(in_ch=1, num_classes=1, drop_path_rate=0.1).to(device) + optimizer = AdamW(model.parameters(), lr=args.lr, weight_decay=args.weight_decay) + scheduler = CosineAnnealingLR(optimizer, T_max=args.epochs) + scaler = torch.cuda.amp.GradScaler(enabled=(device == "cuda")) + + history = {"train_loss": [], "val_loss": [], "train_acc": [], "val_acc": []} + if args.subject_eval: + history["val_subj_acc"] = [] + + best_metric = -1.0 # track best (subject-level if enabled, else slice-level) + best_path = outdir / "best_model.pt" + + # ------------------------------ Training Loop ---------------------------- # + for epoch in range(1, args.epochs + 1): + t0 = time.time() + + tr_loss, tr_acc = train_one_epoch(model, train_loader, optimizer, device, scaler) + val_loss, val_acc = evaluate_slice_level(model, val_loader, device) + scheduler.step() + + history["train_loss"].append(tr_loss) + history["val_loss"].append(val_loss) + history["train_acc"].append(tr_acc) + history["val_acc"].append(val_acc) + + line = f"Epoch {epoch:03d}/{args.epochs} | " \ + f"Train {tr_loss:.4f}/{tr_acc:.3f} | " \ + f"Val {val_loss:.4f}/{val_acc:.3f}" + + # Optional subject-level validation + subj_metric = None + if args.subject_eval: + subj_metric = evaluate_subject_level(model, val_loader, device) + history["val_subj_acc"].append(subj_metric) + line += f" | Val-Subject {subj_metric:.3f}" + + line += f" | {time.time() - t0:.1f}s" + print(line) + + # Choose which metric to monitor for "best" + monitor = subj_metric if (args.subject_eval and subj_metric is not None) else val_acc + if monitor > best_metric: + best_metric = monitor + save_checkpoint(model, best_path) + + # Save logs & plots + plot_history(history, outdir) + with open(outdir / "history.json", "w") as f: + json.dump(history, f, indent=2) + + print(f"🏁 Done. Best metric ({'subject' if args.subject_eval else 'slice'}): {best_metric:.3f}") + print(f"Best checkpoint: {best_path}") + + +if __name__ == "__main__": + main() diff --git a/recognition/adni_convnext_47068591/utils.py b/recognition/adni_convnext_47068591/utils.py new file mode 100644 index 000000000..e69de29bb diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..a7efdd4a6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,12 @@ +--extra-index-url https://download.pytorch.org/whl/cu124 +torch==2.5.1+cu124 +torchvision==0.20.1+cu124 +torchaudio==2.5.1+cu124 + +numpy>=1.26 +pandas>=2.2 +matplotlib>=3.8 +scikit-learn>=1.4 +nibabel>=5.2 +tqdm>=4.66 +pillow>=10.3 \ No newline at end of file From 24cc1fe80ffcac9a14bde32b7ae17d6473b7d6bd Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Wed, 29 Oct 2025 18:35:06 +1000 Subject: [PATCH 2/8] completed dataset.py --- .gitignore | 1 + recognition/adni_convnext_47068591/dataset.py | 26 +++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 24a442f34..7373f0930 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ data/ checkpoints/ .venv/ __pycache__/ +runs/ \ No newline at end of file diff --git a/recognition/adni_convnext_47068591/dataset.py b/recognition/adni_convnext_47068591/dataset.py index 49ace53b3..9d39d1f6e 100644 --- a/recognition/adni_convnext_47068591/dataset.py +++ b/recognition/adni_convnext_47068591/dataset.py @@ -5,19 +5,19 @@ Expected directory structure: ADNI/ - AD_NC/ - train/ - AD/ - 123456_78.jpeg - 123456_79.jpeg - ... - NC/ - 654321_81.jpeg - 654321_82.jpeg - ... - test/ - AD/ - NC/ + AD_NC/ + train/ + AD/ + 123456_78.jpeg + 123456_79.jpeg + ... + NC/ + 654321_81.jpeg + 654321_82.jpeg + ... + test/ + AD/ + NC/ """ import os From a1de14dd8aaacf8e1b4011154ab429131d7ef238 Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Wed, 29 Oct 2025 18:37:33 +1000 Subject: [PATCH 3/8] train.py first test: 60 epoch, lr 2e-4, decay 5e-2, droppath 0.1, headdrop 0.2 --- recognition/adni_convnext_47068591/train.py | 177 +++++++++++--------- 1 file changed, 99 insertions(+), 78 deletions(-) diff --git a/recognition/adni_convnext_47068591/train.py b/recognition/adni_convnext_47068591/train.py index 136d1c424..0858aec00 100644 --- a/recognition/adni_convnext_47068591/train.py +++ b/recognition/adni_convnext_47068591/train.py @@ -1,34 +1,48 @@ """ -train.py ---------- -Train a self-built ConvNeXtTiny1C on ADNI JPEG slices (AD vs NC). - -Example (local): - python train.py --root "D:/ADNI/AD_NC" --epochs 10 --batch 16 --image_size 224 - -Example (Rangpur): - python train.py --root /home/groups/comp3710/ADNI/AD_NC --epochs 30 --batch 64 --workers 8 --subject_eval +train.py (no-CLI needed) +------------------------ +Set CONFIG below (especially ROOT) and run: + python train.py +You can still override with flags (e.g., --root PATH), but it's optional. """ import os import json import time -import argparse from pathlib import Path from collections import defaultdict +from contextlib import nullcontext +import argparse import torch import torch.nn as nn from torch.utils.data import DataLoader from torch.optim import AdamW -from torch.optim.lr_scheduler import CosineAnnealingLR +from torch.optim.lr_scheduler import LambdaLR, CosineAnnealingLR import matplotlib.pyplot as plt from dataset import ADNIJPEGSlicesDataset from modules import ConvNeXtTiny1C, bce_with_logits_loss, binary_metrics +# ====================== USER CONFIG ============================= # +CONFIG = dict( + ROOT=r"C:\Users\harri\UQ\COMP3710\COMP3710_A3\PatternAnalysis-2025-47068591\data\ADNI\AD_NC", + EPOCHS=60, + BATCH=16, + LR=2e-4, + WEIGHT_DECAY=5e-2, + OUT="runs", + WORKERS=4, + IMAGE_SIZE=224, + LIMIT_SLICES_PER_SUBJECT=20, + SUBJECT_EVAL=True, + SEED=42, + DROP_PATH_RATE=0.1, + HEAD_DROP=0.2, + WARMUP_EPOCHS=5, +) +# ============================================================================ # -# ------------------------------ Utilities ------------------------------------ # def set_seed(seed: int = 42): import random, numpy as np @@ -59,30 +73,30 @@ def plot_history(history: dict, outdir: Path): if "val_subj_acc" in history and len(history["val_subj_acc"]) > 0: plt.figure() plt.plot(history["val_subj_acc"], label="Val Subject Acc") - plt.xlabel("Epoch"); plt.ylabel("Subject Accuracy"); plt.legend() + plt.xlabel("Epoch"); plt.ylabel("Subject Acc"); plt.legend() plt.tight_layout(); plt.savefig(outdir / "subject_acc_curve.png", dpi=150); plt.close() -# --------------------------- Train / Eval Loops ------------------------------- # - def train_one_epoch(model, loader, optimizer, device, scaler=None): model.train() running_loss, running_acc, n_samples = 0.0, 0.0, 0 + autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() - for imgs, labels, _sids in loader: # sids not needed for training + for imgs, labels, _sids in loader: imgs, labels = imgs.to(device), labels.to(device) - optimizer.zero_grad(set_to_none=True) + if scaler is not None: - with torch.cuda.amp.autocast(): + with autocast_ctx: logits = model(imgs) loss = bce_with_logits_loss(logits, labels) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update() else: - logits = model(imgs) - loss = bce_with_logits_loss(logits, labels) + with autocast_ctx: + logits = model(imgs) + loss = bce_with_logits_loss(logits, labels) loss.backward() optimizer.step() @@ -99,11 +113,13 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None): def evaluate_slice_level(model, loader, device): model.eval() total_loss, total_acc, n_samples = 0.0, 0.0, 0 + autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() for imgs, labels, _sids in loader: imgs, labels = imgs.to(device), labels.to(device) - logits = model(imgs) - loss = bce_with_logits_loss(logits, labels) + with autocast_ctx: + logits = model(imgs) + loss = bce_with_logits_loss(logits, labels) acc, _ = binary_metrics(logits, labels) bs = imgs.size(0) @@ -116,16 +132,14 @@ def evaluate_slice_level(model, loader, device): @torch.no_grad() def evaluate_subject_level(model, loader, device): - """ - Aggregates predictions per subject by averaging slice probabilities. - Returns subject-level accuracy. - """ model.eval() - bucket = defaultdict(list) # sid -> list of (prob, label) + bucket = defaultdict(list) + autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() for imgs, labels, sids in loader: imgs, labels = imgs.to(device), labels.to(device) - logits = model(imgs) + with autocast_ctx: + logits = model(imgs) probs = torch.sigmoid(logits).cpu().numpy() labs = labels.cpu().numpy() for p, l, sid in zip(probs, labs, sids): @@ -135,106 +149,113 @@ def evaluate_subject_level(model, loader, device): for sid, entries in bucket.items(): mean_prob = sum(p for p, _ in entries) / len(entries) pred = 1 if mean_prob >= 0.5 else 0 - true = entries[0][1] # all slices of same subject share label + true = entries[0][1] correct += int(pred == true) total += 1 return correct / max(total, 1) -# ---------------------------------- Main ------------------------------------- # - def main(): - parser = argparse.ArgumentParser() - parser.add_argument("--root", type=str, required=True, help="Path to ADNI/AD_NC directory") - parser.add_argument("--epochs", type=int, default=30) - parser.add_argument("--batch", type=int, default=16) - parser.add_argument("--lr", type=float, default=1e-4) - parser.add_argument("--weight_decay", type=float, default=1e-4) - parser.add_argument("--out", type=str, default="runs") - parser.add_argument("--workers", type=int, default=4) - parser.add_argument("--image_size", type=int, default=224) - parser.add_argument("--limit_slices_per_subject", type=int, default=None) - parser.add_argument("--subject_eval", action="store_true", help="Also compute subject-level accuracy on val/test") - parser.add_argument("--seed", type=int, default=42) - args = parser.parse_args() - + # Optional CLI overrides (but all have defaults from CONFIG) + parser = argparse.ArgumentParser(add_help=False) + parser.add_argument("--root", type=str, default=CONFIG["ROOT"]) + parser.add_argument("--epochs", type=int, default=CONFIG["EPOCHS"]) + parser.add_argument("--batch", type=int, default=CONFIG["BATCH"]) + parser.add_argument("--lr", type=float, default=CONFIG["LR"]) + parser.add_argument("--weight_decay", type=float, default=CONFIG["WEIGHT_DECAY"]) + parser.add_argument("--out", type=str, default=CONFIG["OUT"]) + parser.add_argument("--workers", type=int, default=CONFIG["WORKERS"]) + parser.add_argument("--image_size", type=int, default=CONFIG["IMAGE_SIZE"]) + parser.add_argument("--limit_slices_per_subject", type=int, default=CONFIG["LIMIT_SLICES_PER_SUBJECT"]) + parser.add_argument("--subject_eval", action="store_true" if CONFIG["SUBJECT_EVAL"] else "store_false") + parser.add_argument("--seed", type=int, default=CONFIG["SEED"]) + args, _ = parser.parse_known_args() + + # If CONFIG["SUBJECT_EVAL"] is True but flag not passed, enforce it + args.subject_eval = CONFIG["SUBJECT_EVAL"] or args.subject_eval + + # Seed / device set_seed(args.seed) - device = "cuda" if torch.cuda.is_available() else "cpu" - outdir = Path(args.out) - outdir.mkdir(parents=True, exist_ok=True) + outdir = Path(args.out); outdir.mkdir(parents=True, exist_ok=True) print(f"Device: {device}") print(f"Root: {args.root}") - # Datasets: use 'train' for training and 'test' for validation (as per your layout) + # Datasets train_ds = ADNIJPEGSlicesDataset( - root=args.root, - split="train", - image_size=args.image_size, - augment=True, + root=args.root, split="train", + image_size=args.image_size, augment=True, limit_slices_per_subject=args.limit_slices_per_subject ) val_ds = ADNIJPEGSlicesDataset( - root=args.root, - split="test", - image_size=args.image_size, - augment=False + root=args.root, split="test", + image_size=args.image_size, augment=False ) train_loader = DataLoader(train_ds, batch_size=args.batch, shuffle=True, num_workers=args.workers, pin_memory=True) - val_loader = DataLoader(val_ds, batch_size=args.batch, shuffle=False, + val_loader = DataLoader(val_ds, batch_size=args.batch, shuffle=False, num_workers=args.workers, pin_memory=True) - # Model / Optimizer / Scheduler - model = ConvNeXtTiny1C(in_ch=1, num_classes=1, drop_path_rate=0.1).to(device) + # Model / Optim / Sched + model = ConvNeXtTiny1C( + in_ch=1, num_classes=1, + drop_path_rate=CONFIG["DROP_PATH_RATE"], + head_drop=CONFIG["HEAD_DROP"] + ).to(device) + warmup_epochs = CONFIG["WARMUP_EPOCHS"] + + + def lr_lambda(epoch): + if epoch < warmup_epochs: + return (epoch + 1) / warmup_epochs + # after warmup, delegate to cosine by keeping lambda=1 and stepping base_scheduler + return 1.0 + + optimizer = AdamW(model.parameters(), lr=args.lr, weight_decay=args.weight_decay) - scheduler = CosineAnnealingLR(optimizer, T_max=args.epochs) - scaler = torch.cuda.amp.GradScaler(enabled=(device == "cuda")) + warmup = LambdaLR(optimizer, lr_lambda=lr_lambda) + base_scheduler = CosineAnnealingLR(optimizer, T_max=args.epochs - warmup_epochs) + schedulers = (warmup, base_scheduler) + scaler = torch.amp.GradScaler('cuda') if device == "cuda" else None history = {"train_loss": [], "val_loss": [], "train_acc": [], "val_acc": []} if args.subject_eval: history["val_subj_acc"] = [] - best_metric = -1.0 # track best (subject-level if enabled, else slice-level) + best_metric = -1.0 best_path = outdir / "best_model.pt" - # ------------------------------ Training Loop ---------------------------- # for epoch in range(1, args.epochs + 1): t0 = time.time() tr_loss, tr_acc = train_one_epoch(model, train_loader, optimizer, device, scaler) val_loss, val_acc = evaluate_slice_level(model, val_loader, device) - scheduler.step() - - history["train_loss"].append(tr_loss) - history["val_loss"].append(val_loss) - history["train_acc"].append(tr_acc) - history["val_acc"].append(val_acc) + if epoch <= warmup_epochs: + schedulers[0].step() + else: + schedulers[1].step() - line = f"Epoch {epoch:03d}/{args.epochs} | " \ - f"Train {tr_loss:.4f}/{tr_acc:.3f} | " \ - f"Val {val_loss:.4f}/{val_acc:.3f}" + history["train_loss"].append(tr_loss); history["val_loss"].append(val_loss) + history["train_acc"].append(tr_acc); history["val_acc"].append(val_acc) - # Optional subject-level validation + line = f"Epoch {epoch:03d}/{args.epochs} | Train {tr_loss:.4f}/{tr_acc:.3f} | Val {val_loss:.4f}/{val_acc:.3f}" subj_metric = None if args.subject_eval: subj_metric = evaluate_subject_level(model, val_loader, device) history["val_subj_acc"].append(subj_metric) line += f" | Val-Subject {subj_metric:.3f}" - - line += f" | {time.time() - t0:.1f}s" + line += f" | {time.time()-t0:.1f}s" print(line) - # Choose which metric to monitor for "best" monitor = subj_metric if (args.subject_eval and subj_metric is not None) else val_acc if monitor > best_metric: best_metric = monitor save_checkpoint(model, best_path) - # Save logs & plots + # Save logs plot_history(history, outdir) with open(outdir / "history.json", "w") as f: json.dump(history, f, indent=2) From 13ca9bb2a0224cf50fd2cee05dba6ffe83608491 Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Sun, 2 Nov 2025 18:52:13 +1000 Subject: [PATCH 4/8] added heavy data augmentation, raised drop path to 0.2 and headdrop to 0.3 --- recognition/adni_convnext_47068591/dataset.py | 53 ++++++++++++++----- recognition/adni_convnext_47068591/train.py | 6 +-- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/recognition/adni_convnext_47068591/dataset.py b/recognition/adni_convnext_47068591/dataset.py index 9d39d1f6e..3f339bd3b 100644 --- a/recognition/adni_convnext_47068591/dataset.py +++ b/recognition/adni_convnext_47068591/dataset.py @@ -29,6 +29,7 @@ from torch.utils.data import Dataset from PIL import Image import torchvision.transforms as T +from torchvision.transforms import InterpolationMode as IM def _parse_subject_id(filename: str) -> str: @@ -89,21 +90,49 @@ def __init__( for p in plist: self.samples.append((p, label, sid)) - # Define transforms - base_tf = [ - T.Resize((image_size, image_size)), - T.ToTensor(), # → [1, H, W] - T.Normalize(mean=[0.5], std=[0.5]) - ] if split == "train" and augment: - aug_tf = [ + self.tf = T.Compose([ + # --- geometric (PIL space) --- + T.RandomResizedCrop( + image_size, + scale=(0.80, 1.00), # harsher than 0.9–1.0 + ratio=(0.90, 1.10), + interpolation=IM.BICUBIC + ), T.RandomHorizontalFlip(p=0.5), - T.RandomRotation(10), - T.RandomResizedCrop(image_size, scale=(0.9, 1.0)) - ] - self.tf = T.Compose(aug_tf + base_tf) + T.RandomApply([ + T.RandomAffine( + degrees=8, # was 10; paired with shear/translate + translate=(0.05, 0.05), + scale=(0.95, 1.05), + shear=(-5, 5), + interpolation=IM.BILINEAR + ) + ], p=0.7), + T.RandomPerspective(distortion_scale=0.20, p=0.3), + + # --- intensity (PIL space; fine on grayscale) --- + T.ColorJitter(brightness=0.18, contrast=0.18), + + # --- tensor space --- + T.ToTensor(), # → [1, H, W] + T.Normalize(mean=[0.5], std=[0.5]), + T.RandomApply([ + T.GaussianBlur(kernel_size=3, sigma=(0.1, 1.2)) + ], p=0.3), + T.RandomErasing( + p=0.25, + scale=(0.01, 0.05), + ratio=(0.4, 2.5), + value='random' + ), + ]) else: - self.tf = T.Compose(base_tf) + self.tf = T.Compose([ + T.Resize((image_size, image_size), interpolation=IM.BICUBIC), + T.ToTensor(), + T.Normalize(mean=[0.5], std=[0.5]), + ]) def __len__(self): return len(self.samples) diff --git a/recognition/adni_convnext_47068591/train.py b/recognition/adni_convnext_47068591/train.py index 0858aec00..3f62d4467 100644 --- a/recognition/adni_convnext_47068591/train.py +++ b/recognition/adni_convnext_47068591/train.py @@ -34,11 +34,11 @@ OUT="runs", WORKERS=4, IMAGE_SIZE=224, - LIMIT_SLICES_PER_SUBJECT=20, + LIMIT_SLICES_PER_SUBJECT=12, SUBJECT_EVAL=True, SEED=42, - DROP_PATH_RATE=0.1, - HEAD_DROP=0.2, + DROP_PATH_RATE=0.2, + HEAD_DROP=0.3, WARMUP_EPOCHS=5, ) # ============================================================================ # From b884cf0b66c80592f2134be02ef2be39880f5744 Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Sun, 2 Nov 2025 19:47:06 +1000 Subject: [PATCH 5/8] DROP_PATH_RATE=0.15, HEAD_DROP=0.25, added mixup to training --- recognition/adni_convnext_47068591/train.py | 30 ++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/recognition/adni_convnext_47068591/train.py b/recognition/adni_convnext_47068591/train.py index 3f62d4467..9b0a6c7c9 100644 --- a/recognition/adni_convnext_47068591/train.py +++ b/recognition/adni_convnext_47068591/train.py @@ -13,13 +13,16 @@ from collections import defaultdict from contextlib import nullcontext + import argparse import torch import torch.nn as nn +import torch.nn.functional as F from torch.utils.data import DataLoader from torch.optim import AdamW from torch.optim.lr_scheduler import LambdaLR, CosineAnnealingLR import matplotlib.pyplot as plt +import numpy as np from dataset import ADNIJPEGSlicesDataset from modules import ConvNeXtTiny1C, bce_with_logits_loss, binary_metrics @@ -30,15 +33,15 @@ EPOCHS=60, BATCH=16, LR=2e-4, - WEIGHT_DECAY=5e-2, + WEIGHT_DECAY=2e-3, OUT="runs", WORKERS=4, IMAGE_SIZE=224, LIMIT_SLICES_PER_SUBJECT=12, SUBJECT_EVAL=True, SEED=42, - DROP_PATH_RATE=0.2, - HEAD_DROP=0.3, + DROP_PATH_RATE=0.15, + HEAD_DROP=0.25, WARMUP_EPOCHS=5, ) # ============================================================================ # @@ -76,6 +79,17 @@ def plot_history(history: dict, outdir: Path): plt.xlabel("Epoch"); plt.ylabel("Subject Acc"); plt.legend() plt.tight_layout(); plt.savefig(outdir / "subject_acc_curve.png", dpi=150); plt.close() +def do_mixup(x, y, alpha=0.2): + if alpha <= 0: + return x, y, 1.0 + lam = np.random.beta(alpha, alpha) + bs = x.size(0) + idx = torch.randperm(bs, device=x.device) + x_mix = lam * x + (1 - lam) * x[idx] + y = y.float() + y_mix = lam * y + (1 - lam) * y[idx] # soft targets in [0,1] + return x_mix, y_mix, lam + def train_one_epoch(model, loader, optimizer, device, scaler=None): model.train() @@ -86,20 +100,24 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None): imgs, labels = imgs.to(device), labels.to(device) optimizer.zero_grad(set_to_none=True) + # 🔸 Apply MixUp (only for training) + imgs, y_soft, lam = do_mixup(imgs, labels, alpha=0.2) + if scaler is not None: with autocast_ctx: logits = model(imgs) - loss = bce_with_logits_loss(logits, labels) + # use soft targets (MixUp already smooths) + loss = F.binary_cross_entropy_with_logits(logits.view(-1), y_soft.view(-1)) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update() else: with autocast_ctx: logits = model(imgs) - loss = bce_with_logits_loss(logits, labels) + loss = F.binary_cross_entropy_with_logits(logits.view(-1), y_soft.view(-1)) loss.backward() optimizer.step() - + acc, _ = binary_metrics(logits.detach(), labels) bs = imgs.size(0) running_loss += loss.item() * bs From 2b774e6f4319a2e1e6673c787f4c5e2a64791837 Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Sun, 2 Nov 2025 22:48:56 +1000 Subject: [PATCH 6/8] Model over 80% --- recognition/adni_convnext_47068591/train.py | 212 ++++++++++++-------- recognition/adni_convnext_47068591/utils.py | 56 ++++++ 2 files changed, 182 insertions(+), 86 deletions(-) diff --git a/recognition/adni_convnext_47068591/train.py b/recognition/adni_convnext_47068591/train.py index 9b0a6c7c9..14adb4a22 100644 --- a/recognition/adni_convnext_47068591/train.py +++ b/recognition/adni_convnext_47068591/train.py @@ -1,9 +1,8 @@ """ -train.py (no-CLI needed) ------------------------- +train.py (improved, no subject sampler) +--------------------------------------- Set CONFIG below (especially ROOT) and run: python train.py -You can still override with flags (e.g., --root PATH), but it's optional. """ import os @@ -13,14 +12,13 @@ from collections import defaultdict from contextlib import nullcontext - import argparse import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import DataLoader from torch.optim import AdamW -from torch.optim.lr_scheduler import LambdaLR, CosineAnnealingLR +from torch.optim.lr_scheduler import LinearLR, CosineAnnealingLR, SequentialLR import matplotlib.pyplot as plt import numpy as np @@ -40,9 +38,19 @@ LIMIT_SLICES_PER_SUBJECT=12, SUBJECT_EVAL=True, SEED=42, + + # Regularization DROP_PATH_RATE=0.15, HEAD_DROP=0.25, WARMUP_EPOCHS=5, + ETA_MIN=1e-5, + + # Stability & Generalization + CLIP_NORM=1.0, # gradient clipping + MIXUP_ALPHA=0.2, # set 0.0 to disable + EMA=False, # enable for smoother eval + EMA_DECAY=0.999, + EVAL_TTA=False, # test-time augmentation (flip) ) # ============================================================================ # @@ -53,11 +61,13 @@ def set_seed(seed: int = 42): if torch.cuda.is_available(): torch.cuda.manual_seed_all(seed) + def save_checkpoint(model: nn.Module, path: Path): path.parent.mkdir(parents=True, exist_ok=True) torch.save(model.state_dict(), path) print(f"✅ Saved checkpoint: {path}") + def plot_history(history: dict, outdir: Path): outdir.mkdir(parents=True, exist_ok=True) @@ -79,19 +89,49 @@ def plot_history(history: dict, outdir: Path): plt.xlabel("Epoch"); plt.ylabel("Subject Acc"); plt.legend() plt.tight_layout(); plt.savefig(outdir / "subject_acc_curve.png", dpi=150); plt.close() + +# ---------- MixUp ---------- def do_mixup(x, y, alpha=0.2): - if alpha <= 0: + if alpha <= 0: return x, y, 1.0 lam = np.random.beta(alpha, alpha) bs = x.size(0) idx = torch.randperm(bs, device=x.device) x_mix = lam * x + (1 - lam) * x[idx] y = y.float() - y_mix = lam * y + (1 - lam) * y[idx] # soft targets in [0,1] + y_mix = lam * y + (1 - lam) * y[idx] return x_mix, y_mix, lam -def train_one_epoch(model, loader, optimizer, device, scaler=None): +# ---------- EMA ---------- +class EMA: + def __init__(self, model: nn.Module, decay: float = 0.999): + self.decay = float(decay) + self.shadow = {n: p.detach().clone() for n, p in model.named_parameters() if p.requires_grad} + self.collected = {} + + @torch.no_grad() + def update(self, model: nn.Module): + for n, p in model.named_parameters(): + if not p.requires_grad: continue + self.shadow[n].mul_(self.decay).add_(p.detach(), alpha=1.0 - self.decay) + + def apply_to(self, model: nn.Module): + self.collected = {} + for n, p in model.named_parameters(): + if not p.requires_grad: continue + self.collected[n] = p.detach().clone() + p.data.copy_(self.shadow[n].data) + + def restore(self, model: nn.Module): + for n, p in model.named_parameters(): + if not p.requires_grad: continue + p.data.copy_(self.collected[n].data) + self.collected = {} + + +# ---------- Training ---------- +def train_one_epoch(model, loader, optimizer, device, scaler=None, mixup_alpha=0.2, clip_norm=1.0, ema: EMA=None): model.train() running_loss, running_acc, n_samples = 0.0, 0.0, 0 autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() @@ -100,15 +140,17 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None): imgs, labels = imgs.to(device), labels.to(device) optimizer.zero_grad(set_to_none=True) - # 🔸 Apply MixUp (only for training) - imgs, y_soft, lam = do_mixup(imgs, labels, alpha=0.2) + # MixUp augmentation + imgs, y_soft, _ = do_mixup(imgs, labels, alpha=mixup_alpha) if scaler is not None: with autocast_ctx: logits = model(imgs) - # use soft targets (MixUp already smooths) loss = F.binary_cross_entropy_with_logits(logits.view(-1), y_soft.view(-1)) scaler.scale(loss).backward() + scaler.unscale_(optimizer) + if clip_norm: + torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=clip_norm) scaler.step(optimizer) scaler.update() else: @@ -116,8 +158,13 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None): logits = model(imgs) loss = F.binary_cross_entropy_with_logits(logits.view(-1), y_soft.view(-1)) loss.backward() + if clip_norm: + torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=clip_norm) optimizer.step() - + + if ema is not None: + ema.update(model) + acc, _ = binary_metrics(logits.detach(), labels) bs = imgs.size(0) running_loss += loss.item() * bs @@ -127,8 +174,9 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None): return running_loss / n_samples, running_acc / n_samples -@torch.no_grad() -def evaluate_slice_level(model, loader, device): +# ---------- Evaluation ---------- +@torch.inference_mode() +def evaluate_slice_level(model, loader, device, tta=False): model.eval() total_loss, total_acc, n_samples = 0.0, 0.0, 0 autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() @@ -137,6 +185,8 @@ def evaluate_slice_level(model, loader, device): imgs, labels = imgs.to(device), labels.to(device) with autocast_ctx: logits = model(imgs) + if tta: + logits = 0.5 * (logits + model(torch.flip(imgs, dims=[-1]))) loss = bce_with_logits_loss(logits, labels) acc, _ = binary_metrics(logits, labels) @@ -148,8 +198,8 @@ def evaluate_slice_level(model, loader, device): return total_loss / n_samples, total_acc / n_samples -@torch.no_grad() -def evaluate_subject_level(model, loader, device): +@torch.inference_mode() +def evaluate_subject_level(model, loader, device, tta=False): model.eval() bucket = defaultdict(list) autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() @@ -158,15 +208,16 @@ def evaluate_subject_level(model, loader, device): imgs, labels = imgs.to(device), labels.to(device) with autocast_ctx: logits = model(imgs) - probs = torch.sigmoid(logits).cpu().numpy() - labs = labels.cpu().numpy() - for p, l, sid in zip(probs, labs, sids): - bucket[sid].append((float(p), int(l))) + if tta: + logits = 0.5 * (logits + model(torch.flip(imgs, dims=[-1]))) + + for lg, lab, sid in zip(logits.detach().cpu(), labels.cpu(), sids): + bucket[sid].append((float(lg), int(lab))) correct, total = 0, 0 for sid, entries in bucket.items(): - mean_prob = sum(p for p, _ in entries) / len(entries) - pred = 1 if mean_prob >= 0.5 else 0 + mean_logit = sum(lg for lg, _ in entries) / len(entries) + pred = 1 if mean_logit >= 0.0 else 0 true = entries[0][1] correct += int(pred == true) total += 1 @@ -174,111 +225,100 @@ def evaluate_subject_level(model, loader, device): return correct / max(total, 1) +# ---------- Main ---------- def main(): - # Optional CLI overrides (but all have defaults from CONFIG) parser = argparse.ArgumentParser(add_help=False) parser.add_argument("--root", type=str, default=CONFIG["ROOT"]) - parser.add_argument("--epochs", type=int, default=CONFIG["EPOCHS"]) - parser.add_argument("--batch", type=int, default=CONFIG["BATCH"]) - parser.add_argument("--lr", type=float, default=CONFIG["LR"]) - parser.add_argument("--weight_decay", type=float, default=CONFIG["WEIGHT_DECAY"]) - parser.add_argument("--out", type=str, default=CONFIG["OUT"]) - parser.add_argument("--workers", type=int, default=CONFIG["WORKERS"]) - parser.add_argument("--image_size", type=int, default=CONFIG["IMAGE_SIZE"]) - parser.add_argument("--limit_slices_per_subject", type=int, default=CONFIG["LIMIT_SLICES_PER_SUBJECT"]) - parser.add_argument("--subject_eval", action="store_true" if CONFIG["SUBJECT_EVAL"] else "store_false") - parser.add_argument("--seed", type=int, default=CONFIG["SEED"]) args, _ = parser.parse_known_args() - # If CONFIG["SUBJECT_EVAL"] is True but flag not passed, enforce it - args.subject_eval = CONFIG["SUBJECT_EVAL"] or args.subject_eval - - # Seed / device - set_seed(args.seed) + set_seed(CONFIG["SEED"]) device = "cuda" if torch.cuda.is_available() else "cpu" - outdir = Path(args.out); outdir.mkdir(parents=True, exist_ok=True) + outdir = Path(CONFIG["OUT"]); outdir.mkdir(parents=True, exist_ok=True) print(f"Device: {device}") print(f"Root: {args.root}") # Datasets train_ds = ADNIJPEGSlicesDataset( root=args.root, split="train", - image_size=args.image_size, augment=True, - limit_slices_per_subject=args.limit_slices_per_subject + image_size=CONFIG["IMAGE_SIZE"], augment=True, + limit_slices_per_subject=CONFIG["LIMIT_SLICES_PER_SUBJECT"] ) val_ds = ADNIJPEGSlicesDataset( root=args.root, split="test", - image_size=args.image_size, augment=False + image_size=CONFIG["IMAGE_SIZE"], augment=False ) - train_loader = DataLoader(train_ds, batch_size=args.batch, shuffle=True, - num_workers=args.workers, pin_memory=True) - val_loader = DataLoader(val_ds, batch_size=args.batch, shuffle=False, - num_workers=args.workers, pin_memory=True) + train_loader = DataLoader(train_ds, batch_size=CONFIG["BATCH"], shuffle=True, + num_workers=CONFIG["WORKERS"], pin_memory=True) + val_loader = DataLoader(val_ds, batch_size=CONFIG["BATCH"], shuffle=False, + num_workers=CONFIG["WORKERS"], pin_memory=True) - # Model / Optim / Sched + # Model model = ConvNeXtTiny1C( in_ch=1, num_classes=1, drop_path_rate=CONFIG["DROP_PATH_RATE"], head_drop=CONFIG["HEAD_DROP"] ).to(device) + + # Optimizer (decoupled WD) + decay, no_decay = [], [] + for n, p in model.named_parameters(): + if not p.requires_grad: continue + if p.ndim == 1 or n.endswith(".bias") or ("norm" in n.lower()): + no_decay.append(p) + else: + decay.append(p) + optimizer = AdamW( + [{"params": decay, "weight_decay": CONFIG["WEIGHT_DECAY"]}, + {"params": no_decay, "weight_decay": 0.0}], + lr=CONFIG["LR"], betas=(0.9, 0.999) + ) + + # Scheduler: warmup + cosine warmup_epochs = CONFIG["WARMUP_EPOCHS"] - - - def lr_lambda(epoch): - if epoch < warmup_epochs: - return (epoch + 1) / warmup_epochs - # after warmup, delegate to cosine by keeping lambda=1 and stepping base_scheduler - return 1.0 - - - optimizer = AdamW(model.parameters(), lr=args.lr, weight_decay=args.weight_decay) - warmup = LambdaLR(optimizer, lr_lambda=lr_lambda) - base_scheduler = CosineAnnealingLR(optimizer, T_max=args.epochs - warmup_epochs) - schedulers = (warmup, base_scheduler) - scaler = torch.amp.GradScaler('cuda') if device == "cuda" else None + main_epochs = CONFIG["EPOCHS"] - warmup_epochs + warmup = LinearLR(optimizer, start_factor=1e-3, end_factor=1.0, total_iters=warmup_epochs) + cosine = CosineAnnealingLR(optimizer, T_max=main_epochs, eta_min=CONFIG["ETA_MIN"]) + scheduler = SequentialLR(optimizer, schedulers=[warmup, cosine], milestones=[warmup_epochs]) - history = {"train_loss": [], "val_loss": [], "train_acc": [], "val_acc": []} - if args.subject_eval: - history["val_subj_acc"] = [] + scaler = torch.amp.GradScaler('cuda') if device == "cuda" else None + ema = EMA(model, decay=CONFIG["EMA_DECAY"]) if CONFIG["EMA"] else None - best_metric = -1.0 - best_path = outdir / "best_model.pt" + history = {"train_loss": [], "val_loss": [], "train_acc": [], "val_acc": [], "val_subj_acc": []} + best_metric, best_path = -1.0, outdir / "best_model.pt" - for epoch in range(1, args.epochs + 1): + print("\n=== Training ===") + for epoch in range(1, CONFIG["EPOCHS"] + 1): t0 = time.time() - tr_loss, tr_acc = train_one_epoch(model, train_loader, optimizer, device, scaler) - val_loss, val_acc = evaluate_slice_level(model, val_loader, device) - if epoch <= warmup_epochs: - schedulers[0].step() - else: - schedulers[1].step() + tr_loss, tr_acc = train_one_epoch( + model, train_loader, optimizer, device, + scaler=scaler, mixup_alpha=CONFIG["MIXUP_ALPHA"], + clip_norm=CONFIG["CLIP_NORM"], ema=ema + ) + + if ema: ema.apply_to(model) + val_loss, val_acc = evaluate_slice_level(model, val_loader, device, tta=CONFIG["EVAL_TTA"]) + subj_metric = evaluate_subject_level(model, val_loader, device, tta=CONFIG["EVAL_TTA"]) if CONFIG["SUBJECT_EVAL"] else val_acc + if ema: ema.restore(model) history["train_loss"].append(tr_loss); history["val_loss"].append(val_loss) history["train_acc"].append(tr_acc); history["val_acc"].append(val_acc) + history["val_subj_acc"].append(subj_metric) + scheduler.step() - line = f"Epoch {epoch:03d}/{args.epochs} | Train {tr_loss:.4f}/{tr_acc:.3f} | Val {val_loss:.4f}/{val_acc:.3f}" - subj_metric = None - if args.subject_eval: - subj_metric = evaluate_subject_level(model, val_loader, device) - history["val_subj_acc"].append(subj_metric) - line += f" | Val-Subject {subj_metric:.3f}" - line += f" | {time.time()-t0:.1f}s" + line = f"Epoch {epoch:03d}/{CONFIG['EPOCHS']} | Train {tr_loss:.4f}/{tr_acc:.3f} | Val {val_loss:.4f}/{val_acc:.3f} | Subj {subj_metric:.3f} | LR={optimizer.param_groups[0]['lr']:.6g} | {time.time()-t0:.1f}s" print(line) - monitor = subj_metric if (args.subject_eval and subj_metric is not None) else val_acc - if monitor > best_metric: - best_metric = monitor + if subj_metric > best_metric: + best_metric = subj_metric save_checkpoint(model, best_path) - # Save logs plot_history(history, outdir) with open(outdir / "history.json", "w") as f: json.dump(history, f, indent=2) - - print(f"🏁 Done. Best metric ({'subject' if args.subject_eval else 'slice'}): {best_metric:.3f}") + print(f"\n🏁 Done. Best subject acc: {best_metric:.3f}") print(f"Best checkpoint: {best_path}") diff --git a/recognition/adni_convnext_47068591/utils.py b/recognition/adni_convnext_47068591/utils.py index e69de29bb..d3d9ec9a0 100644 --- a/recognition/adni_convnext_47068591/utils.py +++ b/recognition/adni_convnext_47068591/utils.py @@ -0,0 +1,56 @@ +# utils.py (or inline in train.py if you prefer) +import random, math +from collections import defaultdict +from torch.utils.data import Sampler + +class RandomSubjectBatchSampler(Sampler): + """ + Yields batches with at most one slice per subject. + Expects dataset.samples = [(path, label, subject_id), ...] + """ + def __init__(self, dataset, batch_size=16, drop_last=False, seed=42): + self.dataset = dataset + self.batch_size = int(batch_size) + self.drop_last = bool(drop_last) + self.seed = int(seed) + + buckets = defaultdict(list) + for idx, (_p, _y, sid) in enumerate(dataset.samples): + buckets[sid].append(idx) + self.buckets = {k: v[:] for k, v in buckets.items()} + + def set_epoch(self, epoch=0): + rng = random.Random(self.seed + int(epoch)) + # shuffle subject order and per-subject slice order each epoch + self.subjects = list(self.buckets.keys()) + rng.shuffle(self.subjects) + self._buckets = {sid: lst[:] for sid, lst in self.buckets.items()} + for sid in self._buckets: + rng.shuffle(self._buckets[sid]) + + def __iter__(self): + if not hasattr(self, "_buckets"): + self.set_epoch(0) + active = [sid for sid, lst in self._buckets.items() if lst] + rng = random.Random(self.seed) + rng.shuffle(active) + + while active: + pick = active[: self.batch_size] + batch = [self._buckets[sid].pop() for sid in pick] + # keep only subjects that still have slices + active = [sid for sid in active if self._buckets[sid]] + # refill with other subjects that still have slices + rest = [sid for sid, lst in self._buckets.items() if lst and sid not in active] + rng.shuffle(rest) + active = active + rest + if len(batch) == self.batch_size: + yield batch + elif not self.drop_last and batch: + yield batch + if all(len(lst) == 0 for lst in self._buckets.values()): + break + + def __len__(self): + n = sum(len(v) for v in self.buckets.values()) + return n // self.batch_size if self.drop_last else math.ceil(n / self.batch_size) From 7954f7615608f63557560048946843eb8ded894d Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Mon, 3 Nov 2025 19:46:20 +1000 Subject: [PATCH 7/8] Completed final version of train, dataset, predict, and modules. --- recognition/README.md | 10 - recognition/adni_convnext_47068591/dataset.py | 22 +- recognition/adni_convnext_47068591/modules.py | 1 - recognition/adni_convnext_47068591/predict.py | 365 ++++++++++++++++++ recognition/adni_convnext_47068591/train.py | 149 ++++--- recognition/adni_convnext_47068591/utils.py | 56 --- 6 files changed, 454 insertions(+), 149 deletions(-) delete mode 100644 recognition/README.md delete mode 100644 recognition/adni_convnext_47068591/utils.py diff --git a/recognition/README.md b/recognition/README.md deleted file mode 100644 index 32c99e899..000000000 --- a/recognition/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Recognition Tasks -Various recognition tasks solved in deep learning frameworks. - -Tasks may include: -* Image Segmentation -* Object detection -* Graph node classification -* Image super resolution -* Disease classification -* Generative modelling with StyleGAN and Stable Diffusion \ No newline at end of file diff --git a/recognition/adni_convnext_47068591/dataset.py b/recognition/adni_convnext_47068591/dataset.py index 3f339bd3b..8a0fb64ba 100644 --- a/recognition/adni_convnext_47068591/dataset.py +++ b/recognition/adni_convnext_47068591/dataset.py @@ -3,21 +3,6 @@ ----------- Loads grayscale JPEG slices for AD vs NC classification (ADNI dataset). -Expected directory structure: - ADNI/ - AD_NC/ - train/ - AD/ - 123456_78.jpeg - 123456_79.jpeg - ... - NC/ - 654321_81.jpeg - 654321_82.jpeg - ... - test/ - AD/ - NC/ """ import os @@ -90,19 +75,20 @@ def __init__( for p in plist: self.samples.append((p, label, sid)) + # data augmentations / transforms if split == "train" and augment: self.tf = T.Compose([ # --- geometric (PIL space) --- T.RandomResizedCrop( image_size, - scale=(0.80, 1.00), # harsher than 0.9–1.0 + scale=(0.80, 1.00), ratio=(0.90, 1.10), interpolation=IM.BICUBIC ), T.RandomHorizontalFlip(p=0.5), T.RandomApply([ T.RandomAffine( - degrees=8, # was 10; paired with shear/translate + degrees=8, translate=(0.05, 0.05), scale=(0.95, 1.05), shear=(-5, 5), @@ -110,8 +96,6 @@ def __init__( ) ], p=0.7), T.RandomPerspective(distortion_scale=0.20, p=0.3), - - # --- intensity (PIL space; fine on grayscale) --- T.ColorJitter(brightness=0.18, contrast=0.18), # --- tensor space --- diff --git a/recognition/adni_convnext_47068591/modules.py b/recognition/adni_convnext_47068591/modules.py index e7f79f8a0..2c991fb13 100644 --- a/recognition/adni_convnext_47068591/modules.py +++ b/recognition/adni_convnext_47068591/modules.py @@ -13,7 +13,6 @@ """ from typing import Optional, Tuple -import math import torch import torch.nn as nn import torch.nn.functional as F diff --git a/recognition/adni_convnext_47068591/predict.py b/recognition/adni_convnext_47068591/predict.py index e69de29bb..26d1ebf31 100644 --- a/recognition/adni_convnext_47068591/predict.py +++ b/recognition/adni_convnext_47068591/predict.py @@ -0,0 +1,365 @@ +""" +predict.py — demo/report artifacts from the saved checkpoint + +What this script does (no training here): + 1) Loads the TEST split via ADNIJPEGSlicesDataset. + 2) Builds the ConvNeXtTiny1C model and loads weights from a checkpoint. + 3) Computes slice-level and subject-level metrics (acc, AUC, sensitivity, specificity). + 4) Saves a confusion matrix image, ROC curve image, an example grid image, and a JSON with metrics. + +Usage: + python predict.py --root --ckpt runs/best_model.pt + example:python recognition/adni_convnext_47068591/predict.py --root /home/groups/comp3710/ADNI/AD_NC --ckpt runs/best_model.pt + +Outputs (in --out, default "runs/"): + demo_confusion.png, demo_roc.png, demo_examples.png, demo_metrics.json +""" + +import argparse +from pathlib import Path +from collections import defaultdict + +import numpy as np +import torch +from torch.utils.data import DataLoader +import matplotlib.pyplot as plt +from sklearn.metrics import roc_auc_score, confusion_matrix, roc_curve +from PIL import Image, ImageOps, ImageDraw + +from dataset import ADNIJPEGSlicesDataset +from modules import ConvNeXtTiny1C + + +def compute_slice_metrics(model, loader, device): + """ + Evaluate model performance at the SLICE level. + + Returns a dict with: + - acc: accuracy over slices + - auc: ROC AUC over slices (probabilities vs labels) + - sens/spec: sensitivity/specificity from a 0.5 threshold + - y_true, y_prob, y_pred: arrays for downstream plots (ROC/confusion) + """ + model.eval() + y_true, y_prob = [], [] + + # Disable grad; iterate over all test batches + with torch.inference_mode(): + for imgs, labels, _ in loader: + imgs = imgs.to(device) + logits = model(imgs) # raw logits (shape [N]) + probs = torch.sigmoid(logits).cpu().numpy() # convert to p(AD) + y_prob.append(probs) + y_true.append(labels.numpy()) + + # Concatenate across all batches + y_prob = np.concatenate(y_prob).astype(np.float64) + y_true = np.concatenate(y_true).astype(np.int64) + + # Threshold at 0.5 for hard predictions + y_pred = (y_prob >= 0.5).astype(np.int64) + + # Slice accuracy + acc = (y_pred == y_true).mean().item() + + # ROC AUC can fail if there is only one class present → guard with try/except + try: + auc = roc_auc_score(y_true, y_prob) + except ValueError: + auc = float('nan') + + # Confusion matrix and derived metrics at the 0.5 threshold + tn, fp, fn, tp = confusion_matrix(y_true, y_pred, labels=[0, 1]).ravel() + sens = tp / max(tp + fn, 1) # recall for AD + spec = tn / max(tn + fp, 1) # recall for NC + + return dict(acc=acc, auc=auc, sens=sens, spec=spec, + y_true=y_true, y_prob=y_prob, y_pred=y_pred) + + +def compute_subject_metrics(model, loader, device): + """ + Evaluate model performance at the SUBJECT level. + + Approach: + - Accumulate slice probabilities per subject_id in a bucket. + - Average probabilities per subject (mean p(AD) across its slices). + - Threshold averaged probability at 0.5 to get a subject prediction. + """ + model.eval() + bucket = defaultdict(list) # sid -> list of (p, label) + + with torch.inference_mode(): + for imgs, labels, sids in loader: + imgs = imgs.to(device) + logits = model(imgs) + probs = torch.sigmoid(logits).cpu().numpy() + # Group each slice's prob with its subject id + for p, lab, sid in zip(probs, labels.numpy(), sids): + bucket[sid].append((float(p), int(lab))) + + # Aggregate per subject (mean probability); labels are consistent for a subject + y_true, y_prob = [], [] + for sid, items in bucket.items(): + mean_prob = sum(p for p, _ in items) / len(items) + y_prob.append(mean_prob) + y_true.append(items[0][1]) + + # Convert to arrays for metrics + y_true = np.array(y_true, dtype=np.int64) + y_prob = np.array(y_prob, dtype=np.float64) + + # Subject-level hard predictions at 0.5 + y_pred = (y_prob >= 0.5).astype(np.int64) + + # Subject accuracy + acc = (y_pred == y_true).mean().item() + + # Subject ROC AUC (may be NaN if only one class present) + try: + auc = roc_auc_score(y_true, y_prob) + except ValueError: + auc = float('nan') + + # Subject confusion matrix-derived metrics (using the 0.5 threshold) + tn, fp, fn, tp = confusion_matrix(y_true, y_pred, labels=[0, 1]).ravel() + sens = tp / max(tp + fn, 1) + spec = tn / max(tn + fp, 1) + + return dict(acc=acc, auc=auc, sens=sens, spec=spec, + y_true=y_true, y_prob=y_prob, y_pred=y_pred) + + +def plot_subject_confusion(cm, outpath): + """ + Plot a labeled 2x2 confusion matrix for SUBJECT-LEVEL classification (NC vs AD). + + Args: + cm (np.ndarray): 2x2 array in the form [[TN, FP], [FN, TP]] + outpath (Path or str): path to save the figure (PNG) + + Conventions: + - Rows are TRUE subject diagnoses (NC row, AD row) + - Columns are PREDICTED subject diagnoses (NC col, AD col) + """ + tn, fp, fn, tp = cm.ravel() + matrix = np.array([[tn, fp], [fn, tp]]) + + fig, ax = plt.subplots(figsize=(4, 4)) + im = ax.imshow(matrix, cmap="Blues") + + # Tick labels + ax.set_xticks([0, 1]) + ax.set_yticks([0, 1]) + ax.set_xticklabels(['Predicted NC', 'Predicted AD']) + ax.set_yticklabels(['True NC', 'True AD']) + + # Axis titles (explicitly labeled as subject-level) + ax.set_xlabel("Predicted Diagnosis (Subject-Level)", fontsize=11) + ax.set_ylabel("True Diagnosis (Subject-Level)", fontsize=11) + + # Value annotations + for (i, j), v in np.ndenumerate(matrix): + ax.text(j, i, f"{v}", ha="center", va="center", fontsize=13, color="black") + + # Add gridlines between cells + ax.set_xticks(np.arange(-0.5, 2, 1), minor=True) + ax.set_yticks(np.arange(-0.5, 2, 1), minor=True) + ax.grid(which="minor", color="gray", linestyle="-", linewidth=0.5) + ax.tick_params(which="minor", bottom=False, left=False) + + # Updated title + ax.set_title("Confusion Matrix (Subject-Level)", fontsize=14, pad=10) + + plt.tight_layout() + plt.savefig(outpath, dpi=150) + plt.close(fig) + + + +def plot_roc(y_true, y_prob, outpath, title="ROC"): + """ + Plot a standard ROC curve with diagonal (chance) line and AUC in legend. + + Args: + y_true (array-like): Ground-truth labels (0/1) + y_prob (array-like): Predicted probabilities for the positive class (AD) + outpath (Path/str): Where to save the PNG + title (str): Figure title + """ + # ROC points: varying threshold from 1 → 0 + fpr, tpr, _ = roc_curve(y_true, y_prob) + + # AUC can be undefined when only one class is present + auc = roc_auc_score(y_true, y_prob) if len(np.unique(y_true)) > 1 else float('nan') + + plt.figure() + plt.plot(fpr, tpr, label=f"AUC = {auc:.3f}") + plt.plot([0, 1], [0, 1], linestyle="--") # chance line + plt.xlabel("FPR") + plt.ylabel("TPR") + plt.legend() + plt.title(title) + plt.tight_layout() + plt.savefig(outpath, dpi=150) + plt.close() + + +def make_examples_grid(ds, model, device, outpath, n_per_class=6): + """ + Create a grid of TEST subjects with their subject-level predicted probability p(AD). + + Each subject's probability is computed as the mean of all slice probabilities. + The grid shows one representative slice (middle slice) for each subject, with a + banner that explicitly labels the following: + - Subject ID + - True Diagnosis (NC/AD) + - Model's predicted probability for AD (subject-level mean) + + Args: + ds: ADNIJPEGSlicesDataset (split="test"). + model: Trained model (in eval mode). + device: "cuda" or "cpu". + outpath: Path to save the resulting image grid. + n_per_class: Max subjects per class (NC/AD) to show. + """ + import numpy as np + from collections import defaultdict + from PIL import Image, ImageOps, ImageDraw, ImageFont + + model.eval() + + subj_to_indices = defaultdict(list) + subj_to_label = {} + for idx, (_path, y, sid) in enumerate(ds.samples): + subj_to_indices[sid].append(idx) + subj_to_label.setdefault(sid, y) + + subj_probs = {} + with torch.inference_mode(): + for sid, idx_list in subj_to_indices.items(): + slice_probs = [] + for idx in idx_list: + path, _y, _sid = ds.samples[idx] + pil = Image.open(path).convert("L") + x = ds.tf(pil).unsqueeze(0).to(device) + p = torch.sigmoid(model(x)).item() + slice_probs.append(p) + subj_probs[sid] = float(np.mean(slice_probs)) if slice_probs else float("nan") + + ad_sids = [sid for sid, y in subj_to_label.items() if y == 1][:n_per_class] + nc_sids = [sid for sid, y in subj_to_label.items() if y == 0][:n_per_class] + chosen_sids = ad_sids + nc_sids + if len(chosen_sids) == 0: + return + + tiles = [] + with torch.inference_mode(): + for sid in chosen_sids: + idx_list = subj_to_indices[sid] + label = subj_to_label[sid] + p_subj = subj_probs.get(sid, float("nan")) + + idx_list_sorted = sorted(idx_list) + rep_idx = idx_list_sorted[len(idx_list_sorted) // 2] + path, _y, _sid = ds.samples[rep_idx] + + pil = Image.open(path).convert("L") + disp = ImageOps.equalize(pil.resize((224, 224))) + draw = ImageDraw.Draw(disp) + + # Use two-line banner for clarity and space efficiency + text_line1 = f"Subject ID: {sid}" + text_line2 = f"True: {'AD' if label==1 else 'NC'} | Pred p(AD): {p_subj:.2f}" + + # Draw a taller banner rectangle + banner_height = 40 + draw.rectangle([0, 0, 223, banner_height], fill=0) + + # Use a slightly smaller font if available + try: + font = ImageFont.truetype("arial.ttf", 12) + except: + font = None # fallback to default + + # Write each line separately + draw.text((4, 4), text_line1, fill=255, font=font) + draw.text((4, 20), text_line2, fill=255, font=font) + + tiles.append(disp.convert("RGB")) + + cols = 6 + rows = int(np.ceil(len(tiles) / cols)) + w, h = tiles[0].size + grid = Image.new("RGB", (cols * w, rows * h), color=(255, 255, 255)) + for idx, im in enumerate(tiles): + r, c = divmod(idx, cols) + grid.paste(im, (c * w, r * h)) + grid.save(outpath) + + + + +def main(): + """ + Entrypoint: + - Parse CLI args + - Construct test dataset/loader + - Load checkpointed model + - Compute and save metrics/plots/examples + """ + ap = argparse.ArgumentParser() + ap.add_argument("--root", type=str, required=True) # ADNI/AD_NC root + ap.add_argument("--ckpt", type=str, default="runs/best_model.pt") # checkpoint path + ap.add_argument("--batch", type=int, default=32) # test-time batch size + ap.add_argument("--image_size", type=int, default=224) # must match training/eval tf + ap.add_argument("--workers", type=int, default=4) # dataloader workers + ap.add_argument("--out", type=str, default="runs") # output directory + args = ap.parse_args() + + # Device + output directory + device = "cuda" if torch.cuda.is_available() else "cpu" + outdir = Path(args.out); outdir.mkdir(parents=True, exist_ok=True) + + # Dataset/loader (TEST split only — no training here) + test_ds = ADNIJPEGSlicesDataset(root=args.root, split="test", + image_size=args.image_size, augment=False) + test_loader = DataLoader(test_ds, batch_size=args.batch, shuffle=False, + num_workers=args.workers, pin_memory=True) + + # Model (same architecture as training) + checkpoint load + model = ConvNeXtTiny1C(in_ch=1, num_classes=1, drop_path_rate=0.15, head_drop=0.25).to(device) + state = torch.load(args.ckpt, map_location=device) + model.load_state_dict(state) + model.eval() + + # Compute metrics (slice- and subject-level) + slice_res = compute_slice_metrics(model, test_loader, device) + subj_res = compute_subject_metrics(model, test_loader, device) + + # Save a compact JSON with the numeric metrics (arrays omitted) + metrics = { + "slice": {k: float(v) if not isinstance(v, (list, np.ndarray)) else None + for k, v in slice_res.items() if k not in ("y_true", "y_prob", "y_pred")}, + "subject": {k: float(v) if not isinstance(v, (list, np.ndarray)) else None + for k, v in subj_res.items() if k not in ("y_true", "y_prob", "y_pred")} + } + with open(outdir / "demo_metrics.json", "w") as f: + import json + json.dump(metrics, f, indent=2) + print("Demo metrics:", metrics) + + # Plots (slice-level confusion + ROC) + cm = confusion_matrix(slice_res["y_true"], slice_res["y_pred"], labels=[0, 1]) + plot_subject_confusion(cm, outdir / "demo_confusion.png") + plot_roc(slice_res["y_true"], slice_res["y_prob"], outdir / "demo_roc.png", title="ROC (slice-level)") + + # Qualitative example grid + make_examples_grid(test_ds, model, device, outdir / "demo_examples.png", n_per_class=6) + + print("Demo complete.") + print(f"Artifacts saved to: {outdir.resolve()}") + + +if __name__ == "__main__": + main() diff --git a/recognition/adni_convnext_47068591/train.py b/recognition/adni_convnext_47068591/train.py index 14adb4a22..58008e330 100644 --- a/recognition/adni_convnext_47068591/train.py +++ b/recognition/adni_convnext_47068591/train.py @@ -1,10 +1,3 @@ -""" -train.py (improved, no subject sampler) ---------------------------------------- -Set CONFIG below (especially ROOT) and run: - python train.py -""" - import os import json import time @@ -35,7 +28,7 @@ OUT="runs", WORKERS=4, IMAGE_SIZE=224, - LIMIT_SLICES_PER_SUBJECT=12, + LIMIT_SLICES_PER_SUBJECT=12, SUBJECT_EVAL=True, SEED=42, @@ -47,15 +40,18 @@ # Stability & Generalization CLIP_NORM=1.0, # gradient clipping - MIXUP_ALPHA=0.2, # set 0.0 to disable - EMA=False, # enable for smoother eval - EMA_DECAY=0.999, - EVAL_TTA=False, # test-time augmentation (flip) + MIXUP_ALPHA=0.2, # MixUp + + # Early stopping + EARLY_STOP_PATIENCE=8, ) # ============================================================================ # def set_seed(seed: int = 42): + """ + Fix random seeds for Python, NumPy, and PyTorch (CPU/CUDA). + """ import random, numpy as np random.seed(seed); np.random.seed(seed); torch.manual_seed(seed) if torch.cuda.is_available(): @@ -63,12 +59,19 @@ def set_seed(seed: int = 42): def save_checkpoint(model: nn.Module, path: Path): + """ + Save only the model state_dict at 'path'. Creates parent dirs if needed. + """ path.parent.mkdir(parents=True, exist_ok=True) torch.save(model.state_dict(), path) - print(f"✅ Saved checkpoint: {path}") + print(f"Saved checkpoint: {path}") def plot_history(history: dict, outdir: Path): + """ + Write simple PNG plots for train/val loss and accuracy. + Also plots subject-level accuracy if present. + """ outdir.mkdir(parents=True, exist_ok=True) plt.figure() @@ -92,6 +95,10 @@ def plot_history(history: dict, outdir: Path): # ---------- MixUp ---------- def do_mixup(x, y, alpha=0.2): + """ + Standard MixUp: convex-combine inputs and labels within the batch. + Returns mixed images, mixed (soft) labels, and lambda. + """ if alpha <= 0: return x, y, 1.0 lam = np.random.beta(alpha, alpha) @@ -103,35 +110,15 @@ def do_mixup(x, y, alpha=0.2): return x_mix, y_mix, lam -# ---------- EMA ---------- -class EMA: - def __init__(self, model: nn.Module, decay: float = 0.999): - self.decay = float(decay) - self.shadow = {n: p.detach().clone() for n, p in model.named_parameters() if p.requires_grad} - self.collected = {} - - @torch.no_grad() - def update(self, model: nn.Module): - for n, p in model.named_parameters(): - if not p.requires_grad: continue - self.shadow[n].mul_(self.decay).add_(p.detach(), alpha=1.0 - self.decay) - - def apply_to(self, model: nn.Module): - self.collected = {} - for n, p in model.named_parameters(): - if not p.requires_grad: continue - self.collected[n] = p.detach().clone() - p.data.copy_(self.shadow[n].data) - - def restore(self, model: nn.Module): - for n, p in model.named_parameters(): - if not p.requires_grad: continue - p.data.copy_(self.collected[n].data) - self.collected = {} - - # ---------- Training ---------- -def train_one_epoch(model, loader, optimizer, device, scaler=None, mixup_alpha=0.2, clip_norm=1.0, ema: EMA=None): +def train_one_epoch(model, loader, optimizer, device, scaler=None, mixup_alpha=0.2, clip_norm=1.0): + """ + One full pass over the training set. + - Uses AMP if CUDA is available and scaler is provided. + - Applies MixUp to both inputs and labels. + - Clips gradients for stability. + - Tracks average loss and accuracy for reporting. + """ model.train() running_loss, running_acc, n_samples = 0.0, 0.0, 0 autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() @@ -140,7 +127,7 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None, mixup_alpha=0 imgs, labels = imgs.to(device), labels.to(device) optimizer.zero_grad(set_to_none=True) - # MixUp augmentation + # MixUp augmentation (soft labels) imgs, y_soft, _ = do_mixup(imgs, labels, alpha=mixup_alpha) if scaler is not None: @@ -162,9 +149,7 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None, mixup_alpha=0 torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=clip_norm) optimizer.step() - if ema is not None: - ema.update(model) - + # Report hard accuracy against original hard labels (not soft) acc, _ = binary_metrics(logits.detach(), labels) bs = imgs.size(0) running_loss += loss.item() * bs @@ -176,7 +161,11 @@ def train_one_epoch(model, loader, optimizer, device, scaler=None, mixup_alpha=0 # ---------- Evaluation ---------- @torch.inference_mode() -def evaluate_slice_level(model, loader, device, tta=False): +def evaluate_slice_level(model, loader, device): + """ + Slice-level evaluation on the provided loader. + Returns average loss and accuracy across slices. + """ model.eval() total_loss, total_acc, n_samples = 0.0, 0.0, 0 autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() @@ -185,8 +174,6 @@ def evaluate_slice_level(model, loader, device, tta=False): imgs, labels = imgs.to(device), labels.to(device) with autocast_ctx: logits = model(imgs) - if tta: - logits = 0.5 * (logits + model(torch.flip(imgs, dims=[-1]))) loss = bce_with_logits_loss(logits, labels) acc, _ = binary_metrics(logits, labels) @@ -199,7 +186,12 @@ def evaluate_slice_level(model, loader, device, tta=False): @torch.inference_mode() -def evaluate_subject_level(model, loader, device, tta=False): +def evaluate_subject_level(model, loader, device): + """ + Subject-level evaluation: + - Aggregate all slice logits per subject (mean logit). + - Return subject-level accuracy. + """ model.eval() bucket = defaultdict(list) autocast_ctx = torch.amp.autocast('cuda') if device == "cuda" else nullcontext() @@ -208,8 +200,6 @@ def evaluate_subject_level(model, loader, device, tta=False): imgs, labels = imgs.to(device), labels.to(device) with autocast_ctx: logits = model(imgs) - if tta: - logits = 0.5 * (logits + model(torch.flip(imgs, dims=[-1]))) for lg, lab, sid in zip(logits.detach().cpu(), labels.cpu(), sids): bucket[sid].append((float(lg), int(lab))) @@ -227,6 +217,14 @@ def evaluate_subject_level(model, loader, device, tta=False): # ---------- Main ---------- def main(): + """ + Orchestrates: + - seeding, device setup + - dataset/dataloader creation (train uses 'train/', val uses 'test/') + - model/optimizer/scheduler/scaler setup + - training loop with subject-level early stopping + - history plots + JSON dump + """ parser = argparse.ArgumentParser(add_help=False) parser.add_argument("--root", type=str, default=CONFIG["ROOT"]) args, _ = parser.parse_known_args() @@ -238,7 +236,9 @@ def main(): print(f"Device: {device}") print(f"Root: {args.root}") - # Datasets + # --- Datasets & loaders --- + # Train: strong augmentation; + # Val(Test): deterministic resize/normalize. train_ds = ADNIJPEGSlicesDataset( root=args.root, split="train", image_size=CONFIG["IMAGE_SIZE"], augment=True, @@ -254,17 +254,18 @@ def main(): val_loader = DataLoader(val_ds, batch_size=CONFIG["BATCH"], shuffle=False, num_workers=CONFIG["WORKERS"], pin_memory=True) - # Model + # --- Model --- model = ConvNeXtTiny1C( in_ch=1, num_classes=1, drop_path_rate=CONFIG["DROP_PATH_RATE"], head_drop=CONFIG["HEAD_DROP"] ).to(device) - # Optimizer (decoupled WD) + # --- Optimizer (AdamW with decoupled weight decay) --- decay, no_decay = [], [] for n, p in model.named_parameters(): if not p.requires_grad: continue + # Norms & biases go to no_decay if p.ndim == 1 or n.endswith(".bias") or ("norm" in n.lower()): no_decay.append(p) else: @@ -275,50 +276,72 @@ def main(): lr=CONFIG["LR"], betas=(0.9, 0.999) ) - # Scheduler: warmup + cosine + # --- Scheduler: warmup (Linear) + cosine anneal --- warmup_epochs = CONFIG["WARMUP_EPOCHS"] main_epochs = CONFIG["EPOCHS"] - warmup_epochs warmup = LinearLR(optimizer, start_factor=1e-3, end_factor=1.0, total_iters=warmup_epochs) cosine = CosineAnnealingLR(optimizer, T_max=main_epochs, eta_min=CONFIG["ETA_MIN"]) scheduler = SequentialLR(optimizer, schedulers=[warmup, cosine], milestones=[warmup_epochs]) + # --- AMP scaler (CUDA) --- scaler = torch.amp.GradScaler('cuda') if device == "cuda" else None - ema = EMA(model, decay=CONFIG["EMA_DECAY"]) if CONFIG["EMA"] else None + # --- Training bookkeeping --- history = {"train_loss": [], "val_loss": [], "train_acc": [], "val_acc": [], "val_subj_acc": []} best_metric, best_path = -1.0, outdir / "best_model.pt" + # --- Early stopping state --- + patience = int(CONFIG.get("EARLY_STOP_PATIENCE", 10)) + no_improve = 0 + print("\n=== Training ===") for epoch in range(1, CONFIG["EPOCHS"] + 1): t0 = time.time() + # ---- Train ---- tr_loss, tr_acc = train_one_epoch( model, train_loader, optimizer, device, scaler=scaler, mixup_alpha=CONFIG["MIXUP_ALPHA"], - clip_norm=CONFIG["CLIP_NORM"], ema=ema + clip_norm=CONFIG["CLIP_NORM"] ) - if ema: ema.apply_to(model) - val_loss, val_acc = evaluate_slice_level(model, val_loader, device, tta=CONFIG["EVAL_TTA"]) - subj_metric = evaluate_subject_level(model, val_loader, device, tta=CONFIG["EVAL_TTA"]) if CONFIG["SUBJECT_EVAL"] else val_acc - if ema: ema.restore(model) + # ---- Validate (slice + subject-level) ---- + val_loss, val_acc = evaluate_slice_level(model, val_loader, device) + subj_metric = evaluate_subject_level(model, val_loader, device) if CONFIG["SUBJECT_EVAL"] else val_acc + # ---- Log / step LR ---- history["train_loss"].append(tr_loss); history["val_loss"].append(val_loss) history["train_acc"].append(tr_acc); history["val_acc"].append(val_acc) history["val_subj_acc"].append(subj_metric) scheduler.step() - line = f"Epoch {epoch:03d}/{CONFIG['EPOCHS']} | Train {tr_loss:.4f}/{tr_acc:.3f} | Val {val_loss:.4f}/{val_acc:.3f} | Subj {subj_metric:.3f} | LR={optimizer.param_groups[0]['lr']:.6g} | {time.time()-t0:.1f}s" + # ---- Progress line ---- + line = ( + f"Epoch {epoch:03d}/{CONFIG['EPOCHS']} | " + f"Train {tr_loss:.4f}/{tr_acc:.3f} | " + f"Val {val_loss:.4f}/{val_acc:.3f} | " + f"Subj {subj_metric:.3f} | " + f"LR={optimizer.param_groups[0]['lr']:.6g} | {time.time()-t0:.1f}s" + ) print(line) + # ---- Save best & Early stop ---- if subj_metric > best_metric: best_metric = subj_metric save_checkpoint(model, best_path) + no_improve = 0 # reset patience on improvement + else: + no_improve += 1 + if no_improve >= patience: + print(f"Early stopping at epoch {epoch} (no improvement for {patience} epochs).") + break + # --- Plots & history dump --- plot_history(history, outdir) with open(outdir / "history.json", "w") as f: json.dump(history, f, indent=2) - print(f"\n🏁 Done. Best subject acc: {best_metric:.3f}") + + print(f"\nDone. Best subject acc: {best_metric:.3f}") print(f"Best checkpoint: {best_path}") diff --git a/recognition/adni_convnext_47068591/utils.py b/recognition/adni_convnext_47068591/utils.py deleted file mode 100644 index d3d9ec9a0..000000000 --- a/recognition/adni_convnext_47068591/utils.py +++ /dev/null @@ -1,56 +0,0 @@ -# utils.py (or inline in train.py if you prefer) -import random, math -from collections import defaultdict -from torch.utils.data import Sampler - -class RandomSubjectBatchSampler(Sampler): - """ - Yields batches with at most one slice per subject. - Expects dataset.samples = [(path, label, subject_id), ...] - """ - def __init__(self, dataset, batch_size=16, drop_last=False, seed=42): - self.dataset = dataset - self.batch_size = int(batch_size) - self.drop_last = bool(drop_last) - self.seed = int(seed) - - buckets = defaultdict(list) - for idx, (_p, _y, sid) in enumerate(dataset.samples): - buckets[sid].append(idx) - self.buckets = {k: v[:] for k, v in buckets.items()} - - def set_epoch(self, epoch=0): - rng = random.Random(self.seed + int(epoch)) - # shuffle subject order and per-subject slice order each epoch - self.subjects = list(self.buckets.keys()) - rng.shuffle(self.subjects) - self._buckets = {sid: lst[:] for sid, lst in self.buckets.items()} - for sid in self._buckets: - rng.shuffle(self._buckets[sid]) - - def __iter__(self): - if not hasattr(self, "_buckets"): - self.set_epoch(0) - active = [sid for sid, lst in self._buckets.items() if lst] - rng = random.Random(self.seed) - rng.shuffle(active) - - while active: - pick = active[: self.batch_size] - batch = [self._buckets[sid].pop() for sid in pick] - # keep only subjects that still have slices - active = [sid for sid in active if self._buckets[sid]] - # refill with other subjects that still have slices - rest = [sid for sid, lst in self._buckets.items() if lst and sid not in active] - rng.shuffle(rest) - active = active + rest - if len(batch) == self.batch_size: - yield batch - elif not self.drop_last and batch: - yield batch - if all(len(lst) == 0 for lst in self._buckets.values()): - break - - def __len__(self): - n = sum(len(v) for v in self.buckets.values()) - return n // self.batch_size if self.drop_last else math.ceil(n / self.batch_size) From b879951f32cfca0c56c048b6a64326d238423f04 Mon Sep 17 00:00:00 2001 From: Man Hin Lai Date: Mon, 3 Nov 2025 20:48:41 +1000 Subject: [PATCH 8/8] Completed all final adjustments and README --- recognition/adni_convnext_47068591/README.md | 136 ++++++++++++------ recognition/adni_convnext_47068591/dataset.py | 2 +- .../image/README/1762166201886.png | Bin 0 -> 50331 bytes .../image/README/1762166347838.png | Bin 0 -> 60066 bytes .../image/README/1762166385881.png | Bin 0 -> 35903 bytes .../image/README/1762166411274.png | Bin 0 -> 39486 bytes .../image/README/1762166491952.png | Bin 0 -> 233653 bytes recognition/adni_convnext_47068591/predict.py | 1 - recognition/adni_convnext_47068591/train.py | 28 +++- requirements.txt | 8 +- 10 files changed, 124 insertions(+), 51 deletions(-) create mode 100644 recognition/adni_convnext_47068591/image/README/1762166201886.png create mode 100644 recognition/adni_convnext_47068591/image/README/1762166347838.png create mode 100644 recognition/adni_convnext_47068591/image/README/1762166385881.png create mode 100644 recognition/adni_convnext_47068591/image/README/1762166411274.png create mode 100644 recognition/adni_convnext_47068591/image/README/1762166491952.png diff --git a/recognition/adni_convnext_47068591/README.md b/recognition/adni_convnext_47068591/README.md index c6ba30918..139f22a97 100644 --- a/recognition/adni_convnext_47068591/README.md +++ b/recognition/adni_convnext_47068591/README.md @@ -1,83 +1,135 @@ # Alzheimer’s Disease Classification using ConvNeXt on ADNI Dataset *Author: Man Hin Lai (s47068591)* -*Course: COMP3710 Pattern Analysis (Topic-Recognition Branch)* -*Difficulty: Hard* +*Course: COMP3710 Pattern Analysis* + +## 1. Project Introduction + +This project implements a convolutional neural network to classify **Alzheimer’s Disease (AD)** vs **Normal Control (NC)** from grayscale MRI slices . The task is framed as **binary image classification** using a custom, 1-channel variant of **ConvNeXt-Tiny** with training on 2D JPEG slices and subject-level aggregation at evaluation. The pipeline includes robust data augmentation, mixed-precision training, MixUp, weight-decoupled AdamW, warmup+cosine learning-rate scheduling, and early stopping on subject-level accuracy. Inference scripts produce both **slice-level** and **subject-level** metrics and figures suitable for report inclusion. + +## 2. Overview + +**Data → Model → Metrics** + +1. **Dataset (`dataset.py`)** + * Loads grayscale JPEGs from `ADNI/AD_NC/{train,test}/{AD,NC}/`. + * Optional cap on slices per subject (`LIMIT_SLICES_PER_SUBJECT`). + * **Train transforms** : resized crop, flip, affine, perspective, color jitter, Gaussian blur, RandomErasing, normalize. + * **Eval transforms** : resize + normalize only. +2. **Model (`modules.py`)** + * **ConvNeXtTiny1C** : ConvNeXt-like blocks (DWConv-7×7 → LN (channels-last) → MLP(×4) → GELU → MLP → LayerScale → DropPath + residual). + * Stages with depths `[3,3,9,3]` and dims `[96,192,384,768]`. + * Head: GAP → LayerNorm → Dropout → Linear(1). + * Trained with **BCE-with-logits** for binary classification. +3. **Training (`train.py`)** + * **MixUp** in-batch augmentation. + * **AdamW** (decoupled weight decay), **warmup + cosine** LR schedule. + * **AMP** (mixed precision) on CUDA. + * **Early stopping** on *subject-level* accuracy. + * Saves best checkpoint to `runs/best_model.pt` and training curves (`loss_curve.png`, `acc_curve.png`, `subject_acc_curve.png`). +4. **Inference / Report Artifacts (`predict.py`)** + * Loads the test split and the trained checkpoint. + * Computes **slice-level** and **subject-level** metrics (Acc, AUC, Sensitivity, Specificity). + * Saves: confusion matrix, ROC curve, subject example grid, and a metrics JSON. --- -## 1. Project Overview +## 3. Pre-Processing & Splits -This project aims to classify **Alzheimer’s Disease (AD)** vs **Cognitively Normal (CN)** brain scans from the **ADNI dataset** using a **ConvNeXt** vision transformer-style CNN. +**Pre-processing:** ---- +* All images are **grayscale** and resized to `IMAGE_SIZE=224`. +* **Normalization** : mean=0.5, std=0.5 (single channel). +* **Train-time augmentations** (dataset-level): random resized crop, horizontal flip, small affine transforms, perspective jitter, brightness/contrast jitter, Gaussian blur, and RandomErasing. These are standard modern augmentations for CNNs to improve generalization on limited medical imaging datasets. +* **Train-time MixUp** (model-level): linear combination of two samples and labels within a batch (α=0.2), which smooths decision boundaries and reduces overfitting. -## 2. Problem Description +**Split justification:** -Alzheimer’s disease is a progressive neurodegenerative disorder identifiable in brain MRI scans. -The **goal** is to train a model that distinguishes AD from CN subjects using volumetric MRI slices. +* The **provided folder structure** separates `train/` and `test/`. We strictly train on `train/` and treat `test/` as **held-out evaluation** (used for validation during development and for final reporting). +* Subject leakage is mitigated by dataset naming (subject ID parsed from filename prefix) and optional `LIMIT_SLICES_PER_SUBJECT` to avoid overpowering the batch with many slices from the same subject. At evaluation, we compute metrics at **slice-level** and **subject-level** (by averaging slice probabilities per subject), with the **subject-level** metric used for model selection. --- -## 3. How the Algorithm Works -The model is based on **ConvNeXt-Tiny**, a convolutional architecture that adapts Transformer-like design principles into pure CNNs.The network was fine-tuned on preprocessed 2D slices from ADNI MRI volumes using transfer learning from ImageNet weights.The pipeline includes: -1. **Data Preprocessing:** Intensity normalization, skull stripping (via preprocessed ADNI dataset on Rangpur), and slice extraction. -2. **Augmentation:** Random flips, rotations, and intensity scaling to improve generalization. -3. **Training:** Binary cross-entropy loss with AdamW optimizer and cosine-annealing learning-rate scheduling. -4. **Evaluation:** Accuracy, ROC-AUC, confusion matrix, and Grad-CAM visualization for interpretability. +## 4. Results + +Training was performed on a local GPU with the default config. The best checkpoint (by subject-level accuracy) achieved approximately: + +* **Slice-level accuracy** : **0.741** +* **Subject-level accuracy (best)** : **0.802** + +Slice level accuracy, loss, and subject level accuracy curves are saved in runs/ after running train.py + +**Examples of these curves:** + +Subject level accuracy: + +![1762166201886](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/harri/UQ/COMP3710/COMP3710_A3/PatternAnalysis-2025-47068591/recognition/adni_convnext_47068591/image/README/1762166201886.png) + +Slice level accuracy: +![1762166347838](image/README/1762166347838.png) --- -## 4. Dataset and Preprocessing +## 5. Visualizations + +Predictions on the test split of the data, using the trained model are visualized as: -- **Dataset Source:** `/home/groups/comp3710/ADNI` (on Rangpur HPC) -- **Classes:** Alzheimer’s Disease (AD) and Cognitive Normal (CN) -- **Format:** Preprocessed NIfTI volumes (`.nii.gz`) -- **Splits:** 70 % training / 15 % validation / 15 % test -- **Justification:** Stratified splitting maintains class balance and ensures unseen subjects per split. -- **Tools Used:** `nibabel` for I/O, `torchvision.transforms` for augmentations. +* **Confusion Matrix (Subject-Level)** +* **ROC Curve (Slice-Level)** +* **Subject Examples Grid** (representative slice per subject with subject-level p(AD)) + +These results will be saved in runs/ after running predict.py + +**Examples of these visulizations:** + +Subject level confusion matrix: +![1762166385881](image/README/1762166385881.png) + +Slice level ROC curve: +![1762166411274](image/README/1762166411274.png) + +Examples of: Input | True label | Model prediction(with percentage) +![1762166491952](image/README/1762166491952.png) -*Preprocessing steps and rationale:* -- Converted 3D volumes into mid-axial 2D slices to balance training time and memory. -- Normalized intensities to [0, 1]. -- Removed non-brain tissue using provided preprocessed dataset. --- -## 5. Dependencies and Environment +## 6. Dependencies and Environment | Package | Version | Purpose | | ------------ | -------------- | ----------------------- | | Python | 3.11.9 | Environment | | PyTorch | 2.5.1 + cu124 | Deep learning (GPU) | | Torchvision | 0.20.1 + cu124 | Model zoo / transforms | -| Nibabel | 5.2+ | MRI I/O | | Scikit-learn | 1.4+ | Metrics / preprocessing | | Matplotlib | 3.8+ | Plotting | -| Pandas | 2.2+ | Data handling | -| TQDM | 4.66+ | Progress bars | | Pillow | 10.3+ | Image utilities | +| numpy | 1.26+ | Maths calculations | + +These Dependencies are listed in requirements.txt -> Reproducibility: All results were obtained on Windows 10 + RTX 4070 Ti (CUDA 12.4 build). -> To replicate: -> -> ```bash -> git clone https://github.com/imfatball/PatternAnalysis-2025-47068591.git -> cd PatternAnalysis-2025-47068591/recognition/adni_convnext_47068591 -> python -m venv .venv && .venv\Scripts\activate -> pip install -r ../../requirements.txt -> python train.py -> ``` --- -## 6. Example Usage +## 7. Reproducibility -### Training +All results were obtained on Windows 10 + RTX 4070 Ti (CUDA 12.4 build). +To replicate: ```bash -python train.py --epochs 50 --batch_size 16 --lr 1e-4 +python -m venv .venv && .venv\Scripts\activate +pip install -r requirements.txt +python recognition\adni_convnext_47068591\train.py --root \home\groups\comp3710\ADNI\AD_NC +python recognition\adni_convnext_47068591\predict.py --root \home\groups\comp3710\ADNI\AD_NC ----ckpt runs/best_model.pt ``` + +These following configs can also be changed in train.py: + +* `ROOT`, `EPOCHS`, `BATCH`, `LR`, `WEIGHT_DECAY` +* `IMAGE_SIZE`, `LIMIT_SLICES_PER_SUBJECT` +* `DROP_PATH_RATE`, `HEAD_DROP`, `WARMUP_EPOCHS` +* `CLIP_NORM`, `MIXUP_ALPHA` +* `EARLY_STOP_PATIENCE` diff --git a/recognition/adni_convnext_47068591/dataset.py b/recognition/adni_convnext_47068591/dataset.py index 8a0fb64ba..f45c30e40 100644 --- a/recognition/adni_convnext_47068591/dataset.py +++ b/recognition/adni_convnext_47068591/dataset.py @@ -7,7 +7,7 @@ import os import glob -from typing import List, Tuple, Optional, Dict +from typing import List, Tuple, Optional from collections import defaultdict import torch diff --git a/recognition/adni_convnext_47068591/image/README/1762166201886.png b/recognition/adni_convnext_47068591/image/README/1762166201886.png new file mode 100644 index 0000000000000000000000000000000000000000..1b02ca4692f63b7af2e818ee3f5ced5d8eef1a63 GIT binary patch literal 50331 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 Do*$q) literal 0 HcmV?d00001 diff --git a/recognition/adni_convnext_47068591/image/README/1762166385881.png b/recognition/adni_convnext_47068591/image/README/1762166385881.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb90e3b682032bca671f414ac58b8e8c8249e57 GIT binary patch literal 35903 zcmd43bySsW^fjtT3X;-|(%sVCjes;#f`}j;5+X>4(xS8|(jd~IbSNzy(y4UUUE6bx z-|yZr?tk}=?;GRn;Q=1j>IyfmlU=`Z<;o2uMOp1DSCI4(FLWgM z4mUDR1pIT=MO#7oN>LBRDtv)#Bc&#FuS4WuGN(* z5kpF{QaYZdzoyW9ZnjRKZ5a!{#FfTOeR(DGa9TuhlSb{O-BlfAJk9V>x?eaJGFrGV zr{6q_f3`O*f-j7Wp1SwczuKm3(R9L0^zRK(-U;;&BkPo*p`jZI z*(VZsc&|(>Xl~Qd)wW40%F4P&1-yixkX@t2!yDsAm8PRBdxRAvD{D1Ef*uyyQN)dl z55HjfzyBBFk%>8sSEgz!8yo#o_#V2VX3Ixu@0yDFB>Jo@b|>i))gw(*JdWEJeKgFL zupchwcXsDqk?~QB#Kn<}wZXN9Vjri1s|g8rKHL3hGCMvw$>TG?AwwGrWl$SzjUYBL zHh%l|EjE>CZdoK3?)XcY5NzM$#Uy^ap^i94jq&n_c=pZ<9Ra@fD}9+x4s|0NqotPC zUGc}iDrY!MYHpH|%(f+q+yYf#${GY?a`E&L~P08zTP%AHX0heNGR9&>_>5H+r~dXN*DFY3fC@EqzMtM ziU|AtG=@qnD?5AU>84n{X|XeZ2VK6%(*yhYwx}NrVG7mGixm!2c^6;EroGqM*@CmP z=i%}$&ktwjQ7av1^gfx@zq+N+m3Oq+c&U>Z<+YsZVTFO>EnpY?`sdI4dm6ezXd!T+ zd8Ev7f{vzjM&DETb%hNyzgvCe62EIuj9>9SKc7|HVYcZ7OLs?S9HUA+6Kyv^dV}w2 z-T-rUltNrhw)uVm@!-i{Rh{F|OPw)S&|$1k{1}5PnN|kex3%?#o z4)dZ`v8?M#H?oL|Qcxba{~G^TpntE}RF2$tW0YGpiQUM3ZRjH$84;f&t`qa!rSIf- zp3tpBM(a|>%wQ!twUhbKycCk@ajEq-p)tv3LE4lZmaJIy}IZeX9=t12|y8i{U zNsa6Erzgx#^KCZ_I(j88jjdmiK9(K*c$cy6!M9{?K0clAPhUkkTU8>zA;W7>7j&GC zpUoKV=6+w8E)|F>r=XBON&IW7)?=*9n&lNwCl#I{u|iNAJ_+7)_X7`DBbM%Gx1=A1 zM@HJuG>AQ?e$S}>_Go{^thTncn~lJ2eR!(=sYh>`nC{7EOiau;jE5CW=FVkX7w4z> zdWG5s@?2F(T0OO!4Xi@$u&@Rs*cK+Q( zfks&~ij053a{z9IP3U<*U&>NX>eGueFV&$uT})ro&d8WIZ;VEYOmv&j+w4e`6WNW3 z=5gXX;d~9gSL<)cpwyy|Og7eb+ga!o_dPi}KBm1g-@88aad*VbKhyvAix=gq$2*I0 z3oHHEi7N)(!FlpN{B2ThtEHi#K}?)fVDO2E!??<8cWK7|^882s zJzd(sAPJO+de_x~ipLXhVdQ4*-QD^6r54xFu;cmd)oV*o23KC)Z_m{$G<>i6daLqy zclmOw8K>B!mVrL*YCfhJDS;CeWx^}8VfkO|A{bvcR_bieW9=8+)VA~#SjP=vXdl-=K-FD7yq+3~zA{Q+3-e1#~)35vX zn%5GCOv3LhTOmdVBQP`+-PO886ms4@11GP|`a`SI7z&}RG7B+CD3IuGknz2wyvnW% zyVQ6z7co)kn2#S8e3*1=Ym|=jOh`}AKqY}i*NU~kq*l+GzJFuv)4WJ;kX^{L%&t}* zaR)A!B~>9e`z(bRs=V@mP86E9^89P2-lP!}Py4$b1>;ah=P~;~!gkRW3PcuP{5@5> zvfgP-U@Oyj`ddV|C-k6xs}epw_MzqI41U!(z54i5x|5#Qyl4c`(b4F+b`@WDmwW5$ z>$z31QOUyFoorpZ;+c6^)onBSu|8&@j`tVddDwnZp6yRAU@z$?^B$!JTbrRF!n$0Y zPyRj&>+lOq;(-quF$NHBwQlQ)UB0hXk~liavl_F?B7b6b8QY^rlIc3kbx>Ql=>7yUjpEOXU8xckMgRes1zpBpk_zO+YnrX^X_i0FW|PO<2q?ov^^c|PLX}J{0$E# zrC{@77I#mY7^`(GG5Scc8K?gXyiO<<+j!`rPY*V}9-izCYFtA?!Y4&9B~IWlF?^7~ zq=mFkZiYs=fOkv&ol27W4x>g|fpYu6b0WQ@xHy8Q%e5c*rC0P>B5SOO60Ziz?W2X= zr$FaUd6kG%|A2quilu`U-C1`f*Ugw)xa!GVSFc`~4>t2ZCp3A=MpD5k{mNJfg`^Yq z4xMF`ZiUB^2vxr+ zU3!b<3*?}vSsJ9Y#FC-+UnX9#T1-PK!!s;N6mXnAJ6=w|b%&O^_=9?? zcFw*xTixt0N?bhM;Rqsj!`mo*mv;?NJvFMU$Z7{((#j;V8PK^Au1j$YHp_E|9U2l4 zo6!uRK8K2;Wq=i=7qoS2;#xCaLc&cPD$$pg21P|hMius2)u{db{q^4av4ZVEUHpA^ z7#Vo7mW2;U?k~T(`^67lrNGjZ6rRw{yCtm3;^Sm-9Id66 z?d6|?^kf#vY^5-@aA`Fc+hX%gzWC@NMP8$gt$%vh<{E&6VpWuD)+o-y{VwiZrYA)J z7ZVdx1M7!AiIy^;AWRfnAM*JSlwxZ-w!KFY{leA=NK{MK6oQ5V`u*Mml5 z7MO0HL@d?E@!IrQ^}Ho@S^ts$p$u!Gis?b?*lK%PM0Kc_$L~okgWxWPe(a|qN+DDZ z({;=vSlN|!bvgJBA7#@-y)-j4Go@L+OWMkfTi;|iEY~zp%A^#AJd)hS^ISm39S8Z! zd`->|d_F6Pn|syrR$M{9sq8YlcoeI=={a$g6~FY!=9n?`Xnggfzh@5=DM-p2hsU2ha?*dk595cN@DDG^Dj#*UAU zPI^2gM*Kw4x>ebSM)ncaj8iBw5-o+Or)G3+HmUd7(Kf774j1aM5}8<_&Xq5xxoo`Y zK09IY+`$c)Cw8H=0F^ZtO>eixQlj%(cUfs)z8G%gt5)alS&RCe8u_5%{J?|#TQkm1d z{OgsG;&fFK7Y~ok{%kaczR`!ZiQIc53!&j*;e@Png#0r38pY~G#?@QiYeUR?q4bQT z*wo^YM6JaX0)}w|)m3dDeG4M0k0fL_)WOa-t@G4!j=gGm-t+>~Qo7da0pJ_k zsk*v4!%7Esp)fo$vha$Zd#i(tSbeLBx*sT=lu;u+-@R7PQY0p*$OtVXL+OYEzKY`AER*u02-ILr*q7*=Nb{kDA5Hvjp5mCSV^Ly#U1_ zZalZs`^vA=6v=BW%gwk>Ip#cg%XyOI@!Xd3s_&kNDSB9K&$T-9X>i;{bTU3kcSxHx z{f@R~<-%`DML@lwQoR{Ne-D8!?o=YN zKAZF1Kim2A2^p2#|9XCUh-f^ZOURyoe#H0*7Y_i|)4hNa2l{rpxjN75%1IniD=)(C z95NG}9{h^Kuoo%Fx}#*oNr^;@b5}Nrt|6i^cI{+;eZZe5^8sT&pd7Ae&B!P2Ya+=~ z=kZN#Gu`d&3LIpHweE#PenCO3Zk-ZT>i)x6ZcB06qbwBJ_6j`6dcS>;An2a|?^xZVG+lM860~(F;-Cw8)T# z0`DlW9Q=fCwZZ3j2l7z>hEQM>-t2IpQGW#yi;iMV&_}YSPomj`Vzxq(;Q^@>{_0l@ z0|XwAi~1bl-U`GKKe`Y2ekIIu^M^WF=Zmk&FLyd$4mBq;_#Mrnu|GpWMP=Z;-K~#n z`MX8Xi%cg5a8`x=n09R2B?&J5*QD1=f%I?9q2_sLoao) z_B9YKOq6a%n?zD&xicswRdzh7sYW+~N+J#ouePSfePa}l01cZ$GW9ERR_df$kXC@Z z*~>3}?4K#m+4tSIRo2YC9^bN42qZx-R1!H9cbb!ZtteV8u?o}xLyTF!ZKX{-n}If* z-Cy^8-$FXn(ea5{;CjV+kD~>n1xski{rtqOyqbqqeB9S?{E$BYRjw!3oGG!cTShzg z;o$oLpZg{28yghM^8uq&8=xzra1__?8h?vbN_uh-Rtpz;}m$w2^!+CKT znh0VxeHs*e9JOTCmP0pFnL%k-I z^^#KO#jaVxe8Fx1eKLU>2D1hqp1e4tC3@cN@@{i0nkw^V)K!;cV}@&^y4EA|L*+W@ zk{N=x?tLMprhY(E&fw*T&j1DBy@@FW^+v#sC`+bT(cFi0zgP@QTbD({CxU{NhQT(z z_1fc6y{CtpNf?%_dIgFD^o*mWD~U7af{CF7 z19yX-BFkemM}@fgjJTuF7_#i?YzX!3cDiUPF_u@KVOe9ZVFe8bkv%g}U)zQyIcX&} zYw?(synmlY05H}0`+;Ebc#5C$$o&4f&?sD640t{O!#=y}}e@HNnT@d~t(v zwiKVqi_{SHD27@>595|?UU~PR8rdBeeLyQmv<37_2% zv+8(x$8r{m$58y&{OJ{j5~Ti|W?2aHauI8_43!foQTZ(q3&ua8Q7*Awl$YGoRKv~+ zzj_T-af09HXbXN*`F$94I;v@+LP}=F`S#8`reDJu))7S0qA_NMy8limV|Nm#!VMWm z;?wDSX1??|K1gv-AK=N-Qx}TT%}89H1#)ZwHu*eZi6EEo@w1f4>-HS({z{uGRPuT9 z>Y$s1B+Hx>`k5dPNn3?-d3H|y5}F6EC!HeSg@h>7y8n6)t;ZCVe;IWAY|kprRwS~* z^9RD7wiv=`-p1BjP=u!l}bZB31sq~F%^=Lc>0%l>9M|^5w+r&_k zr?FkaeCJz*>T4ca_1pse@vEhg!3y8audpN_M+BtA=;_y@b97Ln#leOskJJn z`7ON=9BTOmKo3_BTuG}fGCp2>`3X(sxcRj+p*ESzi&M@EJD@se{7%^u)tHXVqLLjzO&i3zk`$akUio4+P1KTkY}d}zem z@aqvW?cz!Ukv+N`-`?W$3 zTH6}e&V@NVO9r={9Oz`Nj?KD`q%u~r+l3+rZ!&Ak67pO6#3K1-lvGiP6iJ1u9hJQN z@Zp1#qDoaxjmvVh>yoP9y@U|?$4IEE>%)aINp>xvct7%VyAxQ6o5&A@W$}izTpw~{ zTFU;Cswdlv?_bKg@*LM&f3)o=t}Ti@n^3Zmc~;TV;K+5)sPTA-oDHMqAxYm&4r7wf zzW|InI~7!a`SJxa8paLM1Ft>m{@?RPrza;B4+l}ttv9ZOJw!usXLP0N|7<^1!#_-= zN9i7uB^QBB!gYmmfmS9s*ZHFYAWQBd$Um$N*aG>Lm4bR~2fyaqV;G+tqKq?O`Es$z z2%=}3W17nM*LpaX_auKA9Y52?+Y{jOjO}Lf-dk~E?{B>SBSY$%S4O}#{XWtR*=AtE zGe1=zRr^Z3y}Zo10+gS-n;k>|r)J@bznq$(kF~)Af3TS5g95rqYjjgb9r0rkj;1{3hQKS)Svr{G@+Y^M?1cS zNoHeo|1QMMcYigd?0w>^^+9(;d{V9xvb+^?K{X@IM~b?pN6A92X9?t&7Gr-%6%b%p z+yvJ?-%J%?%R6{$lqtid6DKQMOxdQt(wq5MIzuil&-rcwP+ia@-15ITTS>@cD-%O^ zUun){9s6XXF~80Z>@;23`<_%0OQt}-6G($OW!i5bp67H$1~n?+EXsvGC#kbzG~feO z$x01aJV-mOEkFyT#VWit>V{rpLBQabp;?)fmX;R&rTFOv@9r|M2>lag0lfZ4FFDN` z;PMk$bh{=d$Ol7D4dZBq5e5bT~v~8K7 zPK4StlxN$Y_4Vu5UYE+4CDhxjPD4UI4k zAF%b1168_=47rJxz061075N&ifyyeroEFYq5_GRptpCFmzW@J3$5hkedvVMMKn6hP zhJu0ustzL`AK%^gss^7Pu){x+lFwMA67QDV_9IC8>Tv}l`)m00QQ1A_iVE7H!1YefnGv>O7I;R1RNsNy$)#d40Kp%Abe%GF302Lz#K5O0AM zWaWl<5n%)|3-ftHVuDt1vE$V|&|uS*j?`KAfqi&1l-pls-Ca53S8LuJyx5hnyR{|B zE!$=HBQJr?z!~CoEha29)LwGu+AM^aZiZw4Der@KYHx^Uw-5xI$L2JIV3yp`0S_Pj8Kl9xBDJ84S|0XoFBQKU3JqfOBq2m>Fh<8Lp z@(YqW-w19FeZ0$QT%`%ZM}iz|rfw%r5FB;AyGrr56tGSCWn^Uq=;VmIaq;kS-2c&- zWBsXTlesO2bh1`mYak+}>6xrOsc8);H*ej}|Fm;sAHn+Dhn=}FhmG9XtomSepXPQx zh|&3Y#ff=d$z-(7Y0qE8P^>P62&3T&SLs#UqEmCOqIzgH8gc z5fz(aWnp2c(ck~iZj!SRq37#-+<`V@vc?Uwx#8KfXM-O!Zhe9f^7HdU)V?QACaau4 zvy5wkOBHB}y;mGbC3XVGujAFNcHk*sRb#HsK?@5>ePe!}7Zw5fyW6-1^eod@cJ6L_l>-P2QLl?b$v?nefF4vH_)ka3|OjVt*iBW5c~%=b-RG zmwFe2jxI~5$s(Y{|MEh}dBJwN?s%>>qPeL_hXb)mpY&-80IynEEu`>25_aEMnV%no z4TTe$=k@1ASOh$Qn@6x$fI={dInIFC2lqfWz$;iTQeoGXFaky$TG&W(%gzZ#+=Jj7 z=VL&$h(|Xx=j4gyn}eWo`U(en?0= za2yb8bL;E*$`BD_!T0ddU#Ne`H>&&%OgM*W-6)6>^`_L2RhIDn{G0?mJ3AY==NX7_ zU~%BWv4uD|ICvsp59RA(C99w}g$4$qG8Q%^5@}so?=^7g^VUK##B^n_|9M1SlKu*kK`uAwdZn5f@{Dd&YJ;2?on833eL^eJEYJsVarIAT zo8GIv5r%|ej0lGZrIMrB3OJzlCeYB)Dburgl}198wSjELp#JvGgKs2%PF_A6DMDQs zg&T%6<^Fr}_*1VqIU@RJfA%%_KDDt~1{n7DsQZ9g4Gko))JY6#DRAzsd)^v+=UM>) z+0}Iq*k+yo4!wG+@IK^l-8>y3*gg0Kuw&#tAQ>t$nfUR;tvUDxiyEXc#KA{cPc}9p z@ytPJ)lI}BCMNdxzeK3C|HYT6|3zJTx*3!Po$<(|q!EPH`pH1R$?uO%~H-L8)v2!#5W`W$0zGO%J`1K9jh`m>tS~#4m=~H2T zR0T1fOSpt<&(_v9ekU`0%1%nZ+jb?jXOBj9rBi~Ejw(Nh^uxDS6XzeAVfyCFN$cs; zni#y%tGhKP{JLSpauW4~ZkxAF_wh6+_WH5a9io4~rl{W$vS!J0DUS$Y6n~;PcMp7%vHi)&BNJ?azkA)4us5xgVA5(A9nq&_@vWqx>CgL;dE9Gi`4=&YU{%V(+$28+m;H&CiP@gRB7CnZFBU>0*?K8 zDwQ4s@07B;#`6DXC5D_hUH=p)$F_Bm&AP!_k4+8nW2>14U)ztsX^2Dc!rnu!J#7gi z5EZs#KEOrKrb3Z3Hq6F<;QD)-<2dC`jn~KWuj?2=qmSquHzKb`pEl^HKJq4Rd>{RL zn&o`Sf=1MJ>;7p4d$C#V`vG}WpS{i_j5r;-;pPyWiO&wDmQOR38*}{vgZ(Ti`;w)%K-^g(lRb39_0bk+QsV1%VgGoIEj&YvHR{Dw$xu85~7Lw|}Mgb`Zj%eAvarCPP{aXo(fvRAAfwMn|jYdx|Uxu+kvW@9(m89607eeRBV(QHht zPf6HZ285aUo!1*3QpGZR?|a%zPfAQpO~s@NCy97Cbk@0UTl7mGbN6SMXA|a+km8Vl z@5eM-xs`x1+ENYGq_Obab$!WSV79oXabmEwRnD2u%%9(TBUvli^RoGB+MgMwi_M5PSFb7G#zd1= z1IvdClnfxi6WpILfx@iqpGoYtnB(K?tGha)PDCRUj1_takO0tWgh94^>)wbeu)QBZ z_(Q=Y0_-Fkg4YePb_ymu1+X*W$CK2I<~?$+|HgWFnSLZ~M8qmEI5u5u;rYqrj=w2K zEbvhk3nVh@_r7eo77}(RDP!OFPr_(Xe9iSf;=AfX$<_W+$*)&bC#(ESoSDWA8n}GJa@zpq zM!>Gn6++Q8OURZD<#`)^t=)Ayjk13|JI;H7dU5+63m#5tTz(JxHHIuIl-2B}+jj}9 z?|6kttEUOwAl-W~P}4|?)y(5U%G*XUE$VSla6t14pI)Vtd!aRgNHH2Us`+~J!`3Fb z@C7y3<%^!w2~U11N6nqO2FYZsPo_GBhWu6t9VF)l6f~w6g-Fffdpih#2y9^49QfY^ zgCrwSK$`Yi`bHXw1Z4(M#G#u7@%s>jv%8B-e(0k8y_@pJGo)U=BC$2)V-)pscfR4C zA1SYNj+ra?Ul%#CTnU?LzBD4<-)amB%o5)-9sMX2EOE@dcjP!rd{1FYg4|5gwMUP3 z$sbRniL)RaBLuH^PYVw|R?hfFWX)62_ma^p!uJF;9C_H!L_=+6a4@Pl32fBU6T=`3 z_cwl^5#--1S{bjN4>&)?y9F?=(emm2i1&_^!mhZR$ITjzS-P)wFho3mezBIx*7~Td z+nH(gX;sqpl&fTY@B@zBuF5I+qMMg%97rMLe0H|m3vg8HArFDq z>HU>g)LWcbv}+qpxj%1pxOVAx{Ae_oERV$$I;Hw0IYBtl$UrX zTo->`=X_#ir&&2XEmm7wKWMp}b}hloo?1Zl4(L9zZ{P?#(4Qpt%I>C zQy_w&ue*S%#=^>h&%E8UZL(tgnWffE>3)@CeQr;uZjPnU`_7fO^<|F&1RUgQYZEp? z?j_aTaD8aucax2w!o<{3oTH`hd*_F@k1q5ak#V{c{C&qIP_tj{Z%tzw!@L)&&wwBeqAC|r!-{s-YZXhX2-Sl4<;p*m_xdz%El9?XKdk}rq8`lh;pN;TmoiDi2Y#-xIv%&!ObCYDjPL z&FQy=;<|Zk$Ap8&$njxE@=dm92oCn*X7vUupSm zTW9x3YvYT%?=6z^ac*!oI+;?Fk~uliw>=kT6ht^Rg9nCRIPcw_6^17I;e);m{wbMh7Uz6LtWB#_iKHLp_ODnH#(MJ%HiLPV| zyRDzsKkWYT=4(>%lwpm9+nDpB;8}fx*7-PVBIjMXc|rf_$?X}Rs4yfHO!doc;?8&R zo&-p<0Euhd*4+_COnZ=&l;Rld5SA1zpSD#u$N9_Yv^{!NHhK zdXCx~_mjQVuU{|yv06r7-Qo_}IXgS!u?ns3cpl5b@J^_@?aW0fqBKP%O_;;WvWPvr z#)XOHC^=r~O4A#a-{aUd$)|HaTG==QO(R@-?65gjxhM&<(adW+w~9jT1HDf@3cb0X#HFak6kOjX<1>vJ1sd=G)=Ud5IA zWZlj18q8B*;1Y}Feeg|jf&E5q7s$_4!Lj;SV1p5|3tx=4;{@jxc`ZD?<>pm;O`h`8qrJpYWdrXf=YvSk|q%m|7gR1~nw68Yo?) zcP-Zh#-_%JfLFC;Gl zb@e;ASBo4Q-*|3ygw^7tO+Gzx-TZnh9gA#ZX~}&}=i4WBu-qV7_`BIu&K6J!w}2Lt zKw)X!osbkZ7%ah836-LDn4QZ`_UZm%8~eqvC6%@e(W@-UDt6|+2rd5y4?BMob^1m@ zUp(;Ipw^xJ0sX}!Kg%Il^tK=$9&g_u*!lAA2>UHVn-Z^*ukcs$6>Gt>*RhZE-&z#y zsT72crW5jBux9t0PcG0E%9>o$aAe@~n5eLClRXcP>Pu5x`n1f=uc?yKw=-Wi<#$+Q zQfR~{hZ!g2vgAfCK#Ubyosh;xFBkB{3LjzkU*lv~ernpR@|t2T-U^txAK#B3lrvt? zw*g)g6BYHlI9`4u_#;&6mIgUsi`ZjcTc)wBbP_)vB-*akMM6pHZN8ILcGWxYl{T*0 z`MO#SWwR#tReO<3c!(^G&7hvxIPKZ*_2cmn4OMT2=xvPD3Hd7v);KmE(xZVQ6fgo^ zfpNXJu5%=%Xo(qv^P4DQoQ;{8vN0n#8J)@8^W%+|%-T9)W-r+mKch-(`X8@#{^-mV zj=jmS&k5|ZC%aDW%gHy697>J1Bhw7QPA?-PgV0zK2r=hdK?+#eKS9A%O=ptA2#vm6 zv9Q|G64F{;SS)tSnXg;M!5yG0vUlohKNEg`w~e@FVEZD>l-ld@({JaY-2V8x1#D5- zvn{l;)8e^;!d5JFj+9SAqlJ!Ulf|Q(&8%>uDa1uxJ7`qP?FK6h_b)HUioN&AJ6du% zgS&%(*s|E`;IyhSZ?3eGrV#Ni_lgUKp@y!Pw9OE_%3FdyrU5rmq>U2Ao_LI}lx~La?yNVu zJ=3KAJ?zNQcP~4cQDt?&%IW)zvWO=0Uay0~^eCyH-|KiB2{FN)H6mZzZ!#qmybB)N z=a&QmWWFos9Y#-^ISbH5_$RjT{N<4!x18Qj%vR`04jH+VGW~jOZbEX(iP~FYZYMao zSD2eXihKM?_KP0&zzDOuBFC@1MLdpo{AZ%cjq<%0>x6urZF;o}osX3W+CqYZhjR_q zH`RvOs3PQI!AjzK4u~b$`>b z^W(38R;KMV1tThL-d?`rqMu;J3WA}4?cGn~o29;6U(rBBhX0ga(aGTkfwcVtFipTU zw7juWfNtSFSl6Kn8v~w!hKW4Fq(HwErcyLgtWMSk!UCksp&HNEkzT@lg%1$T;Ojsn zZXXJ9^h`YJ6iBrQ(}hIwRo?lOP4;C9U5dfewaL00N%<=j6ee!Jr@1xUI!8u7-#1b? zB>vs)dceH?woo+qk+2|V_Rj0KJcMrSed9kWGmodR)n7*l+Y~P(i<^CODYxw57X~=| zbKXL{srYq-KW3aHtHtl^L&ty;vfX!giF=c0vipRD?|k?gIw*8cZR8pD!Pf2`GW4*I zMlvlgkWflSvMp0ZG}81Qk8|kP**8lV&HDuFgvHY1P>72k`_GJgG{QlFGB!Cig-13~ z{;1LFI1j2g!zPlaGA-sMS8*wjpPS>KRmflF7{kd1o>vUyhhNK455A}T02Xkb!qNt; zyP}?4&y8JOT@e~3YIXpS#f`f?B1ba19rr>~IOGPc)B41(bqBK9*f-RVU))Zm#a0W_SuhgOy(1YM3qFzhhd99%a|Kue5 zfYeJa&M_pTvlrf$L^wfKkpV9YqT$s;Nrz0uowQnX!lR@06B$0%=nkOB|-%aKU_1ZbUy$u6;DZ z@mJnJEXMu&_ko)RH3C}unTp5cUAg~psV%mgz&U^|R&SL!f!%0$V&W;Z34giRVzb6H zPBZa@(1_w<&aQu!3+p1-*EI7_0iTl<@t%-CY=!+W_)d=R^+1uS8vz zuuxz8{j@iH5Ag{J_b*O2-{73?d7p#Q6*>ZiCyx!WhalJ-^(#;?5H`LvTUJ@+5M$RYqnV7`SuhrSNf1jwb?aGCG7Pk_R`#R#-I zh(R5(^bvnAAQL1G*zNV1Mt`tB@0G&PS=3j$9qxMxx8R_WCSnD>yrmEg9z;|W6rfjE zAR;{Lf&O3UjDtK?^hZ0u2O=jbBn0g_oqsGGS^Kw(*UUXVkJ7}R!i>QVsN{d{#>l!; zl7y5LP>$Kj(GhSHpTXh`AF0VpL4n9h%gY|KO(=gi3FLSf1Uv;tCEV@8`uZbh&Ar0P z=^FUk;6DGW96=?v1gad=1W^4OJhv^v@ac!J0_CH~goK1()zv}S4z&*i5dc^tN=iz| zjkfqmaxlVqc7CprDxCA*vTZ@{2jCG5VO7d+whs>cwtfcuxjWPdl%|djMTATcitr0? zap-{5^JjCC0WU$erJ=~%i{K)H2^M<@k-wKVTx@m;vJ)6r@2(R2?tT}9TY^-e_g9Mp zO%qBeXt%BqzHl~lKmmk-uWP7S$)MwaI&*TkS?v7p^_v5^zto$)xwa+@+W^GKudz>P zuhY`fK>Y$COap{{u%UqL51PRv& zVMIzfp6RO*1N?d-h?`(th&No>^R7=(r8`cb=j1GgffL)#BxiT`gM$MOs8+xa>JZVZ z{4b#(_1g`_cuGZ~>`>O%qObCi35;B7_T?5al)-gc;bh24i_xufmK9sL!KN8Nt&4ZuWD?i}|GS zvj559de}kCPJk<*uYIqQ)N?faR2l!jtP_DOy>84F$8J>d?Aev_`9G0DuUBj5`t>;q z8V=Q;&1WrrLQ@By3rZcVW{Qx@13^K-ItwzPr9cUgW)K`9A^{}8(gNFB0h1jNM3XSv z0+$1EwH5wwfyN(X=|}m z6C#oyH)NX6xz`~303Z|0w((skxih$!twJ2${=C==d)FC%;W-R3uhZKMBPP? z_?%Av;oS7}^b{UvfPJ~SOsZ8?RaRZ`tH3*f2uE=@IhImjSCZsuSqfCGX8 zFZM^yT)KHyJVL-nyi{5xnn4}4y7kYfxxq%Ctwq|cyusCmqdClkjQH71tukRM_?w>! zU4p;~5b6R0UKIR`Kc5*Wc6}#|cmD4*RS=@XykX({NKsf8SP~G!}9Bhx|M z?2C&FD5<99wy%^45Q^-G$7vAETEij#N9(J5FG+IqrYmTKk)*u;?1txJz!o45DDUQCXvDAwPiv2?*TjU1an7)RcGui`ABeSpg+(0TQ9Qb zw~w~xA#+CoC*9qxLWtN&(&AOb@6t`Q{F&+hrHj%8krGKQ(EtVnwG_VNqxqN^N|E;u z5K43GO_U}O6$NbjeuCD0Z&e>sGLu$T3pf~HL=JJPAag4`ud8*n^RH!*4RApJ9LY_Q%0@n*F9E3O*1!Shz%H+t%$e?Ci3%L8I?8v~o zY;9MdQ0g?%2n!o>;1+7BjTG zzpx9rwv2adt7Ot7k|H@s5h7ELNY+t{Xs_Ij*!qtwycqS z*RZVI5O6>1tXe6phQb3Pm~{Vn1VkdZhWsyl_!DFymw=7x1ENA3=&hpA#4KnsYmfn=MekrCpr z#qj9>thN7#ZL0zwoj>$BlFqwyJfc>A>=sSwEcj|3i z@!s!{W&%-H2A2%Psm_ED9=z&-R!TRpCy9VX4`yi)W}wsEW*i9!@D~An>Pj?NqOLvt zuTq`LqE}XO<#<0_Jn5Ghr(H4>${N}Hn%9fu?9Gik&WsTx5^e0dpv7DkyONuW(x`rM zVc`c=Gf^Qw_?;;34&Eb3rvIU3{udxB zD8&L6k_Rt}#TO5-QzURvFtReqWPW~i29h#2<;|PrP}d>j zpdcf67*~1k+kssDuTO>z7x*OI;t?2=D2I9tUazR|@U`K>Hz~_MpMaVL=6hlooca&l zn!{`XIE1#qPl9M@s+_KsJ^`PqU0Pr>6r^pKNi2^Z!mjAW01dFPu=cjL zGF7Zu8ubp}c4lm9w{Ch-!CXR6T$bS%>2*uVc_HlI!x-r2Otbl<6otUM>JCS zK7xT6vRS^trzJQZe@_k=-pavtMM|BU3S1M6JwxAo1lfU7#C@pH=n(uKc2o$=0QGRP z%sK+#F&OFTNhvAC0EMYS38T^~0gKt;=1lt)t-q%RHhl5h>%s5e)ncK`s`Wi}4@A9z zibG`#7X?;G%VF?lSt06d6nt)-$EGPXLOM-fuVzc8s*jXEysPw}<7FmXFrfWdcot3> z9^4bj7A;X;5H0T9XK+cz1|go{@;~}WHt;|}PpY0S9<>TN15)+a#6+!Z7(NfN!(`Q0 zvs}i1j6I`8CL;BwGvEaTrV@tBMfmv2q3GGA(Ox$NdK=6je@i)}6~rO}kq;5E2vr>b z#-FF!P*4!D=|8)NtoZlHcz7IwCmzBK(Z+ypQN(*McRN5cRXs#8Oe^~j96=R#75O|T zQ`xz8)c3edSlkt?noK!t6zH2%wSq8k27M+tp~k*{zfqh_CFt;WJCzVo|C(b10IQXN z+Y^D1{{ifO5b`ScF|)vcoSff<@SkBptY&0n00=-sLtBOtEAs`e9JFBS;u)V^wVt;^ zo0HXn)jnkin=u)@8D@|Upfmxpto7WU>&ujZR$IHm-k{D8gsF~)@HmqtKVZQAqE_$@ zTEel0JhHmBmRDv`T~&1k&1do{_|fwJ>&86+KhepBBe;^i2vIRHZer`dcCPnIaZ8XQ z{vSXY%JL;^%7sx%xXFmxCVPkJ#U_2ZzUj^gQzuORjB8_zf&qWacp$_Z^ zv>U*sIzsC6Y%K@ZALIwH&OYb)_qNYuDj{*4zy(6Hj#w_}Cn0Qs>XLEQ`P3=>-&Pj% z(BVui6>GfH`!9mQ4+-Q^eA!tj!iEe5)f<|&x0}Y<@;CV9n49sy0gFK00v@)mz###l zGWPjVlJcAWRo6BTJx%5Rnzu1M8rd^29XjaiC+Fwq7Z(@D#KdG&S zHNq&TWe0SMKJcON*FHjbrp1CNEI_ZAfMXc(s2kXocrwV~KsNcoNC~ieZ@|Bdu+sf! z-~=+~4Onvk(%Gc@F8%uTYkoeEf&jwi?%Y z8EI*FM$b#A)<8Q!xdQtHi09_$U>ZOeD!iUPHLLgj42iNmhMF2^QiQLOR+$b_67JA} zU%C))7E%(2Swo#g>-9J$bnx!TiZ8*0bCM$B2|r*LM*jkdHx3DM!mvfDWED&pTC|2k zEz`&`3-XD)4{)4aDIPYU_Q~w?+ptartx%Go&_k;aA%}HUOP-#BqRgrj9{?Z%G3&vn zfXCJadYdCuuMP>Xo!ecx<$=x6g!4T3miymZM&Zd*&^|ysf%{9^x>Xt->M^}Mf^mOE zfpvouSXK#tKSUxlh@j_8WY*010>=*!y8)275IR_7eCWl%he%@sPlQPnA7T9y9yKIq zY(JFy>YvMu#hJp!#zqVrg9m|Q^W)%0!FE~b^${%OFYFV*>EKp>r;$F5uy8Sb^gIQR zv12+-{-=JkbcFdGN(rEa!-Y-)92^`hWN0o|mX|*~h%Yy zsl9^>rk)ZI?7@-@8jK4Mv@!*MGAdlJG*k-k0RvH5Xx4ZE1sF1I2luP3Y#RW~rV@}v zLACY;(gxvC1>6mJ!A;l%nhkiA02EbS@Hz249Qc;PAAxv^n|;(jEF0b#0Aw70fB#M? z9yqQDwgC&P<^J}R$4qO`H$ZfM${jpOYHNQ#;lq1cD*6VY~XFO+z$At3b#B3xVLhLPH_x{vOCd zP-d>eCXmQ-xc)8b_9I18hzDCOqkuX{#A*5#9&OOl3hR6hqpYxu;42{mpTkW=0O1vH zWln$ zT)1H+>q)=TNT7gCDdD`;(%;M&P3d>Cz|GTmKGRz$;+}xSpqV~WXzV?=k{Q>IJyYe! zzHm{$+?(e8?r?__S2J5Z5IeQj=39Zo4)?*>Gx2WX?{_hHQIM_|-w@5fFWtJhM0NPT zs(bISp8LOlm_kF*(%w@8l|s=@TiQ$7QdU%`MAFjMltf#TiuTl=T1E+_DJt!>-H*?C zUf=8b=Xc!qaUJ&`_i>+pokot&c)g#m=ku|ivNy)&8W%5e_<~>OZ20)`(77=43ql5$ zhRW`=ijNzX9gmj@Ax*7+u5A99!+loo!xrb=Nn&2Ml+>Ho*tMA!%O?b9e;J?o;jm6R zKH1%@`{%IA;Kq?(gM6FG+iS#jocp*bEmQS);uUs|Enbs!+n-;1?|fMAm%6MFb4<;SQ%k=% z_)bKL!3gDrarsF*2QMh3c{Mp(ePI?MT-Hg^1v&C@wI^+RXwrM{xaV0G(Y5X(vUW2u zXJ`SCg?Y0aEqGM={c!Pafj3$u^%C8u0O>g%}NTV2)^emu&HRZ>Qx~c1Wq}&`sZ=! zi^j_&X5cDrE_9A2v>utBRxr>q|&KYl53 zSnr6hZavZL`gf>4*s+AC-k`2y^vtLz@6GG33zv?5>yfEyyQ^d>MWx|%oRbrYCvnwh zxlh)3{w_}MSLZY@ads@wyRb0!F5qX?$&%YwY2R0!;iTgK-n}j3bUZJBeCUO3pVRiA zH*J!S*l+*YQ4rtiJT7d5DMZMR`VQ2A|jeqYV7kxr&X4LU7~yRNSN zpS?sON~pL&w<|>O{MKbFqSUU*{EWya`E$WvE+}q4qN#t;Wj#q#OaI*H4f0$}0Vy

If9A<57eH)?$N)wM{^)8^(MbjACOHx=y8|Mhwj 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�ci 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

l2)OwY%wG{y|)Ff4}uU06wZs`!$d zR)u?F3ytb6@U(011ioGL@_DDDC(-nxbVLya)|@fcCGI4s@~@Sbn|!|7ss6k3-`y)& z5%ClylGiRMox7Nqw3lmqHdTju`N?BK)@FD7ZroZCGGLc_pe+9L`Cv<)4Csay`1WT1 zxer$3qjY|e*W*o{X+V-6MjN#~|8u)I_f9<+k9!5%=~w$ik!esncl7(7WdIFBQg$+7 zb{B%n^YyWXC$5wvHYDy71DJm1^&@l)>2E3FuYrAl)?Z*}{`h?TB~RW0-%lB?k+bFC zTcma^L3Cql>_}D(&gJ$md0dR4&sMof3At|`Q0mH0eE1LkZ9U5!p&r92fG(VG{fD+i zXk9wby}3Nv94P{QOKhVS)5k`3wq>Kzc?hh3PDic#SbB{dXqSI4_aJmIZ>xs`BRV>x zA^=fK$9bQ~IQl6{)8#L4Ad45iw6-mX?uE+1KymL>bUPUy0(X~~J8PZw24y9nZ~%Bp z!Z*jTqnbbE6YIAnbi!`XVUGJxU0GWv->ZHObU z*#syQ=49)@1x_GbFXlhTeAd=d3UJayQj8_B{gZ^Sk=%&wu-%hv>yJ4>Rkc_y{lr{b7Z{h|(w zZm+?N`s|%=$vA={Nk$sWE`bhKz;_qHzvf5{I^hupc0cwFgltduMz|NrXw@vP!V9fV zTJ))o*LfiE=8;fk9sd*kqmMoRK!P`(9+06cl&LnNribgCuBia@P{RT;l z8Np-`D}phG;aC|a#WmjcWY^N~ehf@qTuu8Ko%l zV2nGnnI{(MB_~V;bq{*9AN-`G{-+*vM>H>(V|C`s?*u717|voI)DHZ#oZEq?P!8hz z!Se7Z?kwW-1IR`cIB3me^!hmZF0+;Sim0W@{j_URu~oAv)b7+!tceAu7>=jipsc*_ z%xavUncOJJBK@sQl_vM*{kg-mFA+yR^0%7>jl%a9B#GRkAuMz0mAXdd| ztY*QFzRHj60j;GmW8NKYufiK9OOHNZ9KMXW0OZUqyy*rHwa)lw`lw?BHA%FE@RjQ? z4kLVU1ZZPI-#x-Z(CEk5^$nMFh?<`=?gicJk`#dtnW&<`@%A9iJ z)|Do=$_znCB;qd|adm|lF!Lz@>d@c598qIt7=-{Il*XmWPsm#PYJxuL8y0hk`w4e< zi%J%t+_4(Ky8lzCuf5D0$G^XyXi-uZVhRyq*X3a)VZh1$2@wAiaYDGoo$#AKkDL_{ zMgyFLm6#tVA4dc@`&q*=Dj+pjY}g*fdcs6!!8UEJmD+xQaIo5rFvVyq${<6Yh1664 zS@1|-*eRr28YHMh$PB2Isfth5r+v|BkzO$9Vdn&Z+3uIu$sS`++T{Ez@76_6u-k>cq2vB z^fa(A46cm(99b*C=(@){$X8`A$+iF!K3<)p6KJgjaCz+6JK^B^T z>*p*ZXWijkEh`+%&fkC3$N7ECx?AN)y;rH-eOV+m@-St;h7fi(>!8VJNOc?9_Ul{L zMT{-ayGX9?LL(-!`Eq z8%_50AXztn)n2r6CDb_m)FBy9_5c|Zcbx}Hn2}^l6Q;uR^zl(*z%?$?>XCG>qqG0iBwDm<3+g3) zm{2JC0J*^@{Zu~K&ccpI!l3&z1;nuT zK7|i_bG~TYJ(4p0{+|kx+qWZ`*&KU;#R1d3ahqtqK#%CN!(If=dc$yHkr-Hh5qb;I z)qgJi^Us5&08bNF_@;aP+5^APf$Ia@AXOIi(=>Wg1U(@yfY6HBw@mSa*Gt+bhUz$| zG=J#=srydPuuW3y3y9{vh%fxoGk01OcbCMQ3V!|fUq)3g zUu6TQQuut1NtDJiFsct$Z-jo@>F0Zp*9mYWILrh~NR7!s8@0yMedrscO)KKVtfVWB z>1zk@bABa-n*bM&yX^O5z)ZLIj<47V@khp#g!kbo!?o)NrM>Jiz)0|&Y$GVJplJtcfB!Vn2a_) z1yC@+Y73z2PG@gQ4Fe~}Y(px~!V@#qR=Gw@G}-*x%{#`0wyuq0eDyzCkLlZovhNQg zB9Hi%)qOFxZ~^s$x{8PKC4u1^f+_9i7xE$FuioDL7}i^op|G0*xntzxOZEcPllndEtr*dyD}xk>eY~?SLe; zF!Z2kQTzrzvvf0YweRA4$6qfMu52VUT=1fnue^VU)3Fk~&aJcdf(et5d31$by3WDi%ARmIk;dz zXnF9RW!%dzilh_Q-e>P6zon>Nd7*EORb6dFC8@7;lHX2{6j&aNdymgYP11N_=C@@X z1wY6jpk%I4o1psgU!wT96+xhRtChc1l+5!8<5_4-6GxlR~xYGpr0bs zWT!~V2u7Kz8%~p!JOD6Q&q}-~)l~h-omR`gN7D6BijGPv2_A~m67LL}_PIB(5*nI0 zt_A`7-|wxj79$Mi3O;VpZBqdn7$3CSLfmiT2!#Gos)cv;huY6%>&w1n#yP`%S9SGvhV5*!N*sxi?P(nCZmxIF|MUAFKp>LdaMxPBi@vaKdpF!=9 z?O7bK-x!l@l3Yg8ONRmz3ZS(4FSke5X9-1cjv{FMg}$c2~3B~ukG=2uh|_T*YOf8HBF^6 z@+}+gEajn6axun~t&;IfG=g~7geA+7?<6!m^D2ovyo5~9Jbt!W(^}l9BE8yB4PPHV zv!=ADJ)HPJ>F(d$$54NuFR+olGhzFp7iY|uQi_4k;i=2tLiMCvlH`}YTB==~b89jw z4$XTZ>J8Ll#Pc4MjWywx94ut|ZJaz%LvDLnbzP@k*Al^mYlhiJkd zF_RR?NAm%`n-rCTZiyg*%)ubfOUwy?AT)u6$5S0rGc^Pt10am*ET0ARR0Lkd=O(YD zWX|v{^~gbCs4x!lUbNi8nW^bGCKvMt9M{skV_96<*ZYZo5_`=lwZ-rdSSz^1XSfuP z)~Rd!ejCBzV#jvH9`0uOFkx2vaOm)EB$sIDeJY2wN+$Vif;aUjpr$d!M`+z=QGVSg zK&Z`N-29+B;Rx1gK__PJqPlu8`n7Qfq5;rkiUJ1huBbkesW-_jlJTD*A^QxQr4Q(U zLu2x=ncWlS|8aEQ@l=0*9KU8Zmy1h?i(FjXi)>lBcR@4X_)`>kjm51Mr>56Ckn5W#WaJC^_zx(q_7EIFl8+X4 zC%1<2e-J?|T^_;PqCp3);;p+lI=~;o-?4Ih+^u@K&n)CUy zy5z`B*hrZih`&Dq#<@mfPF~?Zva}-7uhLX)Myi_VFt9-#^DJ(QJNs`U(QJ3^0U{kB zT`B0W+Pa@>ygzG%M{_bPEszS%m_h15QzRrKSvV{o_uCYKz&(n_7Z`AC;V%G<-Q7@DJ}2qo4lCr>ha z>dkDQk4icZPdA@#{R4K4mg=S6AuR$gIi9F+?o4-i;D~~`m{4{V2B++cB6GS6S^6oj-fB;N>UzM7o%9 zg8z~J{54#U`xqbz89V>Cn$9v`)%p$CB5OBZ-J~X7wyUmm7VZgX%fax8d}JpPrLR8t zZ2#dOVQJPtUS?jr`1^+k53U%JYlDP_e$V6_RaFC&Wp>*(Q_@qmvB-;GPj1KE7x|%Ar19N?61NDM*N*+}6 z?P5B1`XH)^@Q+zIcVv>bZX5ZP_5hzf-E5K(GIm;9oU$wc>SBdEuA6Z{NXW6YjN;d8 ztp7wvPe1;OVAoD8z?u>CTZI$Y>(XgiAy-KQ z?5blmV*EF{K9yU=6?{x*73fbBr1|u@Z_O62hWXs;N%yV)rv4Q17N{a+D!uuqJ-+3; z2gEIvBN`_yz*+ky@&aoh$6z?=p>LOM`zHftJpBcdSJMM9tJymMh-VGdCEemx9b~*y z#Ciw6{E*OO7%1XB zH4I`pLZ&8Az2mqOLS|!sB>W1X zU7MNU2gl+P9y;o}AjctK^E7+=)6M2PU+lm@X3rMcM&4ke{|@YG3A@v93s)#3CR*J% z4bh8V@cLy5E%vlcntNa@Iop{8JvsFE+Z;_n+VNBh=01s6NJE%6BxBCm=;`ComqSkg zEx;L&o11!0# z8pSoT9REXihid%?aJHwzkJh!``-Eh#NL!Js6;%G~J>MW^r2uO#v-=(`ul?LDq(io` z^=-(5)3qHC%HXH_({xqt*^ts_W=_MP(}UO?Ge{Ku`M97HJsED&aFQGS(Jr4^GV!L< z=f#n~zhAL5c$`A;#dKXowtgvnq^tf;w|S&GyFz~b`X=Mv`}#+}Z2+|)Bfp=ZfTBN z6Qy(3Fb;D^0`s)8wd1!lf$(I;EB9SLlvU6Y)3|1~C!1TTkIlCV>i;`Lv-*&q0jK=c z!9N`=)2tDX7N>z#oc67o8$vRt(OO7=XBtAyGFalLtAb}3Pku<%Y_8h`o#$jW6qaBt z%(u&NROG!Z0oe;SDyx%xVu&Pe|Ht_EErKNu$QWrxlh0Z;&<|<_wnYjA>^Gn_fC~5i zFbh;lnC41!3q10ORsA%LU!jtO>mgEICKkp{EZ#G!Hchwr*7 zZO%TkpK}={Zb3@Pv)8tO5ZV$$3aZ>~$&9_z!?N33W9a~mqgpIjr0aKCJYq(aQt{^; zn0TZ$F5<||`mvmq_J!qH@M5y^F&kCfoGe2=QAm2DDhVSPpX5Wgl)-eoEh>8ij6znD zszSeL58R?1fkQLCYh|1xx`zpE-5k}!+>IE|y`JyYQI&w^%s=~2+U5I;$);`H2?X~l zo;M|iB3BXg$dRoScR&qz4|s0dhU3@M^#pMG?_MdrGJAme1B_49)X1dtvdXa`3%L6= zUa-|#HF_|L-RxrCRKue~TZPA3jsf(2(ASo_ST6XW+8fn!u}v-p#smgi>AYQsQ%QkX z(PD#Kh$_~N_}r(#sZV0lLSexDhKU&1xI1c_n~h>vPs%wZO_zES*6BrdQ)kq-UKPz0 zq+;|qqtjqEIM7^L;1K|b?xF%Y-k&Jkt_Rzc9GU<%hq+J?|q*-nsK(F%l z>TLq^@W04EE!zSm+3AZ2L(4Mrm4*i|fejCU86tUW23iu;a74$ozdjcf%tpFuMn$Ym zBQleZG86;QJOh^Nz>xm{P%VUI+`!|<1it&yn`|_$$KNu=k@Y#Q@pBuH9p058wVN#_ z1G;@yiY9UgYo+Nml0COJGQNNP@CXyfTk-sa{D2?{84u)sY&So`>UNg_7Cd zdy7Bk39WOF{B_yaWi^J}3UXz54}dG<4rx$-ublUosSI&IzSiQ@(gG7x)0JX7A!P&F zI-pSI0SiG%qj>oE27ul!BB=~*W}7+dKJwAkGL|0Wzb-*_3Z3a%DyBrvz3W?ehg!Ni z^v#WjFQ2!9#`Lp~u2l8qN(!SdvX!-k+cGjI*9tyvyZ#$3uh32(8dty>;5(ohTM%C* z56bL!H;`AyA0g3<95!>B#*Xv+d2ZV>67ih3u6E4@a$Pg28pCAKxN9Cu84VeZEMZoC zQJgn8?iz;>`Cyx!hLzvDlrlFY?_?C+NV>58HLwd0W0>Dn-bD6R=-k=|BqTjhR@ zln1|4Jf42sak}#)D7!~T#Llnb>THduEEdHgNP8VUP0hoE3I=>jvl(;TxqIjOU@3(R zhPK>Zr@O}(sNVN~`OOaajbi=1@oVu^-+LR~gzFi+?*wg#F}i@0a>s~H5uX_8qkqJf z7zQ{28x}J_fg(0Lb_;m$94l>C`>9Ffm8J51N@#NE9Y1Q(qf0&OG4!B6g7o|kmeL=k zyM9ZQDhX=P29h0IqxuuRIc?Vshvb@q>-5P!to=EdMTol0lpllCEI(ZJy7wMVUet(H zupa<)JB0q#OqqNT_eVxJV|(W@P^i|}oDe`0qZ;!jrAdE*&8{CEYAW zVB9aM+IErgncBp#em-#VVcq zlLXU>5wWNqZ`)nF@V_TnidG3?Ec47>;nV~jLW)nX^ zqZ9rycV5*|l~&;TcQBthUxp#)j9IU_QRq9e7(vs#KYlw!BmOrKzV__;z3xMVp*G+9 z8|N1dp$5+gW@pq-%Iq)jp}X>b{rYwmwfH-=`~FMV?$&l7YakVVAu{^`9TXyHx9-i15*Gp(E2Y*+%lUZti>90%!FrOZ{#v zE5CPnp>&s+X`#CwN#pO2*B&2c&^WHr)jdR}cRVInA!Ixaaud?e+)s z>Qvs)nQ_TM82GAOo39dMu2?81J7Ry1Q33hR2mp(N!DDKzPCx{y-A9Lxn_M zfX}d>Z-tG%{_=S8(s_fyPw~jn<+XW*IFYleLa0U+tkPtl{s>byW!E7z2#K25Kr@vD^4FcJNVQ)#$P-A}f)iN9hef-wP z#ew(9c1psgO4qv|4tRs7CrM1QM6u?I`UriCn|wjK>~A{%!BK%h2=M0nRtXJj+W1&W zZUXYT+G2qCdUsP~8H$0r#KFdc?ji#Z*pqe%#;OnRaIRL~?omSiJ+bq&ot%3KQUf5& zt=U1g*$xnGdKu5VX|}Ncf@tZ%&2z;>s`ySM%eLnQScyyLT>MGyX*@eu^#5m+zaJfc z4P$o>!DvWU?`rM1Ea z0|KGiY$V^0^B0y0QyFkXW8B+C(I}-`!u4roy6F1sz{{VrUB&=S;Q_kxhJS&_D|!JFuXBJpTsfC4 zbX$Qzx2#HAJEXWQ@1c+q&=M&r)4! zOo6*r!BQu3WJXn-_ofZumX@H}7>@5F7av4Oxrl!(MQ%9--J&qKXj|7TARVR&4R2Md|-<4>Cr<$s& zm?-1Zq$0TX0BcAdp1>Ec2I{t`ThQgEG$OIL&NC2xIu~AI=Ra<<-8~|WebQo&i3=zZ z5YhHRyog@5&H~Yq;k+34S%Qx`6%g)_`+|_~f%``Q?Y+Luh$=JB7DrUYF|pS;;_>*7 z0DjN?_9hG8UvZ+~16%%9iMUk{we})!Y7T4r*^qPY)haGAOh3wjLEkmSYe06Ld@0`L z%A)F1ssW_$AA$S&W2dR}2GSVu#yp*TsCMH9AeJe?_PG)yVo+X@1Kb1NG2$gSb~C5sz5kaPbB2$=<&rajI3DL?3S zvc$dIhmR3R3@|=sZLH0?zI}O9=FM#pWJF$p%`9|ka9Y$rj{Q*Nemnat9eKAb4Nypu z{z=^s5beFdlh-F!hV&WpiXZM;z<@2+m*fU{{d;@5a>|sYSie!8LGA|liHE#XaTVd} z*JB0W^dl=dt=$dN2Rh)|xNF>DxeuU!U#B&B`tKhrL&ud&SSEOh zLJi~Mas8uBiLb7PhGzBwRNFt9KlFCLnrIO-0X)2cLi+ui{p_}0dP?%z*DgRQrd1Uy zYutJL&EBOaV;%W7n2%|CLiX5~YOHEQZlhw~Rmd4oDBx1|uTo$;AyW%w`k`XP2&sx| zY|+^+Tv8wE;|`YF7_Z;U#=y+uZRQ@)p42~Wsw(ajn)R@-jSbqcYjVY8O~9irkBTR3 zS);_ksp`?zHWNANg0$l(b`GJ$fbcpxgeO>Gv@jiLRdt(z1t=yqH zd?vRgYUf$YnjkV;6-Sj}vSn8iGzpirygm47PmJ8bNz2X`DK^$75iEiIA`;U zQXTiF2qSixnpCZcQ0gA2*dL&t-*L+cU~+H0)CZ_KAuA23FNsYqL-Btk{55!&=ZpI@ za=#AD{tHs|dmX(Z(QdZOT*}GwEM{uLB=2p7C{MDTQ8=nc8oVQSF~>O?`lT4hLed^E zrS9j@IW~J0+?pbV21v0K&#{*-`$T>7aOA$-s+|ZL>J#E(2#QQC@uu$u(rT!wrio?< zs(#9&WJ=SSH%{6s@cR{R2l8$fY3YNC-{(Yx0W%cDKSx8*^T&R<`Po00JULxhZyXnz zcoztt2mW$tn$ZgL&DaN#keMN0M`|rEiBKkYz;?oLUvVT=|J1_a*K3(ke#E{ukxf|+>>_(W&kD4dV^yR?FUN0h9~RvMBB)bSeg2I z_UQ51-XNvDCg$-!ZBPBewdFxdvn4NEOTztTl1)Z}kd-3et-?{}%X*Q$=DlT|i#3q% zqx+lgtL7J-rT`($AiZ@g2j|x=XUnGS}9rofzjO+v?wT3AZ4pSi>Ot>uHDGPrOGQ^V(k>W`~3cvMv@VSU7vb8OHVH>PQxB6jh5(<1}_Bz zbmYL*PTYR_WB&AIU*40Xh9}#u!~{2grUM&JJg^JpvWhHzxL4BwY>@<_T@97kjX3n& zq1`oW@79C`6ZUSgHd)=jh)ujdD`0fjlsPv5$*8bgh5&8k67K*0`QM+2H3U(M&(DMH zN|`RfJ!$TTcD*5tcv|cbu@x6Co6qgoE#uT%Rd>s(8qMZ46weH>kR`COK7R#M&U;;X zMZk^BI!q9r`RJ)yS$hGd(t6vaxc?yVN@rc>2!>%rLo05v7%39v1#rFvl!J$N`Tug9 zZte8AXRnC<##h_?0TkD*zY*%!T|hhHrBKj}HG6&#Wik}SiMaleVL%KaU-RY-LtMi> zvoc16pvxj>d$(9uld zGChxe1TH@DnpnD2FP#3DUhJb(slK@97Ur4h*RZ^?=fOA;Up^EHbbJqtoWbP7}X1G$49piggHI^ z$u8xC7)zmKS~iZ$v*rV_!%m{7k4>-7%08icWK0qNXl!zV0oC^>RBJ{ixub<-L8*VxnP+P&Qbk)RL2TdxKn3jeWE{{^D| z(gXB}FIocLcmMf@d-rH-jM2W8TEkyvlbva#q+>7Ef8`b6?z!`gG90!9W;Yy=m>7;^ z0_(tTl_|Q}xM$;yg))IgmZdPvWQXd)Kl^0=o<4l~C_GvbC;*=|3xHAj-+>L1cPvb4 zT)=H9OW8q-cap34q%t@(^3k!H2%)7_bQ@YZ|K@EWEO&526f@zWWOwgRvZM_3PLgz4 zHi-E4ws+N|*mM@eAE292W|+fFHHV{}w$fo9>}9kr#J57jJv=(lS^8~DMfn!>I?H48 z1DO6V5VdpWDTD2bo({}ehO7D>G=N(&g@=sBM(N#l?2BwO1`RUWcm0c7zO4~T3kd5c7Bk_JhrR3&mVm6}RPPT8tjkj=ElM5^Tg8>^e@P?6MHfz!%M&fJH*Kg<5d}SpjEC^kMHo} zRy$biXgmTk~1Zmv2J z$M3G^I(a#1zLOrw8y)gIjdYv7;E?a|!#U;1htxtak z?q~OCZb2gcoCW^1?gnex_~WiD!1y$opqA-jBN9+X8jV^ts7DBJ>BB4~=v8HkTUn66 zJf4k4iUM7AZrOAGWTC3Q@jxlH77209Oc$0dRmV|mg72SiuCVW8@MGU>8y^;IoAphFt3}X(?@xKGj zKiv{Gi3)YYmMD9Z85QO1D7OM{K6Ohnt{*CHSR> zBIDPt%O`a}sD~7#0h}}#TJcWk-zWl*3Qhl8r_$sdbG&%Sp=nCZzf!Pf91}D6q~sDB z&+(sC%(>I0km3^q>X^lfBN#--nNs3E!lgpsEZsH!fMEB@dVT`cPcvHsN7Gy>p(Yhe za5e-RH!?mKgbzz*%<#<4IXDMFzoX+3g3%sT&$?P=q^^5vH#2%W`OTCx38kc2`B+3b zk*u4H$LG+$$!UcU2A`o@mjKG~hx-8Czw>TbM$W;m;ixjY>6c}fb)6k&Efb(P{^S`p z0T$cE=}kzAs8TpX9ur)ap6`?(piJCnSCco!d`GmCS*MSx@j>wJyEN4Y<}(Xsg9W8@ z5N8;j4@?Vix_Ul10)|smuQeF^mZ*sVR_@kq+5p&HSNpfdr`ON^0@pN(jYGvzZd~cD zkoz@Dq67n9yfgm?-=OqRSOnDIzW^Mb4m8pF!;w(Z z2A-4*f)7xR5C^flDC4N@@vIwve=bgc`3INSb3p5AK$6o2T_M8KvzT_BetpN)e9{qg zLg0(>!27`$*Z-tme($o^q2_8Q3C?a+NXok1VV|oJYG=8Dm(*h~Yt~oPV&ciXm$Yh3 z*87rS{azu@A@VOTXC;Y|rdsN%a1C9Y8Zym5GKJo7GVVUwD7-9gz|^UtNX}Z#WjWKl zW0Bx#+RFxfUL5^_NPb7gCA7c2AnDeYS-%= zy4dBQxEMj^_iXiMOasmW3?HUymwH3YrUlL@ki7I)!GOT)>qCJ%Co;I%^}ItD!ac)9)m; z-;&`zS%)=v1}Me`*Fv_`q#5ATK~qataLAR6Xv)W@D$g7KTV~Lh@ z(T_;j!31Rp^~1d~bpNfD9%wXfV(|ABT`jv31=*xh=e3&4N%h^-zmabtyPs_PHKS`< z8>L=n&_NC4YPMiTH&aKP>t<@;GA}QJHEzs=8MLfk+gO$UD!ZbAeE?KQZ=`RM9tTlj zs9FTsk%l3Z^CcXvrea59ZrG;K<&PydQ;e=$-$;F??V_Yff$`IQ0r?gwEcif`84F_f zv2y0Hh5FP3rAY}GoB5Xi@9v-Ccu!jqnAS<0L?Y>N5_`Hsx5TAHimdJmMTnhqZjvcm6ykyiLAjP#?kw=|NYju!T>W@zo#iukKn=Z8A^CUcVA$Rk} z<3T<8cZg))J#FxzZT}=8qG=V z>U%(Te0%%O4>a<^f2q9w%q6k!icqHud5tRS zIey8jt7jXShfjB$3+{DK3n=MF`gxJq_b>AsrpH1t3R|<3m$l`j@E@G6f=YZoGAcC( z3ySnuA6k0`#FeSmYd#6*3ADI-fccM^sUbn`oM-@1(*xKg$%&x*#Idv^H^e>?*U z=f{!VvT;LBZ=GJ;2@B50e* z-Q>xt@vAF%dmKoxT!NEcf&_65@7@)PmhXld)xwPC7K$?G28luG?b2E^G?8@{6>p(_g%JRQYwO ziR$((P*IM`i`jB3B1kss$BBpTLNeAaTt2$^mL7IwRiC2NI!RkxI|Rm6bV2}xI8(f> zJ0;$A2CBe}XD&&*slK$Cz04TYShe7X!*DhaS@?(G$|c+(chEBI;;2c_m{wi z8!roGgegW)=>`7IY0N_Jnp$(3tl38I2mMUpk1lXC8gcqH(as&4!J-c~psr22D5P;J zBud%0x0(z9?-Qn^d_|Yp1sNk+p?+~RgeCTc#13%jEIU1+d%lXnjR2f*SHZI8L`xVO z`3O*IamzTJ-k}{rRq{feVBWS*z+z%Aj@h*qC;C2(9gOk#*g6NN{>9p}ZD_SnRY0dG zTd*(mo&Y*%K-_Z3l*;t$`_~4M@y-B*wgLi^8_q6O8+d@PjC^PX1UO2$fe9{-u5`IJ zZM>x13AR#eTLqeZ^D$sSEkxle%$r|cuW+3a+aXeS9!vRD`bj0NW0z6t5Q2y{!!|qd z{&iJ!0xM@+)A82v(xP?LN8H15GE=q~y{jCRguPFjz79ay2Y`QPsj@@4OuTauR_Fom zo$`Z}x)S|C+)21=GiAT0Wj$d|emfWxcaQW(C%!KL9_VLf5GDIKEFCD1e{BPBobdRm zP%!~#q}@zyzFp>^P@px#KAQ?O4CMG9WFq}ON&bQgYH3Z7+mK}1`555jIr{{qXGEhg z?AmQ&-Rmmmqu!g*>4$2{+m)DFPVX36G~00vW4WpSDx|3eA+Q%V(Kaun97k40+x6wI zT%F_WJRkBl1(uIiYKhKv?n7K{P&{{`uuU`6^u=Y;W6G8Yr>0X&|qAMRL?D7Ea+Nar#JbyJG9ELcL#+gtOUiL<1*ECWQs zgSODh+;BKV)sR8Y<=qsF()BT-qN8x-LX{ap0v<%BOTo^Q_#7Sbrei8N(D3 z`_uqcK;u#q>djM|{&-HnDq^_X8^JrW;RPXoTbg!qC-s51~R$=84atn09b-jngu={Iu|H{)%>TeCNX#hdnm7gInCX#KG~bDRbI8V%`-I-Sj9t;ks53Lb8m^nOdW+!qg}Z*#>PEZWd-}u{5e?BU_V%dk|6_d zCNRdtbbtn>S)w161%Az1?iI|(=3GbYek<*Ho0d&RFQ@qO&{Up+CYvEN8m5J6iBB_D zqPV?)s@el<6Z6<(STh%h2Cgb3;Rh%itfVP!#S15jjg1gqHDN`+@S7q(0aVA^k-(bs z!5XD!R}al4351eam)WU=UMD!GB<;JR`8)AuD0yg~>Bg78mXxQypWeurnzxb>bTl}B z6&`;+REszqL4G8HsFRaH8ghOZB<F@uk#-O-!a6F1=xu563>_0shcuoz^lCY=P`j4ZKN-XbBUj@|rH@Y@hVbk;Ko~lt0EEm&#gLvZe~i5TS1TGA zDC@@}h{gfe)mm1iwOAYysqIvn645NN^Dwh(2}Ly4E*U~hBVr@)s%ABC%IBymN3Y0o$7&UU#Q9~h8(=j)U9G364_ zx$kQb@ioAKd9{ek#MNiPmri{~*WaVs%vGCHD(o(D!4s_Bxn(#!@YI3tz3H>-$%Z%1 ztCMXH4HB6ks5oy#9;5zqyTrhIEbHrv$aEpxd4B`PKtn-<#-QfXf z*B9o@h@?(y70>~_rT^fN*^PwVI;MmE1n@fn3ws5BfbQ(}m26-&A@wij;l<7Lpg{HE z`4Q>6MA|R>p*kBP45+sls2HExqb3TBhz?Hur;B)V480*dD2sAapWdiD4q1bm-WkRh-}z!=f`u z=OcOm;bPqc{@!^{56 z3COD6@R63craeZ=c7Q+>%wS!Zb_>zdsat3Q8M_9+`qXdlkc3#L0g=iMWw;F8eH9wz zkxiXIQxPrN=SqM_r>0TRO2$?#sBnM>)DS3Q$rQ!53ngm%UKQR;COuQ9TRXRF{kvP5 zy6mkI851PWtr|dO6Dag!5bC-YH1B$Io+7P~j+K#VMEBhGFhKd%di2KCUqE3|S;XV} zF+=EPHKiLtCB79Jhs|}%EJznfr=uxIz^QDw2uGH3APZCriKcu_2Q~$3Q*^94Mx(XO zMkl^7Xt5oAWYnD}bWs*01sNvB9_eDa?rs3{z`pmjTgXZLYIk$?*bX-4qj546F(#gx zIU99e8@w-2vqfXgM*#-S%kpBfoVJ3d77y@5L?#+qb zBP5U(BsJ6ma*Gh*^*U(CkWu)52lI5TPiEU`Jc_Im$|-l51D6;lXpY3xkq~q_JI+v6%YkMSfOlHH%YUQ46nVW>PYPu04c=X z{b?xEC;x0XyOrrd)}P6|FDo5}9h1%2){BzZj_M@cQP`?n+1Wd5;Etxs(3A~swI}O@ zI|bQKC{7cjgFA--YmXE@_BCnfv}N@TY}4*;T7VRbJDRml+R26cdiYn~LFPA;RmBQ% z$H)rs9cZs>h~O*(BP~L3mS)pqq{2)hpMdGo!GZ}sQqeMG$nJYn1&m{K|J_iYf#oa) zKs;+7*c5&j54=s~8V4sp9+R-uS8L#sCz=0*;_6K^pH7wr_4Ii=P>{}?z3*&~bEY72 zzfS5zUK@3h2IinuhGJK>wFyUjwQsWC?j%>?8FYl=*%^_(uYE1yEg>0KWc;#wte@UQ zv3>qW5l9BA)&&eG6X|QgUApTp$bUaA$#NIjB9XKY&lD_cKOu%9S0B>AUo>VpNP)`u z3APE>j$~C|fj@d-=U4RT&ZK}cSX%dv~lSh zL++{0856r|C6_hCn=pJYbkoZg7%BT@*}~LtZrWw+47BmI;OJg|_mSpP})4XCw~WSH(0TinzV zLG~sIgnNtmLJB0BNh=+Jqg#7{dsD%S#1fo%Z9H1}W}?k5Dm^XQ<-Pnu?Qft{NYF!V zExE}h#g@3_lzcKWA6Urn%{+%!UJK<4;f#fyqj63#jML@8l`FprU32YiSG5`w*H>l0{!6 z!yH}rS&pFfqJx8w8egWjL)ge&Puo~nQ1jImxX^o)0sFRz0H?Z&wKMT2EiID|B%_}# zs2|(ljC`8txP&zg>53kJrz%td_hOq>zqyW;VJTrVgU2@0mW#M0Ef}T}9PASK`$)En^}Q3+>KR2`j8HSbGttDhxRLRhB|P>JLVLE$?{t{DWg5YnK9ZtxtiA~#0eie2sw z^|Jto(nQ3j(XaL~;a}wf4Qa{gf~i8ft+Oc?yiU*KpB6=~#E-(|4QopHdxJP@gI0nV z3(WwR{8F53D?slFXC>J58aEo(c$K;O`KI?Zuh8d?!RU#`G`W@Wzq4$d^6r$htde1~ z_q5)>&U3@8>U4Qmd!#Dp{#r^ny+2xY&Jo}5ry9^i)E!P7d5kQn%C#$o(+rrGUezAc z7AgZ4MlsKv54fBYoNN!D>bjKm0-$nj9+mJT=gW5Qfg1svB$6GZtw$wZuj?a;#>a@k zA8FJ)eaNIrvzE58!}ezu(CGtO2Vis^#w#}NCePNMyHR!1ZeHjOFy600`UW9HP{g?; zq;pldUqX+!r`SgBB3qAA*`SF7W5KPjH#|53Db_(mgPr6t|LlK2>l;C$cFy|wxNN}t zEz?}%kQQDsSInq($o|x#>lVuh8{^I_k8;VAfK>?-%XwG#;-3eg$%SrYFX@RS?d9g& zPHF4~7kV*+GzhxIcO}*(${#D4P)Xit)4;YXJtzd0){-f!LD8%7$-kEKm;c_l3LSJF zySVqOPyFu>jlW);4JRekb+#?EaSI&RMpx{_OF04^%H!9WawWEg2d8nkxf*STlxWZa z;fUX0?o*Tj-$M#Bg^yOfC81+B4VEphM_!(Y7FE|iIZc1)`lMA9b6G`r<6Va93qgm@ zp;8{BQq)UZbib8KbQefXtJ`Te^fDnRKK0|UQ+vTfFRgyT?-6Vz_+3js&d3ao!o#QYY8t!US^m%s}{F_aO7)pYm(y1{` zajL!9(=35pLHJ#OaVVf0-f~NUvs=eeZM$OdrVj5 zEZtpxL|WNXMZI~Ba|!`a2>V|9-65zfB{Gi@yzW}AYiFbFq5g4qNTf#ODLi=Y7k%^rZnvBRJ2t_$7}dmFU1jh8O^rf|cB z{~W_MGqKoPwYw!O>zS0+la(;Z{YBlcf@8*DcYsI3qU zPFjrPwg{wkKoPB7xBJNE;NE_XghZhghOg8TD_NI|@C3nFnv0)t;2yyowX_-FviFnv zG4iO}d|W?&+*yE^dkvUNMXSE&c=WA83Ah-}ZMo{ka+nN0{8I*#Fo(B5ibuu0dQ|UO zzU;F{V%2GR38>+E&KS@P#(9{*@i?@l1)jP#o#3UCJ`nCANQ~x+#_n=&hk!H4=(ad>%~YpMMvv}r{MYp&>?IwIVuO(LHwD8~^nyryEc0GEGV{nF@hxbW zLESTLc&J+SFHKLBURv>jSVFo-*(<@vDbE1q8WZYQfzioN0E<+`Rqg0Y zBMUckTH0qi@utr`aSeg7#*vA=`)JZ&3x{LmF}))`Fraw(A!U_gS@YX$9CcliM1{~D zF6~(>339b_J2FTjlHq1jd)%y7*CoupFo{dKt>Ecw6gi0#sQFHT;2Y{_SIBW^5eE&i z_buv5U!Ug6w5xDE?|-z5WK+x2!+)$m+I{wOgQ~^uM5II2_5NTHxpbl1xZ&f>Jd<1B zk`iA7fY(kysutzS$Wg384m&?``GN@RTTkUuO!Kd*+q`39-&Q7^s(>6U;t)L)5>p@y z*vQ!~%^F>PblfPXrU@HVdM$XAOK&FM>VDHaa;y+sI;(`TscjC1)_!rLxx3a8c*O${ z25vtIKHbG7Nf+*pm&Uq6Do{0UxjHsQ3%b~AQjDZ|29+4F<-jGQ-QfUkilfxO=c(s= zZyJW19vhScb^vhePBIP)f1#g~`hbZri*|5EfbbWIQDs>zW(1x{w@kPzxn(mrYA04VnLexOp2@TV_` zqh!1O=k>Fb)%;*Ul=$*j&&zKo|G?wr4TB}oa9(N`2p3jFi_>05na9K4%fOk{1xu!FXkl%(U;B%)$uC~F}0*7F^3 zxZ?7*1t5q)wqFYF&`#CDr<-EripGb`gJ|U*BN+!I$@TartsB~eftcgt)Q{#n^!NQG zD3Br3q)*m|qD4VLJ)g>HTGbP}-_EEyem-BwP~)E8xCB{s%X#I$<~ z!&sV$C+A_RqgJ_W3RveVjE^kioUM;P;4`aNr*Ej(O&3Cl>+<{>e}5q2!RO%c zZ)Q*_7}VOY0NWmmO>Y`b<5qiX?n>o;4nf}O9mer#E5+7FQnH2yKy)@hnCJ(>7 z2B~g@k1S`Xd|EH8|1PY$SMd3La-LJejbF=)=O@kY(UyE1ay4$;paFUR8#j65dhh;d zrb|yVi=>{hN;{*1UG|NLZ$;%%rhal-MF1u2?U1m5O2!vT52*irvUEjc3hf2~7%L4k zbT+l5lgw~|`_6u#jakqRlwQSw9}SRv!AA00&>R3Q6A6seYpwsY7xJdp9MN-0!>&xv zA2`sd5|v0$;+z0m(s{+_Z6sXow3>OsKeBI8Eb*Pc~E%0ZtQrG5fA= zieYavl>TTy#UMf=?@H>5Os5r@r0G2hm7_ZY6+OuYe`Di*e1zbZsz*m6 z(TJNV5NE0Au`eQO^zGno25EA3t2gHA4!_&##fD$er%xIaXrI%!LJr?^QTG8+`Cxlo zfr+0r=HJJivb|^iz%OUPID{fY*Q;w0Ey}|(zbSKi_T==AeYTq0^ zvz%HpndT0_WV>DmzfR(pFo8jr*EyHNzv#-v&U$zBhuo5lniTSa=p+7{tbO}do*8LeCEeqX$R zpnxcnf|QgnfOMxIF~iU)C0$a|ASoc--AIFUcXvukgGe_6NXUHQY<}nN{0(O=c;;pv zo_FuH*Sq#wpOBEFbLb=P{P#?GzHWLaGwl4)!~>QJLlY3SzM@Y>J;BVA1P8Z^At45@ zt@23LuJhi zB4#Z0^*LKcG5=lh2i;tYjI_NzQ?PXr70X#WTy`*07ksbrCspJAa#ar0i|_sGALF`(I>OK|q0w39%Zm_;gEmTIw*fH)kD4Ey5Ro$+*T zKx~4&iq-p-x`ZPDL${uiqiAB`817g=$yrev{&7}+AQ@FVZwlV);wYv@!PSmzMKSwd zc3$P{&$OD*PFU}kVYxp&1zgyYVFEWv*#F1Hj_x_cPRzBYs z>)|g1PAj8Gq~=;ZpJBn*rF!>Zzlr?!62%)apIYXCp54K#ML>-JyYTOu;QRCY=oVMH z{nbO{l1a`o%T;O-erVbkeDlL0HEI*68asx}r0N#qY8`gQoItCsv@@1(Ur}7_@Ec5H zHiI(PnzMWr1W(>Oyc#t+B5C_Zvf2Lz5Km6Z^60CQC3HxwW1_?3)SBfHfLqPv`!Ir0 z3>6_y6?kM-^{ubJ{N)7@QfQ?I=Q|937)&_U8m5frbI3o5FIE-Sjd4?z6geLajhsa% z8B$*9A`AM4M%>iK@@|G+gx{0Y1~$|=hiLn0`^hK~Xpf4Xk8-U}mW>Uo{tq7oyuBPE zu=xGGS)dL8rZ*Uf8;tI2hE7d1M8;=ZY5WSulSut3K=WrIh(cFYeXYUtovF|5xo;85 z?B+7V;-i61V*hn*;5gDb`$>Yj`^P#()>%GC*ZH_lXx|aR{^TjDOVahpo0;mqeA|Wq z1Vln+XlWy$j^wL~Fim~6%MVbxF32xwc26-vn^4!DmXc^DjvG@CQ~tmdeBCAKzYay8 znXUevH|!1yx=XMd`#ChiSgrFWjdL~2(gOB>&}G*(tflqQjk-`yET#4GpXuAj=tcBc zU!b9wRqS*4ts%5XgOecu-r=vcwCkmO$GS|NRehU@~ke5^mpW~ENTB$ZJePw(M0(hp*IHJijQuv zF$x-sp`8gV#P5mZq|_N*>@f!*oO-6J(*^pI=rttMScByg3r%S6KSdC0xPq6alLO$a z?BQ~cbB+L;(60&r>b#pZu%<KaWge@~7cFy%v&3&WH4o-c6Mi0251bqnt4n z%}NnewLTKkUnB+U*Tx)R7FH|ef}XndF%D>-y^d80)Mkv|HGC4UOpB1bOmYLp{qC*qRDu>gd@@(4L1@x<=&mp9C24*m zS0v})_1*1>Otzav{PFes^)32x=60n&X_GIANvC)u4fE8}jjMU9wqjlpsZN3=H&Nl&?cRhkM$G84-jZ z_$i8~ju=lgsQYb7q4*(eTw-I{D0ko|9w;N7hnJ;^V;_sO%u-Af@9QoQ`L2b0C5t(Y zp#Be)n=Q~Rz|N&nZnd9%&$hi!DU|ey0`CVk-VBZ4XEHx;dj)j%NOkSW`Mvo4G%D&bHMt%(MEO_yiEo}O>Sh>?IWlN)rpccSuu;~S<$;^yiMxuV#WuVCmE$3fw zRYJk+hekh}ZQ96od?-smr4wFsnDaFx*CsUFYzEub1%Z`BZiDr!LjPxu2jIY5YY2_B zy-{ez^taSTFIoLz$&wtXpe~#j@fB(cFV5k-JmMop(9oPp8Qi{a|Iz$fmpui8$Q{xR zc({^wf*P8}UA1^0Ja2UjZ- z%aH|@P(ge@)Qgk?>h#SpYpLC7_sV^0-yB()N(#wr&&~M`pa})0 zN3woI4Ejs0ZUBI9j4R{WZ%^sgBgk(2alFJ%Z~z`#9;+GgFynJ8TH#lYu;}GSe&>9) z%b#s!6j&8bk`)cb9kS7znwGVWMY>+(q-HDO&^2Ed_tB7Ck`#p*5Xt#P3`1OstNcC( zpng9^E9x{dOXSBH5aU=CM1W*L zoK`+evwx5O`->{5pq^I`vuWl2%s?t|8<*TCq%ZTQPo1S(P%=l29mYeDY(K9U z?gI=;B=HGw>KK>5E;m1;NvGi7DR9p)N-3ihtMaay-+4&fi=8vTQ+g-0mq9BlhTj#H;^d(qPIfmzWX9_UNz zwDTJZNzz7YLmT8bIp6^tvC3~<^^=AIXv*+=G!9q#N<|D4D5h2!3~X&9?ZF_!7_tr+ z)6C4w=(%6{1pQ-K>y%ybYXLT1JKi>~CQpX9Q;K@!pxxq@vmj2fe8bcJJG1{3Sx3#V2@~E9euMT31G& z{Wyg8L(a~JtlDKy^ClkO-3FkUnVZ8>SQy`Eh5yJ&C<^dYoq(iGNP6qGgU-o zJvU;9uYIKU<4Vvm7_Ah>a)IE`9k{r=hK|`e>d^P&^;#Ktc|CZDG~J$^RkL#_F#U(} zBmV42!2K+bDUEy!lQFBP02!w(IOFV{1dFnU!Hykbxy)o^<9*!JjyIW~Znb%8svaC~ z4#fS-5V4_YSyXD3w@yIAefo|5n;-S+ifISJ#PV&=8!j#`B>wNc>B5NSE8#qqZX{B; zZUU!k8PvGI!wemEBrJ^v*HT2yr|)vgzpEZ=HX$IgSrR9~^{Q_B;4ptoBeVScqai!PML5LwU zZb0Qdov(1$<-E{O*F^sWABCpOgdN*(!as(}y&3D>tJ+Ws)7XgEvUbPn^YKWxBnNF? zhD^+GLz9+oB(G}HVpLn9w_NDS&X!FrzUFQ-1mdaHx*Bs0c02lM_kxR^K0kGv9KLDL zK$1X~PQu0|=VuoY8B=V0<<`tyfJ4B%Fqz}#7l#_bdSoCe38r&6RuS{(1v0W_x$EaQ~!wf5kt8&DdZZoCnZ~h=%$`)EKEPz@T?Y{?MCS;yOAu~W$LV!Sp1p%$0fkEZa&Ej;;m}7+fBI;u;AxizLEv{^cbAK+r zP>r`H^VnFGX(Dmf86K88Z(b%+t&Z#*NtX$okqpOm1GYRSN~Tlj@cH;9QstEhR5nKU z%;a|-t8B2@?gYK%SM6&5>$7vov2J}W z9%yIRrpkA^qT)85WY;I8f(1W3Z_+i~cDF&6ouVUfjita!HR5+Yro0=GpZW?#aGU(v z#dqg0VWvHN?^78ie~mSRnb}FpS&?o%Vj0r%0WI)lNYMV*hdjOFx<F-QgQ~^h6ueb#qVGXgEXL-cjKLyZW0U1| zv1^7!ix(=FnGiQ}s~TDd#583_OVL>|ET6cof`+t=p?L+?oWkWpI}(nLj#IB66>uiv zTVP2_G5ioV>_DE4yu#1Gu}q<1s<}y5MbLLEJF`acuCEu0bQ35>AnQ57$b@f=b1T4$ zag9XmXBb=igY=sDW432eT@Dp!W!jPCw%lT3KjUO{GI@z#zKm-b&l0P6=2Dv*n$Et} z&#{3=QXCzf7)VG8n;S}mji~Lb%vU1(-xo|;*XMl5&FI7AwIae#w26>BP)RoM3mW)c z_qxp^ViPrtT+G|Y>wAa675X|>8)$G9W=>i3Ps@{~8!(_^=aMTrX(L$Z#7fQrBkS^V zhRJNIfw<#Qv)8=k++J^>^nCPMV12c&$tpg6r)A=)!LK{kw+y_L^;<^EE2Z8xhKAw; zNv}_3M`jQy@G=KEb&%j*^07pcI2>(N-FOQn|)~UKRgy&Sf}L9R8Mw zVI-O@Q;q%Ngf%C%aNyXO{82P{a;%*O^54IIU}W{?-dClacHiTUB(pg<`gMZl-HZmW zm`Kaa&1o>5Gb%bPMN;APm9tB)H5PqbQA|c$&$V`CXkgbla3y(;n;l=V)poTi6+I%9nL8Fc7mWSF(Wt9q=Xg#`;m+9*hFhLm)XZI|U+ zpDC6?ozu;r#NqJ=xy(!p#d5j)-`mAW(=_-=F;5sSaT(i9E|WTteNeLQUD;R@av*qF zIkSV0ZpK5__7t%qK0=Exz*uND%6sQD+kBTNqFM!Lv&+XEhC;*J(ie7h0ILsF-{RqJg{Hy zA1Bgvjl1I?1}|7EBvd(WZyGu_$4qM1SeKMKt2QSf&us}2xhuEN-_uOVxLxjvhg^kw zTtcV^P-==dkm+jFqfCP9fOCu`tb;~qm(3|(wE5|Y&`6es7R}U~#Fo7BLpyaNsIuH5 z6~}R(rIRb_?^?RhzsXq_VmzN7br3~|#pLA)htdfpahucC+4EK_d~m{|M7Y zfKa}oSdCfBb8C(&9i#a{q(RF)8VWG=wcbUPju81GL{#sjGT(4<@RL zCaM!ZF=4=Drs91$p7{|lU0k3Tf4UxXch+Oi#bYYe zr)dv<(9zkjSH-O9a9etVa4=g^X(v#Qta%-QN2jb@r+pZ^eRaHY3jmQRv9um9=xz)d z$Mv`M-U>QT=a*nscMPg*ySBfH zkn!rc(>(oFx5;x+F)=DsNe1a?;wbCKp*aMZEb))%n_F!p8HTyBNYy_XqUF2~w8NSx>JF#IkH8qKCxsuk6eRx? zFkv6zt*NQO*^?5CHT=9gkqtUMyRb9!)3e!&3+|55`lhC#bD(;leLNLQ=)oWcmA^4U zX0G$?gPYQ!O3K{PDW=&PAj=HM{9Sru8^4jeg3i2CAZcbE^teGsM@Mx;WPEm3eQ06^ zWJiXFH^Eads^N{LBEl2?DjpNDO5>a)35~PYns%V<_~qywD}?WJVT`+ zvx^J7m7Pz}^;p;2&>N{I7`5|vPCrV|XP-A=-*idHDR}r5-tfG4tIhDBXMG5$+2Fh8$=to6Z{!GP#dm~K4YAE!~M)^ zArIDDdn{??^ol*SwyDg_%q&2ja^MuoawTZE!`R6+Dkn-BrYsAI3b&>m+SG#=!)Ri2 zH_2&*hK4awg;}RV2U3=KAg#FnNzoU=g-Gq`8&F8p)s~jm5S=SP8_f8{^yy+NN*0;f%6z=7O zL6E;nR+gG7fO7g93=D3{xuk1ZF~dpxAgamM!aO|rHLn_m;Rc3=Ut^B-DqDI?>zRZe z3k;uoTpntneWy_roIll#3r$ut*B-u#LLYRql;gx6WJrbd(!9-My)%$aqJzDnl}M|k zA6+)hnWQFKny@INZxW)dA(lQz;_S^F#=*(1%Y3iTD4cVY=gzZAn5UeidoKp4B2-Mq zGfX~V9|G&e5Ipj?5=LV!s)^B-*50TB&!!JHdAN6%yw2gy)n&$9t+y4MEj6&qg1#n7f2+bOJG#(*)Q*N;mqM^kAci|pA z@g>|Pnm(uZB`qc|$UN+Q@$~Ekr6YG>NdZim zv2or6-AQx3;$nY?mcsr@QkS=7PkomL2ze!(qucBm5kAg%E|OW1nIIsJ)*&DnyGpyt%nq zw?AV1hlRYPp$a#)wPnp3jr$!8cgT|xX^mVNB$g|c-tjFR{@ST=vP^u{_ZbF`J) z;o;%^{e6=P6-p{W_lmIKrg$5Pse)e_8DgfsVSA_FM<9n5wWyCfmtgVt>K`|F`jK6^3)oVFH8)I&@EOX zO_eWTI_7g(lVv$GYbnKNH?$+ zCta?NU%~{;M*?nc%|N)G;7%+4Zh*|3%m8@;q6$=AT>lSy$z47mR4;a{ zW3WCuYz@q}ncIK|WsRTZo&|ZCXSKs8OQwP~yZFy=CCRtMwNj{e5_o96uI}1@p!cYn z*~kB+=z!R)j2^q*t?+Acaq-@s<$w1NR*c@ajWIpqcVYZi>Q^o&`SE8&n?I2j!hszh zvOeD--H!xgttXG$knkL0W6>aUi&i41O-DBi^XRoMj;DW98CKjvosqHv9a`QpXq05z z*3lga#^;`*NZ!>pRF`)DQmMt56`_YvlwhVDvuw?ffoV{+S654<27eFH3Cp}{s1ALX z>lUtHLePa<4u@>ne+CWUy#rvO2Q8Qi+R?kzzdK8ENQESY*0NjyHRX~naQ^N9eUJ4T zIQM9-jD_NTcNnqUNBBJJ@EFbYF5HjuYDaK7!@|RWVq#yfI3(jk{@3YomCuF zrZ+bW|IvhVv(lo{{uQ3Y3aOJlx2kA!0jQU6nW5ZE!-CHFh)C6%vMSBezWYrEG52fX z&W&0FzWlX8V*&n!7u!>W#@^l^`MB?XKtU) zD-^D9gAg91jTfKR4GV94K8)qZSN|<7FE5}Qf#dKbsD_nSE6B?OwF;SPS*Gc@gNB9B zDh=Td5vznL){Xqm7Veg+su;UI^M+OeyAYATmp~NS^)+-TsE$D){gnMsSV+hNOohEM z^<^RV;VvRDqVS4~{hQ!+s_rB^>8l5XQIL+s_|}$b9ltpWeOg)k!K$7Ew$gI8+&SZw z08wuo9HFs?yjgG=e%JuM zW5nAIwzkJJYaNf93qA*!{BOPx}Ioq-DZ0&(rY=v$aVp2R*Tt=H4ivb_38 z$u=Ip-sKEgLKzd_-ob4bx&L=?^Nvy8BRsq3Uy$Mk{KkCd;K{F3-e~1!RZz%D_9-p= z-5hpmCR0cX_4Y>J0b1u{=4UrxIZ?KRG6Z_^zcICxT^ua{Pxbw!x`PcN%z5{Ru=E6B zQML`d`Eqkg9(KdBBf-R`b${enVxi?+`cBY+o0=6O6&dgN^zZp6fgUES1)TYPps3IU z2R~Gy6uOZ<1??2oI-XVQTu8U!NHPRahdr)AoN z>*syr9f~bX^hN^#Vp^i5rzawS|DqZ6sD8;h1O!AwhFDiTeiMq&&>8_MzWr}+J`m|A|t#W zR=zJxbcvjL*io)-2}rk6Xw11j^oid(S=n`2X$} zNJkroht}fpGT6hJ{ide2G94Esy)3r~%w^Pi){AU3?iR^-H(IQiwXnI*Y z^T9nAvQ!UhN9A<=aF0C?@oJ~L-&ps_G2Gm^LKq{dTOZ;jD$Vm1AZmkeid?BTPS>RW qi(%P^ZTSCx{@*pYM+cHf_o#2*a7N`WM-QTa4@^oyvRuNz@BaXHC + +Outputs: + runs/ + ├── best_model.pt + ├── loss_curve.png + ├── acc_curve.png + ├── subject_acc_curve.png + └── history.json +""" import json import time from pathlib import Path diff --git a/requirements.txt b/requirements.txt index a7efdd4a6..b0f33d74a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,8 @@ --extra-index-url https://download.pytorch.org/whl/cu124 torch==2.5.1+cu124 torchvision==0.20.1+cu124 -torchaudio==2.5.1+cu124 numpy>=1.26 -pandas>=2.2 matplotlib>=3.8 -scikit-learn>=1.4 -nibabel>=5.2 -tqdm>=4.66 -pillow>=10.3 \ No newline at end of file +pillow>=10.3 +scikit-learn>=1.4 \ No newline at end of file