From 5123f20558e35eaa5317df4bbd0ee330a931d26e Mon Sep 17 00:00:00 2001
From: Schneider Leo <leo.schneider@etu.ec-lyon.fr>
Date: Wed, 12 Mar 2025 16:19:51 +0100
Subject: [PATCH] model duo

---
 dataset/dataset.py       |  16 ++---
 main.py                  | 122 ++++++++++++++++++++++++++++++++++++++-
 models/model.py          |  20 ++++++-
 output/training_plot.png | Bin 32587 -> 0 bytes
 4 files changed, 146 insertions(+), 12 deletions(-)
 delete mode 100644 output/training_plot.png

diff --git a/dataset/dataset.py b/dataset/dataset.py
index e5a1a7b..b937657 100644
--- a/dataset/dataset.py
+++ b/dataset/dataset.py
@@ -86,7 +86,7 @@ def default_loader(path):
     return Image.open(path).convert('RGB')
 
 def remove_aer_ana(l):
-    l = l.map(lambda x : x.split('_')[0])
+    l = map(lambda x : x.split('_')[0],l)
     return list(OrderedDict.fromkeys(l))
 
 def make_dataset_custom(
@@ -118,7 +118,7 @@ def make_dataset_custom(
     if extensions is not None:
 
         def is_valid_file(x: str) -> bool:
-            return has_file_allowed_extension(x, extensions)  # type: ignore[arg-type]
+            return torchvision.datasets.folder.has_file_allowed_extension(x, extensions)  # type: ignore[arg-type]
 
     is_valid_file = cast(Callable[[str], bool], is_valid_file)
 
@@ -136,7 +136,7 @@ def make_dataset_custom(
                 fname_aer = fname + '_AER.png'
                 path_ana = os.path.join(root, fname_ana)
                 path_aer = os.path.join(root, fname_aer)
-                if is_valid_file(path_ana) and is_valid_file(path_aer):
+                if is_valid_file(path_ana) and is_valid_file(path_aer) and os.path.isfile(path_ana) and os.path.isfile(path_aer):
                     item = path_aer, path_ana, class_index
                     instances.append(item)
 
@@ -161,12 +161,12 @@ class ImageFolderDuo(data.Dataset):
         self.transform = transform
         self.target_transform = target_transform
         self.loader = loader
-        self.classes = torchvision.datasets.folder.find_classes(root)
+        self.classes = torchvision.datasets.folder.find_classes(root)[0]
 
     def __getitem__(self, index):
         impathAER, impathANA, target = self.imlist[index]
-        imgAER = self.loader(os.path.join(self.root, impathAER))
-        imgANA = self.loader(os.path.join(self.root, impathANA))
+        imgAER = self.loader(impathAER)
+        imgANA = self.loader(impathANA)
         if self.transform is not None:
             imgAER = self.transform(imgAER)
             imgANA = self.transform(imgANA)
@@ -196,8 +196,8 @@ def load_data_duo(base_dir, batch_size, shuffle=True, noise_threshold=0):
          Log_normalisation(),
          transforms.Normalize(0.5, 0.5)])
     print('Default val transform')
-    train_dataset = torchvision.datasets.ImageFolderDuo(root=base_dir, transform=train_transform)
-    val_dataset = torchvision.datasets.ImageFolderDuo(root=base_dir, transform=val_transform)
+    train_dataset = ImageFolderDuo(root=base_dir, transform=train_transform)
+    val_dataset = ImageFolderDuo(root=base_dir, transform=val_transform)
     generator1 = torch.Generator().manual_seed(42)
     indices = torch.randperm(len(train_dataset), generator=generator1)
     val_size = len(train_dataset) // 5
diff --git a/main.py b/main.py
index 13946a3..84240bf 100644
--- a/main.py
+++ b/main.py
@@ -2,10 +2,10 @@ import matplotlib.pyplot as plt
 import numpy as np
 
 from config.config import load_args
-from dataset.dataset import load_data
+from dataset.dataset import load_data, load_data_duo
 import torch
 import torch.nn as nn
-from models.model import Classification_model
+from models.model import Classification_model, Classification_model_duo
 import torch.optim as optim
 from sklearn.metrics import confusion_matrix
 import seaborn as sn
@@ -88,6 +88,7 @@ def run(args):
     plt.plot(val_acc)
     plt.plot(train_acc)
     plt.plot(train_acc)
+    plt.ylim(0, 1.05)
     plt.show()
     plt.savefig('output/training_plot_noise_{}_lr_{}_model_{}.png'.format(args.noise_threshold,args.lr,args.model))
 
@@ -124,6 +125,121 @@ def make_prediction(model, data, f_name):
     plt.savefig(f_name)
 
 
+def train_duo(model, data_train, optimizer, loss_function, epoch):
+    model.train()
+    losses = 0.
+    acc = 0.
+    for param in model.parameters():
+        param.requires_grad = True
+
+    for imaer,imana, label in data_train:
+        label = label.long()
+        if torch.cuda.is_available():
+            imaer = imaer.cuda()
+            imana = imana.cuda()
+        pred_logits = model.forward(imaer,imana)
+        pred_class = torch.argmax(pred_logits,dim=1)
+        acc += (pred_class==label).sum().item()
+        loss = loss_function(pred_logits,label)
+        losses += loss.item()
+        optimizer.zero_grad()
+        loss.backward()
+        optimizer.step()
+    losses = losses/len(data_train.dataset)
+    acc = acc/len(data_train.dataset)
+    print('Train epoch {}, loss : {:.3f} acc : {:.3f}'.format(epoch,losses,acc))
+    return losses, acc
+
+def test_duo(model, data_test, loss_function, epoch):
+    model.eval()
+    losses = 0.
+    acc = 0.
+    for param in model.parameters():
+        param.requires_grad = False
+
+    for imaer,imana, label in data_test:
+        label = label.long()
+        if torch.cuda.is_available():
+            imaer = imaer.cuda()
+            imana = imana.cuda()
+        pred_logits = model.forward(imaer,imana)
+        pred_class = torch.argmax(pred_logits,dim=1)
+        acc += (pred_class==label).sum().item()
+        loss = loss_function(pred_logits,label)
+        losses += loss.item()
+    losses = losses/len(data_test.dataset)
+    acc = acc/len(data_test.dataset)
+    print('Test epoch {}, loss : {:.3f} acc : {:.3f}'.format(epoch,losses,acc))
+    return losses,acc
+
+def run_duo(args):
+    data_train, data_test = load_data_duo(base_dir=args.dataset_dir, batch_size=args.batch_size)
+    model = Classification_model_duo(model = args.model, n_class=len(data_train.dataset.dataset.classes))
+    if args.pretrain_path is not None :
+        load_model(model,args.pretrain_path)
+    if torch.cuda.is_available():
+        model = model.cuda()
+    best_acc = 0
+    train_acc=[]
+    train_loss=[]
+    val_acc=[]
+    val_loss=[]
+    loss_function = nn.CrossEntropyLoss()
+    optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
+
+    for e in range(args.epoches):
+        loss, acc = train_duo(model,data_train,optimizer,loss_function,e)
+        train_loss.append(loss)
+        train_acc.append(acc)
+        if e%args.eval_inter==0 :
+            loss, acc = test_duo(model,data_test,loss_function,e)
+            val_loss.append(loss)
+            val_acc.append(acc)
+            if acc > best_acc :
+                save_model(model,args.save_path)
+                best_acc = acc
+    plt.plot(train_acc)
+    plt.plot(val_acc)
+    plt.plot(train_acc)
+    plt.plot(train_acc)
+    plt.ylim(0, 1.05)
+    plt.show()
+    plt.savefig('output/training_plot_noise_{}_lr_{}_model_{}.png'.format(args.noise_threshold,args.lr,args.model))
+
+    load_model(model, args.save_path)
+    make_prediction_duo(model,data_test, 'output/confusion_matrix_noise_{}_lr_{}_model_{}.png'.format(args.noise_threshold,args.lr,args.model))
+
+
+def make_prediction_duo(model, data, f_name):
+    y_pred = []
+    y_true = []
+
+    # iterate over test data
+    for imaer,imana, label in data:
+        label = label.long()
+        if torch.cuda.is_available():
+            imaer = imaer.cuda()
+            imana = imana.cuda()
+        output = model(imaer,imana)
+
+        output = (torch.max(torch.exp(output), 1)[1]).data.cpu().numpy()
+        y_pred.extend(output)
+
+        label = label.data.cpu().numpy()
+        y_true.extend(label)  # Save Truth
+    # constant for classes
+
+    classes = data.dataset.dataset.classes
+
+    # Build confusion matrix
+    cf_matrix = confusion_matrix(y_true, y_pred)
+    df_cm = pd.DataFrame(cf_matrix / np.sum(cf_matrix, axis=1)[:, None], index=[i for i in classes],
+                         columns=[i for i in classes])
+    plt.figure(figsize=(12, 7))
+    sn.heatmap(df_cm, annot=True)
+    plt.savefig(f_name)
+
+
 def save_model(model, path):
     print('Model saved')
     torch.save(model.state_dict(), path)
@@ -135,4 +251,4 @@ def load_model(model, path):
 
 if __name__ == '__main__':
     args = load_args()
-    run(args)
\ No newline at end of file
+    run_duo(args)
\ No newline at end of file
diff --git a/models/model.py b/models/model.py
index 1921203..cea9caa 100644
--- a/models/model.py
+++ b/models/model.py
@@ -270,4 +270,22 @@ class Classification_model(nn.Module):
 
 
     def forward(self, input):
-        return self.im_encoder(input)
\ No newline at end of file
+        return self.im_encoder(input)
+
+class Classification_model_duo(nn.Module):
+
+    def __init__(self, model, n_class, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        self.n_class = n_class
+        if model =='ResNet18':
+            self.im_encoder = resnet18(num_classes=self.n_class)
+
+        self.predictor = nn.Linear(in_features=self.n_class*2,out_features=self.n_class)
+
+
+    def forward(self, input_aer, input_ana):
+        out_aer =  self.im_encoder(input_aer)
+        out_ana = self.im_encoder(input_ana)
+        out = torch.concat([out_aer,out_ana],dim=1)
+        return self.predictor(out)
+
diff --git a/output/training_plot.png b/output/training_plot.png
deleted file mode 100644
index 98bd0695f3fa500dbed85dc1907b46a8c6efac46..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 32587
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

-- 
GitLab