From bb6c3e861a6273fc4eb03e92bf5a874d498a3c66 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:04:59 +0200 Subject: [PATCH 01/19] pred type --- learning/learner.py | 2 ++ train.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/learning/learner.py b/learning/learner.py index 2fcba69..9d74c59 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -72,6 +72,8 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va if args.is_pytorch_model : outputs = outputs['out'] #FIXME for DeepLab V3 preds = torch.argmax(outputs, 1) + print(type(preds)) + # print(type(preds)) # cross-entropy loss loss = criterion(outputs, labels) diff --git a/train.py b/train.py index b77e84d..42ec2e3 100644 --- a/train.py +++ b/train.py @@ -22,7 +22,7 @@ def main(): Dataset = MiniCity # Set up execution arguments - args = ARGS("DeepLabV3_MobileNetV3", "microcity", len(Dataset.validClasses), labels_type="csv", batch_size=2, epochs=40) + args = ARGS("DeepLabV3_MobileNetV3", "microcity", len(Dataset.validClasses), labels_type="csv", batch_size=2, epochs=2) # Get model model, args = get_model(args) From f2da40dcc14a31b45ccd1d30f9aca84e6d0ff441 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:10:39 +0200 Subject: [PATCH 02/19] preds size --- learning/learner.py | 2 +- train.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/learning/learner.py b/learning/learner.py index 9d74c59..e998aaa 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -73,7 +73,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va outputs = outputs['out'] #FIXME for DeepLab V3 preds = torch.argmax(outputs, 1) print(type(preds)) - # print(type(preds)) + print(preds.size) # cross-entropy loss loss = criterion(outputs, labels) diff --git a/train.py b/train.py index 42ec2e3..f2292a7 100644 --- a/train.py +++ b/train.py @@ -14,15 +14,15 @@ from helpers.helpers import plot_learning_curves from learning.learner import train_epoch, validate_epoch from learning.utils import get_dataloader -# from datasets.tunnel import Tunnel -from datasets.minicity import MiniCity +from datasets.tunnel import Tunnel +# from datasets.minicity import MiniCity def main(): # Get tunnel dataset - Dataset = MiniCity + Dataset = Tunnel # Set up execution arguments - args = ARGS("DeepLabV3_MobileNetV3", "microcity", len(Dataset.validClasses), labels_type="csv", batch_size=2, epochs=2) + args = ARGS("DeepLabV3_MobileNetV3", "tunnel", len(Dataset.validClasses), labels_type="csv", batch_size=2, epochs=2) # Get model model, args = get_model(args) From 3cf20a9a4ade85e87f8dcfffbbc48a283870cc39 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:14:26 +0200 Subject: [PATCH 03/19] update train script for test on tunnel --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f2292a7..8c8c5a3 100644 --- a/train.py +++ b/train.py @@ -22,7 +22,7 @@ def main(): Dataset = Tunnel # Set up execution arguments - args = ARGS("DeepLabV3_MobileNetV3", "tunnel", len(Dataset.validClasses), labels_type="csv", batch_size=2, epochs=2) + args = ARGS("DeepLabV3_MobileNetV3", "tunnel", len(Dataset.validClasses), labels_type="json", batch_size=2, epochs=2) # Get model model, args = get_model(args) From cef952c551b3328474b9ed9056efb920353da936 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:16:20 +0200 Subject: [PATCH 04/19] fix __read_json in tunnel --- datasets/tunnel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datasets/tunnel.py b/datasets/tunnel.py index 7f4c7c7..967fa1d 100644 --- a/datasets/tunnel.py +++ b/datasets/tunnel.py @@ -43,7 +43,7 @@ def __init__(self, root, split="train", labels_type="csv", transform=None, targe assert split in ["train","val","test"], "Unknown value {} for argument split.".format(split) if self.labels_type == "json": self.target_dir = os.path.join(self.root, "jsons") - self.__read_csv() + self.__read_json() elif self.labels_type == "csv": self.target_dir = os.path.join(self.root, "csvs") self.__read_csv() From 0da1da458f2ad7aa7c1e6e2500ae499a86855a46 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:18:29 +0200 Subject: [PATCH 05/19] fix pred shape --- learning/learner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learning/learner.py b/learning/learner.py index e998aaa..4f1d066 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -73,7 +73,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va outputs = outputs['out'] #FIXME for DeepLab V3 preds = torch.argmax(outputs, 1) print(type(preds)) - print(preds.size) + print(preds.shape) # cross-entropy loss loss = criterion(outputs, labels) From 0d459ffbb02054ef700911cb615668bfebcdfe94 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:21:14 +0200 Subject: [PATCH 06/19] show pred during traing --- learning/learner.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/learning/learner.py b/learning/learner.py index 4f1d066..4cb6a5a 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -41,6 +41,12 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va # Iterate over data. for epoch_step, (inputs, labels, _) in enumerate(dataloader): data_time.update(time.time()-end) + + #test + print(type(preds)) + print(preds.shape) + #end test + if args.copyblob: for i in range(inputs.size()[0]): rand_idx = np.random.randint(inputs.size()[0]) @@ -72,8 +78,15 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va if args.is_pytorch_model : outputs = outputs['out'] #FIXME for DeepLab V3 preds = torch.argmax(outputs, 1) + + #test print(type(preds)) print(preds.shape) + pred = preds[0, :, :] + plt.imshow(pred) + plt.show() + # end test + # cross-entropy loss loss = criterion(outputs, labels) From 8171f9cffdc34efe2a7c11fe7682e55af4bf94ce Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:22:27 +0200 Subject: [PATCH 07/19] print inputs data --- learning/learner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/learning/learner.py b/learning/learner.py index 4cb6a5a..e919f4c 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -43,8 +43,8 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va data_time.update(time.time()-end) #test - print(type(preds)) - print(preds.shape) + print(type(inputs)) + print(inputs.shape) #end test if args.copyblob: From 19fe4ee85b06a68838c7507955d840c44157f619 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:24:02 +0200 Subject: [PATCH 08/19] add cpu convert --- learning/learner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learning/learner.py b/learning/learner.py index e919f4c..eec8b37 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -82,7 +82,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va #test print(type(preds)) print(preds.shape) - pred = preds[0, :, :] + pred = preds[0, :, :].cpu() plt.imshow(pred) plt.show() # end test From eda853c07d732162bb13502d7eb465630bc83a4c Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:32:13 +0200 Subject: [PATCH 09/19] save image for each epoch --- learning/learner.py | 11 +++++++++-- train.py | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/learning/learner.py b/learning/learner.py index eec8b37..2ffc75b 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -43,6 +43,9 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va data_time.update(time.time()-end) #test + fig, (ax0, ax1, ax2) = plt.subplots(1, 3) + ax0.imshow(inputs[0, :, :, :]) + ax0.set_title("Image d'origine") print(type(inputs)) print(inputs.shape) #end test @@ -83,8 +86,12 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va print(type(preds)) print(preds.shape) pred = preds[0, :, :].cpu() - plt.imshow(pred) - plt.show() + ax1.imshow(pred) + ax1.set_title("Prédiction") + ax2.imshow(pred) + ax2.imshow(pred, alpha=0.6) + ax2.set_title("Superposition de l'image avec la prédiction") + fig.savefig(os.path.join(args.save_path, "inference", str(epoch)+".png")) # end test # cross-entropy loss diff --git a/train.py b/train.py index 8c8c5a3..37d13dc 100644 --- a/train.py +++ b/train.py @@ -22,7 +22,7 @@ def main(): Dataset = Tunnel # Set up execution arguments - args = ARGS("DeepLabV3_MobileNetV3", "tunnel", len(Dataset.validClasses), labels_type="json", batch_size=2, epochs=2) + args = ARGS("DeepLabV3_MobileNetV3", "tunnel", len(Dataset.validClasses), labels_type="json", batch_size=4, epochs=60) # Get model model, args = get_model(args) From b97ca5277fd9cd334ecc26abe107fbbe8ee058b3 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:35:53 +0200 Subject: [PATCH 10/19] image format update --- learning/learner.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/learning/learner.py b/learning/learner.py index 2ffc75b..28f13ef 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -44,6 +44,9 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va #test fig, (ax0, ax1, ax2) = plt.subplots(1, 3) + image = inputs.numpy() + image = images[0, :, :, :] + image = image.transpose(1, 2, 0) ax0.imshow(inputs[0, :, :, :]) ax0.set_title("Image d'origine") print(type(inputs)) From 4666647e2ff6e9acfa0afa36758e923df18f6f8e Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:36:27 +0200 Subject: [PATCH 11/19] fix images --- learning/learner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learning/learner.py b/learning/learner.py index 28f13ef..8d891d0 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -44,7 +44,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va #test fig, (ax0, ax1, ax2) = plt.subplots(1, 3) - image = inputs.numpy() + images = inputs.numpy() image = images[0, :, :, :] image = image.transpose(1, 2, 0) ax0.imshow(inputs[0, :, :, :]) From 924388e85da14103a6a811a12d9401478370159e Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:37:00 +0200 Subject: [PATCH 12/19] show image --- learning/learner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learning/learner.py b/learning/learner.py index 8d891d0..53f19c8 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -47,7 +47,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va images = inputs.numpy() image = images[0, :, :, :] image = image.transpose(1, 2, 0) - ax0.imshow(inputs[0, :, :, :]) + ax0.imshow(image) ax0.set_title("Image d'origine") print(type(inputs)) print(inputs.shape) From 81ca2c91a519f561ee5968f1f7ebb933f447ea45 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:39:21 +0200 Subject: [PATCH 13/19] add mkdir during training --- learning/learner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/learning/learner.py b/learning/learner.py index 53f19c8..e5cf4b2 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -94,6 +94,8 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va ax2.imshow(pred) ax2.imshow(pred, alpha=0.6) ax2.set_title("Superposition de l'image avec la prédiction") + if not os.isdir(os.path.join(args.save_path, "inference"): + os.makedirs(os.path.join(args.save_path, "inference", ) fig.savefig(os.path.join(args.save_path, "inference", str(epoch)+".png")) # end test From 2285ebcefe88e48902444730e2b85a18b09c09e8 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:40:02 +0200 Subject: [PATCH 14/19] fix mkdir during training --- learning/learner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/learning/learner.py b/learning/learner.py index e5cf4b2..ad02cc7 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -94,8 +94,8 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va ax2.imshow(pred) ax2.imshow(pred, alpha=0.6) ax2.set_title("Superposition de l'image avec la prédiction") - if not os.isdir(os.path.join(args.save_path, "inference"): - os.makedirs(os.path.join(args.save_path, "inference", ) + if not os.isdir(os.path.join(args.save_path, "inference")): + os.makedirs(os.path.join(args.save_path, "inference")) fig.savefig(os.path.join(args.save_path, "inference", str(epoch)+".png")) # end test From 78fc6260b773a3c8510f65e779b8dffc4104bebf Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:40:36 +0200 Subject: [PATCH 15/19] fix test for mkdir during training --- learning/learner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learning/learner.py b/learning/learner.py index ad02cc7..4fdfe08 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -94,7 +94,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va ax2.imshow(pred) ax2.imshow(pred, alpha=0.6) ax2.set_title("Superposition de l'image avec la prédiction") - if not os.isdir(os.path.join(args.save_path, "inference")): + if not os.path.isdir(os.path.join(args.save_path, "inference")): os.makedirs(os.path.join(args.save_path, "inference")) fig.savefig(os.path.join(args.save_path, "inference", str(epoch)+".png")) # end test From 257f7cca6572d115376935efd9a0e3e28cc6d75a Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:50:59 +0200 Subject: [PATCH 16/19] upadte test train script --- learning/learner.py | 3 ++- train.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/learning/learner.py b/learning/learner.py index 4fdfe08..be95c74 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -48,6 +48,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va image = images[0, :, :, :] image = image.transpose(1, 2, 0) ax0.imshow(image) + ax2.imshow(image) ax0.set_title("Image d'origine") print(type(inputs)) print(inputs.shape) @@ -92,7 +93,7 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va ax1.imshow(pred) ax1.set_title("Prédiction") ax2.imshow(pred) - ax2.imshow(pred, alpha=0.6) + ax2.imshow(pred, alpha=0.5) ax2.set_title("Superposition de l'image avec la prédiction") if not os.path.isdir(os.path.join(args.save_path, "inference")): os.makedirs(os.path.join(args.save_path, "inference")) diff --git a/train.py b/train.py index 37d13dc..0b7a05f 100644 --- a/train.py +++ b/train.py @@ -22,7 +22,7 @@ def main(): Dataset = Tunnel # Set up execution arguments - args = ARGS("DeepLabV3_MobileNetV3", "tunnel", len(Dataset.validClasses), labels_type="json", batch_size=4, epochs=60) + args = ARGS("DeepLabV3_Resnet50", "tunnel", len(Dataset.validClasses), labels_type="json", batch_size=4, epochs=100) # Get model model, args = get_model(args) From 7bc7a54f12a42d350bf5dbf6c1b6401ac9b533ad Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 12:52:35 +0200 Subject: [PATCH 17/19] fix image show and pred show --- learning/learner.py | 1 - 1 file changed, 1 deletion(-) diff --git a/learning/learner.py b/learning/learner.py index be95c74..e5e3d12 100644 --- a/learning/learner.py +++ b/learning/learner.py @@ -92,7 +92,6 @@ def train_epoch(dataloader, model, criterion, optimizer, lr_scheduler, epoch, va pred = preds[0, :, :].cpu() ax1.imshow(pred) ax1.set_title("Prédiction") - ax2.imshow(pred) ax2.imshow(pred, alpha=0.5) ax2.set_title("Superposition de l'image avec la prédiction") if not os.path.isdir(os.path.join(args.save_path, "inference")): From e336c17aa240e4a59439054c208d1dfd5db8f2d9 Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Fri, 13 Aug 2021 14:48:54 +0200 Subject: [PATCH 18/19] tranform image value to float --- datasets/tunnel.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/datasets/tunnel.py b/datasets/tunnel.py index 967fa1d..316658f 100644 --- a/datasets/tunnel.py +++ b/datasets/tunnel.py @@ -62,6 +62,8 @@ def __getitem__(self, index): draw.polygon(e[0], fill=classToVal[e[1]]) image = np.array(image) image = image.transpose(2, 0, 1) + # int to float to fix training + image = image/255 target = np.array(target)[:, :, 0] return image, target, filepath From 902612d81b507634edfbe88083cdd47674703f9f Mon Sep 17 00:00:00 2001 From: MalondaClement <46990837+MalondaClement@users.noreply.github.com> Date: Thu, 28 Oct 2021 15:09:43 +0200 Subject: [PATCH 19/19] fix inference --- README.md | 2 +- inference.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 41a076b..2be2c79 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ You can read the documentation [here](https://github.com/MalondaClement/pipeline ## 2. How to use the pipeline -```python +```bash git clone https://github.com/MalondaClement/pipeline.git ``` diff --git a/inference.py b/inference.py index d2d3b7c..fcc59c3 100644 --- a/inference.py +++ b/inference.py @@ -24,7 +24,7 @@ def main(): args = ARGS("DeepLabV3_Resnet50", "tunnel", len(Dataset.validClasses), labels_type="csv", batch_size=2, epochs=2) model, args = get_model(args) - args.save_path = "path" + args.save_path = "../" checkpoint = torch.load(os.path.join(args.save_path, "best_weights.pth.tar"), map_location=torch.device('cpu')) @@ -44,15 +44,19 @@ def main(): times = list() start = time.time() - for i, file in enumerate(os.listdir("images_inf_path")): + for i, file in enumerate(os.listdir("/Users/ClementMalonda/Desktop/img_inf")): + if file[-4:] != ".png": + continue start = time.time() - img = Image.open(os.path.join("images_inf_path",file)) + img = Image.open(os.path.join("/Users/ClementMalonda/Desktop/img_inf",file)) img = np.array(img) img = img[:,:,:3] + img = img/255 input = ToTensor()(img) input = input.unsqueeze(0) + input = input.float() with torch.no_grad(): output = model(input) if args.is_pytorch_model: