From e255b70c2551d70c42ececbb71d7979788d39f69 Mon Sep 17 00:00:00 2001
From: Hamid <hamidriasat@gmail.com>
Date: Mon, 20 Feb 2023 17:51:39 +0500
Subject: [PATCH 1/3] adding UNet3+ support for Tensorflow 2.0

---
 TensorFlow2/Segmentation/UNet3P/.gitignore    |  18 +
 TensorFlow2/Segmentation/UNet3P/Dockerfile    |  15 +
 TensorFlow2/Segmentation/UNet3P/LICENSE       |  21 ++
 TensorFlow2/Segmentation/UNet3P/README.md     | 318 ++++++++++++++++++
 .../UNet3P/benchmark_inference.py             | 101 ++++++
 .../UNet3P/callbacks/timing_callback.py       |  30 ++
 .../UNet3P/checkpoint/tb_logs/.gitkeep        |   0
 .../Segmentation/UNet3P/configs/README.md     |  86 +++++
 .../Segmentation/UNet3P/configs/config.yaml   | 118 +++++++
 .../UNet3P/data/Training Batch 1/.gitkeep     |   0
 .../UNet3P/data/Training Batch 2/.gitkeep     |   0
 .../Segmentation/UNet3P/data/train/.gitkeep   |   0
 .../Segmentation/UNet3P/data/val/.gitkeep     |   0
 .../UNet3P/data_generators/README.md          |  44 +++
 .../data_generators/dali_data_generator.py    | 264 +++++++++++++++
 .../UNet3P/data_generators/data_generator.py  |  88 +++++
 .../data_generators/tf_data_generator.py      | 179 ++++++++++
 .../UNet3P/data_preparation/README.md         | 102 ++++++
 .../delete_extracted_scans_data.sh            |   2 +
 .../data_preparation/delete_zip_data.sh       |   2 +
 .../UNet3P/data_preparation/extract_data.sh   |   9 +
 .../data_preparation/preprocess_data.py       | 242 +++++++++++++
 .../UNet3P/data_preparation/verify_data.py    |  56 +++
 TensorFlow2/Segmentation/UNet3P/evaluate.py   | 125 +++++++
 .../UNet3P/figures/unet3p_architecture.png    | Bin 0 -> 87012 bytes
 .../Segmentation/UNet3P/losses/loss.py        | 114 +++++++
 .../Segmentation/UNet3P/losses/unet_loss.py   |  19 ++
 .../Segmentation/UNet3P/models/backbones.py   |  73 ++++
 .../Segmentation/UNet3P/models/model.py       | 100 ++++++
 .../Segmentation/UNet3P/models/unet3plus.py   | 104 ++++++
 .../models/unet3plus_deep_supervision.py      | 132 ++++++++
 .../models/unet3plus_deep_supervision_cgm.py  | 138 ++++++++
 .../UNet3P/models/unet3plus_utils.py          |  31 ++
 TensorFlow2/Segmentation/UNet3P/predict.ipynb | 247 ++++++++++++++
 TensorFlow2/Segmentation/UNet3P/predict.py    | 101 ++++++
 .../Segmentation/UNet3P/requirements.txt      |   7 +
 TensorFlow2/Segmentation/UNet3P/train.py      | 215 ++++++++++++
 .../UNet3P/utils/general_utils.py             | 123 +++++++
 .../Segmentation/UNet3P/utils/images_utils.py | 118 +++++++
 39 files changed, 3342 insertions(+)
 create mode 100644 TensorFlow2/Segmentation/UNet3P/.gitignore
 create mode 100644 TensorFlow2/Segmentation/UNet3P/Dockerfile
 create mode 100644 TensorFlow2/Segmentation/UNet3P/LICENSE
 create mode 100644 TensorFlow2/Segmentation/UNet3P/README.md
 create mode 100644 TensorFlow2/Segmentation/UNet3P/benchmark_inference.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/callbacks/timing_callback.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/checkpoint/tb_logs/.gitkeep
 create mode 100644 TensorFlow2/Segmentation/UNet3P/configs/README.md
 create mode 100644 TensorFlow2/Segmentation/UNet3P/configs/config.yaml
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data/Training Batch 1/.gitkeep
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data/Training Batch 2/.gitkeep
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data/train/.gitkeep
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data/val/.gitkeep
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_generators/README.md
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_generators/dali_data_generator.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_generators/data_generator.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_generators/tf_data_generator.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_preparation/README.md
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_preparation/delete_extracted_scans_data.sh
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_preparation/delete_zip_data.sh
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_preparation/extract_data.sh
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_preparation/preprocess_data.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/data_preparation/verify_data.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/evaluate.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/figures/unet3p_architecture.png
 create mode 100644 TensorFlow2/Segmentation/UNet3P/losses/loss.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/losses/unet_loss.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/models/backbones.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/models/model.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/models/unet3plus.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision_cgm.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/models/unet3plus_utils.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/predict.ipynb
 create mode 100644 TensorFlow2/Segmentation/UNet3P/predict.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/requirements.txt
 create mode 100644 TensorFlow2/Segmentation/UNet3P/train.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/utils/general_utils.py
 create mode 100644 TensorFlow2/Segmentation/UNet3P/utils/images_utils.py

diff --git a/TensorFlow2/Segmentation/UNet3P/.gitignore b/TensorFlow2/Segmentation/UNet3P/.gitignore
new file mode 100644
index 000000000..60d8f9716
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/.gitignore
@@ -0,0 +1,18 @@
+.idea
+__pycache__
+
+checkpoint/tb_logs/*
+checkpoint/*.hdf5
+checkpoint/*.csv
+!checkpoint/tb_logs/.gitkeep
+
+#data/*
+/data/**/*.png
+/data/**/*.jpg
+/data/**/*.nii
+!data/**/.gitkeep
+
+data_preparation/verify_preprocess_data.ipynb
+old_data_preperation/
+others/
+**/outputs
\ No newline at end of file
diff --git a/TensorFlow2/Segmentation/UNet3P/Dockerfile b/TensorFlow2/Segmentation/UNet3P/Dockerfile
new file mode 100644
index 000000000..498695855
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/Dockerfile
@@ -0,0 +1,15 @@
+ARG FROM_IMAGE_NAME=nvcr.io/nvidia/tensorflow:22.12-tf2-py3
+FROM ${FROM_IMAGE_NAME}
+
+ADD . /workspace/unet3p
+WORKDIR /workspace/unet3p
+
+RUN pip install -r requirements.txt
+
+#For opencv, inside docker run these commands
+RUN apt-get update
+RUN apt-get install ffmpeg libsm6 libxext6  -y
+
+# reinstall jupyterlab
+RUN pip uninstall jupyterlab -y
+RUN pip install jupyterlab
diff --git a/TensorFlow2/Segmentation/UNet3P/LICENSE b/TensorFlow2/Segmentation/UNet3P/LICENSE
new file mode 100644
index 000000000..45f5ea544
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Hamid Ali
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/TensorFlow2/Segmentation/UNet3P/README.md b/TensorFlow2/Segmentation/UNet3P/README.md
new file mode 100644
index 000000000..988770ca3
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/README.md
@@ -0,0 +1,318 @@
+# UNet 3+: A Full-Scale Connected UNet for Medical Image Segmentation
+
+[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/unet-3-a-full-scale-connected-unet-for/medical-image-segmentation-on-lits2017)](https://paperswithcode.com/sota/medical-image-segmentation-on-lits2017?p=unet-3-a-full-scale-connected-unet-for)
+
+This repository provides a script and recipe to train UNet3+ to achieve state of the art accuracy.
+
+[//]: # (, and is tested and maintained by NVIDIA.)
+
+## Table of Contents
+
+- [UNet 3+](https://arxiv.org/abs/2004.08790) for Image Segmentation in Tensorflow 2.0.
+    - [Table of Contents](#table-of-contents)
+    - [Feature Support Matrix](#feature-support-matrix)
+    - [Installation](#installation)
+    - [Code Structure](#code-structure)
+    - [Config](#config)
+    - [Data Preparation](#data-preparation)
+    - [Models](#models)
+    - [Performance](#performance)
+    - [Inference Demo](#inference-demo)
+    - [Known issues](#known-issues)
+    - [Release notes](#release-notes)
+
+## Feature Support Matrix
+
+The following features are supported by our code base:
+
+|                  Feature                   | UNet3+ Supports |
+|:------------------------------------------:|:---------------:|
+|                    DALI                    |     &check;     |
+|       TensorFlow Multi-GPU Training        |     &check;     |
+| TensorFlow Automatic Mixed Precision(AMP)  |     &check;     |
+| TensorFlow Accelerated Linear Algebra(XLA) |     &check;     |
+
+#### [NVIDIA DALI](https://docs.nvidia.com/deeplearning/dali/user-guide/docs/index.html)
+
+The NVIDIA Data Loading Library (DALI) is a library for data loading and
+pre-processing to accelerate deep learning applications. It provides a
+collection of highly optimized building blocks for loading and processing
+image, video and audio data. It can be used as a portable drop-in
+replacement for built in data loaders and data iterators in popular deep
+learning frameworks.
+
+#### [TensorFlow Multi-GPU Training](https://www.tensorflow.org/guide/distributed_training)
+
+Distribute training across multiple GPUs, multiple machines, or TPUs.
+
+#### [TensorFlow Automatic Mixed Precision(AMP)](https://www.tensorflow.org/guide/mixed_precision)
+
+Mixed precision is the use of both 16-bit and 32-bit floating-point types in a model during training to make it run
+faster and use less memory. By keeping certain parts of the model in the 32-bit types for numeric stability, the model
+will have a lower step time and train equally as well in terms of the evaluation metrics such as accuracy.
+
+#### [TensorFlow Accelerated Linear Algebra(XLA)](https://www.tensorflow.org/xla)
+
+In a TensorFlow program, all of the operations are executed individually by the TensorFlow executor. Each TensorFlow
+operation has a precompiled GPU kernel implementation that the executor dispatches to.
+XLA provides an alternative mode of running models: it compiles the TensorFlow graph into a sequence of computation
+kernels generated specifically for the given model. Because these kernels are unique to the model, they can exploit
+model-specific information for optimization.
+
+For details on how to enable these features while training and evaluation see [Benchmarking](#benchmarking) section.
+
+## Installation
+
+* Clone code
+
+```
+git clone https://github.com/hamidriasat/NVIDIA-DeepLearningExamples.git
+cd NVIDIA-DeepLearningExamples/TensorFlow2/Segmentation/UNet3P/
+```
+
+* Build the UNet3P TensorFlow NGC container
+  From `Dockerfile` this will create a docker image with name `unet3p`. This image will contain all the components
+  required to successfully run the UNet3+ code.
+
+```
+docker build -t unet3p .
+```
+
+The NGC container contains all the components optimized for usage on NVIDIA hardware.
+
+* Start an interactive session in the NGC container
+
+To run preprocessing/training/inference, following command will launch the container and mount the current directory
+to `/workspace/unet3p` as a volume in the container
+
+```
+docker run --rm -it --shm-size=1g --ulimit memlock=-1 --pids-limit=8192 --gpus all -p 5012:8888 -v $PWD/:/workspace/unet3p --name unet3p unet3p:latest /bin/bash
+```
+
+Here we are mapping external port `5012` to `8888` inside docker. This will be used for visualization purpose.
+
+## Code Structure
+
+- **callbacks**: Custom callbacks to monitor training time, latency and throughput
+- **checkpoint**: Model checkpoint and logs directory
+- **configs**: Configuration file (see [Config](#config) for more details)
+- **data**: Dataset files (see [Data Preparation](#data-preparation) for more details)
+- **data_generators**: Data loaders for UNet3+ (see [Data Generators](#data-generators) for more details)
+- **data_preparation**: For LiTS data preparation and data verification
+- **figures**: Model architecture image
+- **losses**: Implementations of UNet3+ hybrid loss function and dice coefficient
+- **models**: Unet3+ model files (see [Models](#models) for more details)
+- **utils**: Generic utility functions
+- **benchmark_inference.py**: Benchmark script to output model throughput and latency while inference
+- **evaluate.py**: Evaluation script to validate accuracy on trained model
+- **predict.ipynb**: Prediction file used to visualize model output inside notebook(helpful for remote server
+  visualization)
+- **predict.py**: Prediction script used to visualize model output
+- **train.py**: Training script
+
+## Data Preparation
+
+- This code can be used to reproduce UNet3+ paper results
+  on [LiTS - Liver Tumor Segmentation Challenge](https://competitions.codalab.org/competitions/15595).
+- You can also use it to train UNet3+ on custom dataset.
+
+For dataset preparation read [here](data_preparation/README.md).
+
+## Config
+
+Configurations are passed through `yaml` file. For more details on config file read [here](configs/).
+
+## Data Generators
+
+We support two types of data loaders. `NVIDIA DALI` and `TensorFlow Sequence`
+generators. For more details on supported generator types read [here](data_generators/).
+
+## Models
+
+UNet 3+ is latest from Unet family, proposed for semantic image segmentation. it takes advantage of full-scale skip
+connections and deep supervisions.The full-scale skip connections incorporate low-level details with high-level
+semantics from feature maps in different scales; while the deep supervision learns hierarchical representations from the
+full-scale aggregated feature maps.
+
+![alt text](figures/unet3p_architecture.png)
+
+Figure 1. UNet3+ architecture diagram from [original paper](https://arxiv.org/abs/2004.08790).
+
+This repo contains all three versions of UNet3+.
+
+| #   |                          Description                          |                            Model Name                             | Training Supported |
+|:----|:-------------------------------------------------------------:|:-----------------------------------------------------------------:|:------------------:|
+| 1   |                       UNet3+ Base model                       |                 [unet3plus](models/unet3plus.py)                  |      &check;       |
+| 2   |                 UNet3+ with Deep Supervision                  |     [unet3plus_deepsup](models/unet3plus_deep_supervision.py)     |      &check;       |
+| 3   | UNet3+ with Deep Supervision and Classification Guided Module | [unet3plus_deepsup_cgm](models/unet3plus_deep_supervision_cgm.py) |      &cross;       |
+
+Available backbones are `unet3plus`, `vgg16` and  `vgg19`. All backbones are untrained networks.
+
+In our case all results are reported using `vgg19` backbone and  `unet3plus` variant.
+
+[Here](losses/unet_loss.py) you can find UNet3+ hybrid loss.
+
+## Performance
+
+### Benchmarking
+
+The following section shows how to run benchmarks to measure the model performance in training and inference modes.
+
+#### Training performance benchmark
+
+Run the `python train.py` script with the required model configurations to print training benchmark results for each
+model
+configuration. At the end of the training, a line reporting the training throughput and latency will be printed.
+
+To calculate dice score on trained model call `python evaluate.py` with required parameters.
+
+##### Example 1
+
+To train base model `unet3plus` with `vgg19` backbone on `single GPU`
+using `TensorFlow Sequence Generator` without `Automatic Mixed Precision(AMP)` and `Accelerated Linear Algebra(XLA)` run
+
+```
+python train.py MODEL.TYPE=unet3plus MODEL.BACKBONE.TYPE=vgg19 \
+USE_MULTI_GPUS.VALUE=False \
+DATA_GENERATOR_TYPE=TF_GENERATOR \
+OPTIMIZATION.AMP=False OPTIMIZATION.XLA=False
+```
+
+##### Example 2
+
+To train base model `unet3plus` with `vgg19` backbone on `multiple GPUs`
+using `TensorFlow Sequence Generator` without `Automatic Mixed Precision(AMP)` and `Accelerated Linear Algebra(XLA)` run
+
+```
+python train.py MODEL.TYPE=unet3plus MODEL.BACKBONE.TYPE=vgg19 \
+USE_MULTI_GPUS.VALUE=True USE_MULTI_GPUS.GPU_IDS=-1 \
+DATA_GENERATOR_TYPE=TF_GENERATOR \
+OPTIMIZATION.AMP=False OPTIMIZATION.XLA=False
+```
+
+##### Example 3
+
+To train base model `unet3plus` with `vgg19` backbone on `multiple GPUs`
+using `NVIDIA DALI Generator` with `Automatic Mixed Precision(AMP)` and `Accelerated Linear Algebra(XLA)` run
+
+```
+python train.py MODEL.TYPE=unet3plus MODEL.BACKBONE.TYPE=vgg19 \
+USE_MULTI_GPUS.VALUE=True USE_MULTI_GPUS.GPU_IDS=-1 \
+DATA_GENERATOR_TYPE=DALI_GENERATOR \
+OPTIMIZATION.AMP=True OPTIMIZATION.XLA=True
+```
+
+To evaluate/calculate dice accuracy of model pass same parameters to `evaluate.py` file. See [Config](#config) for
+complete hyper parameter details.
+
+Please check [Config](configs/config.yaml) file for more details about default training parameters.
+
+#### Inference performance benchmark
+
+To benchmark inference time, run the `python benchmark_inference.py` script with the required model configurations to
+print
+inference benchmark results for each model configuration. At the end, a line reporting the inference throughput and
+latency will be printed.
+
+For inference run without `data generator` and `GPUs` details but with `batch size`, `warmup_steps`
+and `bench_steps`
+parameters.
+
+```
+python benchmark_inference.py MODEL.TYPE=unet3plus MODEL.BACKBONE.TYPE=vgg19 \
+HYPER_PARAMETERS.BATCH_SIZE=16 \
+OPTIMIZATION.AMP=False OPTIMIZATION.XLA=False \
++warmup_steps=50 +bench_steps=100
+```
+
+Each of these scripts will by default run a warm-up for 50 iterations and then start benchmarking for another 100
+steps.
+You can adjust these settings with `+warmup_steps` and `+bench_steps` parameters.
+
+### Results
+
+The following section provide details of results that are achieved in different settings of model training and
+inference.
+
+#### Training accuracy results
+
+###### Training accuracy: NVIDIA DGX A100 (8xA100 80G)
+
+| #GPU | Generator |   XLA   |   AMP   | Training Time<br/>HH:MM:SS &darr; | Latency Avg [ms] &darr; | Throughput Avg [img/s] &uarr; | Speed Up  | Dice Score |
+|:----:|:---------:|:-------:|:-------:|:---------------------------------:|:-----------------------:|:-----------------------------:|:---------:|:----------:|
+|  1   |    TF     | &cross; | &cross; |            51:38:24.24            |         616.14          |             25.97             |    ---    |  0.96032   |
+|  8   |    TF     | &cross; | &cross; |             11:30:45              |         999.39          |            128.08             | 1x (base) |  0.95224   |
+|  8   |   DALI    | &cross; | &cross; |              6:23:43              |         614.26          |            208.38             |   1.8x    |  0.94566   |
+|  8   |   DALI    | &check; | &cross; |              7:33:15              |         692.71          |            184.78             |   1.5x    |  0.94806   |
+|  8   |   DALI    | &cross; | &check; |              3:49:55              |         357.34          |             358.2             |    3x     |  0.94786   |
+|  8   |   DALI    | &check; | &check; |              3:14:24              |         302.83          |            422.68             |   3.5x    |   0.9474   |
+
+Latency is reported in milliseconds per batch whereas throughput is reported in images per second.
+Speed Up comparison is efficiency achieved in terms of training time between different runs.
+
+Note: Training time includes time to load cuDNN in first iteration and the first epoch which take little longer as
+compared to later epochs because in first epoch tensorflow optimizes the training graph. In terms of latency and
+throughput it does not matter much because we have trained networks for 100 epochs which normalizes this during
+averaging.
+
+#### Inference performance results
+
+###### Inference performance: NVIDIA DGX A100 (1xA100 80G)
+
+| Batch Size |   XLA   |   AMP   | Latency Avg [ms] &darr; | Throughput Avg [img/s] &uarr; |
+|:----------:|:-------:|:-------:|:-----------------------:|:-----------------------------:|
+|     1      | &cross; | &cross; |          59.54          |             16.79             |
+|     1      | &check; | &cross; |          70.59          |             14.17             |
+|     1      | &cross; | &check; |          56.17          |             17.80             |
+|     1      | &check; | &check; |          55.54          |             18.16             |
+|     16     | &cross; | &cross; |         225.59          |             70.93             |
+|     16     | &check; | &cross; |         379.93          |             43.15             |
+|     16     | &cross; | &check; |         184.98          |             87.02             |
+|     16     | &check; | &check; |         153.65          |             103.6             |
+
+Inference results are tested on single gpu. Here data generator type does not matter because only prediction time
+is calculated and averaged between 5 runs.
+
+## Inference Demo
+
+Model output can be visualized from Jupyter Notebook. Use below command to start Jupyter Lab on port `8888`.
+
+```
+jupyter lab --no-browser --allow-root --ip=0.0.0.0 --port=8888
+```
+
+While starting container we mapped system port `5012` to `8888` inside docker.
+> Note: Make sure you have server network ip and port access in case you are working with remote sever.
+
+Now in browser go to link `http://<server ip here>:5012/` to access Jupyter Lab.
+Open [predict.ipynb](predict.ipynb) notebook and rerun the whole notebook to visualize model output.
+
+There are two options for visualization, you can
+
+1. Visualize from directory
+
+It's going to make prediction and show all images from given directory. Useful for detailed evaluation.
+
+2. Visualize from list
+
+It's going to make prediction on elements of given list. Use for testing on specific cases.
+
+For custom data visualization set `SHOW_CENTER_CHANNEL_IMAGE=False`. This should set True for only UNet3+ LiTS data.
+
+For further details on visualization options see [predict.ipynb](predict.ipynb) notebook.
+
+## Known issues
+
+There are no known issues in this release.
+
+## Release notes
+
+### Changelog
+
+Feb 2023
+
+- Initial release
+
+We appreciate any feedback so reporting problems, and asking questions are welcomed here.
+
+Licensed under [MIT License](LICENSE)
diff --git a/TensorFlow2/Segmentation/UNet3P/benchmark_inference.py b/TensorFlow2/Segmentation/UNet3P/benchmark_inference.py
new file mode 100644
index 000000000..468607674
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/benchmark_inference.py
@@ -0,0 +1,101 @@
+"""
+Script to benchmark model throughput and latency
+"""
+import os
+import numpy as np
+from tqdm import tqdm
+from timeit import default_timer as timer
+import hydra
+from omegaconf import DictConfig
+import tensorflow as tf
+from tensorflow.keras import mixed_precision
+
+from data_generators import tf_data_generator
+from utils.general_utils import join_paths, suppress_warnings
+from utils.images_utils import postprocess_mask
+from models.model import prepare_model
+
+
+def benchmark_time(cfg: DictConfig):
+    """
+    Output throughput and latency
+    """
+
+    # suppress TensorFlow and DALI warnings
+    suppress_warnings()
+
+    if cfg.OPTIMIZATION.AMP:
+        print("Enabling Automatic Mixed Precision(AMP)")
+        policy = mixed_precision.Policy('mixed_float16')
+        mixed_precision.set_global_policy(policy)
+
+    if cfg.OPTIMIZATION.XLA:
+        print("Enabling Accelerated Linear Algebra(XLA)")
+        tf.config.optimizer.set_jit(True)
+
+    # data generator
+    val_generator = tf_data_generator.DataGenerator(cfg, mode="VAL")
+    validation_steps = val_generator.__len__()
+
+    warmup_steps, bench_steps = 50, 100
+    if "warmup_steps" in cfg.keys():
+        warmup_steps = cfg.warmup_steps
+    if "bench_steps" in cfg.keys():
+        bench_steps = cfg.bench_steps
+    validation_steps = min(validation_steps, (warmup_steps + bench_steps))
+
+    progress_bar = tqdm(total=validation_steps)
+
+    # create model
+    model = prepare_model(cfg)
+
+    # weights model path
+    checkpoint_path = join_paths(
+        cfg.WORK_DIR,
+        cfg.CALLBACKS.MODEL_CHECKPOINT.PATH,
+        f"{cfg.MODEL.WEIGHTS_FILE_NAME}.hdf5"
+    )
+
+    assert os.path.exists(checkpoint_path), \
+        f"Model weight's file does not exist at \n{checkpoint_path}"
+
+    # load model weights
+    model.load_weights(checkpoint_path, by_name=True, skip_mismatch=True)
+    # model.summary()
+
+    time_taken = []
+    # for each batch
+    for i, (batch_images, batch_mask) in enumerate(val_generator):
+
+        start_time = timer()
+        # make prediction on batch
+        batch_predictions = model.predict_on_batch(batch_images)
+        if len(model.outputs) > 1:
+            batch_predictions = batch_predictions[0]
+
+        # do postprocessing on predicted mask
+        batch_predictions = postprocess_mask(batch_predictions, cfg.OUTPUT.CLASSES)
+
+        time_taken.append(timer() - start_time)
+
+        progress_bar.update(1)
+        if i >= validation_steps:
+            break
+    progress_bar.close()
+
+    mean_time = np.mean(time_taken[warmup_steps:])  # skipping warmup_steps
+    throughput = (cfg.HYPER_PARAMETERS.BATCH_SIZE / mean_time)
+    print(f"Latency: {round(mean_time * 1e3, 2)} msec")
+    print(f"Throughput/FPS: {round(throughput, 2)} samples/sec")
+
+
+@hydra.main(version_base=None, config_path="configs", config_name="config")
+def main(cfg: DictConfig):
+    """
+    Read config file and pass to benchmark_time method
+    """
+    benchmark_time(cfg)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/TensorFlow2/Segmentation/UNet3P/callbacks/timing_callback.py b/TensorFlow2/Segmentation/UNet3P/callbacks/timing_callback.py
new file mode 100644
index 000000000..093fabce0
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/callbacks/timing_callback.py
@@ -0,0 +1,30 @@
+import sys
+from timeit import default_timer as timer
+import tensorflow as tf
+
+
+class TimingCallback(tf.keras.callbacks.Callback):
+    """
+    Custom callback to note training time, latency and throughput
+    """
+
+    def __init__(self, ):
+        super(TimingCallback, self).__init__()
+        self.train_start_time = None
+        self.train_end_time = None
+        self.batch_time = []
+        self.batch_start_time = None
+
+    def on_train_begin(self, logs: dict):
+        tf.print("Training starting time noted.", output_stream=sys.stdout)
+        self.train_start_time = timer()
+
+    def on_train_end(self, logs: dict):
+        tf.print("Training ending time noted.", output_stream=sys.stdout)
+        self.train_end_time = timer()
+
+    def on_train_batch_begin(self, batch: int, logs: dict):
+        self.batch_start_time = timer()
+
+    def on_train_batch_end(self, batch: int, logs: dict):
+        self.batch_time.append(timer() - self.batch_start_time)
diff --git a/TensorFlow2/Segmentation/UNet3P/checkpoint/tb_logs/.gitkeep b/TensorFlow2/Segmentation/UNet3P/checkpoint/tb_logs/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/TensorFlow2/Segmentation/UNet3P/configs/README.md b/TensorFlow2/Segmentation/UNet3P/configs/README.md
new file mode 100644
index 000000000..80d091d3d
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/configs/README.md
@@ -0,0 +1,86 @@
+Here we provide **overview** of our config file and how you can use your own custom settings's for training and
+evaluation.
+
+We are using [Hydra](https://hydra.cc/) for passing configurations. Hydra is a framework for elegantly configuring
+complex applications. In Hydra you can easily [extend](https://hydra.cc/docs/patterns/extending_configs/)
+and [interpolate](https://hydra.cc/docs/advanced/override_grammar/basic/#primitives) `yaml` config files.
+
+#### Override Hydra config from command line
+
+[Here](https://hydra.cc/docs/1.0/advanced/override_grammar/basic/)  you can read how to pass or override configurations
+through command line. Overall to
+
+###### Override higher level attribute
+
+Directly access the key and override its value
+
+- For instance to override Data generator pass `DATA_GENERATOR_TYPE=DALI_GENERATOR`
+
+###### Override nested attribute
+
+Use `.` to access nested keys
+
+- For instance to override model type `MODEL.TYPE=unet3plus`
+- To override model backbone `MODEL.BACKBONE.TYPE=vgg19`
+
+To add new element from command line add `+` before attribute name. E.g. `+warmup_steps=50` because warm steps is not
+added in config file.
+
+> Note: Don't add space between list elements, it will create problem with Hydra.
+
+Most of the configurations attributes in our [config](./../configs/config.yaml) are self-explanatory. However, for some
+attributes additional comments are added.
+
+You can override configurations from command line too, but it's **advisable to override them from config file** because
+it's
+easy.
+
+By default, hydra stores a log file of each run in a separate directory. We have disabled it in our case,
+if you want to enable them to keep record of each run configuration's then comment out the settings at the end of config
+file.
+
+```yaml
+# project root working directory, automatically read by hydra (.../UNet3P)
+WORK_DIR: ${hydra:runtime.cwd}
+DATA_PREPARATION:
+  # unprocessed LiTS scan data paths, for custom data training skip this section details 
+  SCANS_TRAIN_DATA_PATH: "/data/Training Batch 2/"
+  ...
+DATASET:
+  # training data paths, should be relative from project root path
+  TRAIN:
+    IMAGES_PATH: "/data/train/images"
+  ...
+MODEL:
+  # available variants are unet3plus, unet3plus_deepsup, unet3plus_deepsup_cgm
+  TYPE: "unet3plus"
+  BACKBONE:
+  ...
+...
+DATA_GENERATOR_TYPE: "DALI_GENERATOR"  # options are TF_GENERATOR or DALI_GENERATOR
+SHOW_CENTER_CHANNEL_IMAGE: True  # only true for UNet3+. for custom dataset it should be False
+# Model input shape
+INPUT:
+  HEIGHT: 320
+  ...
+# Model output classes
+OUTPUT:
+  CLASSES: 2
+HYPER_PARAMETERS:
+  EPOCHS: 5
+  BATCH_SIZE: 2  # specify per gpu batch size
+  ...
+CALLBACKS:
+  TENSORBOARD:
+  ...
+PREPROCESS_DATA:
+  RESIZE:
+    VALUE: False  # if True, resize to input height and width
+    ...
+USE_MULTI_GPUS:
+  ...
+# to stop hydra from storing logs files
+defaults:
+  ...
+
+```
diff --git a/TensorFlow2/Segmentation/UNet3P/configs/config.yaml b/TensorFlow2/Segmentation/UNet3P/configs/config.yaml
new file mode 100644
index 000000000..6496ac019
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/configs/config.yaml
@@ -0,0 +1,118 @@
+# project root working directory, automatically read by hydra (.../UNet3P)
+WORK_DIR: ${hydra:runtime.cwd}
+
+DATA_PREPARATION:
+  # unprocessed LiTS scan data paths, for custom data training skip this section details
+  SCANS_TRAIN_DATA_PATH: "/data/Training Batch 2/"
+  SCANS_VAL_DATA_PATH: "/data/Training Batch 1/"
+
+  # Resize scans to model input size
+  RESIZED_HEIGHT: ${INPUT.HEIGHT}
+  RESIZED_WIDTH: ${INPUT.WIDTH}
+
+  # Clip scans value in given range
+  SCAN_MIN_VALUE: -200
+  SCAN_MAX_VALUE: 250
+
+DATASET:
+  # paths should be relative from project root path
+  TRAIN:
+    IMAGES_PATH: "/data/train/images"
+    MASK_PATH: "/data/train/mask"
+  VAL:
+    IMAGES_PATH: "/data/val/images"
+    MASK_PATH: "/data/val/mask"
+
+
+MODEL:
+  # available variants are unet3plus, unet3plus_deepsup, unet3plus_deepsup_cgm
+  TYPE: "unet3plus"
+  WEIGHTS_FILE_NAME: model_${MODEL.TYPE}
+  BACKBONE:
+    # available variants are unet3plus, vgg16, vgg19
+    TYPE: "vgg19"
+
+DATA_GENERATOR_TYPE: "DALI_GENERATOR"  # options are TF_GENERATOR or DALI_GENERATOR
+SEED: 5  # for result's reproducibility
+VERBOSE: 1  # For logs printing details, available options are 0, 1, 2
+DATALOADER_WORKERS: 3  # number of workers used for data loading
+SHOW_CENTER_CHANNEL_IMAGE: True  # only true for UNet3+ for custom dataset it should be False
+
+# Model input shape
+INPUT:
+  HEIGHT: 320
+  WIDTH: 320
+  CHANNELS: 3
+
+# Model output classes
+OUTPUT:
+  CLASSES: 2
+
+
+HYPER_PARAMETERS:
+  EPOCHS: 100
+  BATCH_SIZE: 16  # specify per gpu batch size
+  LEARNING_RATE: 5e-5  # 0.1, 1e-3, 3e-4, 5e-5
+
+
+CALLBACKS:
+  # paths should be relative from project root path
+  TENSORBOARD:
+    PATH: "/checkpoint/tb_logs"
+
+  EARLY_STOPPING:
+    PATIENCE: 100
+
+  MODEL_CHECKPOINT:
+    PATH: "/checkpoint"
+    SAVE_WEIGHTS_ONLY: True
+    SAVE_BEST_ONLY: True
+
+  CSV_LOGGER:
+    PATH: "/checkpoint"
+    APPEND_LOGS: False
+
+
+PREPROCESS_DATA:
+  RESIZE:
+    VALUE: False  # if True, resize to input height and width
+    HEIGHT: ${INPUT.HEIGHT}
+    WIDTH: ${INPUT.WIDTH}
+
+  IMAGE_PREPROCESSING_TYPE: "normalize"
+
+  NORMALIZE_MASK:
+    VALUE: False  # if True, divide mask by given value
+    NORMALIZE_VALUE: 255
+
+  SHUFFLE:
+    TRAIN:
+      VALUE: True
+    VAL:
+      VALUE: False
+
+
+USE_MULTI_GPUS:
+  VALUE: True  # If True use multiple gpus for training
+  # GPU_IDS: Could be integer or list of integers.
+  # In case Integer: if integer value is -1 then it uses all available gpus.
+  # otherwise if positive number, then use given number of gpus.
+  # In case list of Integers: each integer will be considered as gpu id
+  # e.g. [4, 5, 7] means use gpu 5,6 and 8 for training/evaluation
+  GPU_IDS: -1
+
+
+OPTIMIZATION:
+  AMP: True  # Automatic Mixed Precision(AMP)
+  XLA: True  # Accelerated Linear Algebra(XLA)
+
+
+# to stop hydra from storing logs files
+# logs will be stored in outputs directory
+defaults:
+  - _self_
+  - override hydra/hydra_logging: disabled
+  - override hydra/job_logging: disabled
+
+hydra:
+  output_subdir: null
diff --git a/TensorFlow2/Segmentation/UNet3P/data/Training Batch 1/.gitkeep b/TensorFlow2/Segmentation/UNet3P/data/Training Batch 1/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/TensorFlow2/Segmentation/UNet3P/data/Training Batch 2/.gitkeep b/TensorFlow2/Segmentation/UNet3P/data/Training Batch 2/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/TensorFlow2/Segmentation/UNet3P/data/train/.gitkeep b/TensorFlow2/Segmentation/UNet3P/data/train/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/TensorFlow2/Segmentation/UNet3P/data/val/.gitkeep b/TensorFlow2/Segmentation/UNet3P/data/val/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/README.md b/TensorFlow2/Segmentation/UNet3P/data_generators/README.md
new file mode 100644
index 000000000..d65de3a72
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_generators/README.md
@@ -0,0 +1,44 @@
+Our code base support two types of data loaders.
+
+- [Tensorflow Sequence Generator](#tensorflow-sequence-generator)
+- [NVIDIA DALI Generator](#nvidia-dali-generator)
+
+## [Tensorflow Sequence Generator](https://www.tensorflow.org/api_docs/python/tf/keras/utils/Sequence)
+
+Sequence data generator is best suited for situations where we need
+advanced control over sample generation or when simple data does not
+fit into memory and must be loaded dynamically.
+
+Our [sequence generator](./../data_generators/tf_data_generator.py) generates
+dataset on multiple cores in real time and feed it right away to deep
+learning model.
+
+## [NVIDIA DALI Generator](https://docs.nvidia.com/deeplearning/dali/user-guide/docs/index.html)
+
+The NVIDIA Data Loading Library (DALI) is a library for data loading and
+pre-processing to accelerate deep learning applications. It provides a
+collection of highly optimized building blocks for loading and processing
+image, video and audio data. It can be used as a portable drop-in
+replacement for built in data loaders and data iterators in popular deep
+learning frameworks.
+
+We've used [DALI Pipeline](./../data_generators/dali_data_generator.py) to directly load
+data on `GPU`, which resulted in reduced latency and training time,
+mitigating bottlenecks, by overlapping training and pre-processing. Our code
+base also support's multi GPU data loading for DALI.
+
+## Use Cases
+
+For training and evaluation you can use both  `TF Sequence` and `DALI` generator with multiple gpus, but for prediction
+and inference benchmark we only support `TF Sequence` generator with single gpu support.
+
+> Reminder: DALI is only supported on Linux platforms. For Windows, you can
+> train using Sequence Generator. The code base will work without DALI
+> installation too.
+
+It's advised to use DALI only when you have large gpu memory to load both model
+and training data at the same time.
+
+Override `DATA_GENERATOR_TYPE` in config to change default generator type. Possible
+options are `TF_GENERATOR` for Sequence generator and `DALI_GENERATOR` for DALI generator.
+ 
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/dali_data_generator.py b/TensorFlow2/Segmentation/UNet3P/data_generators/dali_data_generator.py
new file mode 100644
index 000000000..085c321de
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_generators/dali_data_generator.py
@@ -0,0 +1,264 @@
+"""
+NVIDIA DALI data generator object.
+"""
+import nvidia.dali.fn as fn
+from nvidia.dali import pipeline_def
+import nvidia.dali.types as types
+import nvidia.dali.plugin.tf as dali_tf
+import tensorflow as tf
+from omegaconf import DictConfig
+
+from utils.general_utils import get_data_paths, get_gpus_count
+
+
+def data_generator_pipeline(cfg: DictConfig, mode: str, mask_available: bool):
+    """
+    Returns DALI data pipeline object.
+    """
+    data_paths = get_data_paths(cfg, mode, mask_available)  # get data paths
+    images_paths = data_paths[0]
+    if mask_available:
+        mask_paths = data_paths[1]
+
+    @pipeline_def(batch_size=cfg.HYPER_PARAMETERS.BATCH_SIZE)
+    def single_gpu_pipeline(device):
+        """
+        Returns DALI data pipeline object for single GPU training.
+        """
+        device = 'mixed' if 'gpu' in device.lower() else 'cpu'
+
+        pngs, _ = fn.readers.file(
+            files=images_paths,
+            random_shuffle=cfg.PREPROCESS_DATA.SHUFFLE[mode].VALUE,
+            seed=cfg.SEED
+        )
+        images = fn.decoders.image(pngs, device=device, output_type=types.RGB)
+        if cfg.PREPROCESS_DATA.RESIZE.VALUE:
+            # TODO verify image resizing method
+            images = fn.resize(
+                images,
+                size=[
+                    cfg.PREPROCESS_DATA.RESIZE.HEIGHT,
+                    cfg.PREPROCESS_DATA.RESIZE.WIDTH
+                ]
+            )
+        if cfg.PREPROCESS_DATA.IMAGE_PREPROCESSING_TYPE == "normalize":
+            images = fn.normalize(images, mean=0, stddev=255, )  # axes=(2,)
+
+        if mask_available:
+            labels, _ = fn.readers.file(
+                files=mask_paths,
+                random_shuffle=cfg.PREPROCESS_DATA.SHUFFLE[mode].VALUE,
+                seed=cfg.SEED
+            )
+            labels = fn.decoders.image(
+                labels,
+                device=device,
+                output_type=types.GRAY
+            )
+            if cfg.PREPROCESS_DATA.RESIZE.VALUE:
+                # TODO verify image resizing method
+                labels = fn.resize(
+                    labels,
+                    size=[
+                        cfg.PREPROCESS_DATA.RESIZE.HEIGHT,
+                        cfg.PREPROCESS_DATA.RESIZE.WIDTH
+                    ]
+                )
+            if cfg.PREPROCESS_DATA.NORMALIZE_MASK.VALUE:
+                labels = fn.normalize(
+                    labels,
+                    mean=0,
+                    stddev=cfg.PREPROCESS_DATA.NORMALIZE_MASK.NORMALIZE_VALUE,
+                )
+            if cfg.OUTPUT.CLASSES == 1:
+                labels = fn.cast(labels, dtype=types.FLOAT)
+            else:
+                labels = fn.squeeze(labels, axes=[2])
+                labels = fn.one_hot(labels, num_classes=cfg.OUTPUT.CLASSES)
+
+        if mask_available:
+            return images, labels
+        else:
+            return images,
+
+    @pipeline_def(batch_size=cfg.HYPER_PARAMETERS.BATCH_SIZE)
+    def multi_gpu_pipeline(device, shard_id):
+        """
+        Returns DALI data pipeline object for multi GPU'S training.
+        """
+        device = 'mixed' if 'gpu' in device.lower() else 'cpu'
+        shard_id = 1 if 'cpu' in device else shard_id
+        num_shards = get_gpus_count()
+        # num_shards should be <= #images
+        num_shards = len(images_paths) if num_shards > len(images_paths) else num_shards
+
+        pngs, _ = fn.readers.file(
+            files=images_paths,
+            random_shuffle=cfg.PREPROCESS_DATA.SHUFFLE[mode].VALUE,
+            shard_id=shard_id,
+            num_shards=num_shards,
+            seed=cfg.SEED
+        )
+        images = fn.decoders.image(pngs, device=device, output_type=types.RGB)
+        if cfg.PREPROCESS_DATA.RESIZE.VALUE:
+            # TODO verify image resizing method
+            images = fn.resize(
+                images,
+                size=[
+                    cfg.PREPROCESS_DATA.RESIZE.HEIGHT,
+                    cfg.PREPROCESS_DATA.RESIZE.WIDTH
+                ]
+            )
+        if cfg.PREPROCESS_DATA.IMAGE_PREPROCESSING_TYPE == "normalize":
+            images = fn.normalize(images, mean=0, stddev=255, )  # axes=(2,)
+
+        if mask_available:
+            labels, _ = fn.readers.file(
+                files=mask_paths,
+                random_shuffle=cfg.PREPROCESS_DATA.SHUFFLE[mode].VALUE,
+                shard_id=shard_id,
+                num_shards=num_shards,
+                seed=cfg.SEED
+            )
+            labels = fn.decoders.image(
+                labels,
+                device=device,
+                output_type=types.GRAY
+            )
+            if cfg.PREPROCESS_DATA.RESIZE.VALUE:
+                # TODO verify image resizing method
+                labels = fn.resize(
+                    labels,
+                    size=[
+                        cfg.PREPROCESS_DATA.RESIZE.HEIGHT,
+                        cfg.PREPROCESS_DATA.RESIZE.WIDTH
+                    ]
+                )
+            if cfg.PREPROCESS_DATA.NORMALIZE_MASK.VALUE:
+                labels = fn.normalize(
+                    labels,
+                    mean=0,
+                    stddev=cfg.PREPROCESS_DATA.NORMALIZE_MASK.NORMALIZE_VALUE,
+                )
+            if cfg.OUTPUT.CLASSES == 1:
+                labels = fn.cast(labels, dtype=types.FLOAT)
+            else:
+                labels = fn.squeeze(labels, axes=[2])
+                labels = fn.one_hot(labels, num_classes=cfg.OUTPUT.CLASSES)
+
+        if mask_available:
+            return images, labels
+        else:
+            return images,
+
+    if cfg.USE_MULTI_GPUS.VALUE:
+        return multi_gpu_pipeline
+    else:
+        return single_gpu_pipeline
+
+
+def get_data_shapes(cfg: DictConfig, mask_available: bool):
+    """
+    Returns shapes and dtypes of the outputs.
+    """
+    if mask_available:
+        shapes = (
+            (cfg.HYPER_PARAMETERS.BATCH_SIZE,
+             cfg.INPUT.HEIGHT,
+             cfg.INPUT.WIDTH,
+             cfg.INPUT.CHANNELS),
+            (cfg.HYPER_PARAMETERS.BATCH_SIZE,
+             cfg.INPUT.HEIGHT,
+             cfg.INPUT.WIDTH,
+             cfg.OUTPUT.CLASSES)
+        )
+        dtypes = (
+            tf.float32,
+            tf.float32)
+    else:
+        shapes = (
+            (cfg.HYPER_PARAMETERS.BATCH_SIZE,
+             cfg.INPUT.HEIGHT,
+             cfg.INPUT.WIDTH,
+             cfg.INPUT.CHANNELS),
+        )
+        dtypes = (
+            tf.float32,
+        )
+    return shapes, dtypes
+
+
+def data_generator(cfg: DictConfig,
+                   mode: str,
+                   strategy: tf.distribute.Strategy = None):
+    """
+    Generate batches of data for model by reading images and their
+    corresponding masks using NVIDIA DALI.
+    Works for both single and mult GPU's. In case of multi gpu pass
+    the strategy object too.
+    There are two options you can either pass directory path or list.
+    In case of directory, it should contain relative path of images/mask
+    folder from project root path.
+    In case of list of images, every element should contain absolute path
+    for each image and mask.
+    """
+
+    # check mask are available or not
+    mask_available = False if cfg.DATASET[mode].MASK_PATH is None or str(
+        cfg.DATASET[mode].MASK_PATH).lower() == "none" else True
+
+    # create dali data pipeline
+    data_pipeline = data_generator_pipeline(cfg, mode, mask_available)
+
+    shapes, dtypes = get_data_shapes(cfg, mask_available)
+
+    if cfg.USE_MULTI_GPUS.VALUE:
+        def bound_dataset(input_context):
+            """
+            In case of multi gpu training bound dataset to a device for distributed training.
+            """
+            with tf.device("/gpu:{}".format(input_context.input_pipeline_id)):
+                device_id = input_context.input_pipeline_id
+                return dali_tf.DALIDataset(
+                    pipeline=data_pipeline(
+                        device="gpu",
+                        device_id=device_id,
+                        shard_id=device_id,
+                        num_threads=cfg.DATALOADER_WORKERS
+                    ),
+                    batch_size=cfg.HYPER_PARAMETERS.BATCH_SIZE,
+                    output_shapes=shapes,
+                    output_dtypes=dtypes,
+                    device_id=device_id,
+                )
+
+        # distribute dataset
+        input_options = tf.distribute.InputOptions(
+            experimental_place_dataset_on_device=True,
+            # for older dali versions use experimental_prefetch_to_device
+            # for new dali versions use  experimental_fetch_to_device
+            experimental_fetch_to_device=False,  # experimental_fetch_to_device
+            experimental_replication_mode=tf.distribute.InputReplicationMode.PER_REPLICA)
+
+        # map dataset to given strategy and return it
+        return strategy.distribute_datasets_from_function(bound_dataset, input_options)
+    else:
+        # single gpu pipeline
+        pipeline = data_pipeline(
+            batch_size=cfg.HYPER_PARAMETERS.BATCH_SIZE,
+            num_threads=cfg.DATALOADER_WORKERS,
+            device="gpu",
+            device_id=0
+        )
+
+        # create dataset
+        with tf.device('/gpu:0'):
+            data_generator = dali_tf.DALIDataset(
+                pipeline=pipeline,
+                batch_size=cfg.HYPER_PARAMETERS.BATCH_SIZE,
+                output_shapes=shapes,
+                output_dtypes=dtypes,
+                device_id=0)
+
+        return data_generator
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/data_generator.py b/TensorFlow2/Segmentation/UNet3P/data_generators/data_generator.py
new file mode 100644
index 000000000..ab19123e2
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_generators/data_generator.py
@@ -0,0 +1,88 @@
+"""
+Data generator
+"""
+import os
+import tensorflow as tf
+from omegaconf import DictConfig
+
+from utils.general_utils import join_paths, get_gpus_count
+from .tf_data_generator import DataGenerator as tf_data_generator
+
+try:
+    from .dali_data_generator import data_generator as dali_data_generator
+except ModuleNotFoundError:
+    print("NVIDIA DALI not installed, please install it."
+          "\nNote: DALI is only available on Linux platform. For Window "
+          "you can use TensorFlow generator for training.")
+
+
+def get_data_generator(cfg: DictConfig,
+                       mode: str,
+                       strategy: tf.distribute.Strategy = None):
+    """
+    Creates and return data generator object based on given type.
+    """
+    if cfg.DATA_GENERATOR_TYPE == "TF_GENERATOR":
+        print(f"Using TensorFlow generator for {mode} data")
+        generator = tf_data_generator(cfg, mode)
+    elif cfg.DATA_GENERATOR_TYPE == "DALI_GENERATOR":
+        print(f"Using NVIDIA DALI generator for {mode} data")
+        if cfg.USE_MULTI_GPUS.VALUE:
+            generator = dali_data_generator(cfg, mode, strategy)
+        else:
+            generator = dali_data_generator(cfg, mode)
+    else:
+        raise ValueError(
+            "Wrong generator type passed."
+            "\nPossible options are TF_GENERATOR and DALI_GENERATOR"
+        )
+    return generator
+
+
+def update_batch_size(cfg: DictConfig):
+    """
+    Scale up batch size to multi gpus in case of TensorFlow generator.
+    """
+    if cfg.DATA_GENERATOR_TYPE == "TF_GENERATOR" and cfg.USE_MULTI_GPUS.VALUE:
+        # change batch size according to available gpus
+        cfg.HYPER_PARAMETERS.BATCH_SIZE = \
+            cfg.HYPER_PARAMETERS.BATCH_SIZE * get_gpus_count()
+
+
+def get_batch_size(cfg: DictConfig):
+    """
+    Return batch size.
+    In case of DALI generator scale up batch size to multi gpus.
+    """
+    if cfg.DATA_GENERATOR_TYPE == "DALI_GENERATOR" and cfg.USE_MULTI_GPUS.VALUE:
+        # change batch size according to available gpus
+        return cfg.HYPER_PARAMETERS.BATCH_SIZE * get_gpus_count()
+    else:
+        return cfg.HYPER_PARAMETERS.BATCH_SIZE
+
+
+def get_iterations(cfg: DictConfig, mode: str):
+    """
+    Return steps per epoch
+    """
+    images_length = len(
+        os.listdir(
+            join_paths(
+                cfg.WORK_DIR,
+                cfg.DATASET[mode].IMAGES_PATH
+            )
+        )
+    )
+
+    if cfg.DATA_GENERATOR_TYPE == "TF_GENERATOR":
+        training_steps = images_length // cfg.HYPER_PARAMETERS.BATCH_SIZE
+    elif cfg.DATA_GENERATOR_TYPE == "DALI_GENERATOR":
+        if cfg.USE_MULTI_GPUS.VALUE:
+            training_steps = images_length // (
+                    cfg.HYPER_PARAMETERS.BATCH_SIZE * get_gpus_count())
+        else:
+            training_steps = images_length // cfg.HYPER_PARAMETERS.BATCH_SIZE
+    else:
+        raise ValueError("Wrong generator type passed.")
+
+    return training_steps
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/tf_data_generator.py b/TensorFlow2/Segmentation/UNet3P/data_generators/tf_data_generator.py
new file mode 100644
index 000000000..8f35a1b84
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_generators/tf_data_generator.py
@@ -0,0 +1,179 @@
+"""
+Tensorflow data generator class.
+"""
+import tensorflow as tf
+import numpy as np
+from omegaconf import DictConfig
+
+from utils.general_utils import get_data_paths
+from utils.images_utils import prepare_image, prepare_mask
+
+
+class DataGenerator(tf.keras.utils.Sequence):
+    """
+    Generate batches of data for model by reading images and their
+    corresponding masks using TensorFlow Sequence Generator.
+    There are two options you can either pass directory path or list.
+    In case of directory, it should contain relative path of images/mask
+    folder from project root path.
+    In case of list of images, every element should contain absolute path
+    for each image and mask.
+    Because this generator is also used for prediction, so during testing you can
+    set mask path to None if mask are not available for visualization.
+    """
+
+    def __init__(self, cfg: DictConfig, mode: str):
+        """
+        Initialization
+        """
+        self.cfg = cfg
+        self.mode = mode
+        self.batch_size = self.cfg.HYPER_PARAMETERS.BATCH_SIZE
+        # set seed for reproducibility
+        np.random.seed(cfg.SEED)
+
+        # check mask are available or not
+        self.mask_available = False if cfg.DATASET[mode].MASK_PATH is None or str(
+            cfg.DATASET[mode].MASK_PATH).lower() == "none" else True
+
+        data_paths = get_data_paths(cfg, mode, self.mask_available)
+
+        self.images_paths = data_paths[0]
+        if self.mask_available:
+            self.mask_paths = data_paths[1]
+
+        # self.images_paths.sort()  # no need for sorting
+
+        self.on_epoch_end()
+
+    def __len__(self):
+        """
+        Denotes the number of batches per epoch
+        """
+        # Tensorflow problem: on_epoch_end is not being called at the end
+        # of each epoch, so forcing on_epoch_end call
+        self.on_epoch_end()
+        return int(
+            np.floor(
+                len(self.images_paths) / self.batch_size
+            )
+        )
+
+    def on_epoch_end(self):
+        """
+        Updates indexes after each epoch
+        """
+        self.indexes = np.arange(len(self.images_paths))
+        if self.cfg.PREPROCESS_DATA.SHUFFLE[self.mode].VALUE:
+            np.random.shuffle(self.indexes)
+
+    def __getitem__(self, index):
+        """
+        Generate one batch of data
+        """
+        # Generate indexes of the batch
+        indexes = self.indexes[
+                  index * self.batch_size:(index + 1) * self.batch_size
+                  ]
+
+        # Generate data
+        return self.__data_generation(indexes)
+
+    def __data_generation(self, indexes):
+        """
+        Generates batch data
+        """
+
+        # create empty array to store batch data
+        batch_images = np.zeros(
+            (
+                self.cfg.HYPER_PARAMETERS.BATCH_SIZE,
+                self.cfg.INPUT.HEIGHT,
+                self.cfg.INPUT.WIDTH,
+                self.cfg.INPUT.CHANNELS
+            )
+        ).astype(np.float32)
+
+        if self.mask_available:
+            batch_masks = np.zeros(
+                (
+                    self.cfg.HYPER_PARAMETERS.BATCH_SIZE,
+                    self.cfg.INPUT.HEIGHT,
+                    self.cfg.INPUT.WIDTH,
+                    self.cfg.OUTPUT.CLASSES
+                )
+            ).astype(np.float32)
+
+        for i, index in enumerate(indexes):
+            # extract path from list
+            img_path = self.images_paths[int(index)]
+            if self.mask_available:
+                mask_path = self.mask_paths[int(index)]
+
+            # prepare image for model by resizing and preprocessing it
+            image = prepare_image(
+                img_path,
+                self.cfg.PREPROCESS_DATA.RESIZE,
+                self.cfg.PREPROCESS_DATA.IMAGE_PREPROCESSING_TYPE,
+            )
+
+            if self.mask_available:
+                # prepare image for model by resizing and preprocessing it
+                mask = prepare_mask(
+                    mask_path,
+                    self.cfg.PREPROCESS_DATA.RESIZE,
+                    self.cfg.PREPROCESS_DATA.NORMALIZE_MASK,
+                )
+
+            # numpy to tensorflow conversion
+            if self.mask_available:
+                image, mask = tf.numpy_function(
+                    self.tf_func,
+                    [image, mask],
+                    [tf.float32, tf.int32]
+                )
+            else:
+                image = tf.numpy_function(
+                    self.tf_func,
+                    [image, ],
+                    [tf.float32, ]
+                )
+
+            # set shape attributes which was lost during Tf conversion
+            image.set_shape(
+                [
+                    self.cfg.INPUT.HEIGHT,
+                    self.cfg.INPUT.WIDTH,
+                    self.cfg.INPUT.CHANNELS
+                ]
+            )
+            batch_images[i] = image
+
+            if self.mask_available:
+                # height x width --> height x width x output classes
+                if self.cfg.OUTPUT.CLASSES == 1:
+                    mask = tf.expand_dims(mask, axis=-1)
+                else:
+                    # convert mask into one hot vectors
+                    mask = tf.one_hot(
+                        mask,
+                        self.cfg.OUTPUT.CLASSES,
+                        dtype=tf.int32
+                    )
+                mask.set_shape(
+                    [
+                        self.cfg.INPUT.HEIGHT,
+                        self.cfg.INPUT.WIDTH,
+                        self.cfg.OUTPUT.CLASSES
+                    ]
+                )
+                batch_masks[i] = mask
+
+        if self.mask_available:
+            return batch_images, batch_masks
+        else:
+            return batch_images,
+
+    @staticmethod
+    def tf_func(*args):
+        return args
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/README.md b/TensorFlow2/Segmentation/UNet3P/data_preparation/README.md
new file mode 100644
index 000000000..9acd5b172
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_preparation/README.md
@@ -0,0 +1,102 @@
+For data two options are available
+
+- [Train on LiTS Data](#lits-liver-tumor-segmentation-challenge)
+- [Train on custom data](#train-on-custom-data)
+
+## LiTS Liver Tumor Segmentation challenge
+
+This dataset consist of 131 Liver CT Scans.
+
+Register [here](https://competitions.codalab.org/competitions/17094) to get dataset access.
+Go to participate &rarr; Training Data to get dataset link.
+Download Training Batch 1 and Training Batch 2 zip files and past them under data folder.
+
+`Training Batch 1` size is 3.97GB and `Training Batch 2` zip file size is 11.5GB.
+
+Inside main directory `/workspace/unet3p` run below command to extract zip files
+
+```shell
+bash data_preparation/extract_data.sh
+```
+
+After extraction `Training Batch 1` folder size will be 11.4GB and `Training Batch 2` folder size will be 38.5GB.
+
+- `Training Batch 1` consist of 28 scans which are used for testing
+- `Training Batch 2` consist of 103 scans which are used for training
+
+Default directory structure looks like this
+
+    ├── data/
+    │   ├── Training Batch 1/
+            ├── segmentation-0.nii
+            ├── volume-0.nii
+            ├── ...
+            ├── volume-27.nii
+    │   ├── Training Batch 2/
+            ├── segmentation-28.nii
+            ├── volume-28.nii
+            ├── ...
+            ├── volume-130.nii
+
+For testing, you can have any number of files in Training Batch 1 and Training Batch 2. But make sure the naming
+convention is similar.
+
+To prepare LiTS dataset for training run
+
+```
+python data_preparation/preprocess_data.py
+```
+
+> Note: Because of the extensive preprocessing, it will take some time, so relax and wait.
+
+#### Final directory
+
+After completion, you will have a directories like this
+
+    ├── data/
+    │   ├── train/
+            ├── images
+                ├── image_28_0.png
+                ├── ...
+            ├── mask
+                ├── mask_28_0.png
+                ├── ...
+    │   ├── val/
+            ├── images
+                ├── image_0_0.png
+                ├── ...
+            ├── mask
+                ├── mask_0_0.png
+                ├── ...
+
+After processing the `train` folder size will be 5GB and `val` folder size will be 1.7GB.
+
+#### Free space (Optional)
+
+At this stage you can delete the intermediate scans files to free space, run below command
+
+```shell
+bash data_preparation/delete_extracted_scans_data.sh
+```
+
+You can also delete the data zip files using below command, but remember you cannot retrieve them back
+
+```shell
+bash data_preparation/delete_zip_data.sh
+```
+
+> Note: It is recommended to delete scan files but not zip data because you may need it again.
+
+## Train on custom data
+
+To train on custom dateset it's advised that you follow the same train and val directory structure like
+mentioned [above](#final-directory).
+
+In our case image file name can be mapped to it's corresponding mask file name by replacing `image` text with `mask`. If
+your data has different mapping then you need to update [image_to_mask_name](./../utils/images_utils.py#L63) function which
+is responsible for converting image name to it's corresponding file name.
+
+Each image should be a color image with 3 channels and `RGB` color format. Each mask is considered as a gray scale
+image, where each pixel value is the class on which each pixel belongs.
+
+Congratulations, now you can start training and testing on your new dataset!
\ No newline at end of file
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_extracted_scans_data.sh b/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_extracted_scans_data.sh
new file mode 100644
index 000000000..72683297b
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_extracted_scans_data.sh
@@ -0,0 +1,2 @@
+rm -r 'data/Training Batch 1/'
+rm -r 'data/Training Batch 2/'
\ No newline at end of file
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_zip_data.sh b/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_zip_data.sh
new file mode 100644
index 000000000..14437b63f
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_zip_data.sh
@@ -0,0 +1,2 @@
+rm data/Training_Batch1.zip 
+rm data/Training_Batch2.zip
\ No newline at end of file
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/extract_data.sh b/TensorFlow2/Segmentation/UNet3P/data_preparation/extract_data.sh
new file mode 100644
index 000000000..b284a3e7f
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_preparation/extract_data.sh
@@ -0,0 +1,9 @@
+# extract testing data
+unzip data/Training_Batch1.zip -d data/
+mv  "data/media/nas/01_Datasets/CT/LITS/Training Batch 1/" "data/Training Batch 1/"
+rm -r data/media
+
+# extract training data
+unzip data/Training_Batch2.zip -d data/
+mv  "data/media/nas/01_Datasets/CT/LITS/Training Batch 2/" "data/Training Batch 2/"
+rm -r data/media
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/preprocess_data.py b/TensorFlow2/Segmentation/UNet3P/data_preparation/preprocess_data.py
new file mode 100644
index 000000000..9fb475015
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_preparation/preprocess_data.py
@@ -0,0 +1,242 @@
+"""
+Convert LiTS 2017 (Liver Tumor Segmentation) data into UNet3+ data format
+LiTS: https://competitions.codalab.org/competitions/17094
+"""
+import os
+import sys
+from glob import glob
+from pathlib import Path
+from tqdm import tqdm
+import numpy as np
+import multiprocessing as mp
+import cv2
+import nibabel as nib
+import hydra
+from omegaconf import DictConfig
+
+sys.path.append(os.path.abspath("./"))
+from utils.general_utils import create_directory, join_paths
+from utils.images_utils import resize_image
+
+
+def read_nii(filepath):
+    """
+    Reads .nii file and returns pixel array
+    """
+    ct_scan = nib.load(filepath).get_fdata()
+    # TODO: Verify images orientation
+    # in both train and test set, especially on train scan 130
+    ct_scan = np.rot90(np.array(ct_scan))
+    return ct_scan
+
+
+def crop_center(img, croph, cropw):
+    """
+    Center crop on given height and width
+    """
+    height, width = img.shape[:2]
+    starth = height // 2 - (croph // 2)
+    startw = width // 2 - (cropw // 2)
+    return img[starth:starth + croph, startw:startw + cropw, :]
+
+
+def linear_scale(img):
+    """
+    First convert image to range of 0-1 and them scale to 255
+    """
+    img = (img - img.min(axis=(0, 1))) / (img.max(axis=(0, 1)) - img.min(axis=(0, 1)))
+    return img * 255
+
+
+def clip_scan(img, min_value, max_value):
+    """
+    Clip scan to given range
+    """
+    return np.clip(img, min_value, max_value)
+
+
+def resize_scan(scan, new_height, new_width, scan_type):
+    """
+    Resize CT scan to given size
+    """
+    scan_shape = scan.shape
+    resized_scan = np.zeros((new_height, new_width, scan_shape[2]), dtype=scan.dtype)
+    resize_method = cv2.INTER_CUBIC if scan_type == "image" else cv2.INTER_NEAREST
+    for start in range(0, scan_shape[2], scan_shape[1]):
+        end = start + scan_shape[1]
+        if end >= scan_shape[2]: end = scan_shape[2]
+        resized_scan[:, :, start:end] = resize_image(
+            scan[:, :, start:end],
+            new_height, new_width,
+            resize_method
+        )
+
+    return resized_scan
+
+
+def save_images(scan, save_path, img_index):
+    """
+    Based on UNet3+ requirement "input image had three channels, including
+    the slice to be segmented and the upper and lower slices, which was
+    cropped to 320×320" save each scan as separate image with previous and
+    next scan concatenated.
+    """
+    scan_shape = scan.shape
+    for index in range(scan_shape[-1]):
+        before_index = index - 1 if (index - 1) > 0 else 0
+        after_index = index + 1 if (index + 1) < scan_shape[-1] else scan_shape[-1] - 1
+
+        new_img_path = join_paths(save_path, f"image_{img_index}_{index}.png")
+        new_image = np.stack(
+            (
+                scan[:, :, before_index],
+                scan[:, :, index],
+                scan[:, :, after_index]
+            )
+            , axis=-1)
+        new_image = cv2.cvtColor(new_image, cv2.COLOR_RGB2BGR)  # RGB to BGR
+        cv2.imwrite(new_img_path, new_image)  # save the images as .png
+
+
+def save_mask(scan, save_path, mask_index):
+    """
+    Save each scan as separate mask
+    """
+    for index in range(scan.shape[-1]):
+        new_mask_path = join_paths(save_path, f"mask_{mask_index}_{index}.png")
+        cv2.imwrite(new_mask_path, scan[:, :, index])  # save grey scale image
+
+
+def extract_image(cfg, image_path, save_path, scan_type="image", ):
+    """
+    Extract image from given scan path
+    """
+    _, index = str(Path(image_path).stem).split("-")
+
+    scan = read_nii(image_path)
+    scan = resize_scan(
+        scan,
+        cfg.DATA_PREPARATION.RESIZED_HEIGHT,
+        cfg.DATA_PREPARATION.RESIZED_WIDTH,
+        scan_type
+    )
+    if scan_type == "image":
+        scan = clip_scan(
+            scan,
+            cfg.DATA_PREPARATION.SCAN_MIN_VALUE,
+            cfg.DATA_PREPARATION.SCAN_MAX_VALUE
+        )
+        scan = linear_scale(scan)
+        scan = np.uint8(scan)
+        save_images(scan, save_path, index)
+    else:
+        # 0 for background/non-lesion, 1 for liver, 2 for lesion/tumor
+        # merging label 2 into label 1, because lesion/tumor is part of liver
+        scan = np.where(scan != 0, 1, scan)
+        # scan = np.where(scan==2, 1, scan)
+        scan = np.uint8(scan)
+        save_mask(scan, save_path, index)
+
+
+def extract_images(cfg, images_path, save_path, scan_type="image", ):
+    """
+    Extract images paths using multiprocessing and pass to
+    extract_image function for further processing .
+    """
+    # create pool
+    process_count = np.clip(mp.cpu_count() - 2, 1, 20)  # less than 20 workers
+    pool = mp.Pool(process_count)
+    for image_path in tqdm(images_path):
+        pool.apply_async(extract_image,
+                         args=(cfg, image_path, save_path, scan_type),
+                         )
+
+    # close pool
+    pool.close()
+    pool.join()
+
+
+@hydra.main(version_base=None, config_path="../configs", config_name="config")
+def preprocess_lits_data(cfg: DictConfig):
+    """
+    Preprocess LiTS 2017 (Liver Tumor Segmentation) data by extractions
+    images and mask into UNet3+ data format
+    """
+    train_images_names = glob(
+        join_paths(
+            cfg.WORK_DIR,
+            cfg.DATA_PREPARATION.SCANS_TRAIN_DATA_PATH,
+            "volume-*.nii"
+        )
+    )
+    train_mask_names = glob(
+        join_paths(
+            cfg.WORK_DIR,
+            cfg.DATA_PREPARATION.SCANS_TRAIN_DATA_PATH,
+            "segmentation-*.nii"
+        )
+    )
+
+    assert len(train_images_names) == len(train_mask_names), \
+        "Train volumes and segmentations are not same in length"
+
+    val_images_names = glob(
+        join_paths(
+            cfg.WORK_DIR,
+            cfg.DATA_PREPARATION.SCANS_VAL_DATA_PATH,
+            "volume-*.nii"
+        )
+    )
+    val_mask_names = glob(
+        join_paths(
+            cfg.WORK_DIR,
+            cfg.DATA_PREPARATION.SCANS_VAL_DATA_PATH,
+            "segmentation-*.nii"
+        )
+    )
+    assert len(val_images_names) == len(val_mask_names), \
+        "Validation volumes and segmentations are not same in length"
+
+    train_images_names = sorted(train_images_names)
+    train_mask_names = sorted(train_mask_names)
+    val_images_names = sorted(val_images_names)
+    val_mask_names = sorted(val_mask_names)
+
+    train_images_path = join_paths(
+        cfg.WORK_DIR, cfg.DATASET.TRAIN.IMAGES_PATH
+    )
+    train_mask_path = join_paths(
+        cfg.WORK_DIR, cfg.DATASET.TRAIN.MASK_PATH
+    )
+    val_images_path = join_paths(
+        cfg.WORK_DIR, cfg.DATASET.VAL.IMAGES_PATH
+    )
+    val_mask_path = join_paths(
+        cfg.WORK_DIR, cfg.DATASET.VAL.MASK_PATH
+    )
+
+    create_directory(train_images_path)
+    create_directory(train_mask_path)
+    create_directory(val_images_path)
+    create_directory(val_mask_path)
+
+    print("\nExtracting train images")
+    extract_images(
+        cfg, train_images_names, train_images_path, scan_type="image"
+    )
+    print("\nExtracting train mask")
+    extract_images(
+        cfg, train_mask_names, train_mask_path, scan_type="mask"
+    )
+    print("\nExtracting val images")
+    extract_images(
+        cfg, val_images_names, val_images_path, scan_type="image"
+    )
+    print("\nExtracting val mask")
+    extract_images(
+        cfg, val_mask_names, val_mask_path, scan_type="mask"
+    )
+
+
+if __name__ == '__main__':
+    preprocess_lits_data()
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/verify_data.py b/TensorFlow2/Segmentation/UNet3P/data_preparation/verify_data.py
new file mode 100644
index 000000000..0eb0d77bf
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/data_preparation/verify_data.py
@@ -0,0 +1,56 @@
+"""
+Verify for each image corresponding mask exist or not.
+Check against both train and val data
+"""
+import os
+import sys
+from omegaconf import DictConfig
+from tqdm import tqdm
+
+sys.path.append(os.path.abspath("./"))
+from utils.general_utils import join_paths
+from utils.images_utils import image_to_mask_name
+
+
+def check_image_and_mask(cfg, mode):
+    """
+    Check and print names of those images whose mask are not found.
+    """
+    images_path = join_paths(
+        cfg.WORK_DIR,
+        cfg.DATASET[mode].IMAGES_PATH
+    )
+    mask_path = join_paths(
+        cfg.WORK_DIR,
+        cfg.DATASET[mode].MASK_PATH
+    )
+
+    all_images = os.listdir(images_path)
+
+    both_found = True
+    for image in tqdm(all_images):
+        mask_name = image_to_mask_name(image)
+        if not (
+                os.path.exists(
+                    join_paths(images_path, image)
+                ) and
+                os.path.exists(
+                    join_paths(mask_path, mask_name)
+                )
+        ):
+            print(f"{mask_name} did not found against {image}")
+            both_found = False
+
+    return both_found
+
+
+def verify_data(cfg: DictConfig):
+    """
+    For both train and val data, check for each image its
+    corresponding mask exist or not. If not then stop the program.
+    """
+    assert check_image_and_mask(cfg, "TRAIN"), \
+        "Train images and mask should be same in length"
+
+    assert check_image_and_mask(cfg, "VAL"), \
+        "Validation images and mask should be same in length"
diff --git a/TensorFlow2/Segmentation/UNet3P/evaluate.py b/TensorFlow2/Segmentation/UNet3P/evaluate.py
new file mode 100644
index 000000000..555381e6b
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/evaluate.py
@@ -0,0 +1,125 @@
+"""
+Evaluation script used to calculate accuracy of trained model
+"""
+import os
+import hydra
+from omegaconf import DictConfig
+import tensorflow as tf
+from tensorflow.keras import mixed_precision
+
+from data_generators import data_generator
+from utils.general_utils import join_paths, set_gpus, suppress_warnings
+from models.model import prepare_model
+from losses.loss import DiceCoefficient
+from losses.unet_loss import unet3p_hybrid_loss
+
+
+def evaluate(cfg: DictConfig):
+    """
+    Evaluate or calculate accuracy of given model
+    """
+
+    # suppress TensorFlow and DALI warnings
+    suppress_warnings()
+
+    if cfg.USE_MULTI_GPUS.VALUE:
+        # change number of visible gpus for evaluation
+        set_gpus(cfg.USE_MULTI_GPUS.GPU_IDS)
+        # update batch size according to available gpus
+        data_generator.update_batch_size(cfg)
+
+    if cfg.OPTIMIZATION.AMP:
+        print("Enabling Automatic Mixed Precision(AMP) training")
+        policy = mixed_precision.Policy('mixed_float16')
+        mixed_precision.set_global_policy(policy)
+
+    if cfg.OPTIMIZATION.XLA:
+        print("Enabling Automatic Mixed Precision(XLA) training")
+        tf.config.optimizer.set_jit(True)
+
+    # create model
+    strategy = None
+    if cfg.USE_MULTI_GPUS.VALUE:
+        # multi gpu training using tensorflow mirrored strategy
+        strategy = tf.distribute.MirroredStrategy(
+            cross_device_ops=tf.distribute.HierarchicalCopyAllReduce()
+        )
+        print('Number of visible gpu devices: {}'.format(strategy.num_replicas_in_sync))
+        with strategy.scope():
+            optimizer = tf.keras.optimizers.Adam(
+                learning_rate=cfg.HYPER_PARAMETERS.LEARNING_RATE
+            )  # optimizer
+            if cfg.OPTIMIZATION.AMP:
+                optimizer = mixed_precision.LossScaleOptimizer(
+                    optimizer,
+                    dynamic=True
+                )
+            dice_coef = DiceCoefficient(post_processed=True, classes=cfg.OUTPUT.CLASSES)
+            dice_coef = tf.keras.metrics.MeanMetricWrapper(name="dice_coef", fn=dice_coef)
+            model = prepare_model(cfg, training=True)
+    else:
+        optimizer = tf.keras.optimizers.Adam(
+            learning_rate=cfg.HYPER_PARAMETERS.LEARNING_RATE
+        )  # optimizer
+        if cfg.OPTIMIZATION.AMP:
+            optimizer = mixed_precision.LossScaleOptimizer(
+                optimizer,
+                dynamic=True
+            )
+        dice_coef = DiceCoefficient(post_processed=True, classes=cfg.OUTPUT.CLASSES)
+        dice_coef = tf.keras.metrics.MeanMetricWrapper(name="dice_coef", fn=dice_coef)
+        model = prepare_model(cfg, training=True)
+
+    model.compile(
+        optimizer=optimizer,
+        loss=unet3p_hybrid_loss,
+        metrics=[dice_coef],
+    )
+
+    # weights model path
+    checkpoint_path = join_paths(
+        cfg.WORK_DIR,
+        cfg.CALLBACKS.MODEL_CHECKPOINT.PATH,
+        f"{cfg.MODEL.WEIGHTS_FILE_NAME}.hdf5"
+    )
+
+    assert os.path.exists(checkpoint_path), \
+        f"Model weight's file does not exist at \n{checkpoint_path}"
+
+    # TODO: verify without augment it produces same results
+    # load model weights
+    model.load_weights(checkpoint_path, by_name=True, skip_mismatch=True)
+    model.summary()
+
+    # data generators
+    val_generator = data_generator.get_data_generator(cfg, "VAL", strategy)
+    validation_steps = data_generator.get_iterations(cfg, mode="VAL")
+
+    # evaluation metric
+    evaluation_metric = "dice_coef"
+    if len(model.outputs) > 1:
+        evaluation_metric = f"{model.output_names[0]}_dice_coef"
+
+    result = model.evaluate(
+        x=val_generator,
+        steps=validation_steps,
+        workers=cfg.DATALOADER_WORKERS,
+        return_dict=True,
+    )
+
+    # return computed loss, validation accuracy, and it's metric name
+    return result, evaluation_metric
+
+
+@hydra.main(version_base=None, config_path="configs", config_name="config")
+def main(cfg: DictConfig):
+    """
+    Read config file and pass to evaluate method
+    """
+    result, evaluation_metric = evaluate(cfg)
+    print(result)
+    print(f"Validation dice coefficient: {result[evaluation_metric]}")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/TensorFlow2/Segmentation/UNet3P/figures/unet3p_architecture.png b/TensorFlow2/Segmentation/UNet3P/figures/unet3p_architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..77a892f11262cb746f33ebbed6c68e9f5ff58741
GIT binary patch
literal 87012
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

literal 0
HcmV?d00001

diff --git a/TensorFlow2/Segmentation/UNet3P/losses/loss.py b/TensorFlow2/Segmentation/UNet3P/losses/loss.py
new file mode 100644
index 000000000..652c7434e
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/losses/loss.py
@@ -0,0 +1,114 @@
+"""
+Implementation of different loss functions
+"""
+import tensorflow as tf
+import tensorflow.keras.backend as K
+
+
+def iou(y_true, y_pred, smooth=1.e-9):
+    """
+    Calculate intersection over union (IoU) between images.
+    Input shape should be Batch x Height x Width x #Classes (BxHxWxN).
+    Using Mean as reduction type for batch values.
+    """
+    intersection = K.sum(K.abs(y_true * y_pred), axis=[1, 2, 3])
+    union = K.sum(y_true, [1, 2, 3]) + K.sum(y_pred, [1, 2, 3])
+    union = union - intersection
+    iou = K.mean((intersection + smooth) / (union + smooth), axis=0)
+    return iou
+
+
+def iou_loss(y_true, y_pred):
+    """
+    Jaccard / IoU loss
+    """
+    return 1 - iou(y_true, y_pred)
+
+
+def focal_loss(y_true, y_pred):
+    """
+    Focal loss
+    """
+    gamma = 2.
+    alpha = 4.
+    epsilon = 1.e-9
+
+    y_true_c = tf.convert_to_tensor(y_true, tf.float32)
+    y_pred_c = tf.convert_to_tensor(y_pred, tf.float32)
+
+    model_out = tf.add(y_pred_c, epsilon)
+    ce = tf.multiply(y_true_c, -tf.math.log(model_out))
+    weight = tf.multiply(y_true_c, tf.pow(
+        tf.subtract(1., model_out), gamma)
+                         )
+    fl = tf.multiply(alpha, tf.multiply(weight, ce))
+    reduced_fl = tf.reduce_max(fl, axis=-1)
+    return tf.reduce_mean(reduced_fl)
+
+
+def ssim_loss(y_true, y_pred, smooth=1.e-9):
+    """
+    Structural Similarity Index loss.
+    Input shape should be Batch x Height x Width x #Classes (BxHxWxN).
+    Using Mean as reduction type for batch values.
+    """
+    ssim_value = tf.image.ssim(y_true, y_pred, max_val=1)
+    return K.mean(1 - ssim_value + smooth, axis=0)
+
+
+class DiceCoefficient(tf.keras.metrics.Metric):
+    """
+    Dice coefficient metric. Can be used to calculate dice on probabilities
+    or on their respective classes
+    """
+
+    def __init__(self, post_processed: bool,
+                 classes: int,
+                 name='dice_coef',
+                 **kwargs):
+        """
+        Set post_processed=False if dice coefficient needs to be calculated
+        on probabilities. Set post_processed=True if probabilities needs to
+        be first converted/mapped into their respective class.
+        """
+        super(DiceCoefficient, self).__init__(name=name, **kwargs)
+        self.dice_value = self.add_weight(name='dice_value', initializer='zeros',
+                                          aggregation=tf.VariableAggregation.MEAN)  # SUM
+        self.post_processed = post_processed
+        self.classes = classes
+        if self.classes == 1:
+            self.axis = [1, 2, 3]
+        else:
+            self.axis = [1, 2, ]
+
+    def update_state(self, y_true, y_pred, sample_weight=None):
+        if self.post_processed:
+            if self.classes == 1:
+                y_true_ = y_true
+                y_pred_ = tf.where(y_pred > .5, 1.0, 0.0)
+            else:
+                y_true_ = tf.math.argmax(y_true, axis=-1, output_type=tf.int32)
+                y_pred_ = tf.math.argmax(y_pred, axis=-1, output_type=tf.int32)
+                y_true_ = tf.cast(y_true_, dtype=tf.float32)
+                y_pred_ = tf.cast(y_pred_, dtype=tf.float32)
+        else:
+            y_true_, y_pred_ = y_true, y_pred
+
+        self.dice_value.assign(self.dice_coef(y_true_, y_pred_))
+
+    def result(self):
+        return self.dice_value
+
+    def reset_state(self):
+        self.dice_value.assign(0.0)  # reset metric state
+
+    def dice_coef(self, y_true, y_pred, smooth=1.e-9):
+        """
+        Calculate dice coefficient.
+        Input shape could be either Batch x Height x Width x #Classes (BxHxWxN)
+        or Batch x Height x Width (BxHxW).
+        Using Mean as reduction type for batch values.
+        """
+        intersection = K.sum(y_true * y_pred, axis=self.axis)
+        union = K.sum(y_true, axis=self.axis) + K.sum(y_pred, axis=self.axis)
+        return K.mean((2. * intersection + smooth) / (union + smooth), axis=0)
diff --git a/TensorFlow2/Segmentation/UNet3P/losses/unet_loss.py b/TensorFlow2/Segmentation/UNet3P/losses/unet_loss.py
new file mode 100644
index 000000000..24f3c1063
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/losses/unet_loss.py
@@ -0,0 +1,19 @@
+"""
+UNet 3+ Loss
+"""
+from .loss import focal_loss, ssim_loss, iou_loss
+
+
+def unet3p_hybrid_loss(y_true, y_pred):
+    """
+    Hybrid loss proposed in
+    UNET 3+ (https://arxiv.org/ftp/arxiv/papers/2004/2004.08790.pdf)
+    Hybrid loss for segmentation in three-level hierarchy – pixel,
+    patch and map-level, which is able to capture both large-scale
+    and fine structures with clear boundaries.
+    """
+    f_loss = focal_loss(y_true, y_pred)
+    ms_ssim_loss = ssim_loss(y_true, y_pred)
+    jacard_loss = iou_loss(y_true, y_pred)
+
+    return f_loss + ms_ssim_loss + jacard_loss
diff --git a/TensorFlow2/Segmentation/UNet3P/models/backbones.py b/TensorFlow2/Segmentation/UNet3P/models/backbones.py
new file mode 100644
index 000000000..22fd65e84
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/models/backbones.py
@@ -0,0 +1,73 @@
+"""
+Unet3+ backbones
+"""
+import tensorflow as tf
+import tensorflow.keras as k
+from .unet3plus_utils import conv_block
+
+
+def vgg16_backbone(input_layer, ):
+    """ VGG-16 backbone as encoder for UNet3P """
+
+    base_model = tf.keras.applications.VGG16(
+        input_tensor=input_layer,
+        weights=None,
+        include_top=False
+    )
+
+    # block 1
+    e1 = base_model.get_layer("block1_conv2").output  # 320, 320, 64
+    # block 2
+    e2 = base_model.get_layer("block2_conv2").output  # 160, 160, 128
+    # block 3
+    e3 = base_model.get_layer("block3_conv3").output  # 80, 80, 256
+    # block 4
+    e4 = base_model.get_layer("block4_conv3").output  # 40, 40, 512
+    # block 5
+    e5 = base_model.get_layer("block5_conv3").output  # 20, 20, 512
+
+    return [e1, e2, e3, e4, e5]
+
+
+def vgg19_backbone(input_layer, ):
+    """ VGG-19 backbone as encoder for UNet3P """
+
+    base_model = tf.keras.applications.VGG19(
+        input_tensor=input_layer,
+        weights=None,
+        include_top=False
+    )
+
+    # block 1
+    e1 = base_model.get_layer("block1_conv2").output  # 320, 320, 64
+    # block 2
+    e2 = base_model.get_layer("block2_conv2").output  # 160, 160, 128
+    # block 3
+    e3 = base_model.get_layer("block3_conv4").output  # 80, 80, 256
+    # block 4
+    e4 = base_model.get_layer("block4_conv4").output  # 40, 40, 512
+    # block 5
+    e5 = base_model.get_layer("block5_conv4").output  # 20, 20, 512
+
+    return [e1, e2, e3, e4, e5]
+
+
+def unet3plus_backbone(input_layer, filters):
+    """ UNet3+ own backbone """
+    """ Encoder"""
+    # block 1
+    e1 = conv_block(input_layer, filters[0])  # 320*320*64
+    # block 2
+    e2 = k.layers.MaxPool2D(pool_size=(2, 2))(e1)  # 160*160*64
+    e2 = conv_block(e2, filters[1])  # 160*160*128
+    # block 3
+    e3 = k.layers.MaxPool2D(pool_size=(2, 2))(e2)  # 80*80*128
+    e3 = conv_block(e3, filters[2])  # 80*80*256
+    # block 4
+    e4 = k.layers.MaxPool2D(pool_size=(2, 2))(e3)  # 40*40*256
+    e4 = conv_block(e4, filters[3])  # 40*40*512
+    # block 5, bottleneck layer
+    e5 = k.layers.MaxPool2D(pool_size=(2, 2))(e4)  # 20*20*512
+    e5 = conv_block(e5, filters[4])  # 20*20*1024
+
+    return [e1, e2, e3, e4, e5]
diff --git a/TensorFlow2/Segmentation/UNet3P/models/model.py b/TensorFlow2/Segmentation/UNet3P/models/model.py
new file mode 100644
index 000000000..1b2e5a6bd
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/models/model.py
@@ -0,0 +1,100 @@
+"""
+Returns Unet3+ model
+"""
+import tensorflow as tf
+from omegaconf import DictConfig
+
+from .backbones import vgg16_backbone, vgg19_backbone, unet3plus_backbone
+from .unet3plus import unet3plus
+from .unet3plus_deep_supervision import unet3plus_deepsup
+from .unet3plus_deep_supervision_cgm import unet3plus_deepsup_cgm
+
+
+def prepare_model(cfg: DictConfig, training=False):
+    """
+    Creates and return model object based on given model type.
+    """
+
+    input_shape = [cfg.INPUT.HEIGHT, cfg.INPUT.WIDTH, cfg.INPUT.CHANNELS]
+    input_layer = tf.keras.layers.Input(
+        shape=input_shape,
+        name="input_layer"
+    )  # 320*320*3
+    filters = [64, 128, 256, 512, 1024]
+
+    #  create backbone
+    if cfg.MODEL.BACKBONE.TYPE == "unet3plus":
+        backbone_layers = unet3plus_backbone(
+            input_layer,
+            filters
+        )
+    elif cfg.MODEL.BACKBONE.TYPE == "vgg16":
+        backbone_layers = vgg16_backbone(input_layer, )
+    elif cfg.MODEL.BACKBONE.TYPE == "vgg19":
+        backbone_layers = vgg19_backbone(input_layer, )
+    else:
+        raise ValueError(
+            "Wrong backbone type passed."
+            "\nPlease check config file for possible options."
+        )
+    print(f"Using {cfg.MODEL.BACKBONE.TYPE} as a backbone.")
+
+    if cfg.MODEL.TYPE == "unet3plus":
+        #  training parameter does not matter in this case
+        outputs, model_name = unet3plus(
+            backbone_layers,
+            cfg.OUTPUT.CLASSES,
+            filters
+        )
+    elif cfg.MODEL.TYPE == "unet3plus_deepsup":
+        outputs, model_name = unet3plus_deepsup(
+            backbone_layers,
+            cfg.OUTPUT.CLASSES,
+            filters,
+            training
+        )
+    elif cfg.MODEL.TYPE == "unet3plus_deepsup_cgm":
+        if cfg.OUTPUT.CLASSES != 1:
+            raise ValueError(
+                "UNet3+ with Deep Supervision and Classification Guided Module"
+                "\nOnly works when model output classes are equal to 1"
+            )
+        outputs, model_name = unet3plus_deepsup_cgm(
+            backbone_layers,
+            cfg.OUTPUT.CLASSES,
+            filters,
+            training
+        )
+    else:
+        raise ValueError(
+            "Wrong model type passed."
+            "\nPlease check config file for possible options."
+        )
+
+    return tf.keras.Model(
+        inputs=input_layer,
+        outputs=outputs,
+        name=model_name
+    )
+
+
+if __name__ == "__main__":
+    """## Test model Compilation,"""
+    from omegaconf import OmegaConf
+
+    cfg = {
+        "WORK_DIR": "H:\\Projects\\UNet3P",
+        "INPUT": {"HEIGHT": 320, "WIDTH": 320, "CHANNELS": 3},
+        "OUTPUT": {"CLASSES": 1},
+        # available variants are unet3plus, unet3plus_deepsup, unet3plus_deepsup_cgm
+        "MODEL": {"TYPE": "unet3plus",
+                  # available variants are unet3plus, vgg16, vgg19
+                  "BACKBONE": {"TYPE": "vgg19", }
+                  }
+    }
+    unet_3P = prepare_model(OmegaConf.create(cfg), True)
+    unet_3P.summary()
+
+    # tf.keras.utils.plot_model(unet_3P, show_layer_names=True, show_shapes=True)
+
+    # unet_3P.save("unet_3P.hdf5")
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus.py b/TensorFlow2/Segmentation/UNet3P/models/unet3plus.py
new file mode 100644
index 000000000..a1036196e
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/models/unet3plus.py
@@ -0,0 +1,104 @@
+"""
+UNet3+ base model
+"""
+import tensorflow as tf
+import tensorflow.keras as k
+from .unet3plus_utils import conv_block
+
+
+def unet3plus(encoder_layer, output_channels, filters):
+    """ UNet3+ base model """
+
+    """ Encoder """
+    e1 = encoder_layer[0]
+    e2 = encoder_layer[1]
+    e3 = encoder_layer[2]
+    e4 = encoder_layer[3]
+    e5 = encoder_layer[4]
+
+    """ Decoder """
+    cat_channels = filters[0]
+    cat_blocks = len(filters)
+    upsample_channels = cat_blocks * cat_channels
+
+    """ d4 """
+    e1_d4 = k.layers.MaxPool2D(pool_size=(8, 8))(e1)  # 320*320*64  --> 40*40*64
+    e1_d4 = conv_block(e1_d4, cat_channels, n=1)  # 320*320*64  --> 40*40*64
+
+    e2_d4 = k.layers.MaxPool2D(pool_size=(4, 4))(e2)  # 160*160*128 --> 40*40*128
+    e2_d4 = conv_block(e2_d4, cat_channels, n=1)  # 160*160*128 --> 40*40*64
+
+    e3_d4 = k.layers.MaxPool2D(pool_size=(2, 2))(e3)  # 80*80*256  --> 40*40*256
+    e3_d4 = conv_block(e3_d4, cat_channels, n=1)  # 80*80*256  --> 40*40*64
+
+    e4_d4 = conv_block(e4, cat_channels, n=1)  # 40*40*512  --> 40*40*64
+
+    e5_d4 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(e5)  # 80*80*256  --> 40*40*256
+    e5_d4 = conv_block(e5_d4, cat_channels, n=1)  # 20*20*1024  --> 20*20*64
+
+    d4 = k.layers.concatenate([e1_d4, e2_d4, e3_d4, e4_d4, e5_d4])
+    d4 = conv_block(d4, upsample_channels, n=1)  # 40*40*320  --> 40*40*320
+
+    """ d3 """
+    e1_d3 = k.layers.MaxPool2D(pool_size=(4, 4))(e1)  # 320*320*64 --> 80*80*64
+    e1_d3 = conv_block(e1_d3, cat_channels, n=1)  # 80*80*64 --> 80*80*64
+
+    e2_d3 = k.layers.MaxPool2D(pool_size=(2, 2))(e2)  # 160*160*256 --> 80*80*256
+    e2_d3 = conv_block(e2_d3, cat_channels, n=1)  # 80*80*256 --> 80*80*64
+
+    e3_d3 = conv_block(e3, cat_channels, n=1)  # 80*80*512 --> 80*80*64
+
+    e4_d3 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d4)  # 40*40*320 --> 80*80*320
+    e4_d3 = conv_block(e4_d3, cat_channels, n=1)  # 80*80*320 --> 80*80*64
+
+    e5_d3 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(e5)  # 20*20*320 --> 80*80*320
+    e5_d3 = conv_block(e5_d3, cat_channels, n=1)  # 80*80*320 --> 80*80*64
+
+    d3 = k.layers.concatenate([e1_d3, e2_d3, e3_d3, e4_d3, e5_d3])
+    d3 = conv_block(d3, upsample_channels, n=1)  # 80*80*320 --> 80*80*320
+
+    """ d2 """
+    e1_d2 = k.layers.MaxPool2D(pool_size=(2, 2))(e1)  # 320*320*64 --> 160*160*64
+    e1_d2 = conv_block(e1_d2, cat_channels, n=1)  # 160*160*64 --> 160*160*64
+
+    e2_d2 = conv_block(e2, cat_channels, n=1)  # 160*160*256 --> 160*160*64
+
+    d3_d2 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d3)  # 80*80*320 --> 160*160*320
+    d3_d2 = conv_block(d3_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d4_d2 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d4)  # 40*40*320 --> 160*160*320
+    d4_d2 = conv_block(d4_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    e5_d2 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(e5)  # 20*20*320 --> 160*160*320
+    e5_d2 = conv_block(e5_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d2 = k.layers.concatenate([e1_d2, e2_d2, d3_d2, d4_d2, e5_d2])
+    d2 = conv_block(d2, upsample_channels, n=1)  # 160*160*320 --> 160*160*320
+
+    """ d1 """
+    e1_d1 = conv_block(e1, cat_channels, n=1)  # 320*320*64 --> 320*320*64
+
+    d2_d1 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d2)  # 160*160*320 --> 320*320*320
+    d2_d1 = conv_block(d2_d1, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d3_d1 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d3)  # 80*80*320 --> 320*320*320
+    d3_d1 = conv_block(d3_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    d4_d1 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(d4)  # 40*40*320 --> 320*320*320
+    d4_d1 = conv_block(d4_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    e5_d1 = k.layers.UpSampling2D(size=(16, 16), interpolation='bilinear')(e5)  # 20*20*320 --> 320*320*320
+    e5_d1 = conv_block(e5_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    d1 = k.layers.concatenate([e1_d1, d2_d1, d3_d1, d4_d1, e5_d1, ])
+    d1 = conv_block(d1, upsample_channels, n=1)  # 320*320*320 --> 320*320*320
+
+    # last layer does not have batchnorm and relu
+    d = conv_block(d1, output_channels, n=1, is_bn=False, is_relu=False)
+
+    if output_channels == 1:
+        output = k.layers.Activation('sigmoid', dtype='float32')(d)
+    else:
+        output = k.layers.Activation('softmax', dtype='float32')(d)
+
+    return output, 'UNet_3Plus'
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision.py b/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision.py
new file mode 100644
index 000000000..0766ed820
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision.py
@@ -0,0 +1,132 @@
+"""
+UNet3+ with Deep Supervision
+"""
+import tensorflow as tf
+import tensorflow.keras as k
+from .unet3plus_utils import conv_block
+
+
+def unet3plus_deepsup(encoder_layer, output_channels, filters, training=False):
+    """ UNet_3Plus with Deep Supervision """
+
+    """ Encoder """
+    e1 = encoder_layer[0]
+    e2 = encoder_layer[1]
+    e3 = encoder_layer[2]
+    e4 = encoder_layer[3]
+    e5 = encoder_layer[4]
+
+    """ Decoder """
+    cat_channels = filters[0]
+    cat_blocks = len(filters)
+    upsample_channels = cat_blocks * cat_channels
+
+    """ d4 """
+    e1_d4 = k.layers.MaxPool2D(pool_size=(8, 8))(e1)  # 320*320*64  --> 40*40*64
+    e1_d4 = conv_block(e1_d4, cat_channels, n=1)  # 320*320*64  --> 40*40*64
+
+    e2_d4 = k.layers.MaxPool2D(pool_size=(4, 4))(e2)  # 160*160*128 --> 40*40*128
+    e2_d4 = conv_block(e2_d4, cat_channels, n=1)  # 160*160*128 --> 40*40*64
+
+    e3_d4 = k.layers.MaxPool2D(pool_size=(2, 2))(e3)  # 80*80*256  --> 40*40*256
+    e3_d4 = conv_block(e3_d4, cat_channels, n=1)  # 80*80*256  --> 40*40*64
+
+    e4_d4 = conv_block(e4, cat_channels, n=1)  # 40*40*512  --> 40*40*64
+
+    e5_d4 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(e5)  # 80*80*256  --> 40*40*256
+    e5_d4 = conv_block(e5_d4, cat_channels, n=1)  # 20*20*1024  --> 20*20*64
+
+    d4 = k.layers.concatenate([e1_d4, e2_d4, e3_d4, e4_d4, e5_d4])
+    d4 = conv_block(d4, upsample_channels, n=1)  # 40*40*320  --> 40*40*320
+
+    """ d3 """
+    e1_d3 = k.layers.MaxPool2D(pool_size=(4, 4))(e1)  # 320*320*64 --> 80*80*64
+    e1_d3 = conv_block(e1_d3, cat_channels, n=1)  # 80*80*64 --> 80*80*64
+
+    e2_d3 = k.layers.MaxPool2D(pool_size=(2, 2))(e2)  # 160*160*256 --> 80*80*256
+    e2_d3 = conv_block(e2_d3, cat_channels, n=1)  # 80*80*256 --> 80*80*64
+
+    e3_d3 = conv_block(e3, cat_channels, n=1)  # 80*80*512 --> 80*80*64
+
+    e4_d3 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d4)  # 40*40*320 --> 80*80*320
+    e4_d3 = conv_block(e4_d3, cat_channels, n=1)  # 80*80*320 --> 80*80*64
+
+    e5_d3 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(e5)  # 20*20*320 --> 80*80*320
+    e5_d3 = conv_block(e5_d3, cat_channels, n=1)  # 80*80*320 --> 80*80*64
+
+    d3 = k.layers.concatenate([e1_d3, e2_d3, e3_d3, e4_d3, e5_d3])
+    d3 = conv_block(d3, upsample_channels, n=1)  # 80*80*320 --> 80*80*320
+
+    """ d2 """
+    e1_d2 = k.layers.MaxPool2D(pool_size=(2, 2))(e1)  # 320*320*64 --> 160*160*64
+    e1_d2 = conv_block(e1_d2, cat_channels, n=1)  # 160*160*64 --> 160*160*64
+
+    e2_d2 = conv_block(e2, cat_channels, n=1)  # 160*160*256 --> 160*160*64
+
+    d3_d2 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d3)  # 80*80*320 --> 160*160*320
+    d3_d2 = conv_block(d3_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d4_d2 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d4)  # 40*40*320 --> 160*160*320
+    d4_d2 = conv_block(d4_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    e5_d2 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(e5)  # 20*20*320 --> 160*160*320
+    e5_d2 = conv_block(e5_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d2 = k.layers.concatenate([e1_d2, e2_d2, d3_d2, d4_d2, e5_d2])
+    d2 = conv_block(d2, upsample_channels, n=1)  # 160*160*320 --> 160*160*320
+
+    """ d1 """
+    e1_d1 = conv_block(e1, cat_channels, n=1)  # 320*320*64 --> 320*320*64
+
+    d2_d1 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d2)  # 160*160*320 --> 320*320*320
+    d2_d1 = conv_block(d2_d1, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d3_d1 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d3)  # 80*80*320 --> 320*320*320
+    d3_d1 = conv_block(d3_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    d4_d1 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(d4)  # 40*40*320 --> 320*320*320
+    d4_d1 = conv_block(d4_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    e5_d1 = k.layers.UpSampling2D(size=(16, 16), interpolation='bilinear')(e5)  # 20*20*320 --> 320*320*320
+    e5_d1 = conv_block(e5_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    d1 = k.layers.concatenate([e1_d1, d2_d1, d3_d1, d4_d1, e5_d1, ])
+    d1 = conv_block(d1, upsample_channels, n=1)  # 320*320*320 --> 320*320*320
+
+    # last layer does not have batch norm and relu
+    d1 = conv_block(d1, output_channels, n=1, is_bn=False, is_relu=False)
+
+    if output_channels == 1:
+        d1 = k.layers.Activation('sigmoid', dtype='float32')(d1)
+    else:
+        # d1 = k.activations.softmax(d1)
+        d1 = k.layers.Activation('softmax', dtype='float32')(d1)
+
+    """ Deep Supervision Part"""
+    if training:
+        d2 = conv_block(d2, output_channels, n=1, is_bn=False, is_relu=False)
+        d3 = conv_block(d3, output_channels, n=1, is_bn=False, is_relu=False)
+        d4 = conv_block(d4, output_channels, n=1, is_bn=False, is_relu=False)
+        e5 = conv_block(e5, output_channels, n=1, is_bn=False, is_relu=False)
+
+        # d1 = no need for up sampling
+        d2 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d2)
+        d3 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d3)
+        d4 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(d4)
+        e5 = k.layers.UpSampling2D(size=(16, 16), interpolation='bilinear')(e5)
+
+        if output_channels == 1:
+            d2 = k.layers.Activation('sigmoid', dtype='float32')(d2)
+            d3 = k.layers.Activation('sigmoid', dtype='float32')(d3)
+            d4 = k.layers.Activation('sigmoid', dtype='float32')(d4)
+            e5 = k.layers.Activation('sigmoid', dtype='float32')(e5)
+        else:
+            d2 = k.layers.Activation('softmax', dtype='float32')(d2)
+            d3 = k.layers.Activation('softmax', dtype='float32')(d3)
+            d4 = k.layers.Activation('softmax', dtype='float32')(d4)
+            e5 = k.layers.Activation('softmax', dtype='float32')(e5)
+
+    if training:
+        return [d1, d2, d3, d4, e5], 'UNet3Plus_DeepSup'
+    else:
+        return [d1, ], 'UNet3Plus_DeepSup'
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision_cgm.py b/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision_cgm.py
new file mode 100644
index 000000000..110dd81d8
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision_cgm.py
@@ -0,0 +1,138 @@
+"""
+UNet_3Plus with Deep Supervision and Classification Guided Module
+"""
+import tensorflow as tf
+import tensorflow.keras as k
+from .unet3plus_utils import conv_block, dot_product
+
+
+def unet3plus_deepsup_cgm(encoder_layer, output_channels, filters, training=False):
+    """ UNet_3Plus with Deep Supervision and Classification Guided Module """
+
+    """ Encoder """
+    e1 = encoder_layer[0]
+    e2 = encoder_layer[1]
+    e3 = encoder_layer[2]
+    e4 = encoder_layer[3]
+    e5 = encoder_layer[4]
+
+    """ Classification Guided Module. Part 1"""
+    cls = k.layers.Dropout(rate=0.5)(e5)
+    cls = k.layers.Conv2D(2, kernel_size=(1, 1), padding="same", strides=(1, 1))(cls)
+    cls = k.layers.GlobalMaxPooling2D()(cls)
+    cls = k.layers.Activation('sigmoid', dtype='float32')(cls)
+    cls = tf.argmax(cls, axis=-1)
+    cls = cls[..., tf.newaxis]
+    cls = tf.cast(cls, dtype=tf.float32, )
+
+    """ Decoder """
+    cat_channels = filters[0]
+    cat_blocks = len(filters)
+    upsample_channels = cat_blocks * cat_channels
+
+    """ d4 """
+    e1_d4 = k.layers.MaxPool2D(pool_size=(8, 8))(e1)  # 320*320*64  --> 40*40*64
+    e1_d4 = conv_block(e1_d4, cat_channels, n=1)  # 320*320*64  --> 40*40*64
+
+    e2_d4 = k.layers.MaxPool2D(pool_size=(4, 4))(e2)  # 160*160*128 --> 40*40*128
+    e2_d4 = conv_block(e2_d4, cat_channels, n=1)  # 160*160*128 --> 40*40*64
+
+    e3_d4 = k.layers.MaxPool2D(pool_size=(2, 2))(e3)  # 80*80*256  --> 40*40*256
+    e3_d4 = conv_block(e3_d4, cat_channels, n=1)  # 80*80*256  --> 40*40*64
+
+    e4_d4 = conv_block(e4, cat_channels, n=1)  # 40*40*512  --> 40*40*64
+
+    e5_d4 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(e5)  # 80*80*256  --> 40*40*256
+    e5_d4 = conv_block(e5_d4, cat_channels, n=1)  # 20*20*1024  --> 20*20*64
+
+    d4 = k.layers.concatenate([e1_d4, e2_d4, e3_d4, e4_d4, e5_d4])
+    d4 = conv_block(d4, upsample_channels, n=1)  # 40*40*320  --> 40*40*320
+
+    """ d3 """
+    e1_d3 = k.layers.MaxPool2D(pool_size=(4, 4))(e1)  # 320*320*64 --> 80*80*64
+    e1_d3 = conv_block(e1_d3, cat_channels, n=1)  # 80*80*64 --> 80*80*64
+
+    e2_d3 = k.layers.MaxPool2D(pool_size=(2, 2))(e2)  # 160*160*256 --> 80*80*256
+    e2_d3 = conv_block(e2_d3, cat_channels, n=1)  # 80*80*256 --> 80*80*64
+
+    e3_d3 = conv_block(e3, cat_channels, n=1)  # 80*80*512 --> 80*80*64
+
+    e4_d3 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d4)  # 40*40*320 --> 80*80*320
+    e4_d3 = conv_block(e4_d3, cat_channels, n=1)  # 80*80*320 --> 80*80*64
+
+    e5_d3 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(e5)  # 20*20*320 --> 80*80*320
+    e5_d3 = conv_block(e5_d3, cat_channels, n=1)  # 80*80*320 --> 80*80*64
+
+    d3 = k.layers.concatenate([e1_d3, e2_d3, e3_d3, e4_d3, e5_d3])
+    d3 = conv_block(d3, upsample_channels, n=1)  # 80*80*320 --> 80*80*320
+
+    """ d2 """
+    e1_d2 = k.layers.MaxPool2D(pool_size=(2, 2))(e1)  # 320*320*64 --> 160*160*64
+    e1_d2 = conv_block(e1_d2, cat_channels, n=1)  # 160*160*64 --> 160*160*64
+
+    e2_d2 = conv_block(e2, cat_channels, n=1)  # 160*160*256 --> 160*160*64
+
+    d3_d2 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d3)  # 80*80*320 --> 160*160*320
+    d3_d2 = conv_block(d3_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d4_d2 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d4)  # 40*40*320 --> 160*160*320
+    d4_d2 = conv_block(d4_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    e5_d2 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(e5)  # 20*20*320 --> 160*160*320
+    e5_d2 = conv_block(e5_d2, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d2 = k.layers.concatenate([e1_d2, e2_d2, d3_d2, d4_d2, e5_d2])
+    d2 = conv_block(d2, upsample_channels, n=1)  # 160*160*320 --> 160*160*320
+
+    """ d1 """
+    e1_d1 = conv_block(e1, cat_channels, n=1)  # 320*320*64 --> 320*320*64
+
+    d2_d1 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d2)  # 160*160*320 --> 320*320*320
+    d2_d1 = conv_block(d2_d1, cat_channels, n=1)  # 160*160*320 --> 160*160*64
+
+    d3_d1 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d3)  # 80*80*320 --> 320*320*320
+    d3_d1 = conv_block(d3_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    d4_d1 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(d4)  # 40*40*320 --> 320*320*320
+    d4_d1 = conv_block(d4_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    e5_d1 = k.layers.UpSampling2D(size=(16, 16), interpolation='bilinear')(e5)  # 20*20*320 --> 320*320*320
+    e5_d1 = conv_block(e5_d1, cat_channels, n=1)  # 320*320*320 --> 320*320*64
+
+    d1 = k.layers.concatenate([e1_d1, d2_d1, d3_d1, d4_d1, e5_d1, ])
+    d1 = conv_block(d1, upsample_channels, n=1)  # 320*320*320 --> 320*320*320
+
+    """ Deep Supervision Part"""
+    # last layer does not have batch norm and relu
+    d1 = conv_block(d1, output_channels, n=1, is_bn=False, is_relu=False)
+    if training:
+        d2 = conv_block(d2, output_channels, n=1, is_bn=False, is_relu=False)
+        d3 = conv_block(d3, output_channels, n=1, is_bn=False, is_relu=False)
+        d4 = conv_block(d4, output_channels, n=1, is_bn=False, is_relu=False)
+        e5 = conv_block(e5, output_channels, n=1, is_bn=False, is_relu=False)
+
+        # d1 = no need for up sampling
+        d2 = k.layers.UpSampling2D(size=(2, 2), interpolation='bilinear')(d2)
+        d3 = k.layers.UpSampling2D(size=(4, 4), interpolation='bilinear')(d3)
+        d4 = k.layers.UpSampling2D(size=(8, 8), interpolation='bilinear')(d4)
+        e5 = k.layers.UpSampling2D(size=(16, 16), interpolation='bilinear')(e5)
+
+    """ Classification Guided Module. Part 2"""
+    d1 = dot_product(d1, cls)
+    d1 = k.layers.Activation('sigmoid', dtype='float32')(d1)
+
+    if training:
+        d2 = dot_product(d2, cls)
+        d3 = dot_product(d3, cls)
+        d4 = dot_product(d4, cls)
+        e5 = dot_product(e5, cls)
+
+        d2 = k.layers.Activation('sigmoid', dtype='float32')(d2)
+        d3 = k.layers.Activation('sigmoid', dtype='float32')(d3)
+        d4 = k.layers.Activation('sigmoid', dtype='float32')(d4)
+        e5 = k.layers.Activation('sigmoid', dtype='float32')(e5)
+
+    if training:
+        return [d1, d2, d3, d4, e5, cls], 'UNet3Plus_DeepSup_CGM'
+    else:
+        return [d1, ], 'UNet3Plus_DeepSup_CGM'
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus_utils.py b/TensorFlow2/Segmentation/UNet3P/models/unet3plus_utils.py
new file mode 100644
index 000000000..e002a3c89
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/models/unet3plus_utils.py
@@ -0,0 +1,31 @@
+"""
+Utility functions for Unet3+ models
+"""
+import tensorflow as tf
+import tensorflow.keras as k
+
+
+def conv_block(x, kernels, kernel_size=(3, 3), strides=(1, 1), padding='same',
+               is_bn=True, is_relu=True, n=2):
+    """ Custom function for conv2d:
+        Apply  3*3 convolutions with BN and relu.
+    """
+    for i in range(1, n + 1):
+        x = k.layers.Conv2D(filters=kernels, kernel_size=kernel_size,
+                            padding=padding, strides=strides,
+                            kernel_regularizer=tf.keras.regularizers.l2(1e-4),
+                            kernel_initializer=k.initializers.he_normal(seed=5))(x)
+        if is_bn:
+            x = k.layers.BatchNormalization()(x)
+        if is_relu:
+            x = k.activations.relu(x)
+
+    return x
+
+
+def dot_product(seg, cls):
+    b, h, w, n = k.backend.int_shape(seg)
+    seg = tf.reshape(seg, [-1, h * w, n])
+    final = tf.einsum("ijk,ik->ijk", seg, cls)
+    final = tf.reshape(final, [-1, h, w, n])
+    return final
diff --git a/TensorFlow2/Segmentation/UNet3P/predict.ipynb b/TensorFlow2/Segmentation/UNet3P/predict.ipynb
new file mode 100644
index 000000000..599ff0f89
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/predict.ipynb
@@ -0,0 +1,247 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "570c0575",
+   "metadata": {},
+   "source": [
+    "# Visualization Script"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "fc14ebac",
+   "metadata": {
+    "collapsed": false,
+    "jupyter": {
+     "outputs_hidden": false
+    }
+   },
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "2023-02-20 07:22:21.247783: I tensorflow/core/platform/cpu_feature_guard.cc:194] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  SSE3 SSE4.1 SSE4.2 AVX\n",
+      "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Imports\n",
+    "%load_ext autoreload\n",
+    "%autoreload 2\n",
+    "%matplotlib inline\n",
+    "\n",
+    "import hydra\n",
+    "from hydra import initialize, compose\n",
+    "from hydra.core.hydra_config import HydraConfig\n",
+    "\n",
+    "from predict import predict"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2115b6b7",
+   "metadata": {},
+   "source": [
+    "## Read Config File"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "065dc666-417f-4cd9-b70c-52d8907696b8",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# clear previous hydra instances\n",
+    "hydra.core.global_hydra.GlobalHydra.instance().clear()\n",
+    "\n",
+    "# configs/config.yaml\n",
+    "initialize(version_base=None, config_path=\"configs\")\n",
+    "cfg = compose(config_name=\"config\", return_hydra_config=True)\n",
+    "HydraConfig().cfg = cfg"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "3f51818e",
+   "metadata": {},
+   "source": [
+    "For visualization two options are available\n",
+    "1: Visualize from directory\n",
+    "2: Visualize from list\n",
+    "In both cases mask is optional\n",
+    "You can also override these settings through command line and call predict.py"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "ce64141b",
+   "metadata": {},
+   "source": [
+    "## 1: Visualize from directory\n",
+    "In case of visualization from directory, it's going to make prediction and show all images from given directory.\n",
+    "Override the validation data paths and make sure the directory paths are relative to the project base/root path"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "210cdc87",
+   "metadata": {
+    "collapsed": false,
+    "jupyter": {
+     "outputs_hidden": false
+    }
+   },
+   "outputs": [],
+   "source": [
+    "# e.g. to visualize validation data\n",
+    "# images_paths = \"/data/val/images\"\n",
+    "# mask_paths = \"/data/val/mask\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5f846db6",
+   "metadata": {},
+   "source": [
+    "## 2: Visualize from list\n",
+    "In case of visualization from list, each list element should contain absolute path of image/mask."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "b88515e2-620e-4269-9e4c-4b1ddb9b48df",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# e.g. to visualize two images with their corresponding mask\n",
+    "images_paths = [\n",
+    "    \"/workspace/unet3p/data/val/images/image_0_48.png\",\n",
+    "    \"/workspace/unet3p/data/val/images/image_0_21.png\",\n",
+    "]\n",
+    "mask_paths = [\n",
+    "    \"/workspace/unet3p/data/val/mask/mask_0_48.png\",\n",
+    "    \"/workspace/unet3p/data/val/mask/mask_0_21.png\",\n",
+    "]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "ad2e8191-c1d1-4994-bef8-cc8a36062150",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# override given settings\n",
+    "cfg.DATASET.VAL.IMAGES_PATH = images_paths\n",
+    "cfg.DATASET.VAL.MASK_PATH = mask_paths"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "6a77869e",
+   "metadata": {
+    "collapsed": false,
+    "jupyter": {
+     "outputs_hidden": false
+    }
+   },
+   "outputs": [],
+   "source": [
+    "# In both cases if mask is not available just set the mask path to None\n",
+    "# cfg.DATASET.VAL.MASK_PATH = None"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "28e38f6d-6eee-4c7c-b209-f700598723fa",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# For custom data visualization set SHOW_CENTER_CHANNEL_IMAGE=False. This should set True for only UNet3+ LiTS data.\n",
+    "cfg.SHOW_CENTER_CHANNEL_IMAGE=True"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "ffb762af-e67b-41e5-92ff-0983a1396762",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Using vgg19 as a backbone.\n"
+     ]
+    },
+    {
+     "data": {
+      "image/png": "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rxRFUZT/+7//UzQajdLb28vfVaPRKH9usnn3lltuUTQajdLX16coyq65G4Dyr//6r+86ho6ODp6bf/zjHysajUb5/ve//55jF94fkjou7DNf+tKXGn4/5ZRTsGPHjgnbXXjhhWhpaeHfTzjhBJx44on4wx/+sN/H+G6o3R51Oh0WL14MRVHw+c9/nl93u92YPXt2w3npdDo2rqjX64jH46hWq1i8eDHWrl3L261evRoGgwFXXnklv6bVanH11Vc3jCMej+Ppp5/Gxz/+cWQyGcRiMcRiMYyPj2PFihXYunUrhoaGpvz8BUGYfkwmEy6//PL3/fn7778fp5xyCjweD88dsVgMy5cvR61Ww/PPP7/X+7rkkkvw0EMPoVwu44EHHoBOp9tjNo06ylypVDA+Po6enh643e6GedDtdmPDhg3YunXrex7/mWeewYoVK7Bs2TI89NBDMJlMez12QRD2P8uXL0cgEEBbWxtWrVoFu92Ohx9+uOE7HoAJmY33338/XC4XzjzzzIZ5atGiRbDb7Vx69+STT6JcLuPLX/5yQ0r3V7/61fcc2+uvv46dO3fiq1/9Ktxud8N76n3tiQMxxt3xeDw4++yz8Zvf/AbAriyik046CR0dHZNur553c7kcYrEYTjrpJCiKgtdff523MRqNePbZZyekvE/Gv/zLv+ArX/kKbr31VvzDP/zDPp+DsHdI6riwT5jNZq6XJjwez6R/1JO1jZk1axZ++9vf7rfx7Q3t7e0Nv7tcLpjNZvj9/gmvj4+PN7x2991347bbbsOmTZtQqVT49a6uLv53X18fQqHQBGOjnp6eht+3bdsGRVHwne98B9/5zncmHWskEpnwPzJBEA59Wlpa9tk1V83WrVvx5ptvTpiPiUgkstf7WrVqFa677jr88Y9/xL333ouVK1fC4XBMum2hUMAtt9yCO++8E0NDQ1AUhd9LpVL87+9973u44IILMGvWLCxYsABnn302PvOZz0wo+SkWizjvvPOwaNEi/Pa3v4VeL19LBOFg42c/+xlmzZoFvV6PpqYmzJ49G1ptY6xOr9ejtbW14bWtW7cilUpNWoYCvDNP9fX1AZj4vTEQCMDj8bzr2CiNfbLa5r3hQIxxMi655BJ85jOfQX9/Px555BH8y7/8yx637e/vx3e/+108+uijE75v07xrMplw66234utf/zqamprw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\n",
+      "text/plain": [
+       "<Figure size 1200x400 with 3 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "image/png": "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xjfwqle96rfaR0VRjm+y2SwuuugiXHbZZXjDG95wRNdEYH8F/Oyzz8bc3Bze+ta3YtWqVbjzzjvxgQ98AAsLC/jUpz71tJ7nda97neRf8Mvz1772NZx33nno6+s75P6/+MUvcOedd+Kyyy7DyMgIpqen8bnPfQ7nnHMOfv3rX0tV/iMf+QiuvvpqvPnNb8Zpp50GwzBw77334v7778cFF1xw2G35xS9+gV27duHUU0/Fd77zHfh8viM6JoqiPDPs2bMHAJBIJOS2druNXbt24cwzz8QnP/lJuRa89a1vxXXXXYcrr7wSf/qnf4qpqSn88z//M375y1/ijjvugMvlAgB86EMfwsc//nFcfPHFuPjii3H//ffjpS99KZrN5m/cnptvvhmXXHIJBgcH8e53vxsDAwN49NFH8b3vfQ/vfve78da3vhXz8/OHbeN5prbRyute9zq8+93vRrlcRjAYRLvdxg033ID3vve9h7WN33DDDahWq3j729+ORCKBe+65B9deey1mZ2dxww03yP0uvfRSPPLII3jXu96FsbExpNNp3HzzzZiZmZHi1cF84QtfwNve9jb81V/9FT7+8Y8f0X4oTwNTUQ7DF7/4RROA+Ytf/EJuu/zyy00A5l//9V/33Pd5z3ueuWPHDvl9amrKBGD6fD5zdnZWbr/77rtNAOaf/dmfyW1nn322efbZZx/y+pdffrm5evVq+X15edkEYH74wx9+Wtt/2223mQDMG264QW778Ic/bAIw/+RP/kRua7fb5sjIiGmz2cy//du/ldvz+bzp8/nMyy+/vOe+jUaj53Xy+bzZ399vvvGNb5TbvvGNb5gAzE996lNyW6fTMc8991wTgPnFL35Rbj/vvPPMrVu3mvV6XW7rdrvmGWecYa5fv/5p7auiKMcv73jHO8yD/1d79tlnmwDMz3/+84fc/8muc6tXr+65Hn3sYx8zA4GA+fjjj/fc7/3vf7/pcDjMmZmZp9yus88+29y8ebNpmqZ56qmnmm9605tM09x/TXO73eaXvvSlw15Hq9XqIc911113mQDML3/5y3Lb9u3bzZe97GVPuQ2XX365GQgETNM0zZ/97GdmOBw2X/ayl/VcDxVFOXbwu+Att9xiLi8vm/v27TP/4z/+w0wkEj3f8fj98P3vf3/P43/605+aAMzrr7++5/abbrqp5/Z0Om263W7zZS97mdntduV+f/VXf2UC6Ln28bp02223maa5/7vZ+Pi4uXr1ajOfz/e8jvW5DnctPlrb+GQAMN/xjneYuVzOdLvd5le+8hXTNE3z+9//vmmz2czp6Wn5rrq8vCyPO9x19+qrrzZtNpu5d+9e0zT3X7sBmH//93//lNuwevVquTZ/+tOfNm02m/mxj33sN2678tuh1nHliHnb297W8/uLX/xiPPHEE4fc75WvfCWGh4fl99NOOw07d+7ED37wg6O+jU+FNe3R4XDg1FNPhWmaeNOb3iS3R6NRnHTSST375XA4JLii2+0il8uh3W7j1FNPxf333y/3u+mmm+ByufCWt7xFbrPb7XjHO97Rsx25XA633norXvOa16BUKiGTySCTySCbzWLXrl2YmJjA3Nzciu+/oijHHo/HgyuvvPK3fvwNN9yAF7/4xYjFYnLtyGQyOP/889HpdPA///M/T/u5Xve61+Gb3/wmms0mbrzxRjgcjid101irzK1WC9lsFuvWrUM0Gu25DkajUTzyyCOYmJj4ja9/2223YdeuXTjvvPPwzW9+Ex6P52lvu6IoR5/zzz8fqVQKo6OjuOyyyxAMBvGtb32r5zsegEOcjTfccAMikQguuOCCnuvUjh07EAwGpfXulltuQbPZxLve9a4eS/d73vOe37htv/zlLzE1NYX3vOc9iEajPX+zPteT8Uxs48HEYjFceOGF+Pd//3cA+11EZ5xxBlavXn3Y+1uvu5VKBZlMBmeccQZM08Qvf/lLuY/b7cbtt99+iOX9cPzd3/0d3v3ud+MTn/gE/s//+T9HvA/K00Ot48oR4fV6pV+axGKxw36oDzc2ZsOGDfj6179+1Lbv6bBq1aqe3yORCLxeL5LJ5CG3Z7PZntu+9KUv4ZprrsHu3bvRarXk9vHxcfn33r17MTg4eEiw0bp163p+n5ychGma+OAHP4gPfvCDh93WdDp9yP/IFEU58RkeHj7i1FwrExMTePDBBw+5HpN0Ov20n+uyyy7DVVddhR/+8Ie4/vrrcckllyAUCh32vrVaDVdffTW++MUvYm5uDqZpyt+KxaL8+6//+q/xile8Ahs2bMCWLVtw4YUX4o/+6I8Oafmp1+t42ctehh07duDrX/86nE79WqIoxxuf+cxnsGHDBjidTvT39+Okk06C3d5bq3M6nRgZGem5bWJiAsVi8bBtKMCB69TevXsBHPq9MZVKIRaLPeW20cZ+uN7mp8MzsY2H43Wvex3+6I/+CDMzM/j2t7+Nv/u7v3vS+87MzOBDH/oQvvvd7x7yfZvXXY/Hg0984hN43/veh/7+frzwhS/EJZdcgj/+4z/GwMBAz2N+8pOf4Pvf/z7+8i//UvuyjzL6fzTliHA4HCv6fDabreeLGrGGq600h9uHJ9sv67Z99atfxRVXXIFXvvKV+PM//3P09fXB4XDg6quvlgv9kcDwoauuugq7du067H0OFueKojw7ONL+44Ovid1uFxdccAH+4i/+4rD337Bhw9N+7sHBQZxzzjm45pprcMcddzxl4u273vUufPGLX8R73vMenH766YhEIrDZbLjssst6AtXOOuss7NmzB9/5znfw3//93/jXf/1X/OM//iM+//nP97iKPB4PLr74YnznO9/BTTfdhEsuueRpb7eiKM8Mp512mqSOPxkej+cQ8d3tdtHX14frr7/+sI95soXCZ5JjtY2/93u/B4/Hg8svvxyNRuOw4ZPA/mv/BRdcgFwuh7/8y7/Exo0bEQgEMDc3hyuuuKLnuvue97wHL3/5y/Htb38bP/rRj/DBD34QV199NW699VY873nPk/tt3rwZhUIBX/nKV/DWt761p1ikrCwqtJWjxuEsg48//nhPIEMsFjus7Zwrh+Tp2H+ONjfeeCPWrFmDb37zmz3b8+EPf7jnfqtXr8Ztt912yLieycnJnvutWbMGAOByuXD++ecfxS1XFOVEIRaLoVAo9NzWbDaxsLDQc9vatWtRLpdX7Nrxute9Dm9+85sRjUZx8cUXP+n9brzxRlx++eU9Uxnq9foh2wwA8XgcV155Ja688kqUy2WcddZZ+MhHPtIjtG02G66//nq84hWvwB/8wR/ghz/84WEnUSiKcuKxdu1a3HLLLXjRi170lIuLtExPTEzIdyMAWF5e/o026LVr1wIAHn744ae8Hj7Z98hnYhsPh8/nwytf+Up89atfxUUXXXSIq5I89NBDePzxx/GlL30Jf/zHfyy3P9kEh7Vr1+J973sf3ve+92FiYgKnnHIKrrnmGnz1q1+V+ySTSdx4440488wzcd555+FnP/sZhoaGjngflN+M9mgrR41vf/vbPT3G99xzD+6++25cdNFFctvatWuxe/duLC8vy20PPPAA7rjjjp7nomA93Je5ZwpWva1V7rvvvht33XVXz/127dqFVquF//f//p/c1u12ZbQE6evrwznnnIN/+Zd/OeRLNICeY6IoynODtWvXHtJf/YUvfOGQivZrXvMa3HXXXfjRj350yHMUCgW02+0jet3f//3fx4c//GF89rOffUpLu8PhOMSFdO211x6yfQe33QSDQaxbtw6NRuOQ53S73fjmN7+JF7zgBTKxQVGUE5/XvOY16HQ6+NjHPnbI39rttnynO//88+FyuXDttdf2XF+ezvSE5z//+RgfH8enPvWpQ74jWp+LM70Pvs8zsY1PxlVXXYUPf/jDT9o+CBz+u6dpmjK6jFSr1UMSy9euXYtQKHTY6+7IyAhuueUW1Go1XHDBBYdcs5WVQSvaylFj3bp1OPPMM/H2t78djUYDn/rUp5BIJHqsjm984xvxD//wD9i1axfe9KY3IZ1O4/Of/zw2b94MwzDkfj6fD5s2bcJ//ud/YsOGDYjH49iyZctv3ZPz23DJJZfgm9/8Jl71qlfhZS97GaampvD5z38emzZt6pn3+spXvhKnnXYa3ve+92FychIbN27Ed7/7XeRyOQC9q6qf+cxncOaZZ2Lr1q14y1vegjVr1mBpaQl33XUXZmdn8cADDzxj+6coyrHnzW9+M972trfh0ksvxQUXXIAHHngAP/rRjw6pdvz5n/85vvvd7+KSSy7BFVdcgR07dqBSqeChhx7CjTfeiOnp6SetkByOSCRy2PndB3PJJZfgK1/5CiKRCDZt2oS77roLt9xyS8+YHwDYtGkTzjnnHOzYsQPxeBz33nsvbrzxRrzzne887PP6fD5873vfw7nnnouLLroIP/nJT57R67uiKCvP2Wefjbe+9a24+uqr8atf/QovfelL4XK5MDExgRtuuAGf/vSn8fu///tIpVK46qqrcPXVV+OSSy7BxRdfjF/+8pf44Q9/+BuvY3a7HZ/73Ofw8pe/HKeccgquvPJKDA4OYvfu3XjkkUdkMXLHjh0AgD/90z/Frl274HA4cNlllz0j2/hkbN++Hdu3b3/K+2zcuBFr167FVVddhbm5OYTDYXzjG984pIr++OOP47zzzsNrXvMabNq0CU6nE9/61rewtLSEyy677LDPvW7dOvz3f/83zjnnHOzatQu33norwuHwb7UvypNwTLLOleOeJxvvxVEsVjiKgHC819///d+b11xz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X/rSl6yvfOUr1iuvvGKdOHHC+sQnPmE5nU7r6NGjlmXpMX096P3x4tF75Oaj98jNR++Pbx69P148en/cfPT+uPlcyffHq05o33333daDDz4o/x4Oh9bMzIz18MMPX8atujq48CY5Go2sVCpl/ef//J/la5VKxXK73dZf/MVfWJZlWcePH7cAWN/5znfkOY8++qhls9ms9fX1t2zbr2RyuZwFwHriiScsyzp3DJ1Op/VXf/VX8pyXXnrJAmAdOHDAsqxz/3lNTExYmUxGnvOZz3zGCoVCVrfbfWt34AomGo1af/7nf67H9HWi98c3h94jLw16j7w06P3x4tD745tD74+XBr0/XhqulPvjVWUd7/V6eP7553HffffJ1yYmJnDffffhwIEDl3HLrk7Onj2LTCYzdjzD4TDuueceOZ4HDhxAJBLBnXfeKc+57777MDExgWeeeeYt3+YrkWq1CgCIxWIAgOeffx79fn/suO7duxcLCwtjx/Wmm27C1NSUPOe9730varUajh079hZu/ZXJcDjE5z//eTSbTezfv1+P6etA74+bj94jNwe9R24uen+8ePT+uPno/XFz0Pvj5nKl3R8db+qn32IKhQKGw+HYgQCAqakpvPzyy5dpq65eMpkMALzm8eT3MpkMksnk2PcdDgdisZg851pmNBrhl3/5l/H2t78dN954I4Bzx8zlciESiYw998Lj+lrHnd+7Vjly5Aj279+PTqeDQCCARx55BPv27cOhQ4f0mP4T6P1x89F75JtH75Gbh94f3zh6f9x89P745tH74+Zxpd4fryqhrShXGg8++CCOHj2KJ5988nJvypZgz549OHToEKrVKv76r/8aDzzwAJ544onLvVmKorxB9B65eej9UVG2Fnp/3Dyu1PvjVWUdj8fjsNvtr0qKy2azSKVSl2mrrl54zL7X8UylUsjlcmPfHwwGKJVK1/wx/9jHPoYvf/nL+MY3voG5uTn5eiqVQq/XQ6VSGXv+hcf1tY47v3et4nK5sGvXLtxxxx14+OGHccstt+CP//iP9Zi+DvT+uPnoPfLNoffIzUXvj28cvT9uPnp/fHPo/XFzuVLvj1eV0Ha5XLjjjjvw+OOPy9dGoxEef/xx7N+//zJu2dXJ9u3bkUqlxo5nrVbDM888I8dz//79qFQqeP755+U5X//61zEajXDPPfe85dt8JWBZFj72sY/hkUcewde//nVs37597Pt33HEHnE7n2HE9ceIEVlZWxo7rkSNHxv4DeuyxxxAKhbBv3763ZkeuAkajEbrdrh7T14HeHzcfvUe+MfQe+dag98fXj94fNx+9P74x9P741nDF3B/fVJTaZeDzn/+85Xa7rf/5P/+ndfz4cevDH/6wFYlExpLilPPU63Xr4MGD1sGDBy0A1h/+4R9aBw8etJaXly3LOjeaIRKJWF/84hetw4cPWz/yIz/ymqMZbrvtNuuZZ56xnnzySWv37t3X9GiGj370o1Y4HLa++c1vWul0Wh6tVkue85GPfMRaWFiwvv71r1vPPfectX//fmv//v3yfY4SeM973mMdOnTI+ru/+zsrkUhcs6MZLMuyPv7xj1tPPPGEdfbsWevw4cPWxz/+cctms1lf+9rXLMvSY/p60PvjxaP3yM1H75Gbj94f3zx6f7x49P64+ej9cfO5ku+PV53QtizL+pM/+RNrYWHBcrlc1t133209/fTTl3uTrli+8Y1vWABe9XjggQcsyzo3nuG3fuu3rKmpKcvtdlvvfve7rRMnToy9RrFYtH7yJ3/SCgQCVigUsv7Nv/k3Vr1evwx7c2XwWscTgPXZz35WntNut61f+IVfsKLRqOXz+awf+7Efs9Lp9NjrLC0tWe973/ssr9drxeNx69d+7desfr//Fu/NlcPP/uzPWouLi5bL5bISiYT17ne/W26SlqXH9PWi98eLQ++Rm4/eIzcfvT9uDnp/vDj0/rj56P1x87mS7482y7KsN1cTVxRFURRFURRFURSFXFU92oqiKIqiKIqiKIpypaNCW1EURVEURVEURVE2ERXaiqIoiqIoiqIoirKJqNBWFEVRFEVRFEVRlE1EhbaiKIqiKIqiKIqibCIqtBVFURRFURRFURRlE1GhrSiKoiiKoiiKoiibiAptRVEURVEURVEURdlEVGgriqIoiqIoiqIoyiaiQltRFEVRFEVRFEVRNhEV2oqiKIqiKIqiKIqyifx/vHAOR0ttXQsAAAAASUVORK5CYII=\n",
+      "text/plain": [
+       "<Figure size 1200x400 with 3 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "# make predictions\n",
+    "predict(cfg)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "52b7abaa",
+   "metadata": {
+    "collapsed": false,
+    "jupyter": {
+     "outputs_hidden": false
+    }
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/TensorFlow2/Segmentation/UNet3P/predict.py b/TensorFlow2/Segmentation/UNet3P/predict.py
new file mode 100644
index 000000000..e838feded
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/predict.py
@@ -0,0 +1,101 @@
+"""
+Prediction script used to visualize model output
+"""
+import os
+import hydra
+from omegaconf import DictConfig
+
+from data_generators import tf_data_generator
+from utils.general_utils import join_paths, suppress_warnings
+from utils.images_utils import display
+from utils.images_utils import postprocess_mask, denormalize_mask
+from models.model import prepare_model
+
+
+def predict(cfg: DictConfig):
+    """
+    Predict and visualize given data
+    """
+
+    # suppress TensorFlow and DALI warnings
+    suppress_warnings()
+
+    # set batch size to one
+    cfg.HYPER_PARAMETERS.BATCH_SIZE = 1
+
+    # data generator
+    val_generator = tf_data_generator.DataGenerator(cfg, mode="VAL")
+
+    # create model
+    model = prepare_model(cfg)
+
+    # weights model path
+    checkpoint_path = join_paths(
+        cfg.WORK_DIR,
+        cfg.CALLBACKS.MODEL_CHECKPOINT.PATH,
+        f"{cfg.MODEL.WEIGHTS_FILE_NAME}.hdf5"
+    )
+
+    assert os.path.exists(checkpoint_path), \
+        f"Model weight's file does not exist at \n{checkpoint_path}"
+
+    # load model weights
+    model.load_weights(checkpoint_path, by_name=True, skip_mismatch=True)
+    # model.summary()
+
+    # check mask are available or not
+    mask_available = True
+    if cfg.DATASET.VAL.MASK_PATH is None or \
+            str(cfg.DATASET.VAL.MASK_PATH).lower() == "none":
+        mask_available = False
+
+    showed_images = 0
+    for batch_data in val_generator:  # for each batch
+        batch_images = batch_data[0]
+        if mask_available:
+            batch_mask = batch_data[1]
+
+        # make prediction on batch
+        batch_predictions = model.predict_on_batch(batch_images)
+        if len(model.outputs) > 1:
+            batch_predictions = batch_predictions[0]
+
+        for index in range(len(batch_images)):
+
+            image = batch_images[index]  # for each image
+            if cfg.SHOW_CENTER_CHANNEL_IMAGE:
+                # for UNet3+ show only center channel as image
+                image = image[:, :, 1]
+
+            # do postprocessing on predicted mask
+            prediction = batch_predictions[index]
+            prediction = postprocess_mask(prediction, cfg.OUTPUT.CLASSES)
+            # denormalize mask for better visualization
+            prediction = denormalize_mask(prediction, cfg.OUTPUT.CLASSES)
+
+            if mask_available:
+                mask = batch_mask[index]
+                mask = postprocess_mask(mask, cfg.OUTPUT.CLASSES)
+                mask = denormalize_mask(mask, cfg.OUTPUT.CLASSES)
+
+            # if np.unique(mask).shape[0] == 2:
+            if mask_available:
+                display([image, mask, prediction], show_true_mask=True)
+            else:
+                display([image, prediction], show_true_mask=False)
+
+            showed_images += 1
+        # stop after displaying below number of images
+        # if showed_images >= 10: break
+
+
+@hydra.main(version_base=None, config_path="configs", config_name="config")
+def main(cfg: DictConfig):
+    """
+    Read config file and pass to prediction method
+    """
+    predict(cfg)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/TensorFlow2/Segmentation/UNet3P/requirements.txt b/TensorFlow2/Segmentation/UNet3P/requirements.txt
new file mode 100644
index 000000000..bdb49797f
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/requirements.txt
@@ -0,0 +1,7 @@
+hydra-core
+opencv-python
+jupyter
+matplotlib
+tqdm
+nibabel
+numba
\ No newline at end of file
diff --git a/TensorFlow2/Segmentation/UNet3P/train.py b/TensorFlow2/Segmentation/UNet3P/train.py
new file mode 100644
index 000000000..a6e27f7da
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/train.py
@@ -0,0 +1,215 @@
+"""
+Training script
+"""
+import numpy as np
+from datetime import datetime, timedelta
+import hydra
+from omegaconf import DictConfig
+import tensorflow as tf
+from tensorflow.keras import mixed_precision
+from tensorflow.keras.callbacks import (
+    EarlyStopping,
+    ModelCheckpoint,
+    TensorBoard,
+    CSVLogger
+)
+
+from data_generators import data_generator
+from data_preparation.verify_data import verify_data
+from utils.general_utils import create_directory, join_paths, set_gpus, \
+    suppress_warnings
+from models.model import prepare_model
+from losses.loss import DiceCoefficient
+from losses.unet_loss import unet3p_hybrid_loss
+from callbacks.timing_callback import TimingCallback
+
+
+def create_training_folders(cfg: DictConfig):
+    """
+    Create directories to store Model CheckPoint and TensorBoard logs.
+    """
+    create_directory(
+        join_paths(
+            cfg.WORK_DIR,
+            cfg.CALLBACKS.MODEL_CHECKPOINT.PATH
+        )
+    )
+    create_directory(
+        join_paths(
+            cfg.WORK_DIR,
+            cfg.CALLBACKS.TENSORBOARD.PATH
+        )
+    )
+
+
+def train(cfg: DictConfig):
+    """
+    Training method
+    """
+
+    # suppress TensorFlow and DALI warnings
+    suppress_warnings()
+
+    print("Verifying data ...")
+    verify_data(cfg)
+
+    if cfg.MODEL.TYPE == "unet3plus_deepsup_cgm":
+        raise ValueError(
+            "UNet3+ with Deep Supervision and Classification Guided Module"
+            "\nModel exist but training script is not supported for this variant"
+            "please choose other variants from config file"
+        )
+
+    if cfg.USE_MULTI_GPUS.VALUE:
+        # change number of visible gpus for training
+        set_gpus(cfg.USE_MULTI_GPUS.GPU_IDS)
+        # update batch size according to available gpus
+        data_generator.update_batch_size(cfg)
+
+    # create folders to store training checkpoints and logs
+    create_training_folders(cfg)
+
+    if cfg.OPTIMIZATION.AMP:
+        print("Enabling Automatic Mixed Precision(AMP) training")
+        policy = mixed_precision.Policy('mixed_float16')
+        mixed_precision.set_global_policy(policy)
+
+    if cfg.OPTIMIZATION.XLA:
+        print("Enabling Accelerated Linear Algebra(XLA) training")
+        tf.config.optimizer.set_jit(True)
+
+    # create model
+    strategy = None
+    if cfg.USE_MULTI_GPUS.VALUE:
+        # multi gpu training using tensorflow mirrored strategy
+        strategy = tf.distribute.MirroredStrategy(
+            cross_device_ops=tf.distribute.HierarchicalCopyAllReduce()
+        )
+        print('Number of visible gpu devices: {}'.format(strategy.num_replicas_in_sync))
+        with strategy.scope():
+            optimizer = tf.keras.optimizers.Adam(
+                learning_rate=cfg.HYPER_PARAMETERS.LEARNING_RATE
+            )  # optimizer
+            if cfg.OPTIMIZATION.AMP:
+                optimizer = mixed_precision.LossScaleOptimizer(
+                    optimizer,
+                    dynamic=True
+                )
+            dice_coef = DiceCoefficient(post_processed=True, classes=cfg.OUTPUT.CLASSES)
+            dice_coef = tf.keras.metrics.MeanMetricWrapper(name="dice_coef", fn=dice_coef)
+            model = prepare_model(cfg, training=True)
+    else:
+        optimizer = tf.keras.optimizers.Adam(
+            learning_rate=cfg.HYPER_PARAMETERS.LEARNING_RATE
+        )  # optimizer
+        if cfg.OPTIMIZATION.AMP:
+            optimizer = mixed_precision.LossScaleOptimizer(
+                optimizer,
+                dynamic=True
+            )
+        dice_coef = DiceCoefficient(post_processed=True, classes=cfg.OUTPUT.CLASSES)
+        dice_coef = tf.keras.metrics.MeanMetricWrapper(name="dice_coef", fn=dice_coef)
+        model = prepare_model(cfg, training=True)
+
+    model.compile(
+        optimizer=optimizer,
+        loss=unet3p_hybrid_loss,
+        metrics=[dice_coef],
+    )
+    model.summary()
+
+    # data generators
+    train_generator = data_generator.get_data_generator(cfg, "TRAIN", strategy)
+    val_generator = data_generator.get_data_generator(cfg, "VAL", strategy)
+
+    # verify generator
+    # for i, (batch_images, batch_mask) in enumerate(val_generator):
+    #     print(len(batch_images))
+    #     if i >= 3: break
+
+    # the tensorboard log directory will be a unique subdirectory
+    # based on the start time for the run
+    tb_log_dir = join_paths(
+        cfg.WORK_DIR,
+        cfg.CALLBACKS.TENSORBOARD.PATH,
+        "{}".format(datetime.now().strftime("%Y.%m.%d.%H.%M.%S"))
+    )
+    print("TensorBoard directory\n" + tb_log_dir)
+
+    checkpoint_path = join_paths(
+        cfg.WORK_DIR,
+        cfg.CALLBACKS.MODEL_CHECKPOINT.PATH,
+        f"{cfg.MODEL.WEIGHTS_FILE_NAME}.hdf5"
+    )
+    print("Weights path\n" + checkpoint_path)
+
+    csv_log_path = join_paths(
+        cfg.WORK_DIR,
+        cfg.CALLBACKS.CSV_LOGGER.PATH,
+        f"training_logs_{cfg.MODEL.TYPE}.csv"
+    )
+    print("Logs path\n" + csv_log_path)
+
+    # evaluation metric
+    evaluation_metric = "val_dice_coef"
+    if len(model.outputs) > 1:
+        evaluation_metric = f"val_{model.output_names[0]}_dice_coef"
+
+    # Timing, TensorBoard, EarlyStopping, ModelCheckpoint, CSVLogger callbacks
+    timing_callback = TimingCallback()
+    callbacks = [
+        TensorBoard(log_dir=tb_log_dir, write_graph=False, profile_batch=0),
+        EarlyStopping(
+            patience=cfg.CALLBACKS.EARLY_STOPPING.PATIENCE,
+            verbose=cfg.VERBOSE
+        ),
+        ModelCheckpoint(
+            checkpoint_path,
+            verbose=cfg.VERBOSE,
+            save_weights_only=cfg.CALLBACKS.MODEL_CHECKPOINT.SAVE_WEIGHTS_ONLY,
+            save_best_only=cfg.CALLBACKS.MODEL_CHECKPOINT.SAVE_BEST_ONLY,
+            monitor=evaluation_metric,
+            mode="max"
+
+        ),
+        CSVLogger(
+            csv_log_path,
+            append=cfg.CALLBACKS.CSV_LOGGER.APPEND_LOGS
+        ),
+        timing_callback
+    ]
+
+    training_steps = data_generator.get_iterations(cfg, mode="TRAIN")
+    validation_steps = data_generator.get_iterations(cfg, mode="VAL")
+
+    # start training
+    model.fit(
+        x=train_generator,
+        steps_per_epoch=training_steps,
+        validation_data=val_generator,
+        validation_steps=validation_steps,
+        epochs=cfg.HYPER_PARAMETERS.EPOCHS,
+        callbacks=callbacks,
+        workers=cfg.DATALOADER_WORKERS,
+    )
+
+    training_time = timing_callback.train_end_time - timing_callback.train_start_time
+    training_time = timedelta(seconds=training_time)
+    print(f"Total training time {training_time}")
+
+    mean_time = np.mean(timing_callback.batch_time)
+    throughput = data_generator.get_batch_size(cfg) / mean_time
+    print(f"Training latency: {round(mean_time * 1e3, 2)} msec")
+    print(f"Training throughput/FPS: {round(throughput, 2)} samples/sec")
+
+
+@hydra.main(version_base=None, config_path="configs", config_name="config")
+def main(cfg: DictConfig):
+    """
+    Read config file and pass to train method for training
+    """
+    train(cfg)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/TensorFlow2/Segmentation/UNet3P/utils/general_utils.py b/TensorFlow2/Segmentation/UNet3P/utils/general_utils.py
new file mode 100644
index 000000000..9eea67b8d
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/utils/general_utils.py
@@ -0,0 +1,123 @@
+"""
+General Utility functions
+"""
+import os
+import tensorflow as tf
+from omegaconf import DictConfig
+from .images_utils import image_to_mask_name
+
+
+def create_directory(path):
+    """
+    Create Directory if it already does not exist.
+    """
+    if not os.path.exists(path):
+        os.makedirs(path)
+
+
+def join_paths(*paths):
+    """
+    Concatenate multiple paths.
+    """
+    return os.path.normpath(os.path.sep.join(path.rstrip(r"\/") for path in paths))
+
+
+def set_gpus(gpu_ids):
+    """
+    Change number of visible gpus for tensorflow.
+    gpu_ids: Could be integer or list of integers.
+    In case Integer: if integer value is -1 then use all available gpus.
+    otherwise if positive number, then use given number of gpus.
+    In case list of Integer: each integer will be considered as gpu id
+    """
+    all_gpus = tf.config.experimental.list_physical_devices('GPU')
+    all_gpus_length = len(all_gpus)
+    if isinstance(gpu_ids, int):
+        if gpu_ids == -1:
+            gpu_ids = range(all_gpus_length)
+        else:
+            gpu_ids = min(gpu_ids, all_gpus_length)
+            gpu_ids = range(gpu_ids)
+
+    selected_gpus = [all_gpus[gpu_id] for gpu_id in gpu_ids if gpu_id < all_gpus_length]
+
+    try:
+        tf.config.experimental.set_visible_devices(selected_gpus, 'GPU')
+    except RuntimeError as e:
+        # Visible devices must be set at program startup
+        print(e)
+
+
+def get_gpus_count():
+    """
+    Return length of available gpus.
+    """
+    return len(tf.config.experimental.list_logical_devices('GPU'))
+
+
+def get_data_paths(cfg: DictConfig, mode: str, mask_available: bool):
+    """
+    Return list of absolute images/mask paths.
+    There are two options you can either pass directory path or list.
+    In case of directory, it should contain relative path of images/mask
+    folder from project root path.
+    In case of list of images, every element should contain absolute path
+    for each image and mask.
+    For prediction, you can set mask path to None if mask are not
+    available for visualization.
+    """
+
+    # read images from directory
+    if isinstance(cfg.DATASET[mode].IMAGES_PATH, str):
+        # has only images name not full path
+        images_paths = os.listdir(
+            join_paths(
+                cfg.WORK_DIR,
+                cfg.DATASET[mode].IMAGES_PATH
+            )
+        )
+
+        if mask_available:
+            mask_paths = [
+                image_to_mask_name(image_name) for image_name in images_paths
+            ]
+            # create full mask paths from folder
+            mask_paths = [
+                join_paths(
+                    cfg.WORK_DIR,
+                    cfg.DATASET[mode].MASK_PATH,
+                    mask_name
+                ) for mask_name in mask_paths
+            ]
+
+        # create full images paths from folder
+        images_paths = [
+            join_paths(
+                cfg.WORK_DIR,
+                cfg.DATASET[mode].IMAGES_PATH,
+                image_name
+            ) for image_name in images_paths
+        ]
+    else:
+        # read images and mask from absolute paths given in list
+        images_paths = list(cfg.DATASET[mode].IMAGES_PATH)
+        if mask_available:
+            mask_paths = list(cfg.DATASET[mode].MASK_PATH)
+
+    if mask_available:
+        return images_paths, mask_paths
+    else:
+        return images_paths,
+
+
+def suppress_warnings():
+    """
+    Suppress TensorFlow warnings.
+    """
+    import logging
+    logging.getLogger('tensorflow').setLevel(logging.ERROR)
+    logging.getLogger('dali').setLevel(logging.ERROR)
+    os.environ["KMP_AFFINITY"] = "noverbose"
+    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
+    import tensorflow as tf
+    tf.autograph.set_verbosity(3)
diff --git a/TensorFlow2/Segmentation/UNet3P/utils/images_utils.py b/TensorFlow2/Segmentation/UNet3P/utils/images_utils.py
new file mode 100644
index 000000000..d97e482af
--- /dev/null
+++ b/TensorFlow2/Segmentation/UNet3P/utils/images_utils.py
@@ -0,0 +1,118 @@
+"""
+Utility functions for image processing
+"""
+import numpy as np
+import cv2
+from omegaconf import DictConfig
+import matplotlib.pyplot as plt
+
+
+def read_image(img_path, color_mode):
+    """
+    Read and return image as np array from given path.
+    In case of color image, it returns image in BGR mode.
+    """
+    return cv2.imread(img_path, color_mode)
+
+
+def resize_image(img, height, width, resize_method=cv2.INTER_CUBIC):
+    """
+    Resize image
+    """
+    return cv2.resize(img, dsize=(width, height), interpolation=resize_method)
+
+
+def prepare_image(path: str, resize: DictConfig, normalize_type: str):
+    """
+    Prepare image for model.
+    read image --> resize --> normalize --> return as float32
+    """
+    image = read_image(path, cv2.IMREAD_COLOR)
+    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
+
+    if resize.VALUE:
+        # TODO verify image resizing method
+        image = resize_image(image, resize.HEIGHT, resize.WIDTH, cv2.INTER_AREA)
+
+    if normalize_type == "normalize":
+        image = image / 255.0
+
+    image = image.astype(np.float32)
+
+    return image
+
+
+def prepare_mask(path: str, resize: dict, normalize_mask: dict):
+    """
+        Prepare mask for model.
+        read mask --> resize --> normalize --> return as int32
+        """
+    mask = read_image(path, cv2.IMREAD_GRAYSCALE)
+
+    if resize.VALUE:
+        mask = resize_image(mask, resize.HEIGHT, resize.WIDTH, cv2.INTER_NEAREST)
+
+    if normalize_mask.VALUE:
+        mask = mask / normalize_mask.NORMALIZE_VALUE
+
+    mask = mask.astype(np.int32)
+
+    return mask
+
+
+def image_to_mask_name(image_name: str):
+    """
+    Convert image file name to it's corresponding mask file name e.g.
+    image name     -->     mask name
+    image_28_0.png         mask_28_0.png
+    replace image with mask
+    """
+
+    return image_name.replace('image', 'mask')
+
+
+def postprocess_mask(mask, classes, output_type=np.int32):
+    """
+    Post process model output.
+    Covert probabilities into indexes based on maximum value.
+    """
+    if classes == 1:
+        mask = np.where(mask > .5, 1.0, 0.0)
+    else:
+        mask = np.argmax(mask, axis=-1)
+    return mask.astype(output_type)
+
+
+def denormalize_mask(mask, classes):
+    """
+    Denormalize mask by multiplying each class with higher
+    integer (255 / classes) for better visualization.
+    """
+    mask = mask * (255 / classes)
+    return mask.astype(np.int32)
+
+
+def display(display_list, show_true_mask=False):
+    """
+    Show list of images. it could be
+    either [image, true_mask, predicted_mask] or [image, predicted_mask].
+    Set show_true_mask to True if true mask is available or vice versa
+    """
+    if show_true_mask:
+        title_list = ('Input Image', 'True Mask', 'Predicted Mask')
+        plt.figure(figsize=(12, 4))
+    else:
+        title_list = ('Input Image', 'Predicted Mask')
+        plt.figure(figsize=(8, 4))
+
+    for i in range(len(display_list)):
+        plt.subplot(1, len(display_list), i + 1)
+        if title_list is not None:
+            plt.title(title_list[i])
+        if len(np.squeeze(display_list[i]).shape) == 2:
+            plt.imshow(np.squeeze(display_list[i]), cmap='gray')
+            plt.axis('on')
+        else:
+            plt.imshow(np.squeeze(display_list[i]))
+            plt.axis('on')
+    plt.show()

From 4feeb18a950f03bb8d6d2ff3148d354812814d67 Mon Sep 17 00:00:00 2001
From: Hamid <hamidriasat@gmail.com>
Date: Wed, 19 Apr 2023 02:52:53 +0500
Subject: [PATCH 2/3] Updating License and README file

---
 .../{ => Contrib}/UNet3P/.gitignore           |   0
 .../{ => Contrib}/UNet3P/Dockerfile           |   0
 .../Segmentation/Contrib/UNet3P/LICENSE       | 201 ++++++++++++++++++
 .../{ => Contrib}/UNet3P/README.md            |   9 +-
 .../UNet3P/benchmark_inference.py             |   0
 .../UNet3P/callbacks/timing_callback.py       |   0
 .../UNet3P/checkpoint/tb_logs/.gitkeep        |   0
 .../{ => Contrib}/UNet3P/configs/README.md    |   0
 .../{ => Contrib}/UNet3P/configs/config.yaml  |   0
 .../UNet3P/data/Training Batch 1/.gitkeep     |   0
 .../UNet3P/data/Training Batch 2/.gitkeep     |   0
 .../{ => Contrib}/UNet3P/data/train/.gitkeep  |   0
 .../{ => Contrib}/UNet3P/data/val/.gitkeep    |   0
 .../UNet3P/data_generators/README.md          |   0
 .../data_generators/dali_data_generator.py    |   0
 .../UNet3P/data_generators/data_generator.py  |   0
 .../data_generators/tf_data_generator.py      |   0
 .../UNet3P/data_preparation/README.md         |   0
 .../delete_extracted_scans_data.sh            |   0
 .../data_preparation/delete_zip_data.sh       |   0
 .../UNet3P/data_preparation/extract_data.sh   |   0
 .../data_preparation/preprocess_data.py       |   0
 .../UNet3P/data_preparation/verify_data.py    |   0
 .../{ => Contrib}/UNet3P/evaluate.py          |   0
 .../UNet3P/figures/unet3p_architecture.png    | Bin
 .../{ => Contrib}/UNet3P/losses/loss.py       |   0
 .../{ => Contrib}/UNet3P/losses/unet_loss.py  |   0
 .../{ => Contrib}/UNet3P/models/backbones.py  |   0
 .../{ => Contrib}/UNet3P/models/model.py      |   0
 .../{ => Contrib}/UNet3P/models/unet3plus.py  |   0
 .../models/unet3plus_deep_supervision.py      |   0
 .../models/unet3plus_deep_supervision_cgm.py  |   0
 .../UNet3P/models/unet3plus_utils.py          |   0
 .../{ => Contrib}/UNet3P/predict.ipynb        |   0
 .../{ => Contrib}/UNet3P/predict.py           |   0
 .../{ => Contrib}/UNet3P/requirements.txt     |   0
 .../{ => Contrib}/UNet3P/train.py             |   0
 .../UNet3P/utils/general_utils.py             |   0
 .../UNet3P/utils/images_utils.py              |   0
 TensorFlow2/Segmentation/UNet3P/LICENSE       |  21 --
 40 files changed, 206 insertions(+), 25 deletions(-)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/.gitignore (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/Dockerfile (100%)
 create mode 100644 TensorFlow2/Segmentation/Contrib/UNet3P/LICENSE
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/README.md (98%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/benchmark_inference.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/callbacks/timing_callback.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/checkpoint/tb_logs/.gitkeep (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/configs/README.md (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/configs/config.yaml (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data/Training Batch 1/.gitkeep (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data/Training Batch 2/.gitkeep (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data/train/.gitkeep (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data/val/.gitkeep (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_generators/README.md (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_generators/dali_data_generator.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_generators/data_generator.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_generators/tf_data_generator.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_preparation/README.md (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_preparation/delete_extracted_scans_data.sh (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_preparation/delete_zip_data.sh (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_preparation/extract_data.sh (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_preparation/preprocess_data.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/data_preparation/verify_data.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/evaluate.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/figures/unet3p_architecture.png (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/losses/loss.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/losses/unet_loss.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/models/backbones.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/models/model.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/models/unet3plus.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/models/unet3plus_deep_supervision.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/models/unet3plus_deep_supervision_cgm.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/models/unet3plus_utils.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/predict.ipynb (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/predict.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/requirements.txt (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/train.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/utils/general_utils.py (100%)
 rename TensorFlow2/Segmentation/{ => Contrib}/UNet3P/utils/images_utils.py (100%)
 delete mode 100644 TensorFlow2/Segmentation/UNet3P/LICENSE

diff --git a/TensorFlow2/Segmentation/UNet3P/.gitignore b/TensorFlow2/Segmentation/Contrib/UNet3P/.gitignore
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/.gitignore
rename to TensorFlow2/Segmentation/Contrib/UNet3P/.gitignore
diff --git a/TensorFlow2/Segmentation/UNet3P/Dockerfile b/TensorFlow2/Segmentation/Contrib/UNet3P/Dockerfile
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/Dockerfile
rename to TensorFlow2/Segmentation/Contrib/UNet3P/Dockerfile
diff --git a/TensorFlow2/Segmentation/Contrib/UNet3P/LICENSE b/TensorFlow2/Segmentation/Contrib/UNet3P/LICENSE
new file mode 100644
index 000000000..a1deb94c2
--- /dev/null
+++ b/TensorFlow2/Segmentation/Contrib/UNet3P/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2023 Hamid Ali
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
\ No newline at end of file
diff --git a/TensorFlow2/Segmentation/UNet3P/README.md b/TensorFlow2/Segmentation/Contrib/UNet3P/README.md
similarity index 98%
rename from TensorFlow2/Segmentation/UNet3P/README.md
rename to TensorFlow2/Segmentation/Contrib/UNet3P/README.md
index 988770ca3..183f816bb 100644
--- a/TensorFlow2/Segmentation/UNet3P/README.md
+++ b/TensorFlow2/Segmentation/Contrib/UNet3P/README.md
@@ -4,7 +4,7 @@
 
 This repository provides a script and recipe to train UNet3+ to achieve state of the art accuracy.
 
-[//]: # (, and is tested and maintained by NVIDIA.)
+**The code and associated performance metrics were contributed by the community and are not maintained by NVIDIA.**
 
 ## Table of Contents
 
@@ -202,8 +202,7 @@ DATA_GENERATOR_TYPE=DALI_GENERATOR \
 OPTIMIZATION.AMP=True OPTIMIZATION.XLA=True
 ```
 
-To evaluate/calculate dice accuracy of model pass same parameters to `evaluate.py` file. See [Config](#config) for
-complete hyper parameter details.
+To evaluate/calculate dice accuracy of model pass same parameters to `evaluate.py` file.
 
 Please check [Config](configs/config.yaml) file for more details about default training parameters.
 
@@ -234,6 +233,8 @@ You can adjust these settings with `+warmup_steps` and `+bench_steps` parameters
 The following section provide details of results that are achieved in different settings of model training and
 inference.
 
+**These results were contributed by the community and are not maintained by NVIDIA.**
+
 #### Training accuracy results
 
 ###### Training accuracy: NVIDIA DGX A100 (8xA100 80G)
@@ -315,4 +316,4 @@ Feb 2023
 
 We appreciate any feedback so reporting problems, and asking questions are welcomed here.
 
-Licensed under [MIT License](LICENSE)
+Licensed under [Apache-2.0 License](LICENSE)
diff --git a/TensorFlow2/Segmentation/UNet3P/benchmark_inference.py b/TensorFlow2/Segmentation/Contrib/UNet3P/benchmark_inference.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/benchmark_inference.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/benchmark_inference.py
diff --git a/TensorFlow2/Segmentation/UNet3P/callbacks/timing_callback.py b/TensorFlow2/Segmentation/Contrib/UNet3P/callbacks/timing_callback.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/callbacks/timing_callback.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/callbacks/timing_callback.py
diff --git a/TensorFlow2/Segmentation/UNet3P/checkpoint/tb_logs/.gitkeep b/TensorFlow2/Segmentation/Contrib/UNet3P/checkpoint/tb_logs/.gitkeep
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/checkpoint/tb_logs/.gitkeep
rename to TensorFlow2/Segmentation/Contrib/UNet3P/checkpoint/tb_logs/.gitkeep
diff --git a/TensorFlow2/Segmentation/UNet3P/configs/README.md b/TensorFlow2/Segmentation/Contrib/UNet3P/configs/README.md
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/configs/README.md
rename to TensorFlow2/Segmentation/Contrib/UNet3P/configs/README.md
diff --git a/TensorFlow2/Segmentation/UNet3P/configs/config.yaml b/TensorFlow2/Segmentation/Contrib/UNet3P/configs/config.yaml
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/configs/config.yaml
rename to TensorFlow2/Segmentation/Contrib/UNet3P/configs/config.yaml
diff --git a/TensorFlow2/Segmentation/UNet3P/data/Training Batch 1/.gitkeep b/TensorFlow2/Segmentation/Contrib/UNet3P/data/Training Batch 1/.gitkeep
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data/Training Batch 1/.gitkeep
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data/Training Batch 1/.gitkeep
diff --git a/TensorFlow2/Segmentation/UNet3P/data/Training Batch 2/.gitkeep b/TensorFlow2/Segmentation/Contrib/UNet3P/data/Training Batch 2/.gitkeep
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data/Training Batch 2/.gitkeep
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data/Training Batch 2/.gitkeep
diff --git a/TensorFlow2/Segmentation/UNet3P/data/train/.gitkeep b/TensorFlow2/Segmentation/Contrib/UNet3P/data/train/.gitkeep
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data/train/.gitkeep
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data/train/.gitkeep
diff --git a/TensorFlow2/Segmentation/UNet3P/data/val/.gitkeep b/TensorFlow2/Segmentation/Contrib/UNet3P/data/val/.gitkeep
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data/val/.gitkeep
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data/val/.gitkeep
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/README.md b/TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/README.md
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_generators/README.md
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/README.md
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/dali_data_generator.py b/TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/dali_data_generator.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_generators/dali_data_generator.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/dali_data_generator.py
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/data_generator.py b/TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/data_generator.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_generators/data_generator.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/data_generator.py
diff --git a/TensorFlow2/Segmentation/UNet3P/data_generators/tf_data_generator.py b/TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/tf_data_generator.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_generators/tf_data_generator.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_generators/tf_data_generator.py
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/README.md b/TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/README.md
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_preparation/README.md
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/README.md
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_extracted_scans_data.sh b/TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/delete_extracted_scans_data.sh
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_preparation/delete_extracted_scans_data.sh
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/delete_extracted_scans_data.sh
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/delete_zip_data.sh b/TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/delete_zip_data.sh
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_preparation/delete_zip_data.sh
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/delete_zip_data.sh
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/extract_data.sh b/TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/extract_data.sh
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_preparation/extract_data.sh
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/extract_data.sh
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/preprocess_data.py b/TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/preprocess_data.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_preparation/preprocess_data.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/preprocess_data.py
diff --git a/TensorFlow2/Segmentation/UNet3P/data_preparation/verify_data.py b/TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/verify_data.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/data_preparation/verify_data.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/data_preparation/verify_data.py
diff --git a/TensorFlow2/Segmentation/UNet3P/evaluate.py b/TensorFlow2/Segmentation/Contrib/UNet3P/evaluate.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/evaluate.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/evaluate.py
diff --git a/TensorFlow2/Segmentation/UNet3P/figures/unet3p_architecture.png b/TensorFlow2/Segmentation/Contrib/UNet3P/figures/unet3p_architecture.png
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/figures/unet3p_architecture.png
rename to TensorFlow2/Segmentation/Contrib/UNet3P/figures/unet3p_architecture.png
diff --git a/TensorFlow2/Segmentation/UNet3P/losses/loss.py b/TensorFlow2/Segmentation/Contrib/UNet3P/losses/loss.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/losses/loss.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/losses/loss.py
diff --git a/TensorFlow2/Segmentation/UNet3P/losses/unet_loss.py b/TensorFlow2/Segmentation/Contrib/UNet3P/losses/unet_loss.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/losses/unet_loss.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/losses/unet_loss.py
diff --git a/TensorFlow2/Segmentation/UNet3P/models/backbones.py b/TensorFlow2/Segmentation/Contrib/UNet3P/models/backbones.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/models/backbones.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/models/backbones.py
diff --git a/TensorFlow2/Segmentation/UNet3P/models/model.py b/TensorFlow2/Segmentation/Contrib/UNet3P/models/model.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/models/model.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/models/model.py
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus.py b/TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/models/unet3plus.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus.py
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision.py b/TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus_deep_supervision.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus_deep_supervision.py
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision_cgm.py b/TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus_deep_supervision_cgm.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/models/unet3plus_deep_supervision_cgm.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus_deep_supervision_cgm.py
diff --git a/TensorFlow2/Segmentation/UNet3P/models/unet3plus_utils.py b/TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus_utils.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/models/unet3plus_utils.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/models/unet3plus_utils.py
diff --git a/TensorFlow2/Segmentation/UNet3P/predict.ipynb b/TensorFlow2/Segmentation/Contrib/UNet3P/predict.ipynb
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/predict.ipynb
rename to TensorFlow2/Segmentation/Contrib/UNet3P/predict.ipynb
diff --git a/TensorFlow2/Segmentation/UNet3P/predict.py b/TensorFlow2/Segmentation/Contrib/UNet3P/predict.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/predict.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/predict.py
diff --git a/TensorFlow2/Segmentation/UNet3P/requirements.txt b/TensorFlow2/Segmentation/Contrib/UNet3P/requirements.txt
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/requirements.txt
rename to TensorFlow2/Segmentation/Contrib/UNet3P/requirements.txt
diff --git a/TensorFlow2/Segmentation/UNet3P/train.py b/TensorFlow2/Segmentation/Contrib/UNet3P/train.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/train.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/train.py
diff --git a/TensorFlow2/Segmentation/UNet3P/utils/general_utils.py b/TensorFlow2/Segmentation/Contrib/UNet3P/utils/general_utils.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/utils/general_utils.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/utils/general_utils.py
diff --git a/TensorFlow2/Segmentation/UNet3P/utils/images_utils.py b/TensorFlow2/Segmentation/Contrib/UNet3P/utils/images_utils.py
similarity index 100%
rename from TensorFlow2/Segmentation/UNet3P/utils/images_utils.py
rename to TensorFlow2/Segmentation/Contrib/UNet3P/utils/images_utils.py
diff --git a/TensorFlow2/Segmentation/UNet3P/LICENSE b/TensorFlow2/Segmentation/UNet3P/LICENSE
deleted file mode 100644
index 45f5ea544..000000000
--- a/TensorFlow2/Segmentation/UNet3P/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2022 Hamid Ali
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.

From 6a751a8025db200d60e552e7705396332c3f1944 Mon Sep 17 00:00:00 2001
From: Hamid <hamidriasat@gmail.com>
Date: Thu, 11 May 2023 21:46:14 +0500
Subject: [PATCH 3/3] Updating clone path

---
 TensorFlow2/Segmentation/Contrib/UNet3P/README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/TensorFlow2/Segmentation/Contrib/UNet3P/README.md b/TensorFlow2/Segmentation/Contrib/UNet3P/README.md
index 183f816bb..095918f38 100644
--- a/TensorFlow2/Segmentation/Contrib/UNet3P/README.md
+++ b/TensorFlow2/Segmentation/Contrib/UNet3P/README.md
@@ -66,8 +66,8 @@ For details on how to enable these features while training and evaluation see [B
 * Clone code
 
 ```
-git clone https://github.com/hamidriasat/NVIDIA-DeepLearningExamples.git
-cd NVIDIA-DeepLearningExamples/TensorFlow2/Segmentation/UNet3P/
+git clone https://github.com/NVIDIA/DeepLearningExamples.git
+cd DeepLearningExamples/TensorFlow2/Segmentation/Contrib/UNet3P/
 ```
 
 * Build the UNet3P TensorFlow NGC container