diff --git a/my_container_sandbox/.singularity.d/runscript b/my_container_sandbox/.singularity.d/runscript new file mode 100644 index 0000000000000000000000000000000000000000..0ae5ecf78c6f6fee9cc53301857ae8f5e1dfac53 --- /dev/null +++ b/my_container_sandbox/.singularity.d/runscript @@ -0,0 +1,6 @@ +#!/bin/sh + + cd /workspace/difftumor + python eval2.py --gpu $GPU + + diff --git a/my_container_sandbox/etc/debconf.conf b/my_container_sandbox/etc/debconf.conf new file mode 100644 index 0000000000000000000000000000000000000000..549c1d59b27b38e4a775acc1aca07831143a18df --- /dev/null +++ b/my_container_sandbox/etc/debconf.conf @@ -0,0 +1,83 @@ +# This is the main config file for debconf. It tells debconf where to +# store data. The format of this file is a set of stanzas. Each stanza +# except the first sets up a database for debconf to use. For details, see +# debconf.conf(5) (in the debconf-doc package). +# +# So first things first. This first stanza gives the names of two databases. + +# Debconf will use this database to store the data you enter into it, +# and some other dynamic data. +Config: configdb +# Debconf will use this database to store static template data. +Templates: templatedb + +# World-readable, and accepts everything but passwords. +Name: config +Driver: File +Mode: 644 +Reject-Type: password +Filename: /var/cache/debconf/config.dat + +# Not world readable (the default), and accepts only passwords. +Name: passwords +Driver: File +Mode: 600 +Backup: false +Required: false +Accept-Type: password +Filename: /var/cache/debconf/passwords.dat + +# Set up the configdb database. By default, it consists of a stack of two +# databases, one to hold passwords and one for everything else. +Name: configdb +Driver: Stack +Stack: config, passwords + +# Set up the templatedb database, which is a single flat text file +# by default. +Name: templatedb +Driver: File +Mode: 644 +Filename: /var/cache/debconf/templates.dat + +# Well that was pretty straightforward, and it will be enough for most +# people's needs, but debconf's database drivers can be used to do much +# more interesting things. For example, suppose you want to use config +# data from another host, which is mounted over nfs or perhaps the database +# is accessed via LDAP. You don't want to write to the remote debconf database, +# just read from it, so you still need a local database for local changes. +# +# A remote NFS mounted database, read-only. It is optional; if debconf +# fails to use it it will not abort. +#Name: remotedb +#Driver: DirTree +#Directory: /mnt/otherhost/var/cache/debconf/config +#Readonly: true +#Required: false +# +# A remote LDAP database. It is also read-only. The password is really +# only necessary if the database is not accessible anonymously. +# Option KeyByKey instructs the backend to retrieve keys from the LDAP +# server individually (when they are requested), instead of loading all +# keys at startup. The default is 0, and should only be enabled if you +# want to track accesses to individual keys on the LDAP server side. +#Name: remotedb +#Driver: LDAP +#Server: remotehost +#BaseDN: cn=debconf,dc=domain,dc=com +#BindDN: uid=admin,dc=domain,dc=com +#BindPasswd: secret +#KeyByKey: 0 +# +# A stack consisting of two databases. Values will be read from +# the first database in the stack to contain a value. In this example, +# writes always go to the first database. +#Name: fulldb +#Driver: Stack +#Stack: configdb, remotedb +# +# In this example, we'd use Config: fulldb at the top of the file +# to make it use the combination of the databases. +# +# Even more complex and interesting setups are possible, see the +# debconf.conf(5) page for details. diff --git a/my_container_sandbox/etc/deluser.conf b/my_container_sandbox/etc/deluser.conf new file mode 100644 index 0000000000000000000000000000000000000000..fff8d813e0e033163e1ffe916f4cb8f0fd97f54b --- /dev/null +++ b/my_container_sandbox/etc/deluser.conf @@ -0,0 +1,20 @@ +# /etc/deluser.conf: `deluser' configuration. + +# Remove home directory and mail spool when user is removed +REMOVE_HOME = 0 + +# Remove all files on the system owned by the user to be removed +REMOVE_ALL_FILES = 0 + +# Backup files before removing them. This options has only an effect if +# REMOVE_HOME or REMOVE_ALL_FILES is set. +BACKUP = 0 + +# target directory for the backup file +BACKUP_TO = "." + +# delete a group even there are still users in this group +ONLY_IF_EMPTY = 0 + +# exclude these filesystem types when searching for files of a user to backup +EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs|afs)" diff --git a/my_container_sandbox/etc/hostname b/my_container_sandbox/etc/hostname new file mode 100644 index 0000000000000000000000000000000000000000..497acb692bd065448422b60ec4f3506adad4975e --- /dev/null +++ b/my_container_sandbox/etc/hostname @@ -0,0 +1 @@ +localhost.localdomain diff --git a/my_container_sandbox/etc/issue.net b/my_container_sandbox/etc/issue.net new file mode 100644 index 0000000000000000000000000000000000000000..f3da5272bdc77d09b422feb28decee4f3c71b65d --- /dev/null +++ b/my_container_sandbox/etc/issue.net @@ -0,0 +1 @@ +Ubuntu 20.04.6 LTS diff --git a/my_container_sandbox/etc/lsb-release b/my_container_sandbox/etc/lsb-release new file mode 100644 index 0000000000000000000000000000000000000000..a567d3b89bd7bbb524ca67f139369dd39a91524e --- /dev/null +++ b/my_container_sandbox/etc/lsb-release @@ -0,0 +1,4 @@ +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=20.04 +DISTRIB_CODENAME=focal +DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS" diff --git a/my_container_sandbox/etc/mailcap.order b/my_container_sandbox/etc/mailcap.order new file mode 100644 index 0000000000000000000000000000000000000000..7f38c23077d8034abd28845c1bfcc808130839dd --- /dev/null +++ b/my_container_sandbox/etc/mailcap.order @@ -0,0 +1,10 @@ +############################################################################### +# +# Mailcap.order: This file allows a system-wide override of MIME program +# preferences. See the mailcap.order(5) man page for more information. +# +# After modifying this file, be sure to run /usr/sbin/update-mime (as root) +# to propagate the changes into the /etc/mailcap file. +# +################################################################################ + diff --git a/my_container_sandbox/etc/mke2fs.conf b/my_container_sandbox/etc/mke2fs.conf new file mode 100644 index 0000000000000000000000000000000000000000..d99dc70d52f7038727b7b2e486c53b72ccd57589 --- /dev/null +++ b/my_container_sandbox/etc/mke2fs.conf @@ -0,0 +1,48 @@ +[defaults] + base_features = sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr + default_mntopts = acl,user_xattr + enable_periodic_fsck = 0 + blocksize = 4096 + inode_size = 256 + inode_ratio = 16384 + +[fs_types] + ext3 = { + features = has_journal + } + ext4 = { + features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize + inode_size = 256 + } + small = { + inode_size = 128 + inode_ratio = 4096 + } + floppy = { + inode_size = 128 + inode_ratio = 8192 + } + big = { + inode_ratio = 32768 + } + huge = { + inode_ratio = 65536 + } + news = { + inode_ratio = 4096 + } + largefile = { + inode_ratio = 1048576 + blocksize = -1 + } + largefile4 = { + inode_ratio = 4194304 + blocksize = -1 + } + hurd = { + blocksize = 4096 + inode_size = 128 + } + +[options] + fname_encoding = utf8 diff --git a/my_container_sandbox/etc/os-release b/my_container_sandbox/etc/os-release new file mode 100644 index 0000000000000000000000000000000000000000..5e42801c6c245f9c6d6d389c3bc3a8a499052080 --- /dev/null +++ b/my_container_sandbox/etc/os-release @@ -0,0 +1,12 @@ +NAME="Ubuntu" +VERSION="20.04.6 LTS (Focal Fossa)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 20.04.6 LTS" +VERSION_ID="20.04" +HOME_URL="https://www.ubuntu.com/" +SUPPORT_URL="https://help.ubuntu.com/" +BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" +PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" +VERSION_CODENAME=focal +UBUNTU_CODENAME=focal diff --git a/my_container_sandbox/etc/passwd b/my_container_sandbox/etc/passwd new file mode 100644 index 0000000000000000000000000000000000000000..9c6dbb57fe2bba3b10c0ea906d8d013d78b1b275 --- /dev/null +++ b/my_container_sandbox/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin +bin:x:2:2:bin:/bin:/usr/sbin/nologin +sys:x:3:3:sys:/dev:/usr/sbin/nologin +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/usr/sbin/nologin +man:x:6:12:man:/var/cache/man:/usr/sbin/nologin +lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin +mail:x:8:8:mail:/var/mail:/usr/sbin/nologin +news:x:9:9:news:/var/spool/news:/usr/sbin/nologin +uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin +proxy:x:13:13:proxy:/bin:/usr/sbin/nologin +www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin +backup:x:34:34:backup:/var/backups:/usr/sbin/nologin +list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin +irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin +nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin +_apt:x:100:65534::/nonexistent:/usr/sbin/nologin +sshd:x:101:65534::/run/sshd:/usr/sbin/nologin diff --git a/my_container_sandbox/etc/screenrc b/my_container_sandbox/etc/screenrc new file mode 100644 index 0000000000000000000000000000000000000000..032db646663efa2d615de8de39e7108b91fe3682 --- /dev/null +++ b/my_container_sandbox/etc/screenrc @@ -0,0 +1,108 @@ +# $Id: screenrc,v 1.15 2003/10/08 11:39:03 zal Exp $ +# +# /etc/screenrc +# +# This is the system wide screenrc. +# +# You can use this file to change the default behavior of screen system wide +# or copy it to ~/.screenrc and use it as a starting point for your own +# settings. +# +# Commands in this file are used to set options, bind screen functions to +# keys, redefine terminal capabilities, and to automatically establish one or +# more windows at the beginning of your screen session. +# +# This is not a comprehensive list of options, look at the screen manual for +# details on everything that you can put in this file. +# + +# ------------------------------------------------------------------------------ +# SCREEN SETTINGS +# ------------------------------------------------------------------------------ + +#startup_message off +#nethack on + +#defflow on # will force screen to process ^S/^Q +deflogin on +#autodetach off + +# turn visual bell on +vbell on +vbell_msg " Wuff ---- Wuff!! " + +# define a bigger scrollback, default is 100 lines +defscrollback 1024 + +# ------------------------------------------------------------------------------ +# SCREEN KEYBINDINGS +# ------------------------------------------------------------------------------ + +# Remove some stupid / dangerous key bindings +bind ^k +#bind L +bind ^\ +# Make them better +bind \\ quit +bind K kill +bind I login on +bind O login off +bind } history + +# An example of a "screen scraper" which will launch urlview on the current +# screen window +# +#bind ^B eval "hardcopy_append off" "hardcopy -h $HOME/.screen-urlview" "screen urlview $HOME/.screen-urlview" + +# ------------------------------------------------------------------------------ +# TERMINAL SETTINGS +# ------------------------------------------------------------------------------ + +# The vt100 description does not mention "dl". *sigh* +termcapinfo vt100 dl=5\E[M + +# turn sending of screen messages to hardstatus off +hardstatus off +# Set the hardstatus prop on gui terms to set the titlebar/icon title +termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007 +# use this for the hard status string +hardstatus string "%h%? users: %u%?" + +# An alternative hardstatus to display a bar at the bottom listing the +# windownames and highlighting the current windowname in blue. (This is only +# enabled if there is no hardstatus setting for your terminal) +# +#hardstatus lastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" + +# set these terminals up to be 'optimal' instead of vt100 +termcapinfo xterm*|linux*|rxvt*|Eterm* OP + +# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E> +# (This fixes the "Aborted because of window size change" konsole symptoms found +# in bug #134198) +termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l' + +# To get screen to add lines to xterm's scrollback buffer, uncomment the +# following termcapinfo line which tells xterm to use the normal screen buffer +# (which has scrollback), not the alternate screen buffer. +# +#termcapinfo xterm|xterms|xs|rxvt ti@:te@ + +# Enable non-blocking mode to better cope with flaky ssh connections. +defnonblock 5 + +# ------------------------------------------------------------------------------ +# STARTUP SCREENS +# ------------------------------------------------------------------------------ + +# Example of automatically running some programs in windows on screen startup. +# +# The following will open top in the first window, an ssh session to monkey +# in the next window, and then open mutt and tail in windows 8 and 9 +# respectively. +# +# screen top +# screen -t monkey ssh monkey +# screen -t mail 8 mutt +# screen -t daemon 9 tail -f /var/log/daemon.log + diff --git a/my_container_sandbox/etc/sensors3.conf b/my_container_sandbox/etc/sensors3.conf new file mode 100644 index 0000000000000000000000000000000000000000..693a66b4be169ef0dc9bcfadbfa4a5b9803c9033 --- /dev/null +++ b/my_container_sandbox/etc/sensors3.conf @@ -0,0 +1,536 @@ +# libsensors configuration file +# ----------------------------- +# +# This default configuration file only includes statements which do not +# differ from one mainboard to the next. Only label, compute and set +# statements for internal voltage and temperature sensors are included. +# +# In general, local changes should not be added to this file, but rather +# placed in custom configuration files located in /etc/sensors.d. This +# approach makes further updates much easier. +# +# Such custom configuration files for specific mainboards can be found in +# "configs" directory of lm-sensors package. +# +# Please contribute back a configuration of your board so other users with +# the same hardware won't need to recreate it again and again. + +chip "lm78-*" "lm79-*" "lm80-*" "lm96080-*" + + label temp1 "M/B Temp" + + +chip "w83792d-*" + + label in0 "VcoreA" + label in1 "VcoreB" + label in6 "+5V" + label in7 "5VSB" + label in8 "Vbat" + + set in6_min 5.0 * 0.90 + set in6_max 5.0 * 1.10 + set in7_min 5.0 * 0.90 + set in7_max 5.0 * 1.10 + set in8_min 3.0 * 0.90 + set in8_max 3.0 * 1.10 + + +chip "w83793-*" + + label in0 "VcoreA" + label in1 "VcoreB" + label in7 "+5V" + label in8 "5VSB" + label in9 "Vbat" + + set in7_min 5.0 * 0.90 + set in7_max 5.0 * 1.10 + set in8_min 5.0 * 0.90 + set in8_max 5.0 * 1.10 + set in9_min 3.0 * 0.90 + set in9_max 3.0 * 1.10 + + +chip "w83795g-*" "w83795adg-*" + + label in12 "+3.3V" + label in13 "3VSB" + label in14 "Vbat" + + set in12_min 3.3 * 0.90 + set in12_max 3.3 * 1.10 + set in13_min 3.3 * 0.90 + set in13_max 3.3 * 1.10 + set in14_min 3.0 * 0.90 + set in14_max 3.3 * 1.10 + + +chip "via686a-*" + + label in0 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in4_min 12.0 * 0.90 + set in4_max 12.0 * 1.10 + + +chip "adm1025-*" "ne1619-*" + + label in1 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + label in5 "VCC" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in5_min 3.3 * 0.90 + set in5_max 3.3 * 1.10 +# Depending on how your chip is hardwired, you may or may not have +# +12V readings. +# set in4_min 12.0 * 0.90 +# set in4_max 12.0 * 1.10 + + label temp1 "CPU Temp" + label temp2 "M/B Temp" + + +chip "lm87-*" "adm1024-*" + + label in1 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in4_min 12.0 * 0.90 + set in4_max 12.0 * 1.10 + + label temp1 "M/B Temp" + label temp2 "CPU Temp" + + +chip "it87-*" "it8712-*" "it8716-*" "it8718-*" "it8720-*" + + label in8 "Vbat" + + +chip "fscpos-*" "fscher-*" +#FSC "Hermes" + + label in0 "+12V" + label in1 "+5V" + label in2 "Vbat" + + label temp1 "CPU Temp" + label temp2 "M/B Temp" + label temp3 "Aux Temp" + + +chip "fscscy-*" +#FSC "Scylla" + + label in0 "+12V" + label in1 "+5V" + label in2 "+3.3V" + + label temp1 "CPU0 Temp" + label temp2 "CPU1 Temp" + label temp3 "M/B Temp" + label temp4 "Aux Temp" + + +chip "fschds-*" +# Fujitsu Technology Solutions, "Hades"-Chip + +# Temperatures + label temp1 "CPU Temp" + label temp2 "Super I/O Temp" + label temp3 "System Temp" + +# Fans + label fan1 "PSU Fan" + label fan2 "CPU Fan" + label fan3 "System FAN2" + label fan4 "System FAN3" + label fan5 "System FAN4" + +# Voltages + label in0 "+12V" + label in1 "+5V" + label in2 "Vbat" + +chip "fscsyl-*" +# Fujitsu Technology Solutions, "Syleus"-Chip + +# Temperatures + label temp1 "CPU Temp" + label temp4 "Super I/O Temp" + label temp5 "Northbridge Temp" + +# Fans + label fan1 "CPU Fan" + label fan2 "System FAN2" + label fan3 "System FAN3" + label fan4 "System FAN4" + label fan7 "PSU Fan" + +# Voltages + label in0 "+12V" + label in1 "+5V" + label in2 "Vbat" + label in3 "+3.3V" + label in5 "+3.3V-Aux" + +chip "vt1211-*" + + label in5 "+3.3V" + + label temp2 "SIO Temp" + + +chip "vt8231-*" + + label in5 "+3.3V" + + +chip "smsc47m192-*" + + label in1 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + label in5 "VCC" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in4_min 12.0 * 0.90 + set in4_max 12.0 * 1.10 + set in5_min 3.3 * 0.90 + set in5_max 3.3 * 1.10 + + label temp1 "SIO Temp" + + +chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" \ + "emc6d100-*" "emc6d102-*" "emc6d103-*" "emc6d103s-*" + + label in1 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 +# Depending on how your chip is hardwired, you may or may not have +# +12V readings. +# set in4_min 12.0 * 0.90 +# set in4_max 12.0 * 1.10 + + label temp2 "M/B Temp" + + +chip "emc6w201-*" + + label in2 "+3.3V" + label in3 "+5V" + + label temp6 "M/B Temp" + + +chip "pc87365-*" "pc87366-*" + +# Voltage inputs + + label in7 "3VSB" + label in8 "VDD" + label in9 "Vbat" + label in10 "AVDD" + + compute in7 @*2, @/2 + compute in8 @*2, @/2 + compute in10 @*2, @/2 + +# These are the operating conditions as recommended by National +# Semiconductor + set in7_min 3.0 + set in7_max 3.6 + set in8_min 3.0 + set in8_max 3.6 + set in10_min 3.0 + set in10_max 3.6 +# Depending on the hardware setup, the battery voltage may or may not +# be monitored. +# set in9_min 2.4 +# set in9_max 3.6 + + label temp3 "SIO Temp" + + set temp3_min 0 + set temp3_max 70 + set temp3_crit 85 + + +chip "adm1030-*" "adm1031-*" + + label temp1 "M/B Temp" + + +chip "w83627thf-*" + + label in3 "+5V" + label in7 "5VSB" + label in8 "Vbat" + + # Internal resistors + compute in3 @ * (1 + 34/51), @ / (1 + 34/51) + compute in7 @ * (1 + 34/51), @ / (1 + 34/51) + + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in7_min 5.0 * 0.90 + set in7_max 5.0 * 1.10 +# The battery voltage may or may not be monitored. +# set in8_min 3.0 * 0.90 +# set in8_max 3.0 * 1.10 + + +chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*" \ + "nct6779-*" "nct6791-*" "nct6795-*" "nct6796-*" + + label in0 "Vcore" + label in2 "AVCC" + label in3 "+3.3V" + label in7 "3VSB" + label in8 "Vbat" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 3.3 * 0.90 + set in3_max 3.3 * 1.10 + set in7_min 3.3 * 0.90 + set in7_max 3.3 * 1.10 + set in8_min 3.0 * 0.90 + set in8_max 3.3 * 1.10 + + +chip "w83627uhg-*" + + label in2 "AVCC" + label in3 "+5V" + label in7 "5VSB" + label in8 "Vbat" + + set in2_min 5.0 * 0.90 + set in2_max 5.0 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in7_min 5.0 * 0.90 + set in7_max 5.0 * 1.10 + set in8_min 3.0 * 0.90 + set in8_max 3.3 * 1.10 + + +chip "f71805f-*" + + label in0 "+3.3V" + + set in0_min 3.3 * 0.90 + set in0_max 3.3 * 1.10 + + +chip "f71872f-*" + + label in0 "+3.3V" + label in9 "Vbat" + label in10 "3VSB" + + set in0_min 3.3 * 0.90 + set in0_max 3.3 * 1.10 + set in9_min 3.0 * 0.90 + set in9_max 3.0 * 1.10 + set in10_min 3.3 * 0.90 + set in10_max 3.3 * 1.10 + + +chip "k8temp-*" + + label temp1 "Core0 Temp" + label temp2 "Core0 Temp" + label temp3 "Core1 Temp" + label temp4 "Core1 Temp" + + +chip "dme1737-*" + + label in0 "5VSB" + label in1 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + label in5 "3VSB" + label in6 "Vbat" + + label temp2 "SIO Temp" + + set in0_min 5.0 * 0.90 + set in0_max 5.0 * 1.10 + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in4_min 12.0 * 0.90 + set in4_max 12.0 * 1.10 + set in5_min 3.3 * 0.90 + set in5_max 3.3 * 1.10 + set in6_min 3.0 * 0.90 + set in6_max 3.0 * 1.10 + + +chip "sch311x-*" + + label in1 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + label in5 "3VSB" + label in6 "Vbat" + + label temp2 "SIO Temp" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 + set in4_min 12.0 * 0.90 + set in4_max 12.0 * 1.10 + set in5_min 3.3 * 0.90 + set in5_max 3.3 * 1.10 + set in6_min 3.0 * 0.90 + set in6_max 3.0 * 1.10 + + +chip "sch5027-*" + + label in0 "5VSB" + label in1 "Vcore" + label in2 "+3.3V" + label in5 "3VSB" + label in6 "Vbat" + + label temp2 "SIO Temp" + + set in0_min 5.0 * 0.90 + set in0_max 5.0 * 1.10 + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in5_min 3.3 * 0.90 + set in5_max 3.3 * 1.10 + set in6_min 3.0 * 0.90 + set in6_max 3.0 * 1.10 + + +chip "sch5127-*" + + label in2 "+3.3V" + label in5 "3VSB" + label in6 "Vbat" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in5_min 3.3 * 0.90 + set in5_max 3.3 * 1.10 + set in6_min 3.0 * 0.90 + set in6_max 3.0 * 1.10 + + +chip "f71808e-*" "f71808a-*" "f71862fg-*" "f71869-*" "f71869a-*" "f71882fg-*" \ + "f71889fg-*" "f71889ed-*" "f71889a-*" + + label in0 "+3.3V" + label in7 "3VSB" + label in8 "Vbat" + + compute in0 @*2, @/2 + compute in7 @*2, @/2 + compute in8 @*2, @/2 + + +chip "f71858fg-*" "f8000-*" + + label in0 "+3.3V" + label in1 "3VSB" + label in2 "Vbat" + + compute in0 @*2, @/2 + compute in1 @*2, @/2 + compute in2 @*2, @/2 + + +chip "f71868a-*" + + label in0 "+3.3V" + label in7 "3VSB" + label in8 "Vbat" + label in9 "5VSB" + + compute in0 @*2, @/2 + compute in7 @*2, @/2 + compute in8 @*2, @/2 + compute in9 @*3, @/3 + + +chip "f81865f-*" + + label in0 "+3.3V" + label in5 "3VSB" + label in6 "Vbat" + + compute in0 @*2, @/2 + compute in5 @*2, @/2 + compute in6 @*2, @/2 + + +chip "adt7473-*" "adt7475-*" + + label in2 "+3.3V" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + + label temp2 "Board Temp" + + +chip "adt7476-*" "adt7490-*" + + label in1 "Vcore" + label in2 "+3.3V" + label in3 "+5V" + label in4 "+12V" + + set in2_min 3.3 * 0.90 + set in2_max 3.3 * 1.10 + set in3_min 5.0 * 0.90 + set in3_max 5.0 * 1.10 +# Depending on how your ADT7476 is hardwired, you may or may not have +# +12V readings. +# set in4_min 12.0 * 0.90 +# set in4_max 12.0 * 1.10 + + label temp2 "M/B Temp" diff --git a/my_container_sandbox/etc/shadow- b/my_container_sandbox/etc/shadow- new file mode 100644 index 0000000000000000000000000000000000000000..16694b9cdc63e814781ef64cbd74cbc0941ea2ae --- /dev/null +++ b/my_container_sandbox/etc/shadow- @@ -0,0 +1,20 @@ +root:*:19633:0:99999:7::: +daemon:*:19633:0:99999:7::: +bin:*:19633:0:99999:7::: +sys:*:19633:0:99999:7::: +sync:*:19633:0:99999:7::: +games:*:19633:0:99999:7::: +man:*:19633:0:99999:7::: +lp:*:19633:0:99999:7::: +mail:*:19633:0:99999:7::: +news:*:19633:0:99999:7::: +uucp:*:19633:0:99999:7::: +proxy:*:19633:0:99999:7::: +www-data:*:19633:0:99999:7::: +backup:*:19633:0:99999:7::: +list:*:19633:0:99999:7::: +irc:*:19633:0:99999:7::: +gnats:*:19633:0:99999:7::: +nobody:*:19633:0:99999:7::: +_apt:*:19633:0:99999:7::: +sshd:*:19800:0:99999:7::: diff --git a/my_container_sandbox/etc/subgid b/my_container_sandbox/etc/subgid new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/my_container_sandbox/etc/subuid b/my_container_sandbox/etc/subuid new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/my_container_sandbox/workspace/.pip/pip.conf b/my_container_sandbox/workspace/.pip/pip.conf new file mode 100644 index 0000000000000000000000000000000000000000..488f610eb13533d3b9dd692a670336dec1a91316 --- /dev/null +++ b/my_container_sandbox/workspace/.pip/pip.conf @@ -0,0 +1 @@ +[global] diff --git a/my_container_sandbox/workspace/anaconda3/LICENSE.txt b/my_container_sandbox/workspace/anaconda3/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..eff01db72cafac9853297f800a4c5ef57730b68c --- /dev/null +++ b/my_container_sandbox/workspace/anaconda3/LICENSE.txt @@ -0,0 +1,83 @@ +=================================== +End User License Agreement - Miniconda +=================================== + +Copyright 2015-2021, Anaconda, Inc. + +All rights reserved under the 3-clause BSD License: + +This End User License Agreement (the "Agreement") is a legal agreement between you and Anaconda, Inc. ("Anaconda") and governs your use of Miniconda. + +Subject to the terms of this Agreement, Anaconda hereby grants you a non-exclusive, non-transferable license to: + + * Install and use the Miniconda. + * Modify and create derivative works of sample source code delivered in Miniconda subject to the Terms of Service for the Repository (as defined hereinafter) available at https://www.anaconda.com/terms-of-service, and + + * Redistribute code files in source (if provided to you by Anaconda as source) and binary forms, with or without modification subject to the requirements set forth below. + +Anaconda may, at its option, make available patches, workarounds or other updates to Miniconda. Unless the updates are provided with their separate governing terms, they are deemed part of Miniconda licensed to you as provided in this Agreement. This Agreement does not entitle you to any support for Miniconda. + +Anaconda reserves all rights not expressly granted to you in this Agreement. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of Anaconda nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +You acknowledge that, as between you and Anaconda, Anaconda owns all right, title, and interest, including all intellectual property rights, in and to Miniconda and, with respect to third-party products distributed with or through Miniconda, the applicable third-party licensors own all right, title and interest, including all intellectual property rights, in and to such products. If you send or transmit any communications or materials to Anaconda suggesting or recommending changes to the software or documentation, including without limitation, new features or functionality relating thereto, or any comments, questions, suggestions or the like ("Feedback"), Anaconda is free to use such Feedback. You hereby assign to Anaconda all right, title, and interest in, and Anaconda is free to use, without any attribution or compensation to any party, any ideas, know-how, concepts, techniques or other intellectual property rights contained in the Feedback, for any purpose whatsoever, although Anaconda is not required to use any Feedback. + +DISCLAIMER +========== + +THIS SOFTWARE IS PROVIDED BY ANACONDA AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANACONDA BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +TO THE MAXIMUM EXTENT PERMITTED BY LAW, ANACONDA AND ITS AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY LOST PROFITS, LOSS OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT OR THE USE OR PERFORMANCE OF ANACONDA INDIVIDUAL EDITION, WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY OF LIABILITY. IN NO EVENT WILL THE TOTAL CUMULATIVE LIABILITY OF ANACONDA AND ITS AFFILIATES UNDER OR ARISING OUT OF THIS AGREEMENT EXCEED US$10.00. + +Miscellaneous +============= + +If you want to terminate this Agreement, you may do so by discontinuing use of Miniconda. Anaconda may, at any time, terminate this Agreement and the license granted hereunder if you fail to comply with any term of this Agreement. Upon any termination of this Agreement, you agree to promptly discontinue use of the Miniconda and destroy all copies in your possession or control. Upon any termination of this Agreement all provisions survive except for the licenses granted to you. + +This Agreement is governed by and construed in accordance with the internal laws of the State of Texas without giving effect to any choice or conflict of law provision or rule that would require or permit the application of the laws of any jurisdiction other than those of the State of Texas. Any legal suit, action, or proceeding arising out of or related to this Agreement or the licenses granted hereunder by you must be instituted exclusively in the federal courts of the United States or the courts of the State of Texas in each case located in Travis County, Texas, and you irrevocably submit to the jurisdiction of such courts in any such suit, action, or proceeding. + +Notice of Third Party Software Licenses +======================================= + +Miniconda provides access to a repository (the "Repository") which contains software packages or tools licensed on an open source basis from third parties and binary packages of these third party tools. These third party software packages or tools are provided on an "as is" basis and are subject to their respective license agreements as well as this Agreement and the Terms of Service for the Repository located at https://www.anaconda.com/terms-of-service; provided, however, no restriction contained in the Terms of Service shall be construed so as to limit Your ability to download the packages contained in Miniconda provided you comply with the license for each such package. These licenses may be accessed from within the Miniconda software[1] or https://www.anaconda.com/legal. Information regarding which license is applicable is available from within many of the third party software packages and tools and athttps://repo.anaconda.com/pkgs/main/ andhttps://repo.anaconda.com/pkgs/r/. Anaconda reserves the right, in its sole discretion, to change which third party tools are included in the Repository accessible through Miniconda. + + +Intel Math Kernel Library +------------------------- + +Miniconda provides access to re-distributable, run-time, shared-library files from the Intel Math Kernel Library ("MKL binaries"). + +Copyright 2018 Intel Corporation. License available at https://software.intel.com/en-us/license/intel-simplified-software-license (the "MKL License"). + +You may use and redistribute the MKL binaries, without modification, provided the following conditions are met: + + * Redistributions must reproduce the above copyright notice and the following terms of use in the MKL binaries and in the documentation and/or other materials provided with the distribution. + * Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from the MKL binaries without specific prior written permission. + * No reverse engineering, decompilation, or disassembly of the MKL binaries is permitted. + +You are specifically authorized to use and redistribute the MKL binaries with your installation of Miniconda subject to the terms set forth in the MKL License. You are also authorized to redistribute the MKL binaries with Miniconda or in the Anaconda package that contains the MKL binaries. If needed, instructions for removing the MKL binaries after installation of Miniconda are available at https://docs.anaconda.com. + +cuDNN Software +-------------- + +Miniconda also provides access to cuDNN software binaries ("cuDNN binaries") from NVIDIA Corporation. You are specifically authorized to use the cuDNN binaries with your installation of Miniconda subject to your compliance with the license agreement located at https://docs.nvidia.com/deeplearning/sdk/cudnn-sla/index.html. You are also authorized to redistribute the cuDNN binaries with an Miniconda package that contains the cuDNN binaries. You can add or remove the cuDNN binaries utilizing the install and uninstall features in Miniconda. + +cuDNN binaries contain source code provided by NVIDIA Corporation. + +Export; Cryptography Notice +=========================== + +You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. Miniconda includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See the Wassenaar Arrangement http://www.wassenaar.org/ for more information. + +Anaconda has self-classified this software as Export Commodity Control Number (ECCN) EAR99, which includes mass market information security software using or performing cryptographic functions with asymmetric algorithms. No license is required for export of this software to non-embargoed countries. + +The Intel Math Kernel Library contained in Miniconda is classified by Intel as ECCN 5D992.c with no license required for export to non-embargoed countries. + +The following packages listed on https://www.anaconda.com/cryptography are included in the repository accessible through Miniconda that relate to cryptography. + +Last updated June 24, 2021 diff --git a/my_container_sandbox/workspace/difftumor/eval2.py b/my_container_sandbox/workspace/difftumor/eval2.py new file mode 100644 index 0000000000000000000000000000000000000000..2fcd62eb36eb6723f31711517c3189258448a428 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/eval2.py @@ -0,0 +1,32 @@ +import os, shutil, argparse, torch +from tqdm import tqdm +import sys +sys.path.append('.') +# print('sys.path', sys.path) +join = os.path.join + + +def eval(args, test_data_list): + gpu = args.gpu + try: + os.system('CUDA_VISIBLE_DEVICES={} python organ_mask_access/organ_test.py'.format(gpu)) + + os.system('CUDA_VISIBLE_DEVICES={} python tumor_mask_access/liver_tumor.py'.format(gpu)) + os.system('CUDA_VISIBLE_DEVICES={} python tumor_mask_access/pancreas_tumor.py'.format(gpu)) + os.system('CUDA_VISIBLE_DEVICES={} python tumor_mask_access/kidney_tumor.py'.format(gpu)) + except Exception as e: + print('error') + + + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--gpu', default=0, type=int, help='evaluation results will be saved in this folder') + + args = parser.parse_args() + data_path = '/workspace/inputs' + test_data_list = os.listdir(data_path) + test_data_list.sort() + eval(args, test_data_list) + \ No newline at end of file diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/dataset/dataloader.py b/my_container_sandbox/workspace/difftumor/organ_mask_access/dataset/dataloader.py new file mode 100644 index 0000000000000000000000000000000000000000..36c15993febd61792b96e47b3d44fe6789e4f807 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/dataset/dataloader.py @@ -0,0 +1,152 @@ +from monai.transforms import ( + AsDiscrete, + AddChanneld, + Compose, + CropForegroundd, + LoadImaged, + Orientationd, + RandFlipd, + RandCropByPosNegLabeld, + RandShiftIntensityd, + ScaleIntensityRanged, + Spacingd, + RandRotate90d, + ToTensord, + CenterSpatialCropd, + Resized, + SpatialPadd, + apply_transform, + RandZoomd, + RandCropByLabelClassesd, +) + +import collections.abc +import math +import pickle +import shutil +import sys +import tempfile +import threading +import time +import warnings +from copy import copy, deepcopy +import h5py + + +import numpy as np +import torch +from typing import IO, TYPE_CHECKING, Any, Callable, Dict, Hashable, List, Mapping, Optional, Sequence, Tuple, Union + +sys.path.append("..") +from utils.utils import get_key + +from torch.utils.data import Subset + +from monai.data import DataLoader, Dataset, list_data_collate, DistributedSampler, CacheDataset +from monai.config import DtypeLike, KeysCollection +from monai.transforms.transform import Transform, MapTransform +from monai.utils.enums import TransformBackends +from monai.config.type_definitions import NdarrayOrTensor +from monai.transforms.io.array import LoadImage, SaveImage +from monai.utils import GridSamplePadMode, ensure_tuple, ensure_tuple_rep +from monai.data.image_reader import ImageReader +from monai.utils.enums import PostFix +import os + +DEFAULT_POST_FIX = PostFix.meta() + +class LoadImageh5d(MapTransform): + def __init__( + self, + keys: KeysCollection, + reader: Optional[Union[ImageReader, str]] = None, + dtype: DtypeLike = np.float32, + meta_keys: Optional[KeysCollection] = None, + meta_key_postfix: str = DEFAULT_POST_FIX, + overwriting: bool = False, + image_only: bool = False, + ensure_channel_first: bool = False, + simple_keys: bool = False, + allow_missing_keys: bool = False, + *args, + **kwargs, + ) -> None: + super().__init__(keys, allow_missing_keys) + self._loader = LoadImage(reader, image_only, dtype, ensure_channel_first, simple_keys, *args, **kwargs) + if not isinstance(meta_key_postfix, str): + raise TypeError(f"meta_key_postfix must be a str but is {type(meta_key_postfix).__name__}.") + self.meta_keys = ensure_tuple_rep(None, len(self.keys)) if meta_keys is None else ensure_tuple(meta_keys) + if len(self.keys) != len(self.meta_keys): + raise ValueError("meta_keys should have the same length as keys.") + self.meta_key_postfix = ensure_tuple_rep(meta_key_postfix, len(self.keys)) + self.overwriting = overwriting + + + def register(self, reader: ImageReader): + self._loader.register(reader) + + + def __call__(self, data, reader: Optional[ImageReader] = None): + d = dict(data) + for key, meta_key, meta_key_postfix in self.key_iterator(d, self.meta_keys, self.meta_key_postfix): + data = self._loader(d[key], reader) + if self._loader.image_only: + d[key] = data + else: + if not isinstance(data, (tuple, list)): + raise ValueError("loader must return a tuple or list (because image_only=False was used).") + d[key] = data[0] + if not isinstance(data[1], dict): + raise ValueError("metadata must be a dict.") + meta_key = meta_key or f"{key}_{meta_key_postfix}" + if meta_key in d and not self.overwriting: + raise KeyError(f"Metadata with key {meta_key} already exists and overwriting=False.") + d[meta_key] = data[1] + return d + +def get_loader(args, test_data_list): + val_transforms = Compose( + [ + LoadImaged(keys=["image"]), + AddChanneld(keys=["image"]), + Orientationd(keys=["image"], axcodes="RAS"), + Spacingd( + keys=["image"], + pixdim=(args.space_x, args.space_y, args.space_z), + mode=("bilinear"), + ), + ScaleIntensityRanged( + keys=["image"], + a_min=args.a_min, + a_max=args.a_max, + b_min=args.b_min, + b_max=args.b_max, + clip=True, + ), + CropForegroundd(keys=["image"], source_key="image"), + ToTensord(keys=["image"]), + ] + ) + + ## test dict part + test_img = [] + test_name = [] + + for data_name in test_data_list: + name = data_name.split('.nii')[0] + test_img.append(os.path.join(args.data_root_path, data_name)) + test_name.append(name) + + data_dicts_test = [{'image': image, 'name': name} + for image, name in zip(test_img ,test_name)] + print('test len {}'.format(len(data_dicts_test))) + + test_dataset = Dataset(data=data_dicts_test, transform=val_transforms) + test_loader = DataLoader(test_dataset, batch_size=1, shuffle=False, num_workers=4, collate_fn=list_data_collate) + return test_loader, val_transforms + +if __name__ == "__main__": + train_loader, test_loader = partial_label_dataloader() + for index, item in enumerate(test_loader): + print(item['image'].shape, item['label'].shape, item['task_id']) + input() \ No newline at end of file diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/DiNTS.py b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/DiNTS.py new file mode 100644 index 0000000000000000000000000000000000000000..82ec22d701e8905a9270cf688a9e558e5b600bc5 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/DiNTS.py @@ -0,0 +1,672 @@ +import warnings +from typing import List, Optional, Tuple, Union + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F + +from monai.networks.blocks.dints_block import ( + ActiConvNormBlock, + FactorizedIncreaseBlock, + FactorizedReduceBlock, + P3DActiConvNormBlock, +) +from monai.networks.layers.factories import Conv +from monai.networks.layers.utils import get_act_layer, get_norm_layer +from monai.utils import optional_import + +# solving shortest path problem +csr_matrix, _ = optional_import("scipy.sparse", name="csr_matrix") +dijkstra, _ = optional_import("scipy.sparse.csgraph", name="dijkstra") + +@torch.jit.interface +class CellInterface(torch.nn.Module): + """interface for torchscriptable Cell""" + + def forward(self, x: torch.Tensor, weight: torch.Tensor) -> torch.Tensor: # type: ignore + pass + + +@torch.jit.interface +class StemInterface(torch.nn.Module): + """interface for torchscriptable Stem""" + + def forward(self, x: torch.Tensor) -> torch.Tensor: # type: ignore + pass + + +class StemTS(StemInterface): + """wrapper for torchscriptable Stem""" + + def __init__(self, *mod): + super().__init__() + self.mod = torch.nn.Sequential(*mod) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + return self.mod(x) # type: ignore + + +def _dfs(node, paths): + """use depth first search to find all path activation combination""" + if node == paths: + return [[0], [1]] + child = _dfs(node + 1, paths) + return [[0] + _ for _ in child] + [[1] + _ for _ in child] + + +class _IdentityWithRAMCost(nn.Identity): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.ram_cost = 0 + + +class _CloseWithRAMCost(nn.Module): + def __init__(self): + super().__init__() + self.ram_cost = 0 + + def forward(self, x): + return torch.tensor(0.0, requires_grad=False).to(x) + + +class _ActiConvNormBlockWithRAMCost(ActiConvNormBlock): + """The class wraps monai layers with ram estimation. The ram_cost = total_ram/output_size is estimated. + Here is the estimation: + feature_size = output_size/out_channel + total_ram = ram_cost * output_size + total_ram = in_channel * feature_size (activation map) + + in_channel * feature_size (convolution map) + + out_channel * feature_size (normalization) + = (2*in_channel + out_channel) * output_size/out_channel + ram_cost = total_ram/output_size = 2 * in_channel/out_channel + 1 + """ + + def __init__( + self, + in_channel: int, + out_channel: int, + kernel_size: int, + padding: int, + spatial_dims: int = 3, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + ): + super().__init__(in_channel, out_channel, kernel_size, padding, spatial_dims, act_name, norm_name) + self.ram_cost = 1 + in_channel / out_channel * 2 + + +class _P3DActiConvNormBlockWithRAMCost(P3DActiConvNormBlock): + def __init__( + self, + in_channel: int, + out_channel: int, + kernel_size: int, + padding: int, + p3dmode: int = 0, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + ): + super().__init__(in_channel, out_channel, kernel_size, padding, p3dmode, act_name, norm_name) + # 1 in_channel (activation) + 1 in_channel (convolution) + + # 1 out_channel (convolution) + 1 out_channel (normalization) + self.ram_cost = 2 + 2 * in_channel / out_channel + + +class _FactorizedIncreaseBlockWithRAMCost(FactorizedIncreaseBlock): + def __init__( + self, + in_channel: int, + out_channel: int, + spatial_dims: int = 3, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + ): + super().__init__(in_channel, out_channel, spatial_dims, act_name, norm_name) + # s0 is upsampled 2x from s1, representing feature sizes at two resolutions. + # 2 * in_channel * s0 (upsample + activation) + 2 * out_channel * s0 (conv + normalization) + # s0 = output_size/out_channel + self.ram_cost = 2 * in_channel / out_channel + 2 + + +class _FactorizedReduceBlockWithRAMCost(FactorizedReduceBlock): + def __init__( + self, + in_channel: int, + out_channel: int, + spatial_dims: int = 3, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + ): + super().__init__(in_channel, out_channel, spatial_dims, act_name, norm_name) + # s0 is upsampled 2x from s1, representing feature sizes at two resolutions. + # in_channel * s0 (activation) + 3 * out_channel * s1 (convolution, concatenation, normalization) + # s0 = s1 * 2^(spatial_dims) = output_size / out_channel * 2^(spatial_dims) + self.ram_cost = in_channel / out_channel * 2**self._spatial_dims + 3 + + +class MixedOp(nn.Module): + """ + The weighted averaging of cell operations. + Args: + c: number of output channels. + ops: a dictionary of operations. See also: ``Cell.OPS2D`` or ``Cell.OPS3D``. + arch_code_c: binary cell operation code. It represents the operation results added to the output. + """ + + def __init__(self, c: int, ops: dict, arch_code_c=None): + super().__init__() + if arch_code_c is None: + arch_code_c = np.ones(len(ops)) + self.ops = nn.ModuleList() + for arch_c, op_name in zip(arch_code_c, ops): + self.ops.append(_CloseWithRAMCost() if arch_c == 0 else ops[op_name](c)) + + def forward(self, x: torch.Tensor, weight: torch.Tensor): + """ + Args: + x: input tensor. + weight: learnable architecture weights for cell operations. arch_code_c are derived from it. + Return: + out: weighted average of the operation results. + """ + out = 0.0 + weight = weight.to(x) + for idx, _op in enumerate(self.ops): + out = out + _op(x) * weight[idx] + return out + + +class Cell(CellInterface): + """ + The basic class for cell operation search, which contains a preprocessing operation and a mixed cell operation. + Each cell is defined on a `path` in the topology search space. + Args: + c_prev: number of input channels + c: number of output channels + rate: resolution change rate. It represents the preprocessing operation before the mixed cell operation. + ``-1`` for 2x downsample, ``1`` for 2x upsample, ``0`` for no change of resolution. + arch_code_c: cell operation code + """ + + DIRECTIONS = 3 + # Possible output paths for `Cell`. + # + # - UpSample + # / + # +--+/ + # | |--- Identity or AlignChannels + # +--+\ + # \ + # - Downsample + + # Define 2D operation set, parameterized by the number of channels + OPS2D = { + "skip_connect": lambda _c: _IdentityWithRAMCost(), + "conv_3x3": lambda c: _ActiConvNormBlockWithRAMCost(c, c, 3, padding=1, spatial_dims=2), + } + + # Define 3D operation set, parameterized by the number of channels + OPS3D = { + "skip_connect": lambda _c: _IdentityWithRAMCost(), + "conv_3x3x3": lambda c: _ActiConvNormBlockWithRAMCost(c, c, 3, padding=1, spatial_dims=3), + "conv_3x3x1": lambda c: _P3DActiConvNormBlockWithRAMCost(c, c, 3, padding=1, p3dmode=0), + "conv_3x1x3": lambda c: _P3DActiConvNormBlockWithRAMCost(c, c, 3, padding=1, p3dmode=1), + "conv_1x3x3": lambda c: _P3DActiConvNormBlockWithRAMCost(c, c, 3, padding=1, p3dmode=2), + } + + # Define connection operation set, parameterized by the number of channels + ConnOPS = { + "up": _FactorizedIncreaseBlockWithRAMCost, + "down": _FactorizedReduceBlockWithRAMCost, + "identity": _IdentityWithRAMCost, + "align_channels": _ActiConvNormBlockWithRAMCost, + } + + def __init__( + self, + c_prev: int, + c: int, + rate: int, + arch_code_c=None, + spatial_dims: int = 3, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + ): + super().__init__() + self._spatial_dims = spatial_dims + self._act_name = act_name + self._norm_name = norm_name + + if rate == -1: # downsample + self.preprocess = self.ConnOPS["down"]( + c_prev, c, spatial_dims=self._spatial_dims, act_name=self._act_name, norm_name=self._norm_name + ) + elif rate == 1: # upsample + self.preprocess = self.ConnOPS["up"]( + c_prev, c, spatial_dims=self._spatial_dims, act_name=self._act_name, norm_name=self._norm_name + ) + else: + if c_prev == c: + self.preprocess = self.ConnOPS["identity"]() + else: + self.preprocess = self.ConnOPS["align_channels"]( + c_prev, c, 1, 0, spatial_dims=self._spatial_dims, act_name=self._act_name, norm_name=self._norm_name + ) + + # Define 2D operation set, parameterized by the number of channels + self.OPS2D = { + "skip_connect": lambda _c: _IdentityWithRAMCost(), + "conv_3x3": lambda c: _ActiConvNormBlockWithRAMCost( + c, c, 3, padding=1, spatial_dims=2, act_name=self._act_name, norm_name=self._norm_name + ), + } + + # Define 3D operation set, parameterized by the number of channels + self.OPS3D = { + "skip_connect": lambda _c: _IdentityWithRAMCost(), + "conv_3x3x3": lambda c: _ActiConvNormBlockWithRAMCost( + c, c, 3, padding=1, spatial_dims=3, act_name=self._act_name, norm_name=self._norm_name + ), + "conv_3x3x1": lambda c: _P3DActiConvNormBlockWithRAMCost( + c, c, 3, padding=1, p3dmode=0, act_name=self._act_name, norm_name=self._norm_name + ), + "conv_3x1x3": lambda c: _P3DActiConvNormBlockWithRAMCost( + c, c, 3, padding=1, p3dmode=1, act_name=self._act_name, norm_name=self._norm_name + ), + "conv_1x3x3": lambda c: _P3DActiConvNormBlockWithRAMCost( + c, c, 3, padding=1, p3dmode=2, act_name=self._act_name, norm_name=self._norm_name + ), + } + + self.OPS = {} + if self._spatial_dims == 2: + self.OPS = self.OPS2D + elif self._spatial_dims == 3: + self.OPS = self.OPS3D + else: + raise NotImplementedError(f"Spatial dimensions {self._spatial_dims} is not supported.") + + self.op = MixedOp(c, self.OPS, arch_code_c) + + def forward(self, x: torch.Tensor, weight: torch.Tensor) -> torch.Tensor: + """ + Args: + x: input tensor + weight: weights for different operations. + """ + x = self.preprocess(x) + x = self.op(x, weight) + return x + +class TopologyConstruction(nn.Module): + """ + The base class for `TopologyInstance` and `TopologySearch`. + + Args: + arch_code: `[arch_code_a, arch_code_c]`, numpy arrays. The architecture codes defining the model. + For example, for a ``num_depths=4, num_blocks=12`` search space: + + - `arch_code_a` is a 12x10 (10 paths) binary matrix representing if a path is activated. + - `arch_code_c` is a 12x10x5 (5 operations) binary matrix representing if a cell operation is used. + - `arch_code` in ``__init__()`` is used for creating the network and remove unused network blocks. If None, + + all paths and cells operations will be used, and must be in the searching stage (is_search=True). + channel_mul: adjust intermediate channel number, default is 1. + cell: operation of each node. + num_blocks: number of blocks (depth in the horizontal direction) of the DiNTS search space. + num_depths: number of image resolutions of the DiNTS search space: 1, 1/2, 1/4 ... in each dimension. + use_downsample: use downsample in the stem. If False, the search space will be in resolution [1, 1/2, 1/4, 1/8], + if True, the search space will be in resolution [1/2, 1/4, 1/8, 1/16]. + device: `'cpu'`, `'cuda'`, or device ID. + + + Predefined variables: + `filter_nums`: default to 32. Double the number of channels after downsample. + topology related variables: + + - `arch_code2in`: path activation to its incoming node index (resolution). For depth = 4, + arch_code2in = [0, 1, 0, 1, 2, 1, 2, 3, 2, 3]. The first path outputs from node 0 (top resolution), + the second path outputs from node 1 (second resolution in the search space), + the third path outputs from node 0, etc. + - `arch_code2ops`: path activation to operations of upsample 1, keep 0, downsample -1. For depth = 4, + arch_code2ops = [0, 1, -1, 0, 1, -1, 0, 1, -1, 0]. The first path does not change + resolution, the second path perform upsample, the third perform downsample, etc. + - `arch_code2out`: path activation to its output node index. + For depth = 4, arch_code2out = [0, 0, 1, 1, 1, 2, 2, 2, 3, 3], + the first and second paths connects to node 0 (top resolution), the 3,4,5 paths connects to node 1, etc. + """ + + def __init__( + self, + arch_code: Optional[list] = None, + channel_mul: float = 1.0, + cell=Cell, + num_blocks: int = 6, + num_depths: int = 3, + spatial_dims: int = 3, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + use_downsample: bool = True, + device: str = "cpu", + ): + + super().__init__() + + self.filter_nums = [int(n_feat * channel_mul) for n_feat in (32, 64, 128, 256, 512)] + self.num_blocks = num_blocks + self.num_depths = num_depths + self._spatial_dims = spatial_dims + self._act_name = act_name + self._norm_name = norm_name + self.use_downsample = use_downsample + self.device = device + self.num_cell_ops = 0 + if self._spatial_dims == 2: + self.num_cell_ops = len(cell.OPS2D) + elif self._spatial_dims == 3: + self.num_cell_ops = len(cell.OPS3D) + + # Calculate predefined parameters for topology search and decoding + arch_code2in, arch_code2out = [], [] + for i in range(Cell.DIRECTIONS * self.num_depths - 2): + arch_code2in.append((i + 1) // Cell.DIRECTIONS - 1 + (i + 1) % Cell.DIRECTIONS) + arch_code2ops = ([-1, 0, 1] * self.num_depths)[1:-1] + for m in range(self.num_depths): + arch_code2out.extend([m, m, m]) + arch_code2out = arch_code2out[1:-1] + self.arch_code2in = arch_code2in + self.arch_code2ops = arch_code2ops + self.arch_code2out = arch_code2out + + # define NAS search space + if arch_code is None: + arch_code_a = torch.ones((self.num_blocks, len(self.arch_code2out))).to(self.device) + arch_code_c = torch.ones((self.num_blocks, len(self.arch_code2out), self.num_cell_ops)).to(self.device) + else: + arch_code_a = torch.from_numpy(arch_code[0]).to(self.device) + arch_code_c = F.one_hot(torch.from_numpy(arch_code[1]).to(torch.int64), self.num_cell_ops).to(self.device) + + self.arch_code_a = arch_code_a + self.arch_code_c = arch_code_c + # define cell operation on each path + self.cell_tree = nn.ModuleDict() + for blk_idx in range(self.num_blocks): + for res_idx in range(len(self.arch_code2out)): + if self.arch_code_a[blk_idx, res_idx] == 1: + self.cell_tree[str((blk_idx, res_idx))] = cell( + self.filter_nums[self.arch_code2in[res_idx] + int(use_downsample)], + self.filter_nums[self.arch_code2out[res_idx] + int(use_downsample)], + self.arch_code2ops[res_idx], + self.arch_code_c[blk_idx, res_idx], + self._spatial_dims, + self._act_name, + self._norm_name, + ) + + def forward(self, x): + """This function to be implemented by the architecture instances or search spaces.""" + pass + +class TopologyInstance(TopologyConstruction): + """ + Instance of the final searched architecture. Only used in re-training/inference stage. + """ + + def __init__( + self, + arch_code=None, + channel_mul: float = 1.0, + cell=Cell, + num_blocks: int = 6, + num_depths: int = 3, + spatial_dims: int = 3, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + use_downsample: bool = True, + device: str = "cpu", + ): + """ + Initialize DiNTS topology search space of neural architectures. + """ + if arch_code is None: + warnings.warn("arch_code not provided when not searching.") + + super().__init__( + arch_code=arch_code, + channel_mul=channel_mul, + cell=cell, + num_blocks=num_blocks, + num_depths=num_depths, + spatial_dims=spatial_dims, + act_name=act_name, + norm_name=norm_name, + use_downsample=use_downsample, + device=device, + ) + + + def forward(self, x: List[torch.Tensor]) -> List[torch.Tensor]: + """ + Args: + x: input tensor. + """ + # generate path activation probability + inputs, outputs = x, [torch.tensor(0.0).to(x[0])] * self.num_depths + for blk_idx in range(self.num_blocks): + outputs = [torch.tensor(0.0).to(x[0])] * self.num_depths + for res_idx, activation in enumerate(self.arch_code_a[blk_idx].data): + if activation: + mod: CellInterface = self.cell_tree[str((blk_idx, res_idx))] + _out = mod.forward( + x=inputs[self.arch_code2in[res_idx]], weight=torch.ones_like(self.arch_code_c[blk_idx, res_idx]) + ) + outputs[self.arch_code2out[res_idx]] = outputs[self.arch_code2out[res_idx]] + _out + inputs = outputs + + return inputs + +class DiNTS(nn.Module): + """ + Reimplementation of DiNTS based on + "DiNTS: Differentiable Neural Network Topology Search for 3D Medical Image Segmentation + ". + + The model contains a pre-defined multi-resolution stem block (defined in this class) and a + DiNTS space (defined in :py:class:`monai.networks.nets.TopologyInstance` and + :py:class:`monai.networks.nets.TopologySearch`). + + The stem block is for: 1) input downsample and 2) output upsample to original size. + The model downsamples the input image by 2 (if ``use_downsample=True``). + The downsampled image is downsampled by [1, 2, 4, 8] times (``num_depths=4``) and used as input to the + DiNTS search space (``TopologySearch``) or the DiNTS instance (``TopologyInstance``). + + - ``TopologyInstance`` is the final searched model. The initialization requires the searched architecture codes. + - ``TopologySearch`` is a multi-path topology and cell operation search space. + The architecture codes will be initialized as one. + - ``TopologyConstruction`` is the parent class which constructs the instance and search space. + + To meet the requirements of the structure, the input size for each spatial dimension should be: + divisible by 2 ** (num_depths + 1). + + Args: + dints_space: DiNTS search space. The value should be instance of `TopologyInstance` or `TopologySearch`. + in_channels: number of input image channels. + num_classes: number of output segmentation classes. + act_name: activation name, default to 'RELU'. + norm_name: normalization used in convolution blocks. Default to `InstanceNorm`. + spatial_dims: spatial 2D or 3D inputs. + use_downsample: use downsample in the stem. + If ``False``, the search space will be in resolution [1, 1/2, 1/4, 1/8], + if ``True``, the search space will be in resolution [1/2, 1/4, 1/8, 1/16]. + node_a: node activation numpy matrix. Its shape is `(num_depths, num_blocks + 1)`. + +1 for multi-resolution inputs. + In model searching stage, ``node_a`` can be None. In deployment stage, ``node_a`` cannot be None. + """ + + def __init__( + self, + dints_space, + in_channels: int, + num_classes: int, + act_name: Union[Tuple, str] = "RELU", + norm_name: Union[Tuple, str] = ("INSTANCE", {"affine": True}), + spatial_dims: int = 3, + use_downsample: bool = True, + node_a=None, + ): + super().__init__() + + self.dints_space = dints_space + self.filter_nums = dints_space.filter_nums + self.num_blocks = dints_space.num_blocks + self.num_depths = dints_space.num_depths + if spatial_dims not in (2, 3): + raise NotImplementedError(f"Spatial dimensions {spatial_dims} is not supported.") + self._spatial_dims = spatial_dims + if node_a is None: + self.node_a = torch.ones((self.num_blocks + 1, self.num_depths)) + else: + self.node_a = node_a + + # define stem operations for every block + conv_type = Conv[Conv.CONV, spatial_dims] + self.stem_down = nn.ModuleDict() + self.stem_up = nn.ModuleDict() + mode = "trilinear" if self._spatial_dims == 3 else "bilinear" + for res_idx in range(self.num_depths): + # define downsample stems before DiNTS search + if use_downsample: + self.stem_down[str(res_idx)] = StemTS( + nn.Upsample(scale_factor=1 / (2**res_idx), mode=mode, align_corners=True), + conv_type( + in_channels=in_channels, + out_channels=self.filter_nums[res_idx], + kernel_size=3, + stride=1, + padding=1, + groups=1, + bias=False, + dilation=1, + ), + get_norm_layer(name=norm_name, spatial_dims=spatial_dims, channels=self.filter_nums[res_idx]), + get_act_layer(name=act_name), + conv_type( + in_channels=self.filter_nums[res_idx], + out_channels=self.filter_nums[res_idx + 1], + kernel_size=3, + stride=2, + padding=1, + groups=1, + bias=False, + dilation=1, + ), + get_norm_layer(name=norm_name, spatial_dims=spatial_dims, channels=self.filter_nums[res_idx + 1]), + ) + self.stem_up[str(res_idx)] = StemTS( + get_act_layer(name=act_name), + conv_type( + in_channels=self.filter_nums[res_idx + 1], + out_channels=self.filter_nums[res_idx], + kernel_size=3, + stride=1, + padding=1, + groups=1, + bias=False, + dilation=1, + ), + get_norm_layer(name=norm_name, spatial_dims=spatial_dims, channels=self.filter_nums[res_idx]), + nn.Upsample(scale_factor=2, mode=mode, align_corners=True), + ) + + else: + self.stem_down[str(res_idx)] = StemTS( + nn.Upsample(scale_factor=1 / (2**res_idx), mode=mode, align_corners=True), + conv_type( + in_channels=in_channels, + out_channels=self.filter_nums[res_idx], + kernel_size=3, + stride=1, + padding=1, + groups=1, + bias=False, + dilation=1, + ), + get_norm_layer(name=norm_name, spatial_dims=spatial_dims, channels=self.filter_nums[res_idx]), + ) + self.stem_up[str(res_idx)] = StemTS( + get_act_layer(name=act_name), + conv_type( + in_channels=self.filter_nums[res_idx], + out_channels=self.filter_nums[max(res_idx - 1, 0)], + kernel_size=3, + stride=1, + padding=1, + groups=1, + bias=False, + dilation=1, + ), + get_norm_layer( + name=norm_name, spatial_dims=spatial_dims, channels=self.filter_nums[max(res_idx - 1, 0)] + ), + nn.Upsample(scale_factor=2 ** (res_idx != 0), mode=mode, align_corners=True), + ) + + def weight_parameters(self): + return [param for name, param in self.named_parameters()] + + def forward(self, x: torch.Tensor): + """ + Prediction based on dynamic arch_code. + + Args: + x: input tensor. + """ + inputs = [] + for d in range(self.num_depths): + # allow multi-resolution input + _mod_w: StemInterface = self.stem_down[str(d)] + x_out = _mod_w.forward(x) + if self.node_a[0][d]: + inputs.append(x_out) + else: + inputs.append(torch.zeros_like(x_out)) + + outputs = self.dints_space(inputs) + + blk_idx = self.num_blocks - 1 + start = False + _temp: torch.Tensor = torch.empty(0) + for res_idx in range(self.num_depths - 1, -1, -1): + _mod_up: StemInterface = self.stem_up[str(res_idx)] + if start: + _temp = _mod_up.forward(outputs[res_idx] + _temp) + elif self.node_a[blk_idx + 1][res_idx]: + start = True + _temp = _mod_up.forward(outputs[res_idx]) + + return outputs[-1], _temp + +if __name__ == "__main__": + ckpt = torch.load('./arch_code_cvpr.pth') + node_a = ckpt["node_a"] + arch_code_a = ckpt["arch_code_a"] + arch_code_c = ckpt["arch_code_c"] + + dints_space = TopologyInstance( + channel_mul=1.0, + num_blocks=12, + num_depths=4, + use_downsample=True, + arch_code=[arch_code_a, arch_code_c] + ) + + net = DiNTS( + dints_space=dints_space, + in_channels=1, + num_classes=3, + use_downsample=True, + node_a=node_a, + ) + input_tensor = torch.zeros(1, 1, 96, 96, 96) + net(input_tensor) \ No newline at end of file diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/Unetpp.py b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/Unetpp.py new file mode 100644 index 0000000000000000000000000000000000000000..9d2d40953ba6778845953a8ad4d928df52c0bdf6 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/Unetpp.py @@ -0,0 +1,152 @@ +# Copyright (c) MONAI Consortium +# 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. + +from typing import Sequence, Union + +import torch +import torch.nn as nn + +from monai.networks.layers.factories import Conv +from monai.networks.nets.basic_unet import Down, TwoConv, UpCat +from monai.utils import ensure_tuple_rep + + +class BasicUNetPlusPlus(nn.Module): + def __init__( + self, + spatial_dims: int = 3, + in_channels: int = 1, + out_channels: int = 2, + features: Sequence[int] = (32, 32, 64, 128, 256, 32), + deep_supervision: bool = False, + act: Union[str, tuple] = ("LeakyReLU", {"negative_slope": 0.1, "inplace": True}), + norm: Union[str, tuple] = ("instance", {"affine": True}), + bias: bool = True, + dropout: Union[float, tuple] = 0.0, + upsample: str = "deconv", + ): + """ + A UNet++ implementation with 1D/2D/3D supports. + + Based on: + + Zhou et al. "UNet++: A Nested U-Net Architecture for Medical Image + Segmentation". 4th Deep Learning in Medical Image Analysis (DLMIA) + Workshop, DOI: https://doi.org/10.48550/arXiv.1807.10165 + + + Args: + spatial_dims: number of spatial dimensions. Defaults to 3 for spatial 3D inputs. + in_channels: number of input channels. Defaults to 1. + out_channels: number of output channels. Defaults to 2. + features: six integers as numbers of features. + Defaults to ``(32, 32, 64, 128, 256, 32)``, + + - the first five values correspond to the five-level encoder feature sizes. + - the last value corresponds to the feature size after the last upsampling. + + deep_supervision: whether to prune the network at inference time. Defaults to False. If true, returns a list, + whose elements correspond to outputs at different nodes. + act: activation type and arguments. Defaults to LeakyReLU. + norm: feature normalization type and arguments. Defaults to instance norm. + bias: whether to have a bias term in convolution blocks. Defaults to True. + According to `Performance Tuning Guide `_, + if a conv layer is directly followed by a batch norm layer, bias should be False. + dropout: dropout ratio. Defaults to no dropout. + upsample: upsampling mode, available options are + ``"deconv"``, ``"pixelshuffle"``, ``"nontrainable"``. + + Examples:: + + # for spatial 2D + >>> net = BasicUNetPlusPlus(spatial_dims=2, features=(64, 128, 256, 512, 1024, 128)) + + # for spatial 2D, with deep supervision enabled + >>> net = BasicUNetPlusPlus(spatial_dims=2, features=(64, 128, 256, 512, 1024, 128), deep_supervision=True) + + # for spatial 2D, with group norm + >>> net = BasicUNetPlusPlus(spatial_dims=2, features=(64, 128, 256, 512, 1024, 128), norm=("group", {"num_groups": 4})) + + # for spatial 3D + >>> net = BasicUNetPlusPlus(spatial_dims=3, features=(32, 32, 64, 128, 256, 32)) + + See Also + - :py:class:`monai.networks.nets.BasicUNet` + - :py:class:`monai.networks.nets.DynUNet` + - :py:class:`monai.networks.nets.UNet` + + """ + super().__init__() + + self.deep_supervision = deep_supervision + + fea = ensure_tuple_rep(features, 6) + print(f"BasicUNetPlusPlus features: {fea}.") + + self.conv_0_0 = TwoConv(spatial_dims, in_channels, fea[0], act, norm, bias, dropout) + self.conv_1_0 = Down(spatial_dims, fea[0], fea[1], act, norm, bias, dropout) + self.conv_2_0 = Down(spatial_dims, fea[1], fea[2], act, norm, bias, dropout) + self.conv_3_0 = Down(spatial_dims, fea[2], fea[3], act, norm, bias, dropout) + self.conv_4_0 = Down(spatial_dims, fea[3], fea[4], act, norm, bias, dropout) + + self.upcat_0_1 = UpCat(spatial_dims, fea[1], fea[0], fea[0], act, norm, bias, dropout, upsample, halves=False) + self.upcat_1_1 = UpCat(spatial_dims, fea[2], fea[1], fea[1], act, norm, bias, dropout, upsample) + self.upcat_2_1 = UpCat(spatial_dims, fea[3], fea[2], fea[2], act, norm, bias, dropout, upsample) + self.upcat_3_1 = UpCat(spatial_dims, fea[4], fea[3], fea[3], act, norm, bias, dropout, upsample) + + self.upcat_0_2 = UpCat( + spatial_dims, fea[1], fea[0] * 2, fea[0], act, norm, bias, dropout, upsample, halves=False + ) + self.upcat_1_2 = UpCat(spatial_dims, fea[2], fea[1] * 2, fea[1], act, norm, bias, dropout, upsample) + self.upcat_2_2 = UpCat(spatial_dims, fea[3], fea[2] * 2, fea[2], act, norm, bias, dropout, upsample) + + self.upcat_0_3 = UpCat( + spatial_dims, fea[1], fea[0] * 3, fea[0], act, norm, bias, dropout, upsample, halves=False + ) + self.upcat_1_3 = UpCat(spatial_dims, fea[2], fea[1] * 3, fea[1], act, norm, bias, dropout, upsample) + + self.upcat_0_4 = UpCat( + spatial_dims, fea[1], fea[0] * 4, fea[5], act, norm, bias, dropout, upsample, halves=False + ) + + + def forward(self, x: torch.Tensor): + """ + Args: + x: input should have spatially N dimensions + ``(Batch, in_channels, dim_0[, dim_1, ..., dim_N-1])``, N is defined by `dimensions`. + It is recommended to have ``dim_n % 16 == 0`` to ensure all maxpooling inputs have + even edge lengths. + + Returns: + A torch Tensor of "raw" predictions in shape + ``(Batch, out_channels, dim_0[, dim_1, ..., dim_N-1])``. + """ + x_0_0 = self.conv_0_0(x) + x_1_0 = self.conv_1_0(x_0_0) + x_0_1 = self.upcat_0_1(x_1_0, x_0_0) + + x_2_0 = self.conv_2_0(x_1_0) + x_1_1 = self.upcat_1_1(x_2_0, x_1_0) + x_0_2 = self.upcat_0_2(x_1_1, torch.cat([x_0_0, x_0_1], dim=1)) + + x_3_0 = self.conv_3_0(x_2_0) + x_2_1 = self.upcat_2_1(x_3_0, x_2_0) + x_1_2 = self.upcat_1_2(x_2_1, torch.cat([x_1_0, x_1_1], dim=1)) + x_0_3 = self.upcat_0_3(x_1_2, torch.cat([x_0_0, x_0_1, x_0_2], dim=1)) + + x_4_0 = self.conv_4_0(x_3_0) + x_3_1 = self.upcat_3_1(x_4_0, x_3_0) + x_2_2 = self.upcat_2_2(x_3_1, torch.cat([x_2_0, x_2_1], dim=1)) + x_1_3 = self.upcat_1_3(x_2_2, torch.cat([x_1_0, x_1_1, x_1_2], dim=1)) + x_0_4 = self.upcat_0_4(x_1_3, torch.cat([x_0_0, x_0_1, x_0_2, x_0_3], dim=1)) + + return x_4_0, x_0_4 \ No newline at end of file diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/DiNTS.cpython-38.pyc b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/DiNTS.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e50fea1f6a71a0438404b1f53aa25714fcf157db Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/DiNTS.cpython-38.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SENet.cpython-37.pyc b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SENet.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4a576bca64a059e7d05654a7793f0db601e9140 Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SENet.cpython-37.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SENet.cpython-38.pyc b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SENet.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..adfa324a930cd84f8b3f3ae33cb1c9397b831926 Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SENet.cpython-38.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SwinUNETR.cpython-38.pyc b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SwinUNETR.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2ebe0052ccd5e781494890a319fed7188794361 Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/SwinUNETR.cpython-38.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/Unetpp.cpython-38.pyc b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/Unetpp.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..69b5ff13996f1c6230e68b67f522351fa10717af Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/Unetpp.cpython-38.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/Universal_model.cpython-37.pyc b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/Universal_model.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..349b03c34f693b42dfac192db16c7aafcf4ac7cc Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/model/__pycache__/Universal_model.cpython-37.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/organ_test.py b/my_container_sandbox/workspace/difftumor/organ_mask_access/organ_test.py new file mode 100644 index 0000000000000000000000000000000000000000..526b8de4dcb13a4d32688278754baa266e1f483d --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/organ_test.py @@ -0,0 +1,135 @@ +import torch +from torch import nn +import torch.nn.functional as F +import numpy as np +import matplotlib.pyplot as plt +from tqdm import tqdm +import os +import argparse +import time +from monai.inferers import sliding_window_inference + +from model.Universal_model import Universal_model +from dataset.dataloader import get_loader +from utils.utils import visualize_label +from utils.utils import TEMPLATE, ORGAN_NAME, NUM_CLASS + +torch.multiprocessing.set_sharing_strategy('file_system') + +def cal_dice(pred, true): + intersection = np.sum(pred[true==1]) * 2.0 + dice = intersection / (np.sum(pred) + np.sum(true)) + return dice + +def validation(model, ValLoader, val_transforms, args): + + model.eval() + dice_list = {} + for key in TEMPLATE.keys(): + dice_list[key] = np.zeros((2, NUM_CLASS)) # 1st row for dice, 2nd row for count + for index, batch in enumerate(tqdm(ValLoader)): + image, name = batch["image"].cuda(), batch["name"] + print(batch["name"]) + name = name[0] + save_dir = os.path.join(args.save_path, name, 'predictions') + os.makedirs(save_dir, exist_ok=True) + with torch.no_grad(): + pred = sliding_window_inference(image, (args.roi_x, args.roi_y, args.roi_z), 1, model, overlap=0.5, mode='gaussian') + pred_sigmoid = F.sigmoid(pred) + + pred_hard = (pred_sigmoid>0.5).to(pred_sigmoid) + pred_hard = pred_hard.cpu() + torch.cuda.empty_cache() + + liver_mask = pred_hard[0][5] + pancreas_mask = pred_hard[0][10] + kidney_mask = pred_hard[0][1] + left_kidney_mask = pred_hard[0][2] + kidney_mask[left_kidney_mask==1] = 1 + torch.cuda.empty_cache() + + + batch['liver'] = liver_mask[None,None,:] + batch['pancreas'] = pancreas_mask[None,None,:] + batch['kidney'] = kidney_mask[None,None,:] + + + visualize_label(batch, save_dir, val_transforms) + import gzip, shutil + # if os.path.exists(os.path.join(args.data_root_path, name+'.nii.gz')): + # with open(os.path.join(args.data_root_path, name+'.nii.gz'), 'rb') as f_in: + # with gzip.open(os.path.join(args.save_path, name, 'ct.nii.gz'), 'wb') as f_out: + # shutil.copyfileobj(f_in, f_out) + # elif os.path.exists(os.path.join(args.data_root_path, name+'.nii')): + # with open(os.path.join(args.data_root_path, name+'.nii'), 'rb') as f_in: + # with gzip.open(os.path.join(args.save_path, name, 'ct.nii.gz'), 'wb') as f_out: + # shutil.copyfileobj(f_in, f_out) + + + if os.path.exists(os.path.join(args.data_root_path, name+'.nii.gz')): + shutil.copyfile(os.path.join(args.data_root_path, name+'.nii.gz'), os.path.join(args.save_path, name, 'ct.nii.gz')) + elif os.path.exists(os.path.join(args.data_root_path, name+'.nii')): + shutil.copyfile(os.path.join(args.data_root_path, name+'.nii'), os.path.join(args.save_path, name, 'ct.nii')) + + os.rename(os.path.join(save_dir, name+'_liver.nii.gz'), os.path.join(save_dir, 'liver.nii.gz')) + os.rename(os.path.join(save_dir, name+'_pancreas.nii.gz'), os.path.join(save_dir, 'pancreas.nii.gz')) + os.rename(os.path.join(save_dir, name+'_kidney.nii.gz'), os.path.join(save_dir, 'kidney.nii.gz')) + breakpoint() + +def main(): + parser = argparse.ArgumentParser() + + ## dataset + parser.add_argument('--data_root_path', default='/workspace/inputs/', help='data root path') + parser.add_argument('--save_path', default='/workspace/outputs/', help='data root path') + parser.add_argument('--batch_size', default=1, type=int, help='batch size') + parser.add_argument('--num_workers', default=8, type=int, help='workers numebr for DataLoader') + parser.add_argument('--a_min', default=-175, type=float, help='a_min in ScaleIntensityRanged') + parser.add_argument('--a_max', default=250, type=float, help='a_max in ScaleIntensityRanged') + parser.add_argument('--b_min', default=0.0, type=float, help='b_min in ScaleIntensityRanged') + parser.add_argument('--b_max', default=1.0, type=float, help='b_max in ScaleIntensityRanged') + parser.add_argument('--space_x', default=1.5, type=float, help='spacing in x direction') + parser.add_argument('--space_y', default=1.5, type=float, help='spacing in y direction') + parser.add_argument('--space_z', default=1.5, type=float, help='spacing in z direction') + parser.add_argument('--roi_x', default=96, type=int, help='roi size in x direction') + parser.add_argument('--roi_y', default=96, type=int, help='roi size in y direction') + parser.add_argument('--roi_z', default=96, type=int, help='roi size in z direction') + parser.add_argument('--num_samples', default=1, type=int, help='sample number in each ct') + + args = parser.parse_args() + + # prepare the 3D model + model = Universal_model(img_size=(args.roi_x, args.roi_y, args.roi_z), + in_channels=1, + out_channels=NUM_CLASS, + backbone='swinunetr', + encoding='word_embedding' + ) + + #Load pre-trained weights + store_dict = model.state_dict() + checkpoint = torch.load('organ_mask_access/swinunetr.pth') + load_dict = checkpoint['net'] + + for key, value in load_dict.items(): + if 'swinViT' in key or 'encoder' in key or 'decoder' in key: + name = '.'.join(key.split('.')[1:]) + name = 'backbone.' + name + else: + name = '.'.join(key.split('.')[1:]) + store_dict[name] = value + + + model.load_state_dict(store_dict) + print('Use pretrained weights') + + model.cuda() + + test_data_list = os.listdir(args.data_root_path) + test_data_list.sort() + test_loader, val_transforms = get_loader(args, test_data_list) + + validation(model, test_loader, val_transforms, args) + +if __name__ == "__main__": + main() diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/pretrained_weights/.DS_Store b/my_container_sandbox/workspace/difftumor/organ_mask_access/pretrained_weights/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..300b4814a3ccafbc9cab0345144d31579a7514ce Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/pretrained_weights/.DS_Store differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/pretrained_weights/clip_embedding.py b/my_container_sandbox/workspace/difftumor/organ_mask_access/pretrained_weights/clip_embedding.py new file mode 100644 index 0000000000000000000000000000000000000000..5d1439d04ca1577570ecef0d8c017e6cff20ebc3 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/pretrained_weights/clip_embedding.py @@ -0,0 +1,27 @@ +import os +import clip +import torch + + +## PAOT +ORGAN_NAME = ['Spleen', 'Right Kidney', 'Left Kidney', 'Gall Bladder', 'Esophagus', + 'Liver', 'Stomach', 'Arota', 'Postcava', 'Portal Vein and Splenic Vein', + 'Pancreas', 'Right Adrenal Gland', 'Left Adrenal Gland', 'Duodenum', 'Hepatic Vessel', + 'Right Lung', 'Left Lung', 'Colon', 'Intestine', 'Rectum', + 'Bladder', 'Prostate', 'Left Head of Femur', 'Right Head of Femur', 'Celiac Truck', + 'Kidney Tumor', 'Liver Tumor', 'Pancreas Tumor', 'Hepatic Vessel Tumor', 'Lung Tumor', + 'Colon Tumor', 'Kidney Cyst'] + +# Load the model +device = "cuda" if torch.cuda.is_available() else "cpu" +model, preprocess = clip.load('ViT-B/32', device) + + +text_inputs = torch.cat([clip.tokenize(f'A computerized tomography of a {item}') for item in ORGAN_NAME]).to(device) + +# Calculate text embedding features +with torch.no_grad(): + text_features = model.encode_text(text_inputs) + print(text_features.shape, text_features.dtype) + torch.save(text_features, 'txt_encoding.pth') + diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/requirements.txt b/my_container_sandbox/workspace/difftumor/organ_mask_access/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..2a980186e0c74c7b766f1dd0857e2aed6dc9d648 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/requirements.txt @@ -0,0 +1,7 @@ +connected-components-3d +h5py==3.6.0 +monai==0.9.0 +torch==1.11.0 +tqdm +fastremap +simpleitk diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/__pycache__/utils.cpython-37.pyc b/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/__pycache__/utils.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3fd06ad39c8663781b90cf31fe24ffdc48a5e6d0 Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/__pycache__/utils.cpython-37.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/label_transfer.py b/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/label_transfer.py new file mode 100644 index 0000000000000000000000000000000000000000..e1d236d6bb4f23c62f84111eaa2e0d343aa7092a --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/label_transfer.py @@ -0,0 +1,310 @@ +from monai.transforms import ( + AsDiscrete, + AddChanneld, + Compose, + CropForegroundd, + LoadImaged, + Orientationd, + RandFlipd, + RandCropByPosNegLabeld, + RandShiftIntensityd, + ScaleIntensityRanged, + Spacingd, + RandRotate90d, + ToTensord, + CenterSpatialCropd, + Resized, + SpatialPadd, + apply_transform, +) + +import collections.abc +import math +import pickle +import shutil +import sys +import tempfile +import threading +import time +from copy import copy, deepcopy +import cc3d +import argparse +import os +import h5py +import warnings +warnings.filterwarnings("ignore") + +import numpy as np +import torch +from typing import IO, TYPE_CHECKING, Any, Callable, Dict, Hashable, List, Mapping, Optional, Sequence, Tuple, Union + +torch.multiprocessing.set_sharing_strategy('file_system') + +from monai.data import DataLoader, Dataset, list_data_collate, DistributedSampler +from monai.config import DtypeLike, KeysCollection +from monai.transforms.transform import Transform, MapTransform +from monai.utils.enums import TransformBackends +from monai.config.type_definitions import NdarrayOrTensor + +from utils.utils import get_key + +ORGAN_DATASET_DIR = '/home/jliu288/data/whole_organ/' +ORGAN_LIST = 'dataset/dataset_list/PAOT.txt' +NUM_WORKER = 8 +NUM_CLASS = 32 +TRANSFER_LIST = ['10_08'] +## full list +# TRANSFER_LIST = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10_03', '10_06', '10_07', '10_08', '10_09', '10_10', '12', '13', '14'] + +TEMPLATE={ + '01': [1,2,3,4,5,6,7,8,9,10,11,12,13,14], + '02': [1,0,3,4,5,6,7,0,0,0,11,0,0,14], + '03': [6], + '04': [6,27], # post process + '05': [2,26,32], # post process + '07': [6,1,3,2,7,4,5,11,14,18,19,12,20,21,23,24], + '08': [6, 2, 1, 11], + '09': [1,2,3,4,5,6,7,8,9,11,12,13,14,21,22], + '12': [6,21,16,2], + '13': [6,2,1,11,8,9,7,4,5,12,13,25], + '14': [11,11,28,28,28], # Felix data, post process + '10_03': [6, 27], # post process + '10_06': [30], + '10_07': [11, 28], # post process + '10_08': [15, 29], # post process + '10_09': [1], + '10_10': [31] +} + +POST_TUMOR_DICT = { + '04': [(2,27)], + '05': [(2,26), (3,32)], + '10_03': [(2,27)], + '10_07': [(2,28)] +} + +def rl_split(input_data, organ_index, right_index, left_index, name): + ''' + input_data: 3-d tensor [w,h,d], after transform 'Orientationd(keys=["label"], axcodes="RAS")' + oragn_index: the organ index of interest + right_index and left_index: the corresponding index in template + return [1, w, h, d] + ''' + RIGHT_ORGAN = right_index + LEFT_ORGAN = left_index + label_raw = input_data.copy() + label_in = np.zeros(label_raw.shape) + label_in[label_raw == organ_index] = 1 + + label_out = cc3d.connected_components(label_in, connectivity=26) + # print('label_out', organ_index, np.unique(label_out), np.unique(label_in), label_out.shape, np.sum(label_raw == organ_index)) + # assert len(np.unique(label_out)) == 3, f'more than 2 component in this ct for {name} with {np.unique(label_out)} component' + if len(np.unique(label_out)) > 3: + count_sum = 0 + values, counts = np.unique(label_out, return_counts=True) + num_list_sorted = sorted(values, key=lambda x: counts[x])[::-1] + for i in num_list_sorted[3:]: + label_out[label_out==i] = 0 + count_sum += counts[i] + label_new = np.zeros(label_out.shape) + for tgt, src in enumerate(num_list_sorted[:3]): + label_new[label_out==src] = tgt + label_out = label_new + print(f'In {name}. Delete {len(num_list_sorted[3:])} small regions with {count_sum} voxels') + a1,b1,c1 = np.where(label_out==1) + a2,b2,c2 = np.where(label_out==2) + + label_new = np.zeros(label_out.shape) + if np.mean(a1) < np.mean(a2): + label_new[label_out==1] = LEFT_ORGAN + label_new[label_out==2] = RIGHT_ORGAN + else: + label_new[label_out==1] = RIGHT_ORGAN + label_new[label_out==2] = LEFT_ORGAN + + return label_new[None] + +class ToTemplatelabel(Transform): + backend = [TransformBackends.TORCH, TransformBackends.NUMPY] + + def __call__(self, lbl: NdarrayOrTensor, totemplate: List, tumor=False, tumor_list=None) -> NdarrayOrTensor: + new_lbl = np.zeros(lbl.shape) + for src, tgt in enumerate(totemplate): + new_lbl[lbl == (src+1)] = tgt + # unique,count=np.unique(new_lbl,return_counts=True) + # data_count=dict(zip(unique,count)) + # print(data_count) + # unique,count=np.unique(lbl,return_counts=True) + # data_count=dict(zip(unique,count)) + # print(data_count) + if tumor: + for src, item in tumor_list: + new_lbl[new_lbl == item] = totemplate[0] + return new_lbl + +class ToTemplatelabeld(MapTransform): + ''' + Comment: spleen to 1 + ''' + backend = ToTemplatelabel.backend + def __init__(self, keys: KeysCollection, allow_missing_keys: bool = False) -> None: + super().__init__(keys, allow_missing_keys) + self.totemplate = ToTemplatelabel() + + def __call__(self, data: Mapping[Hashable, NdarrayOrTensor]) -> Dict[Hashable, NdarrayOrTensor]: + d = dict(data) + dataset_index = int(d['name'][0:2]) + TUMOR = False + tumor_list = None + if dataset_index == 1 or dataset_index == 2: + template_key = d['name'][0:2] + pass + elif dataset_index == 10: + template_key = d['name'][0:2] + '_' + d['name'][17:19] + else: + template_key = d['name'][0:2] + if template_key in ['04', '05', '10_03', '10_07', '14']: + TUMOR = True + tumor_list = POST_TUMOR_DICT[template_key] + d['label'] = self.totemplate(d['label'], TEMPLATE[template_key], tumor=TUMOR, tumor_list=tumor_list) + return d + +class RL_Split(Transform): + backend = [TransformBackends.TORCH, TransformBackends.NUMPY] + + def __call__(self, lbl: NdarrayOrTensor, organ_list: List, name) -> NdarrayOrTensor: + lbl_new = lbl.copy() + for organ in organ_list: + organ_index = organ + right_index = organ + left_index = organ + 1 + lbl_post = rl_split(lbl_new[0], organ_index, right_index, left_index, name) + lbl_new[lbl_post == left_index] = left_index + return lbl_new + +class RL_Splitd(MapTransform): + backend = ToTemplatelabel.backend + def __init__(self, keys: KeysCollection, allow_missing_keys: bool = False) -> None: + super().__init__(keys, allow_missing_keys) + self.spliter = RL_Split() + + def __call__(self, data: Mapping[Hashable, NdarrayOrTensor]) -> Dict[Hashable, NdarrayOrTensor]: + d = dict(data) + dataset_index = int(d['name'][0:2]) + # print(d['name'], dataset_index) + if dataset_index in [5,8,13]: + # print(d['name'], np.unique(d['label'])) + d['label'] = self.spliter(d['label'], [2], d['name']) + # print(d['name'], np.unique(d['label'])) + elif dataset_index == 7: + d['label'] = self.spliter(d['label'], [12], d['name']) + elif dataset_index == 12: + d['label'] = self.spliter(d['label'], [2, 16], d['name']) + else: + pass + return d + +def generate_label(input_lbl, num_classes, name, TEMPLATE, raw_lbl): + """ + Convert class index tensor to one hot encoding tensor with -1 (ignored). + Args: + input: A tensor of shape [bs, 1, *] + num_classes: An int of number of class + Returns: + A tensor of shape [bs, num_classes, *] + Comment: spleen to 0 + """ + shape = np.array(input_lbl.shape) + shape[1] = num_classes + shape = tuple(shape) + result = torch.zeros(shape) + input_lbl = input_lbl.long() + + ## generate binary cross entropy label and assign -1 to ignored organ + B = result.shape[0] + for b in range(B): + dataset_index = int(name[b][0:2]) + if dataset_index == 10: + template_key = name[b][0:2] + '_' + name[b][17:19] + else: + template_key = name[b][0:2] + + # for organ split case + if dataset_index == 5: + organ_list = [2,3,26,32] + elif dataset_index == 7: + organ_list = [6,1,3,2,7,4,5,11,14,18,19,12,13,20,21,23,24] + elif dataset_index == 8: + organ_list = [6, 2, 3, 1, 11] + elif dataset_index == 12: + organ_list = [6,21,16,17,2,3] + elif dataset_index == 13: + organ_list = [6,2,3,1,11,8,9,7,4,5,12,13,25] + else: + organ_list = TEMPLATE[template_key] + + # -1 for organ not labeled + for i in range(num_classes): + if (i+1) not in organ_list: + result[b, i] = -1 + else: + result[b, i] = (input_lbl[b][0] == (i+1)) + + # for tumor case + if template_key in ['04', '05', '10_03', '10_07']: + tumor_list = POST_TUMOR_DICT[template_key] + for src, item in tumor_list: + result[b, item - 1] = (raw_lbl[b][0] == src) + + if template_key in ['14']: + tumor_lbl = torch.zeros(raw_lbl.shape) + tumor_lbl[raw_lbl == 3] = 1 + tumor_lbl[raw_lbl == 4] = 1 + tumor_lbl[raw_lbl == 5] = 1 + result[b, organ_list[-1] - 1] = tumor_lbl[b][0] + return result + +label_process = Compose( + [ + LoadImaged(keys=["image", "label", "label_raw"]), + AddChanneld(keys=["image", "label", "label_raw"]), + Orientationd(keys=["image", "label", "label_raw"], axcodes="RAS"), + ToTemplatelabeld(keys=['label']), + RL_Splitd(keys=['label']), + Spacingd( + keys=["image", "label", "label_raw"], + pixdim=(1.5, 1.5, 1.5), + mode=("bilinear", "nearest", "nearest"),), # process h5 to here + ] +) + +train_img = [] +train_lbl = [] +train_name = [] + +for line in open(ORGAN_LIST): + key = get_key(line.strip().split()[0]) + if key in TRANSFER_LIST: + train_img.append(ORGAN_DATASET_DIR + line.strip().split()[0]) + train_lbl.append(ORGAN_DATASET_DIR + line.strip().split()[1]) + train_name.append(line.strip().split()[1].split('.')[0]) +data_dicts_train = [{'image': image, 'label': label, 'label_raw': label, 'name': name} + for image, label, name in zip(train_img, train_lbl, train_name)] +print('train len {}'.format(len(data_dicts_train))) + +train_dataset = Dataset(data=data_dicts_train, transform=label_process) +train_loader = DataLoader(train_dataset, batch_size=1, shuffle=False, num_workers=NUM_WORKER, + collate_fn=list_data_collate) + +for index, batch in enumerate(train_loader): + x, y, y_raw, name = batch["image"], batch["label"], batch['label_raw'], batch['name'] + y = generate_label(y, NUM_CLASS, name, TEMPLATE, y_raw) + name = batch['name'][0].replace('label', 'post_label') + print(name) + post_dir = ORGAN_DATASET_DIR + '/'.join(name.split('/')[:-1]) + store_y = y.numpy().astype(np.uint8) + if not os.path.exists(post_dir): + os.makedirs(post_dir) + with h5py.File(ORGAN_DATASET_DIR + name + '.h5', 'w') as f: + f.create_dataset('post_label', data=store_y, compression='gzip', compression_opts=9) + f.close() diff --git a/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/utils.py b/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..1b5ca28b8382254566193644a1cae9a80b038a51 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/organ_mask_access/utils/utils.py @@ -0,0 +1,767 @@ +import os, sys +import cc3d +import fastremap +import csv +import torch +import torch.nn as nn +import torch.nn.functional as F + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.ensemble import IsolationForest +#from pyod.models.knn import KNN +from math import ceil +from scipy.ndimage.filters import gaussian_filter +import warnings +from typing import Any, Callable, Dict, List, Mapping, Sequence, Tuple, Union +from scipy import ndimage + +from monai.data.utils import compute_importance_map, dense_patch_slices, get_valid_patch_size +from monai.transforms import Resize, Compose +from monai.utils import ( + BlendMode, + PytorchPadMode, + convert_data_type, + ensure_tuple, + fall_back_tuple, + look_up_option, + optional_import, +) + +from monai.data import decollate_batch +from monai.transforms import Invertd, SaveImaged + +NUM_CLASS = 32 + + + +TEMPLATE={ + '01': [1,2,3,4,5,6,7,8,9,10,11,12,13,14], + '01_2': [1,3,4,5,6,7,11,14], + '02': [1,3,4,5,6,7,11,14], + '03': [6], + '04': [6,27], # post process + '05': [2,3,26,32], # post process + '06': [1,2,3,4,6,7,11,16,17], + '07': [6,1,3,2,7,4,5,11,14,18,19,12,13,20,21,23,24], + '08': [6, 2, 3, 1, 11], + '09': [1,2,3,4,5,6,7,8,9,11,12,13,14,21,22], + '12': [6,21,16,17,2,3], + '13': [6,2,3,1,11,8,9,7,4,5,12,13,25], + '14': [11, 28], + '10_03': [6, 27], # post process + '10_06': [30], + '10_07': [11, 28], # post process + '10_08': [15, 29], # post process + '10_09': [1], + # '10_10': [31], + '10_10': [18], + '15': [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] ## total segmentation +} + +ORGAN_NAME = ['Spleen', 'Right Kidney', 'Left Kidney', 'Gall Bladder', 'Esophagus', + 'Liver', 'Stomach', 'Aorta', 'Postcava', 'Portal Vein and Splenic Vein', + 'Pancreas', 'Right Adrenal Gland', 'Left Adrenal Gland', 'Duodenum', 'Hepatic Vessel', + 'Right Lung', 'Left Lung', 'Colon', 'Intestine', 'Rectum', + 'Bladder', 'Prostate', 'Left Head of Femur', 'Right Head of Femur', 'Celiac Truck', + 'Kidney Tumor', 'Liver Tumor', 'Pancreas Tumor', 'Hepatic Vessel Tumor', 'Lung Tumor', 'Colon Tumor', 'Kidney Cyst'] + +## mapping to original setting +MERGE_MAPPING_v1 = { + '01': [(1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (10,10), (11,11), (12,12), (13,13), (14,14)], + '02': [(1,1), (3,3), (4,4), (5,5), (6,6), (7,7), (11,11), (14,14)], + '03': [(6,1)], + '04': [(6,1), (27,2)], + '05': [(2,1), (3,1), (26, 2), (32,3)], + '06': [(1,1), (2,2), (3,3), (4,4), (6,5), (7,6), (11,7), (16,8), (17,9)], + '07': [(1,2), (2,4), (3,3), (4,6), (5,7), (6,1), (7,5), (11,8), (12,12), (13,12), (14,9), (18,10), (19,11), (20,13), (21,14), (23,15), (24,16)], + '08': [(1,3), (2,2), (3,2), (6,1), (11,4)], + '09': [(1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (11,10), (12,11), (13,12), (14,13), (21,14), (22,15)], + '10_03': [(6,1), (27,2)], + '10_06': [(30,1)], + '10_07': [(11,1), (28,2)], + '10_08': [(15,1), (29,2)], + '10_09': [(1,1)], + # '10_10': [(31,1)], + '10_10': [(18,1)], + '12': [(2,4), (3,4), (21,2), (6,1), (16,3), (17,3)], + '13': [(1,3), (2,2), (3,2), (4,8), (5,9), (6,1), (7,7), (8,5), (9,6), (11,4), (12,10), (13,11), (25,12)], + '15': [(1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (10,10), (11,11), (12,12), (13,13), (14,14), (16,16), (17,17), (18,18)], +} + +## split left and right organ more than dataset defined +## expand on the original class number +MERGE_MAPPING_v2 = { + '01': [(1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (10,10), (11,11), (12,12), (13,13), (14,14)], + '02': [(1,1), (3,3), (4,4), (5,5), (6,6), (7,7), (11,11), (14,14)], + '03': [(6,1)], + '04': [(6,1), (27,2)], + '05': [(2,1), (3,3), (26, 2), (32,3)], + '06': [(1,1), (2,2), (3,3), (4,4), (6,5), (7,6), (11,7), (16,8), (17,9)], + '07': [(1,2), (2,4), (3,3), (4,6), (5,7), (6,1), (7,5), (11,8), (12,12), (13,17), (14,9), (18,10), (19,11), (20,13), (21,14), (23,15), (24,16)], + '08': [(1,3), (2,2), (3,5), (6,1), (11,4)], + '09': [(1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (11,10), (12,11), (13,12), (14,13), (21,14), (22,15)], + '10_03': [(6,1), (27,2)], + '10_06': [(30,1)], + '10_07': [(11,1), (28,2)], + '10_08': [(15,1), (29,2)], + '10_09': [(1,1)], + '10_10': [(31,1)], + '12': [(2,4), (3,5), (21,2), (6,1), (16,3), (17,6)], + '13': [(1,3), (2,2), (3,13), (4,8), (5,9), (6,1), (7,7), (8,5), (9,6), (11,4), (12,10), (13,11), (25,12)], + '15': [(1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (10,10), (11,11), (12,12), (13,13), (14,14), (16,16), (17,17), (18,18)], +} + +THRESHOLD_DIC = { + 'Spleen': 0.5, + 'Right Kidney': 0.5, + 'Left Kidney': 0.5, + 'Gall Bladder': 0.5, + 'Esophagus': 0.5, + 'Liver': 0.5, + 'Stomach': 0.5, + 'Arota': 0.5, + 'Postcava': 0.5, + 'Portal Vein and Splenic Vein': 0.5, + 'Pancreas': 0.5, + 'Right Adrenal Gland': 0.5, + 'Left Adrenal Gland': 0.5, + 'Duodenum': 0.5, + 'Hepatic Vessel': 0.5, + 'Right Lung': 0.5, + 'Left Lung': 0.5, + 'Colon': 0.5, + 'Intestine': 0.5, + 'Rectum': 0.5, + 'Bladder': 0.5, + 'Prostate': 0.5, + 'Left Head of Femur': 0.5, + 'Right Head of Femur': 0.5, + 'Celiac Truck': 0.5, + 'Kidney Tumor': 0.5, + 'Liver Tumor': 0.5, + 'Pancreas Tumor': 0.5, + 'Hepatic Vessel Tumor': 0.5, + 'Lung Tumor': 0.5, + 'Colon Tumor': 0.5, + 'Kidney Cyst': 0.5 +} + +TUMOR_SIZE = { + 'Kidney Tumor': 80, + 'Liver Tumor': 20, + 'Pancreas Tumor': 100, + 'Hepatic Vessel Tumor': 80, + 'Lung Tumor': 30, + 'Colon Tumor': 100, + 'Kidney Cyst': 20 +} + +TUMOR_NUM = { + 'Kidney Tumor': 5, + 'Liver Tumor': 20, + 'Pancreas Tumor': 1, + 'Hepatic Vessel Tumor': 10, + 'Lung Tumor': 10, + 'Colon Tumor': 3, + 'Kidney Cyst': 20 +} + +TUMOR_ORGAN = { + 'Kidney Tumor': [2,3], + 'Liver Tumor': [6], + 'Pancreas Tumor': [11], + 'Hepatic Vessel Tumor': [15], + 'Lung Tumor': [16,17], + 'Colon Tumor': [18], + 'Kidney Cyst': [2,3] +} + + +def organ_post_process(pred_mask, organ_list, save_dir, args): + post_pred_mask = np.zeros(pred_mask.shape) + plot_save_path = save_dir + log_path = args.log_name + dataset_id = save_dir.split('/')[-2] + case_id = save_dir.split('/')[-1] + if not os.path.isdir(plot_save_path): + os.makedirs(plot_save_path) + for b in range(pred_mask.shape[0]): + for organ in organ_list: + if organ == 11: # both process pancreas and Portal vein and splenic vein + post_pred_mask[b,10] = extract_topk_largest_candidates(pred_mask[b,10], 1) # for pancreas + if 10 in organ_list: + post_pred_mask[b,9] = PSVein_post_process(pred_mask[b,9], post_pred_mask[b,10]) + elif organ == 16: + try: + left_lung_mask, right_lung_mask = lung_post_process(pred_mask[b]) + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = right_lung_mask + except IndexError: + print('this case does not have lungs!') + shape_temp = post_pred_mask[b,16].shape + post_pred_mask[b,16] = np.zeros(shape_temp) + post_pred_mask[b,15] = np.zeros(shape_temp) + with open(log_path + '/' + dataset_id +'/anomaly.csv','a',newline='') as f: + writer = csv.writer(f) + content = case_id + writer.writerow([content]) + + right_lung_size = np.sum(post_pred_mask[b,15],axis=(0,1,2)) + left_lung_size = np.sum(post_pred_mask[b,16],axis=(0,1,2)) + + print('left lung size: '+str(left_lung_size)) + print('right lung size: '+str(right_lung_size)) + + #knn_model = KNN(n_neighbors=5,contamination=0.00001) + right_lung_save_path = plot_save_path+'/right_lung.png' + left_lung_save_path = plot_save_path+'/left_lung.png' + total_anomly_slice_number=0 + + if right_lung_size>left_lung_size: + if right_lung_size/left_lung_size > 4: + mid_point = int(right_lung_mask.shape[0]/2) + left_region = np.sum(right_lung_mask[:mid_point,:,:],axis=(0,1,2)) + right_region = np.sum(right_lung_mask[mid_point:,:,:],axis=(0,1,2)) + + if (right_region+1)/(left_region+1)>4: + print('this case only has right lung') + post_pred_mask[b,15] = right_lung_mask + post_pred_mask[b,16] = np.zeros(right_lung_mask.shape) + elif (left_region+1)/(right_region+1)>4: + print('this case only has left lung') + post_pred_mask[b,16] = right_lung_mask + post_pred_mask[b,15] = np.zeros(right_lung_mask.shape) + else: + print('need anomly detection') + print('start anomly detection at right lung') + try: + left_lung_mask,right_lung_mask,total_anomly_slice_number = anomly_detection( + pred_mask,post_pred_mask[b,15],right_lung_save_path,b,total_anomly_slice_number) + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = right_lung_mask + right_lung_size = np.sum(post_pred_mask[b,15],axis=(0,1,2)) + left_lung_size = np.sum(post_pred_mask[b,16],axis=(0,1,2)) + while right_lung_size/left_lung_size>4 or left_lung_size/right_lung_size>4: + print('still need anomly detection') + if right_lung_size>left_lung_size: + left_lung_mask,right_lung_mask,total_anomly_slice_number = anomly_detection( + pred_mask,post_pred_mask[b,15],right_lung_save_path,b,total_anomly_slice_number) + else: + left_lung_mask,right_lung_mask,total_anomly_slice_number = anomly_detection( + pred_mask,post_pred_mask[b,16],right_lung_save_path,b,total_anomly_slice_number) + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = right_lung_mask + right_lung_size = np.sum(post_pred_mask[b,15],axis=(0,1,2)) + left_lung_size = np.sum(post_pred_mask[b,16],axis=(0,1,2)) + print('lung seperation complete') + except IndexError: + left_lung_mask, right_lung_mask = lung_post_process(pred_mask[b]) + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = right_lung_mask + print("cannot seperate two lungs, writing csv") + with open(log_path + '/' + dataset_id +'/anomaly.csv','a',newline='') as f: + writer = csv.writer(f) + content = case_id + writer.writerow([content]) + else: + if left_lung_size/right_lung_size > 4: + mid_point = int(left_lung_mask.shape[0]/2) + left_region = np.sum(left_lung_mask[:mid_point,:,:],axis=(0,1,2)) + right_region = np.sum(left_lung_mask[mid_point:,:,:],axis=(0,1,2)) + if (right_region+1)/(left_region+1)>4: + print('this case only has right lung') + post_pred_mask[b,15] = left_lung_mask + post_pred_mask[b,16] = np.zeros(left_lung_mask.shape) + elif (left_region+1)/(right_region+1)>4: + print('this case only has left lung') + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = np.zeros(left_lung_mask.shape) + else: + + print('need anomly detection') + print('start anomly detection at left lung') + try: + left_lung_mask,right_lung_mask,total_anomly_slice_number = anomly_detection( + pred_mask,post_pred_mask[b,16],left_lung_save_path,b,total_anomly_slice_number) + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = right_lung_mask + right_lung_size = np.sum(post_pred_mask[b,15],axis=(0,1,2)) + left_lung_size = np.sum(post_pred_mask[b,16],axis=(0,1,2)) + while right_lung_size/left_lung_size>4 or left_lung_size/right_lung_size>4: + print('still need anomly detection') + if right_lung_size>left_lung_size: + left_lung_mask,right_lung_mask,total_anomly_slice_number = anomly_detection( + pred_mask,post_pred_mask[b,15],right_lung_save_path,b,total_anomly_slice_number) + else: + left_lung_mask,right_lung_mask,total_anomly_slice_number = anomly_detection( + pred_mask,post_pred_mask[b,16],right_lung_save_path,b,total_anomly_slice_number) + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = right_lung_mask + right_lung_size = np.sum(post_pred_mask[b,15],axis=(0,1,2)) + left_lung_size = np.sum(post_pred_mask[b,16],axis=(0,1,2)) + + print('lung seperation complete') + except IndexError: + left_lung_mask, right_lung_mask = lung_post_process(pred_mask[b]) + post_pred_mask[b,16] = left_lung_mask + post_pred_mask[b,15] = right_lung_mask + print("cannot seperate two lungs, writing csv") + with open(log_path + '/' + dataset_id +'/anomaly.csv','a',newline='') as f: + writer = csv.writer(f) + content = case_id + writer.writerow([content]) + print('find number of anomaly slice: '+str(total_anomly_slice_number)) + elif organ == 17: + continue ## the le + elif organ in [1,2,3,4,5,6,7,8,9,12,13,14,18,19,20,21,22,23,24,25]: ## rest organ index + post_pred_mask[b,organ-1] = extract_topk_largest_candidates(pred_mask[b,organ-1], 1) + # elif organ in [28,29,30,31,32]: + # post_pred_mask[b,organ-1] = extract_topk_largest_candidates(pred_mask[b,organ-1], TUMOR_NUM[ORGAN_NAME[organ-1]], area_least=TUMOR_SIZE[ORGAN_NAME[organ-1]]) + elif organ in [26,27]: + organ_mask = merge_and_top_organ(pred_mask[b], TUMOR_ORGAN[ORGAN_NAME[organ-1]]) + post_pred_mask[b,organ-1] = organ_region_filter_out(pred_mask[b,organ-1], organ_mask) + # post_pred_mask[b,organ-1] = extract_topk_largest_candidates(post_pred_mask[b,organ-1], TUMOR_NUM[ORGAN_NAME[organ-1]], area_least=TUMOR_SIZE[ORGAN_NAME[organ-1]]) + else: + post_pred_mask[b,organ-1] = pred_mask[b,organ-1] + return post_pred_mask + +def lung_overlap_post_process(pred_mask): + new_mask = np.zeros(pred_mask.shape, np.uint8) + new_mask[pred_mask==1] = 1 + label_out = cc3d.connected_components(new_mask, connectivity=26) + + areas = {} + for label, extracted in cc3d.each(label_out, binary=True, in_place=True): + areas[label] = fastremap.foreground(extracted) + candidates = sorted(areas.items(), key=lambda item: item[1], reverse=True) + num_candidates = len(candidates) + if num_candidates!=1: + print('start separating two lungs!') + ONE = int(candidates[0][0]) + TWO = int(candidates[1][0]) + + + print('number of connected components:'+str(len(candidates))) + a1,b1,c1 = np.where(label_out==ONE) + a2,b2,c2 = np.where(label_out==TWO) + + left_lung_mask = np.zeros(label_out.shape) + right_lung_mask = np.zeros(label_out.shape) + + if np.mean(a1) < np.mean(a2): + left_lung_mask[label_out==ONE] = 1 + right_lung_mask[label_out==TWO] = 1 + else: + right_lung_mask[label_out==ONE] = 1 + left_lung_mask[label_out==TWO] = 1 + erosion_left_lung_size = np.sum(left_lung_mask,axis=(0,1,2)) + erosion_right_lung_size = np.sum(right_lung_mask,axis=(0,1,2)) + print('erosion left lung size:'+str(erosion_left_lung_size)) + print('erosion right lung size:'+ str(erosion_right_lung_size)) + return num_candidates,left_lung_mask, right_lung_mask + else: + print('current iteration cannot separate lungs, erosion iteration + 1') + ONE = int(candidates[0][0]) + print('number of connected components:'+str(len(candidates))) + lung_mask = np.zeros(label_out.shape) + lung_mask[label_out == ONE]=1 + lung_overlapped_mask_size = np.sum(lung_mask,axis=(0,1,2)) + print('lung overlapped mask size:' + str(lung_overlapped_mask_size)) + + return num_candidates,lung_mask + +def find_best_iter_and_masks(lung_mask): + iter=1 + print('current iteration:' + str(iter)) + struct2 = ndimage.generate_binary_structure(3, 3) + erosion_mask= ndimage.binary_erosion(lung_mask, structure=struct2,iterations=iter) + candidates_and_masks = lung_overlap_post_process(erosion_mask) + while candidates_and_masks[0]==1: + iter +=1 + print('current iteration:' + str(iter)) + erosion_mask= ndimage.binary_erosion(lung_mask, structure=struct2,iterations=iter) + candidates_and_masks = lung_overlap_post_process(erosion_mask) + print('check if components are valid') + left_lung_erosion_mask = candidates_and_masks[1] + right_lung_erosion_mask = candidates_and_masks[2] + left_lung_erosion_mask_size = np.sum(left_lung_erosion_mask,axis = (0,1,2)) + right_lung_erosion_mask_size = np.sum(right_lung_erosion_mask,axis = (0,1,2)) + while left_lung_erosion_mask_size/right_lung_erosion_mask_size>4 or right_lung_erosion_mask_size/left_lung_erosion_mask_size>4: + print('components still have large difference, erosion interation + 1') + iter +=1 + print('current iteration:' + str(iter)) + erosion_mask= ndimage.binary_erosion(lung_mask, structure=struct2,iterations=iter) + candidates_and_masks = lung_overlap_post_process(erosion_mask) + while candidates_and_masks[0]==1: + iter +=1 + print('current iteration:' + str(iter)) + erosion_mask= ndimage.binary_erosion(lung_mask, structure=struct2,iterations=iter) + candidates_and_masks = lung_overlap_post_process(erosion_mask) + left_lung_erosion_mask = candidates_and_masks[1] + right_lung_erosion_mask = candidates_and_masks[2] + left_lung_erosion_mask_size = np.sum(left_lung_erosion_mask,axis = (0,1,2)) + right_lung_erosion_mask_size = np.sum(right_lung_erosion_mask,axis = (0,1,2)) + print('erosion done, best iteration: '+str(iter)) + + + + print('start dilation') + left_lung_erosion_mask = candidates_and_masks[1] + right_lung_erosion_mask = candidates_and_masks[2] + + erosion_part_mask = lung_mask - left_lung_erosion_mask - right_lung_erosion_mask + left_lung_dist = np.ones(left_lung_erosion_mask.shape) + right_lung_dist = np.ones(right_lung_erosion_mask.shape) + left_lung_dist[left_lung_erosion_mask==1]=0 + right_lung_dist[right_lung_erosion_mask==1]=0 + left_lung_dist_map = ndimage.distance_transform_edt(left_lung_dist) + right_lung_dist_map = ndimage.distance_transform_edt(right_lung_dist) + left_lung_dist_map[erosion_part_mask==0]=0 + right_lung_dist_map[erosion_part_mask==0]=0 + left_lung_adding_map = left_lung_dist_map < right_lung_dist_map + right_lung_adding_map = right_lung_dist_map < left_lung_dist_map + + left_lung_erosion_mask[left_lung_adding_map==1]=1 + right_lung_erosion_mask[right_lung_adding_map==1]=1 + + left_lung_mask = left_lung_erosion_mask + right_lung_mask = right_lung_erosion_mask + # left_lung_mask = ndimage.binary_dilation(left_lung_erosion_mask, structure=struct2,iterations=iter) + # right_lung_mask = ndimage.binary_dilation(right_lung_erosion_mask, structure=struct2,iterations=iter) + print('dilation complete') + left_lung_mask_fill_hole = ndimage.binary_fill_holes(left_lung_mask) + right_lung_mask_fill_hole = ndimage.binary_fill_holes(right_lung_mask) + left_lung_size = np.sum(left_lung_mask_fill_hole,axis=(0,1,2)) + right_lung_size = np.sum(right_lung_mask_fill_hole,axis=(0,1,2)) + print('new left lung size:'+str(left_lung_size)) + print('new right lung size:' + str(right_lung_size)) + return left_lung_mask_fill_hole,right_lung_mask_fill_hole + + +# def anomly_detection(pred_mask,post_pred_mask,model,save_path,batch): +# lung_df = get_dataframe(post_pred_mask) +# lung_pred_df = fit_model(model,lung_df) +# plot_anomalies(lung_pred_df,save_dir=save_path) +# anomly_df = lung_pred_df[lung_pred_df['Predictions']==1] +# anomly_slice = anomly_df['slice_index'].to_numpy() +# for s in anomly_slice: +# pred_mask[batch,15,:,:,s]=0 +# pred_mask[batch,16,:,:,s]=0 +# left_lung_mask, right_lung_mask = lung_post_process(pred_mask[batch]) +# return left_lung_mask, right_lung_mask + +def anomly_detection(pred_mask, post_pred_mask, save_path, batch, anomly_num): + total_anomly_slice_number = anomly_num + df = get_dataframe(post_pred_mask) + # lung_pred_df = fit_model(model,lung_df) + lung_df = df[df['array_sum']!=0] + lung_df['SMA20'] = lung_df['array_sum'].rolling(20,min_periods=1,center=True).mean() + lung_df['STD20'] = lung_df['array_sum'].rolling(20,min_periods=1,center=True).std() + lung_df['SMA7'] = lung_df['array_sum'].rolling(7,min_periods=1,center=True).mean() + lung_df['upper_bound'] = lung_df['SMA20']+2*lung_df['STD20'] + lung_df['Predictions'] = lung_df['array_sum']>lung_df['upper_bound'] + lung_df['Predictions'] = lung_df['Predictions'].astype(int) + lung_df.dropna(inplace=True) + anomly_df = lung_df[lung_df['Predictions']==1] + anomly_slice = anomly_df['slice_index'].to_numpy() + anomly_value = anomly_df['array_sum'].to_numpy() + anomly_SMA7 = anomly_df['SMA7'].to_numpy() + + print('decision made') + if len(anomly_df)!=0: + print('anomaly point detected') + print('check if the anomaly points are real') + real_anomly_slice = [] + for i in range(len(anomly_df)): + if anomly_value[i] > anomly_SMA7[i]+200: + print('the anomaly point is real') + real_anomly_slice.append(anomly_slice[i]) + total_anomly_slice_number+=1 + + if len(real_anomly_slice)!=0: + + + plot_anomalies(lung_df,save_dir=save_path) + print('anomaly detection plot created') + for s in real_anomly_slice: + pred_mask[batch,15,:,:,s]=0 + pred_mask[batch,16,:,:,s]=0 + left_lung_mask, right_lung_mask = lung_post_process(pred_mask[batch]) + left_lung_size = np.sum(left_lung_mask,axis=(0,1,2)) + right_lung_size = np.sum(right_lung_mask,axis=(0,1,2)) + print('new left lung size:'+str(left_lung_size)) + print('new right lung size:' + str(right_lung_size)) + return left_lung_mask,right_lung_mask,total_anomly_slice_number + else: + print('the anomaly point is not real, start separate overlapping') + left_lung_mask,right_lung_mask = find_best_iter_and_masks(post_pred_mask) + return left_lung_mask,right_lung_mask,total_anomly_slice_number + + + print('overlap detected, start erosion and dilation') + left_lung_mask,right_lung_mask = find_best_iter_and_masks(post_pred_mask) + + return left_lung_mask,right_lung_mask,total_anomly_slice_number + +def get_dataframe(post_pred_mask): + target_array = post_pred_mask + target_array_sum = np.sum(target_array,axis=(0,1)) + slice_index = np.arange(target_array.shape[-1]) + df = pd.DataFrame({'slice_index':slice_index,'array_sum':target_array_sum}) + return df + +def plot_anomalies(df, x='slice_index', y='array_sum',save_dir=None): + # categories will be having values from 0 to n + # for each values in 0 to n it is mapped in colormap + categories = df['Predictions'].to_numpy() + colormap = np.array(['g', 'r']) + + f = plt.figure(figsize=(12, 4)) + f = plt.plot(df[x],df['SMA20'],'b') + f = plt.plot(df[x],df['upper_bound'],'y') + f = plt.scatter(df[x], df[y], c=colormap[categories],alpha=0.3) + f = plt.xlabel(x) + f = plt.ylabel(y) + plt.legend(['Simple moving average','upper bound','predictions']) + if save_dir is not None: + plt.savefig(save_dir) + plt.clf() + +def merge_and_top_organ(pred_mask, organ_list): + ## merge + out_mask = np.zeros(pred_mask.shape[1:], np.uint8) + for organ in organ_list: + out_mask = np.logical_or(out_mask, pred_mask[organ-1]) + ## select the top k, for righr left case + out_mask = extract_topk_largest_candidates(out_mask, len(organ_list)) + + return out_mask + +def organ_region_filter_out(tumor_mask, organ_mask): + ## dialtion + organ_mask = ndimage.binary_closing(organ_mask, structure=np.ones((5,5,5))) + organ_mask = ndimage.binary_dilation(organ_mask, structure=np.ones((5,5,5))) + ## filter out + tumor_mask = organ_mask * tumor_mask + + return tumor_mask + + +def PSVein_post_process(PSVein_mask, pancreas_mask): + xy_sum_pancreas = pancreas_mask.sum(axis=0).sum(axis=0) + z_non_zero = np.nonzero(xy_sum_pancreas) + z_value = np.min(z_non_zero) ## the down side of pancreas + new_PSVein = PSVein_mask.copy() + new_PSVein[:,:,:z_value] = 0 + return new_PSVein + +def lung_post_process(pred_mask): + new_mask = np.zeros(pred_mask.shape[1:], np.uint8) + new_mask[pred_mask[15] == 1] = 1 + new_mask[pred_mask[16] == 1] = 1 + label_out = cc3d.connected_components(new_mask, connectivity=26) + + areas = {} + for label, extracted in cc3d.each(label_out, binary=True, in_place=True): + areas[label] = fastremap.foreground(extracted) + candidates = sorted(areas.items(), key=lambda item: item[1], reverse=True) + + ONE = int(candidates[0][0]) + TWO = int(candidates[1][0]) + + a1,b1,c1 = np.where(label_out==ONE) + a2,b2,c2 = np.where(label_out==TWO) + + left_lung_mask = np.zeros(label_out.shape) + right_lung_mask = np.zeros(label_out.shape) + + if np.mean(a1) < np.mean(a2): + left_lung_mask[label_out==ONE] = 1 + right_lung_mask[label_out==TWO] = 1 + else: + right_lung_mask[label_out==ONE] = 1 + left_lung_mask[label_out==TWO] = 1 + + return left_lung_mask, right_lung_mask + +def extract_topk_largest_candidates(npy_mask, organ_num, area_least=0): + ## npy_mask: w, h, d + ## organ_num: the maximum number of connected component + out_mask = np.zeros(npy_mask.shape, np.uint8) + t_mask = npy_mask.copy() + keep_topk_largest_connected_object(t_mask, organ_num, area_least, out_mask, 1) + + return out_mask + + +def keep_topk_largest_connected_object(npy_mask, k, area_least, out_mask, out_label): + labels_out = cc3d.connected_components(npy_mask, connectivity=26) + areas = {} + for label, extracted in cc3d.each(labels_out, binary=True, in_place=True): + areas[label] = fastremap.foreground(extracted) + candidates = sorted(areas.items(), key=lambda item: item[1], reverse=True) + + for i in range(min(k, len(candidates))): + if candidates[i][1] > area_least: + out_mask[labels_out == int(candidates[i][0])] = out_label + +def threshold_organ(data, organ=None, threshold=None): + ### threshold the sigmoid value to hard label + ## data: sigmoid value + ## threshold_list: a list of organ threshold + B = data.shape[0] + threshold_list = [] + if organ: + THRESHOLD_DIC[organ] = threshold + for key, value in THRESHOLD_DIC.items(): + threshold_list.append(value) + threshold_list = torch.tensor(threshold_list).repeat(B, 1).reshape(B,len(threshold_list),1,1,1).cuda() + pred_hard = data > threshold_list + return pred_hard + + +def visualize_label(batch, save_dir, input_transform): + ### function: save the prediction result into dir + ## Input + ## batch: the batch dict output from the monai dataloader + ## one_channel_label: the predicted reuslt with same shape as label + ## save_dir: the directory for saving + ## input_transform: the dataloader transform + post_transforms = Compose([ + Invertd( + keys=['liver'], #, 'split_label' "label", 'one_channel_label_v1', 'one_channel_label_v2' + transform=input_transform, + orig_keys="image", + nearest_interp=True, + to_tensor=True, + ), + Invertd( + keys=['pancreas'], #, 'split_label' "label", 'one_channel_label_v1', 'one_channel_label_v2' + transform=input_transform, + orig_keys="image", + nearest_interp=True, + to_tensor=True, + ), + Invertd( + keys=['kidney'], #, 'split_label' "label", 'one_channel_label_v1', 'one_channel_label_v2' + transform=input_transform, + orig_keys="image", + nearest_interp=True, + to_tensor=True, + ), + SaveImaged(keys='liver', + meta_keys="image_meta_dict" , + output_dir=save_dir, + output_postfix="liver", #organ_pseudo + resample=False, + separate_folder=False, + output_dtype=np.uint8 + ), + SaveImaged(keys='pancreas', + meta_keys="image_meta_dict" , + output_dir=save_dir, + output_postfix="pancreas", #organ_pseudo + resample=False, + separate_folder=False, + output_dtype=np.uint8 + ), + SaveImaged(keys='kidney', + meta_keys="image_meta_dict" , + output_dir=save_dir, + output_postfix="kidney", #organ_pseudo + resample=False, + separate_folder=False, + output_dtype=np.uint8 + ), + ]) + + batch = [post_transforms(i) for i in decollate_batch(batch)] + +def get_key(name): + ## input: name + ## output: the corresponding key + dataset_index = int(name[0:2]) + if dataset_index == 10: + template_key = name[0:2] + '_' + name[17:19] + else: + template_key = name[0:2] + return template_key + + +def dice_score(preds, labels, spe_sen=False): # on GPU + ### preds: w,h,d; label: w,h,d + assert preds.shape[0] == labels.shape[0], "predict & target batch size don't match" + preds = torch.where(preds > 0.5, 1., 0.) + predict = preds.contiguous().view(1, -1) + target = labels.contiguous().view(1, -1) + + tp = torch.sum(torch.mul(predict, target)) + fn = torch.sum(torch.mul(predict!=1, target)) + fp = torch.sum(torch.mul(predict, target!=1)) + tn = torch.sum(torch.mul(predict!=1, target!=1)) + + den = torch.sum(predict) + torch.sum(target) + 1 + + dice = 2 * tp / den + recall = tp/(tp+fn) + precision = tp/(tp+fp) + specificity = tn/(fp + tn) + + + # print(dice, recall, precision) + if spe_sen: + return dice, recall, precision, specificity + else: + return dice, recall, precision + + +def _get_gaussian(patch_size, sigma_scale=1. / 8) -> np.ndarray: + tmp = np.zeros(patch_size) + center_coords = [i // 2 for i in patch_size] + sigmas = [i * sigma_scale for i in patch_size] + tmp[tuple(center_coords)] = 1 + gaussian_importance_map = gaussian_filter(tmp, sigmas, 0, mode='constant', cval=0) + gaussian_importance_map = gaussian_importance_map / np.max(gaussian_importance_map) * 1 + gaussian_importance_map = gaussian_importance_map.astype(np.float32) + + # gaussian_importance_map cannot be 0, otherwise we may end up with nans! + gaussian_importance_map[gaussian_importance_map == 0] = np.min( + gaussian_importance_map[gaussian_importance_map != 0]) + + return gaussian_importance_map + + +def multi_net(net_list, img, task_id): + # img = torch.from_numpy(img).cuda() + + padded_prediction = net_list[0](img, task_id) + padded_prediction = F.sigmoid(padded_prediction) + for i in range(1, len(net_list)): + padded_prediction_i = net_list[i](img, task_id) + padded_prediction_i = F.sigmoid(padded_prediction_i) + padded_prediction += padded_prediction_i + padded_prediction /= len(net_list) + return padded_prediction#.cpu().data.numpy() + + +def check_data(dataset_check): + img = dataset_check[0]["image"] + label = dataset_check[0]["label"] + print(dataset_check[0]["name"]) + img_shape = img.shape + label_shape = label.shape + print(f"image shape: {img_shape}, label shape: {label_shape}") + print(torch.unique(label[0, :, :, 150])) + plt.figure("image", (18, 6)) + plt.subplot(1, 2, 1) + plt.title("image") + plt.imshow(img[0, :, :, 150].detach().cpu(), cmap="gray") + plt.subplot(1, 2, 2) + plt.title("label") + plt.imshow(label[0, :, :, 150].detach().cpu()) + plt.show() + +if __name__ == "__main__": + threshold_organ(torch.zeros(1,12,1)) diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/.DS_Store b/my_container_sandbox/workspace/difftumor/tumor_mask_access/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7206c1d334bc5785ca86ea1dff12c1d3019b17a0 Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/tumor_mask_access/.DS_Store differ diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/__pycache__/task_params.cpython-38.pyc b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/__pycache__/task_params.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80a97aca1592cb61c7ffbfdf0f06a7ebc695c94f Binary files /dev/null and b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/__pycache__/task_params.cpython-38.pyc differ diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/calculate_task_params.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/calculate_task_params.py new file mode 100644 index 0000000000000000000000000000000000000000..7846cad840befa1014dfd3cca1894fea95089452 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/calculate_task_params.py @@ -0,0 +1,87 @@ +# Copyright (c) MONAI Consortium +# 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. + +import os +from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser + +from monai.data import ( + Dataset, + DatasetSummary, + load_decathlon_datalist, + load_decathlon_properties, +) +from monai.transforms import LoadImaged + +from task_params import task_name + + +def get_task_params(args): + """ + This function is used to achieve the spacings of decathlon dataset. + In addition, for CT images (task 03, 06, 07, 08, 09 and 10), this function + also prints the mean and std values (used for normalization), and the min (0.5 percentile) + and max(99.5 percentile) values (used for clip). + + """ + task_id = args.task_id + root_dir = args.root_dir + datalist_path = args.datalist_path + dataset_path = os.path.join(root_dir, task_name[task_id]) + datalist_name = "dataset_task{}.json".format(task_id) + + # get all training data + datalist = load_decathlon_datalist(os.path.join(datalist_path, datalist_name), True, "training", dataset_path) + + # get modality info. + properties = load_decathlon_properties(os.path.join(datalist_path, datalist_name), "modality") + + dataset = Dataset( + data=datalist, + transform=LoadImaged(keys=["image", "label"]), + ) + + calculator = DatasetSummary(dataset, num_workers=4) + target_spacing = calculator.get_target_spacing() + print("spacing: ", target_spacing) + if properties["modality"]["0"] == "CT": + print("CT input, calculate statistics:") + calculator.calculate_statistics() + print("mean: ", calculator.data_mean, " std: ", calculator.data_std) + calculator.calculate_percentiles(sampling_flag=True, interval=10, min_percentile=0.5, max_percentile=99.5) + print( + "min: ", + calculator.data_min_percentile, + " max: ", + calculator.data_max_percentile, + ) + else: + print("non CT input, skip calculating.") + + +if __name__ == "__main__": + parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) + parser.add_argument("-task_id", "--task_id", type=str, default="04", help="task 01 to 10") + parser.add_argument( + "-root_dir", + "--root_dir", + type=str, + default="/home/v-qichen2/qic/data/CT/10_Decathlon/", + help="dataset path", + ) + parser.add_argument( + "-datalist_path", + "--datalist_path", + type=str, + default="config/", + ) + + args = parser.parse_args() + get_task_params(args) diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task01/finetune_multi_gpu.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task01/finetune_multi_gpu.sh new file mode 100644 index 0000000000000000000000000000000000000000..e5620e8a8aeaecb709007e80bd8d392d92c53d06 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task01/finetune_multi_gpu.sh @@ -0,0 +1,23 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 2, finetune with small learning rate +# please replace the weight variable into your actual weight + +lr=1e-2 +fold=0 +weight=model.pt + +python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 \ + --master_addr="localhost" --master_port=1234 \ + train.py -fold $fold -train_num_workers 4 -interval 10 -num_samples 1 \ + -learning_rate $lr -max_epochs 1000 -task_id 01 -pos_sample_num 1 \ + -expr_name baseline -tta_val True -checkpoint $weight -multi_gpu True diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task02/finetune.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task02/finetune.sh new file mode 100644 index 0000000000000000000000000000000000000000..f5ba9f9cc6532d8201280a9d538d8575b81226e9 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task02/finetune.sh @@ -0,0 +1,22 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 2, finetune with small learning rate +# please replace the weight variable into your actual weight + +lr=1e-2 +fold=0 +weight=model.pt + +python train.py -fold $fold -train_num_workers 4 -interval 1 -num_samples 4 \ +-learning_rate $lr -max_epochs 500 -task_id 02 -pos_sample_num 1 \ +-expr_name baseline -tta_val True -checkpoint $weight -determinism_flag True \ +-determinism_seed 0 diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task03/finetune_multi_gpu.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task03/finetune_multi_gpu.sh new file mode 100644 index 0000000000000000000000000000000000000000..7d1284b99564a2d6c327b7d29c789fc8174cd429 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task03/finetune_multi_gpu.sh @@ -0,0 +1,24 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 2, finetune with small learning rate +# please replace the weight variable into your actual weight + +lr=1e-2 +fold=0 +weight=model.pt + +python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 \ + --master_addr="localhost" --master_port=1234 \ + train.py -fold $fold -train_num_workers 8 -interval 20 -num_samples 1 \ + -learning_rate $lr -max_epochs 2000 -task_id 03 -pos_sample_num 1 \ + -expr_name baseline -tta_val True -checkpoint $weight -multi_gpu True \ + -eval_overlap 0.5 -sw_batch_size 2 -batch_dice True diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/train.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/train.sh new file mode 100644 index 0000000000000000000000000000000000000000..a50046ea3607540d760543654d6dbb40b2347588 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/train.sh @@ -0,0 +1,19 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 1, with large learning rate + +lr=1e-1 +fold=0 + +python train.py -fold $fold -train_num_workers 4 -interval 1 -num_samples 1 \ +-learning_rate $lr -max_epochs 500 -task_id 04 -pos_sample_num 2 \ +-expr_name baseline -tta_val True -determinism_flag True -determinism_seed 0 diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/train_multi_gpu.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/train_multi_gpu.sh new file mode 100644 index 0000000000000000000000000000000000000000..82536e61942c38be90f92efc19b5b862fbf6bb37 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/train_multi_gpu.sh @@ -0,0 +1,21 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 1, with large learning rate + +lr=1e-1 +fold=0 + +python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 \ + --master_addr="localhost" --master_port=1234 \ + train.py -fold $fold -train_num_workers 4 -interval 1 -num_samples 1 \ + -learning_rate $lr -max_epochs 500 -task_id 04 -pos_sample_num 2 \ + -expr_name baseline -tta_val True -multi_gpu True diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/val_multi_gpu.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/val_multi_gpu.sh new file mode 100644 index 0000000000000000000000000000000000000000..ca43518911d2d937df7a24f0fea6c9b05627616f --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task04/val_multi_gpu.sh @@ -0,0 +1,20 @@ +# Copyright (c) MONAI Consortium +# 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. + +# please replace the weight variable into your actual weight + +weight=model.pt +fold=0 + +python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 \ + --master_addr="localhost" --master_port=1234 \ + train.py -fold $fold -expr_name baseline -task_id 04 -tta_val True \ + -checkpoint $weight -mode val -multi_gpu True diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task05/finetune.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task05/finetune.sh new file mode 100644 index 0000000000000000000000000000000000000000..1d1861ab870540c22b926829a64a69e2a7b4f318 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task05/finetune.sh @@ -0,0 +1,22 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 2, finetune with small learning rate +# please replace the weight variable into your actual weight + +lr=1e-2 +fold=0 +weight=model.pt + +python train.py -fold $fold -train_num_workers 4 -interval 1 -num_samples 4 \ +-learning_rate $lr -max_epochs 1000 -task_id 05 -pos_sample_num 1 \ +-expr_name baseline -tta_val True -checkpoint $weight -determinism_flag True \ +-determinism_seed 0 diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task06/finetune.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task06/finetune.sh new file mode 100644 index 0000000000000000000000000000000000000000..1b5b100be18e5cde18f8a716d364b6e91baf7330 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task06/finetune.sh @@ -0,0 +1,22 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 2, finetune with small learning rate +# please replace the weight variable into your actual weight + +lr=1e-3 +fold=0 +weight=model.pt + +python train.py -fold $fold -train_num_workers 4 -interval 5 -num_samples 1 \ +-learning_rate $lr -max_epochs 1000 -task_id 06 -pos_sample_num 1 \ +-expr_name baseline -tta_val True -checkpoint $weight -determinism_flag True \ +-determinism_seed 0 -batch_dice True diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task07/finetune_multi_gpu.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task07/finetune_multi_gpu.sh new file mode 100644 index 0000000000000000000000000000000000000000..b0abc0043e6039ce11f0376ffd42c80e74ad3e3f --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task07/finetune_multi_gpu.sh @@ -0,0 +1,28 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 2, finetune with small learning rate +# please replace the weight variable into your actual weight +# since this task uses lr scheduler, please set the lr and max epochs +# here according to the step 1 training results. The value of max epochs equals +# to 2000 minus the best epoch in step 1. + +lr=5e-3 +max_epochs=1000 +fold=0 +weight=model.pt + +python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 \ + --master_addr="localhost" --master_port=1234 \ + train.py -fold $fold -train_num_workers 4 -interval 10 -num_samples 1 \ + -learning_rate $lr -max_epochs $max_epochs -task_id 07 -pos_sample_num 1 \ + -expr_name baseline -tta_val True -checkpoint $weight -multi_gpu True \ + -lr_decay True diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task08/finetune_multi_gpu.sh b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task08/finetune_multi_gpu.sh new file mode 100644 index 0000000000000000000000000000000000000000..9831d43d9d83ec54d07da0885d3ec7dfb881d44d --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/commands/task08/finetune_multi_gpu.sh @@ -0,0 +1,28 @@ +# Copyright (c) MONAI Consortium +# 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. + +# train step 2, finetune with small learning rate +# please replace the weight variable into your actual weight +# since this task uses lr scheduler, please set the lr and max epochs +# here according to the step 1 training results. The value of max epochs equals +# to 2000 minus the best epoch in step 1. + +lr=5e-3 +max_epochs=1000 +fold=0 +weight=model.pt + +python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 \ + --master_addr="localhost" --master_port=1234 \ + train.py -fold $fold -train_num_workers 4 -interval 10 -num_samples 1 \ + -learning_rate $lr -max_epochs $max_epochs -task_id 08 -pos_sample_num 1 \ + -expr_name baseline -tta_val True -checkpoint $weight -multi_gpu True \ + -lr_decay True diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task02.json b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task02.json new file mode 100644 index 0000000000000000000000000000000000000000..4a40b8b5ec26c04c3fc770a705ea453f6f9fff6c --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task02.json @@ -0,0 +1 @@ +{"name": "LeftAtrium", "description": "Left atrium segmentation", "tensorImageSize": "3D", "reference": "King\u2019s College London", "licence": "CC-BY-SA 4.0", "relase": "1.0 04/05/2018", "modality": {"0": "MRI"}, "labels": {"0": "background", "1": "left atrium"}, "numTraining": 20, "numTest": 10, "training": [{"image": "./imagesTr/la_007.nii.gz", "label": "./labelsTr/la_007.nii.gz"}, {"image": "./imagesTr/la_019.nii.gz", "label": "./labelsTr/la_019.nii.gz"}, {"image": "./imagesTr/la_023.nii.gz", "label": "./labelsTr/la_023.nii.gz"}, {"image": "./imagesTr/la_005.nii.gz", "label": "./labelsTr/la_005.nii.gz"}, {"image": "./imagesTr/la_009.nii.gz", "label": "./labelsTr/la_009.nii.gz"}, {"image": "./imagesTr/la_017.nii.gz", "label": "./labelsTr/la_017.nii.gz"}, {"image": "./imagesTr/la_021.nii.gz", "label": "./labelsTr/la_021.nii.gz"}, {"image": "./imagesTr/la_029.nii.gz", "label": "./labelsTr/la_029.nii.gz"}, {"image": "./imagesTr/la_003.nii.gz", "label": "./labelsTr/la_003.nii.gz"}, {"image": "./imagesTr/la_011.nii.gz", "label": "./labelsTr/la_011.nii.gz"}, {"image": "./imagesTr/la_030.nii.gz", "label": "./labelsTr/la_030.nii.gz"}, {"image": "./imagesTr/la_022.nii.gz", "label": "./labelsTr/la_022.nii.gz"}, {"image": "./imagesTr/la_014.nii.gz", "label": "./labelsTr/la_014.nii.gz"}, {"image": "./imagesTr/la_018.nii.gz", "label": "./labelsTr/la_018.nii.gz"}, {"image": "./imagesTr/la_020.nii.gz", "label": "./labelsTr/la_020.nii.gz"}, {"image": "./imagesTr/la_004.nii.gz", "label": "./labelsTr/la_004.nii.gz"}, {"image": "./imagesTr/la_016.nii.gz", "label": "./labelsTr/la_016.nii.gz"}, {"image": "./imagesTr/la_024.nii.gz", "label": "./labelsTr/la_024.nii.gz"}, {"image": "./imagesTr/la_010.nii.gz", "label": "./labelsTr/la_010.nii.gz"}, {"image": "./imagesTr/la_026.nii.gz", "label": "./labelsTr/la_026.nii.gz"}], "test": ["./imagesTs/la_015.nii.gz", "./imagesTs/la_025.nii.gz", "./imagesTs/la_013.nii.gz", "./imagesTs/la_001.nii.gz", "./imagesTs/la_027.nii.gz", "./imagesTs/la_006.nii.gz", "./imagesTs/la_008.nii.gz", "./imagesTs/la_012.nii.gz", "./imagesTs/la_028.nii.gz", "./imagesTs/la_002.nii.gz"], "validation_fold0": [{"image": "./imagesTr/la_007.nii.gz", "label": "./labelsTr/la_007.nii.gz"}, {"image": "./imagesTr/la_016.nii.gz", "label": "./labelsTr/la_016.nii.gz"}, {"image": "./imagesTr/la_021.nii.gz", "label": "./labelsTr/la_021.nii.gz"}, {"image": "./imagesTr/la_024.nii.gz", "label": "./labelsTr/la_024.nii.gz"}], "train_fold0": [{"image": "./imagesTr/la_003.nii.gz", "label": "./labelsTr/la_003.nii.gz"}, {"image": "./imagesTr/la_004.nii.gz", "label": "./labelsTr/la_004.nii.gz"}, {"image": "./imagesTr/la_005.nii.gz", "label": "./labelsTr/la_005.nii.gz"}, {"image": "./imagesTr/la_009.nii.gz", "label": "./labelsTr/la_009.nii.gz"}, {"image": "./imagesTr/la_010.nii.gz", "label": "./labelsTr/la_010.nii.gz"}, {"image": "./imagesTr/la_011.nii.gz", "label": "./labelsTr/la_011.nii.gz"}, {"image": "./imagesTr/la_014.nii.gz", "label": "./labelsTr/la_014.nii.gz"}, {"image": "./imagesTr/la_017.nii.gz", "label": "./labelsTr/la_017.nii.gz"}, {"image": "./imagesTr/la_018.nii.gz", "label": "./labelsTr/la_018.nii.gz"}, {"image": "./imagesTr/la_019.nii.gz", "label": "./labelsTr/la_019.nii.gz"}, {"image": "./imagesTr/la_020.nii.gz", "label": "./labelsTr/la_020.nii.gz"}, {"image": "./imagesTr/la_022.nii.gz", "label": "./labelsTr/la_022.nii.gz"}, {"image": "./imagesTr/la_023.nii.gz", "label": "./labelsTr/la_023.nii.gz"}, {"image": "./imagesTr/la_026.nii.gz", "label": "./labelsTr/la_026.nii.gz"}, {"image": "./imagesTr/la_029.nii.gz", "label": "./labelsTr/la_029.nii.gz"}, {"image": "./imagesTr/la_030.nii.gz", "label": "./labelsTr/la_030.nii.gz"}], "validation_fold1": [{"image": "./imagesTr/la_003.nii.gz", "label": "./labelsTr/la_003.nii.gz"}, {"image": "./imagesTr/la_018.nii.gz", "label": "./labelsTr/la_018.nii.gz"}, {"image": "./imagesTr/la_020.nii.gz", "label": "./labelsTr/la_020.nii.gz"}, {"image": "./imagesTr/la_023.nii.gz", "label": "./labelsTr/la_023.nii.gz"}], "train_fold1": [{"image": "./imagesTr/la_004.nii.gz", "label": "./labelsTr/la_004.nii.gz"}, {"image": "./imagesTr/la_005.nii.gz", "label": "./labelsTr/la_005.nii.gz"}, {"image": "./imagesTr/la_007.nii.gz", "label": "./labelsTr/la_007.nii.gz"}, {"image": "./imagesTr/la_009.nii.gz", "label": "./labelsTr/la_009.nii.gz"}, {"image": "./imagesTr/la_010.nii.gz", "label": "./labelsTr/la_010.nii.gz"}, {"image": "./imagesTr/la_011.nii.gz", "label": "./labelsTr/la_011.nii.gz"}, {"image": "./imagesTr/la_014.nii.gz", "label": "./labelsTr/la_014.nii.gz"}, {"image": "./imagesTr/la_016.nii.gz", "label": "./labelsTr/la_016.nii.gz"}, {"image": "./imagesTr/la_017.nii.gz", "label": "./labelsTr/la_017.nii.gz"}, {"image": "./imagesTr/la_019.nii.gz", "label": "./labelsTr/la_019.nii.gz"}, {"image": "./imagesTr/la_021.nii.gz", "label": "./labelsTr/la_021.nii.gz"}, {"image": "./imagesTr/la_022.nii.gz", "label": "./labelsTr/la_022.nii.gz"}, {"image": "./imagesTr/la_024.nii.gz", "label": "./labelsTr/la_024.nii.gz"}, {"image": "./imagesTr/la_026.nii.gz", "label": "./labelsTr/la_026.nii.gz"}, {"image": "./imagesTr/la_029.nii.gz", "label": "./labelsTr/la_029.nii.gz"}, {"image": "./imagesTr/la_030.nii.gz", "label": "./labelsTr/la_030.nii.gz"}], "validation_fold2": [{"image": "./imagesTr/la_011.nii.gz", "label": "./labelsTr/la_011.nii.gz"}, {"image": "./imagesTr/la_014.nii.gz", "label": "./labelsTr/la_014.nii.gz"}, {"image": "./imagesTr/la_019.nii.gz", "label": "./labelsTr/la_019.nii.gz"}, {"image": "./imagesTr/la_026.nii.gz", "label": "./labelsTr/la_026.nii.gz"}], "train_fold2": [{"image": "./imagesTr/la_003.nii.gz", "label": "./labelsTr/la_003.nii.gz"}, {"image": "./imagesTr/la_004.nii.gz", "label": "./labelsTr/la_004.nii.gz"}, {"image": "./imagesTr/la_005.nii.gz", "label": "./labelsTr/la_005.nii.gz"}, {"image": "./imagesTr/la_007.nii.gz", "label": "./labelsTr/la_007.nii.gz"}, {"image": "./imagesTr/la_009.nii.gz", "label": "./labelsTr/la_009.nii.gz"}, {"image": "./imagesTr/la_010.nii.gz", "label": "./labelsTr/la_010.nii.gz"}, {"image": "./imagesTr/la_016.nii.gz", "label": "./labelsTr/la_016.nii.gz"}, {"image": "./imagesTr/la_017.nii.gz", "label": "./labelsTr/la_017.nii.gz"}, {"image": "./imagesTr/la_018.nii.gz", "label": "./labelsTr/la_018.nii.gz"}, {"image": "./imagesTr/la_020.nii.gz", "label": "./labelsTr/la_020.nii.gz"}, {"image": "./imagesTr/la_021.nii.gz", "label": "./labelsTr/la_021.nii.gz"}, {"image": "./imagesTr/la_022.nii.gz", "label": "./labelsTr/la_022.nii.gz"}, {"image": "./imagesTr/la_023.nii.gz", "label": "./labelsTr/la_023.nii.gz"}, {"image": "./imagesTr/la_024.nii.gz", "label": "./labelsTr/la_024.nii.gz"}, {"image": "./imagesTr/la_029.nii.gz", "label": "./labelsTr/la_029.nii.gz"}, {"image": "./imagesTr/la_030.nii.gz", "label": "./labelsTr/la_030.nii.gz"}], "validation_fold3": [{"image": "./imagesTr/la_017.nii.gz", "label": "./labelsTr/la_017.nii.gz"}, {"image": "./imagesTr/la_022.nii.gz", "label": "./labelsTr/la_022.nii.gz"}, {"image": "./imagesTr/la_029.nii.gz", "label": "./labelsTr/la_029.nii.gz"}, {"image": "./imagesTr/la_030.nii.gz", "label": "./labelsTr/la_030.nii.gz"}], "train_fold3": [{"image": "./imagesTr/la_003.nii.gz", "label": "./labelsTr/la_003.nii.gz"}, {"image": "./imagesTr/la_004.nii.gz", "label": "./labelsTr/la_004.nii.gz"}, {"image": "./imagesTr/la_005.nii.gz", "label": "./labelsTr/la_005.nii.gz"}, {"image": "./imagesTr/la_007.nii.gz", "label": "./labelsTr/la_007.nii.gz"}, {"image": "./imagesTr/la_009.nii.gz", "label": "./labelsTr/la_009.nii.gz"}, {"image": "./imagesTr/la_010.nii.gz", "label": "./labelsTr/la_010.nii.gz"}, {"image": "./imagesTr/la_011.nii.gz", "label": "./labelsTr/la_011.nii.gz"}, {"image": "./imagesTr/la_014.nii.gz", "label": "./labelsTr/la_014.nii.gz"}, {"image": "./imagesTr/la_016.nii.gz", "label": "./labelsTr/la_016.nii.gz"}, {"image": "./imagesTr/la_018.nii.gz", "label": "./labelsTr/la_018.nii.gz"}, {"image": "./imagesTr/la_019.nii.gz", "label": "./labelsTr/la_019.nii.gz"}, {"image": "./imagesTr/la_020.nii.gz", "label": "./labelsTr/la_020.nii.gz"}, {"image": "./imagesTr/la_021.nii.gz", "label": "./labelsTr/la_021.nii.gz"}, {"image": "./imagesTr/la_023.nii.gz", "label": "./labelsTr/la_023.nii.gz"}, {"image": "./imagesTr/la_024.nii.gz", "label": "./labelsTr/la_024.nii.gz"}, {"image": "./imagesTr/la_026.nii.gz", "label": "./labelsTr/la_026.nii.gz"}], "validation_fold4": [{"image": "./imagesTr/la_004.nii.gz", "label": "./labelsTr/la_004.nii.gz"}, {"image": "./imagesTr/la_005.nii.gz", "label": "./labelsTr/la_005.nii.gz"}, {"image": "./imagesTr/la_009.nii.gz", "label": "./labelsTr/la_009.nii.gz"}, {"image": "./imagesTr/la_010.nii.gz", "label": "./labelsTr/la_010.nii.gz"}], "train_fold4": [{"image": "./imagesTr/la_003.nii.gz", "label": "./labelsTr/la_003.nii.gz"}, {"image": "./imagesTr/la_007.nii.gz", "label": "./labelsTr/la_007.nii.gz"}, {"image": "./imagesTr/la_011.nii.gz", "label": "./labelsTr/la_011.nii.gz"}, {"image": "./imagesTr/la_014.nii.gz", "label": "./labelsTr/la_014.nii.gz"}, {"image": "./imagesTr/la_016.nii.gz", "label": "./labelsTr/la_016.nii.gz"}, {"image": "./imagesTr/la_017.nii.gz", "label": "./labelsTr/la_017.nii.gz"}, {"image": "./imagesTr/la_018.nii.gz", "label": "./labelsTr/la_018.nii.gz"}, {"image": "./imagesTr/la_019.nii.gz", "label": "./labelsTr/la_019.nii.gz"}, {"image": "./imagesTr/la_020.nii.gz", "label": "./labelsTr/la_020.nii.gz"}, {"image": "./imagesTr/la_021.nii.gz", "label": "./labelsTr/la_021.nii.gz"}, {"image": "./imagesTr/la_022.nii.gz", "label": "./labelsTr/la_022.nii.gz"}, {"image": "./imagesTr/la_023.nii.gz", "label": "./labelsTr/la_023.nii.gz"}, {"image": "./imagesTr/la_024.nii.gz", "label": "./labelsTr/la_024.nii.gz"}, {"image": "./imagesTr/la_026.nii.gz", "label": "./labelsTr/la_026.nii.gz"}, {"image": "./imagesTr/la_029.nii.gz", "label": "./labelsTr/la_029.nii.gz"}, {"image": "./imagesTr/la_030.nii.gz", "label": "./labelsTr/la_030.nii.gz"}]} diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task04.json b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task04.json new file mode 100644 index 0000000000000000000000000000000000000000..e7cb86a0923a7bc4f3718360924e842a0c4ab01e --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task04.json @@ -0,0 +1 @@ +{"name": "Hippocampus", "description": "Left and right hippocampus segmentation", "reference": " Vanderbilt University Medical Center", "licence": "CC-BY-SA 4.0", "relase": "1.0 04/05/2018", "tensorImageSize": "3D", "modality": {"0": "MRI"}, "labels": {"0": "background", "1": "Anterior", "2": "Posterior"}, "numTraining": 260, "numTest": 130, "training": [{"image": "./imagesTr/hippocampus_367.nii.gz", "label": "./labelsTr/hippocampus_367.nii.gz"}, {"image": "./imagesTr/hippocampus_304.nii.gz", "label": "./labelsTr/hippocampus_304.nii.gz"}, {"image": "./imagesTr/hippocampus_204.nii.gz", "label": "./labelsTr/hippocampus_204.nii.gz"}, {"image": "./imagesTr/hippocampus_279.nii.gz", "label": "./labelsTr/hippocampus_279.nii.gz"}, {"image": "./imagesTr/hippocampus_308.nii.gz", "label": "./labelsTr/hippocampus_308.nii.gz"}, {"image": "./imagesTr/hippocampus_375.nii.gz", "label": "./labelsTr/hippocampus_375.nii.gz"}, {"image": "./imagesTr/hippocampus_216.nii.gz", "label": "./labelsTr/hippocampus_216.nii.gz"}, {"image": "./imagesTr/hippocampus_316.nii.gz", "label": "./labelsTr/hippocampus_316.nii.gz"}, {"image": "./imagesTr/hippocampus_089.nii.gz", "label": "./labelsTr/hippocampus_089.nii.gz"}, {"image": "./imagesTr/hippocampus_189.nii.gz", "label": "./labelsTr/hippocampus_189.nii.gz"}, {"image": "./imagesTr/hippocampus_243.nii.gz", "label": "./labelsTr/hippocampus_243.nii.gz"}, {"image": "./imagesTr/hippocampus_343.nii.gz", "label": "./labelsTr/hippocampus_343.nii.gz"}, {"image": "./imagesTr/hippocampus_220.nii.gz", "label": "./labelsTr/hippocampus_220.nii.gz"}, {"image": "./imagesTr/hippocampus_097.nii.gz", "label": "./labelsTr/hippocampus_097.nii.gz"}, {"image": "./imagesTr/hippocampus_320.nii.gz", "label": "./labelsTr/hippocampus_320.nii.gz"}, {"image": "./imagesTr/hippocampus_197.nii.gz", "label": "./labelsTr/hippocampus_197.nii.gz"}, {"image": "./imagesTr/hippocampus_351.nii.gz", "label": "./labelsTr/hippocampus_351.nii.gz"}, {"image": "./imagesTr/hippocampus_251.nii.gz", "label": "./labelsTr/hippocampus_251.nii.gz"}, {"image": "./imagesTr/hippocampus_185.nii.gz", "label": "./labelsTr/hippocampus_185.nii.gz"}, {"image": "./imagesTr/hippocampus_332.nii.gz", "label": "./labelsTr/hippocampus_332.nii.gz"}, {"image": "./imagesTr/hippocampus_232.nii.gz", "label": "./labelsTr/hippocampus_232.nii.gz"}, {"image": "./imagesTr/hippocampus_298.nii.gz", "label": "./labelsTr/hippocampus_298.nii.gz"}, {"image": "./imagesTr/hippocampus_152.nii.gz", "label": "./labelsTr/hippocampus_152.nii.gz"}, {"image": "./imagesTr/hippocampus_052.nii.gz", "label": "./labelsTr/hippocampus_052.nii.gz"}, {"image": "./imagesTr/hippocampus_386.nii.gz", "label": "./labelsTr/hippocampus_386.nii.gz"}, {"image": "./imagesTr/hippocampus_286.nii.gz", "label": "./labelsTr/hippocampus_286.nii.gz"}, {"image": "./imagesTr/hippocampus_040.nii.gz", "label": "./labelsTr/hippocampus_040.nii.gz"}, {"image": "./imagesTr/hippocampus_294.nii.gz", "label": "./labelsTr/hippocampus_294.nii.gz"}, {"image": "./imagesTr/hippocampus_023.nii.gz", "label": "./labelsTr/hippocampus_023.nii.gz"}, {"image": "./imagesTr/hippocampus_394.nii.gz", "label": "./labelsTr/hippocampus_394.nii.gz"}, {"image": "./imagesTr/hippocampus_123.nii.gz", "label": "./labelsTr/hippocampus_123.nii.gz"}, {"image": "./imagesTr/hippocampus_176.nii.gz", "label": "./labelsTr/hippocampus_176.nii.gz"}, {"image": "./imagesTr/hippocampus_015.nii.gz", "label": "./labelsTr/hippocampus_015.nii.gz"}, {"image": "./imagesTr/hippocampus_068.nii.gz", "label": "./labelsTr/hippocampus_068.nii.gz"}, {"image": "./imagesTr/hippocampus_019.nii.gz", "label": "./labelsTr/hippocampus_019.nii.gz"}, {"image": "./imagesTr/hippocampus_164.nii.gz", "label": "./labelsTr/hippocampus_164.nii.gz"}, {"image": "./imagesTr/hippocampus_064.nii.gz", "label": "./labelsTr/hippocampus_064.nii.gz"}, {"image": "./imagesTr/hippocampus_107.nii.gz", "label": "./labelsTr/hippocampus_107.nii.gz"}, {"image": "./imagesTr/hippocampus_007.nii.gz", "label": "./labelsTr/hippocampus_007.nii.gz"}, {"image": "./imagesTr/hippocampus_296.nii.gz", "label": "./labelsTr/hippocampus_296.nii.gz"}, {"image": "./imagesTr/hippocampus_288.nii.gz", "label": "./labelsTr/hippocampus_288.nii.gz"}, {"image": "./imagesTr/hippocampus_042.nii.gz", "label": "./labelsTr/hippocampus_042.nii.gz"}, {"image": "./imagesTr/hippocampus_142.nii.gz", "label": "./labelsTr/hippocampus_142.nii.gz"}, {"image": "./imagesTr/hippocampus_133.nii.gz", "label": "./labelsTr/hippocampus_133.nii.gz"}, {"image": "./imagesTr/hippocampus_033.nii.gz", "label": "./labelsTr/hippocampus_033.nii.gz"}, {"image": "./imagesTr/hippocampus_150.nii.gz", "label": "./labelsTr/hippocampus_150.nii.gz"}, {"image": "./imagesTr/hippocampus_050.nii.gz", "label": "./labelsTr/hippocampus_050.nii.gz"}, {"image": "./imagesTr/hippocampus_105.nii.gz", "label": "./labelsTr/hippocampus_105.nii.gz"}, {"image": "./imagesTr/hippocampus_178.nii.gz", "label": "./labelsTr/hippocampus_178.nii.gz"}, {"image": "./imagesTr/hippocampus_166.nii.gz", "label": "./labelsTr/hippocampus_166.nii.gz"}, {"image": "./imagesTr/hippocampus_017.nii.gz", "label": "./labelsTr/hippocampus_017.nii.gz"}, {"image": "./imagesTr/hippocampus_109.nii.gz", "label": "./labelsTr/hippocampus_109.nii.gz"}, {"image": "./imagesTr/hippocampus_074.nii.gz", "label": "./labelsTr/hippocampus_074.nii.gz"}, {"image": "./imagesTr/hippocampus_174.nii.gz", "label": "./labelsTr/hippocampus_174.nii.gz"}, {"image": "./imagesTr/hippocampus_314.nii.gz", "label": "./labelsTr/hippocampus_314.nii.gz"}, {"image": "./imagesTr/hippocampus_269.nii.gz", "label": "./labelsTr/hippocampus_269.nii.gz"}, {"image": "./imagesTr/hippocampus_277.nii.gz", "label": "./labelsTr/hippocampus_277.nii.gz"}, {"image": "./imagesTr/hippocampus_318.nii.gz", "label": "./labelsTr/hippocampus_318.nii.gz"}, {"image": "./imagesTr/hippocampus_265.nii.gz", "label": "./labelsTr/hippocampus_265.nii.gz"}, {"image": "./imagesTr/hippocampus_330.nii.gz", "label": "./labelsTr/hippocampus_330.nii.gz"}, {"image": "./imagesTr/hippocampus_087.nii.gz", "label": "./labelsTr/hippocampus_087.nii.gz"}, {"image": "./imagesTr/hippocampus_230.nii.gz", "label": "./labelsTr/hippocampus_230.nii.gz"}, {"image": "./imagesTr/hippocampus_199.nii.gz", "label": "./labelsTr/hippocampus_199.nii.gz"}, {"image": "./imagesTr/hippocampus_099.nii.gz", "label": "./labelsTr/hippocampus_099.nii.gz"}, {"image": "./imagesTr/hippocampus_353.nii.gz", "label": "./labelsTr/hippocampus_353.nii.gz"}, {"image": "./imagesTr/hippocampus_253.nii.gz", "label": "./labelsTr/hippocampus_253.nii.gz"}, {"image": "./imagesTr/hippocampus_222.nii.gz", "label": "./labelsTr/hippocampus_222.nii.gz"}, {"image": "./imagesTr/hippocampus_095.nii.gz", "label": "./labelsTr/hippocampus_095.nii.gz"}, {"image": "./imagesTr/hippocampus_322.nii.gz", "label": "./labelsTr/hippocampus_322.nii.gz"}, {"image": "./imagesTr/hippocampus_195.nii.gz", "label": "./labelsTr/hippocampus_195.nii.gz"}, {"image": "./imagesTr/hippocampus_341.nii.gz", "label": "./labelsTr/hippocampus_341.nii.gz"}, {"image": "./imagesTr/hippocampus_070.nii.gz", "label": "./labelsTr/hippocampus_070.nii.gz"}, {"image": "./imagesTr/hippocampus_170.nii.gz", "label": "./labelsTr/hippocampus_170.nii.gz"}, {"image": "./imagesTr/hippocampus_101.nii.gz", "label": "./labelsTr/hippocampus_101.nii.gz"}, {"image": "./imagesTr/hippocampus_001.nii.gz", "label": "./labelsTr/hippocampus_001.nii.gz"}, {"image": "./imagesTr/hippocampus_162.nii.gz", "label": "./labelsTr/hippocampus_162.nii.gz"}, {"image": "./imagesTr/hippocampus_380.nii.gz", "label": "./labelsTr/hippocampus_380.nii.gz"}, {"image": "./imagesTr/hippocampus_037.nii.gz", "label": "./labelsTr/hippocampus_037.nii.gz"}, {"image": "./imagesTr/hippocampus_280.nii.gz", "label": "./labelsTr/hippocampus_280.nii.gz"}, {"image": "./imagesTr/hippocampus_154.nii.gz", "label": "./labelsTr/hippocampus_154.nii.gz"}, {"image": "./imagesTr/hippocampus_058.nii.gz", "label": "./labelsTr/hippocampus_058.nii.gz"}, {"image": "./imagesTr/hippocampus_158.nii.gz", "label": "./labelsTr/hippocampus_158.nii.gz"}, {"image": "./imagesTr/hippocampus_292.nii.gz", "label": "./labelsTr/hippocampus_292.nii.gz"}, {"image": "./imagesTr/hippocampus_025.nii.gz", "label": "./labelsTr/hippocampus_025.nii.gz"}, {"image": "./imagesTr/hippocampus_125.nii.gz", "label": "./labelsTr/hippocampus_125.nii.gz"}, {"image": "./imagesTr/hippocampus_046.nii.gz", "label": "./labelsTr/hippocampus_046.nii.gz"}, {"image": "./imagesTr/hippocampus_146.nii.gz", "label": "./labelsTr/hippocampus_146.nii.gz"}, {"image": "./imagesTr/hippocampus_226.nii.gz", "label": "./labelsTr/hippocampus_226.nii.gz"}, {"image": "./imagesTr/hippocampus_091.nii.gz", "label": "./labelsTr/hippocampus_091.nii.gz"}, {"image": "./imagesTr/hippocampus_326.nii.gz", "label": "./labelsTr/hippocampus_326.nii.gz"}, {"image": "./imagesTr/hippocampus_245.nii.gz", "label": "./labelsTr/hippocampus_245.nii.gz"}, {"image": "./imagesTr/hippocampus_345.nii.gz", "label": "./labelsTr/hippocampus_345.nii.gz"}, {"image": "./imagesTr/hippocampus_238.nii.gz", "label": "./labelsTr/hippocampus_238.nii.gz"}, {"image": "./imagesTr/hippocampus_338.nii.gz", "label": "./labelsTr/hippocampus_338.nii.gz"}, {"image": "./imagesTr/hippocampus_349.nii.gz", "label": "./labelsTr/hippocampus_349.nii.gz"}, {"image": "./imagesTr/hippocampus_249.nii.gz", "label": "./labelsTr/hippocampus_249.nii.gz"}, {"image": "./imagesTr/hippocampus_334.nii.gz", "label": "./labelsTr/hippocampus_334.nii.gz"}, {"image": "./imagesTr/hippocampus_083.nii.gz", "label": "./labelsTr/hippocampus_083.nii.gz"}, {"image": "./imagesTr/hippocampus_234.nii.gz", "label": "./labelsTr/hippocampus_234.nii.gz"}, {"image": "./imagesTr/hippocampus_257.nii.gz", "label": "./labelsTr/hippocampus_257.nii.gz"}, {"image": "./imagesTr/hippocampus_302.nii.gz", "label": "./labelsTr/hippocampus_302.nii.gz"}, {"image": "./imagesTr/hippocampus_361.nii.gz", "label": "./labelsTr/hippocampus_361.nii.gz"}, {"image": "./imagesTr/hippocampus_261.nii.gz", "label": "./labelsTr/hippocampus_261.nii.gz"}, {"image": "./imagesTr/hippocampus_210.nii.gz", "label": "./labelsTr/hippocampus_210.nii.gz"}, {"image": "./imagesTr/hippocampus_310.nii.gz", "label": "./labelsTr/hippocampus_310.nii.gz"}, {"image": "./imagesTr/hippocampus_373.nii.gz", "label": "./labelsTr/hippocampus_373.nii.gz"}, {"image": "./imagesTr/hippocampus_355.nii.gz", "label": "./labelsTr/hippocampus_355.nii.gz"}, {"image": "./imagesTr/hippocampus_328.nii.gz", "label": "./labelsTr/hippocampus_328.nii.gz"}, {"image": "./imagesTr/hippocampus_228.nii.gz", "label": "./labelsTr/hippocampus_228.nii.gz"}, {"image": "./imagesTr/hippocampus_181.nii.gz", "label": "./labelsTr/hippocampus_181.nii.gz"}, {"image": "./imagesTr/hippocampus_336.nii.gz", "label": "./labelsTr/hippocampus_336.nii.gz"}, {"image": "./imagesTr/hippocampus_236.nii.gz", "label": "./labelsTr/hippocampus_236.nii.gz"}, {"image": "./imagesTr/hippocampus_259.nii.gz", "label": "./labelsTr/hippocampus_259.nii.gz"}, {"image": "./imagesTr/hippocampus_359.nii.gz", "label": "./labelsTr/hippocampus_359.nii.gz"}, {"image": "./imagesTr/hippocampus_224.nii.gz", "label": "./labelsTr/hippocampus_224.nii.gz"}, {"image": "./imagesTr/hippocampus_093.nii.gz", "label": "./labelsTr/hippocampus_093.nii.gz"}, {"image": "./imagesTr/hippocampus_193.nii.gz", "label": "./labelsTr/hippocampus_193.nii.gz"}, {"image": "./imagesTr/hippocampus_212.nii.gz", "label": "./labelsTr/hippocampus_212.nii.gz"}, {"image": "./imagesTr/hippocampus_363.nii.gz", "label": "./labelsTr/hippocampus_363.nii.gz"}, {"image": "./imagesTr/hippocampus_263.nii.gz", "label": "./labelsTr/hippocampus_263.nii.gz"}, {"image": "./imagesTr/hippocampus_300.nii.gz", "label": "./labelsTr/hippocampus_300.nii.gz"}, {"image": "./imagesTr/hippocampus_160.nii.gz", "label": "./labelsTr/hippocampus_160.nii.gz"}, {"image": "./imagesTr/hippocampus_060.nii.gz", "label": "./labelsTr/hippocampus_060.nii.gz"}, {"image": "./imagesTr/hippocampus_003.nii.gz", "label": "./labelsTr/hippocampus_003.nii.gz"}, {"image": "./imagesTr/hippocampus_172.nii.gz", "label": "./labelsTr/hippocampus_172.nii.gz"}, {"image": "./imagesTr/hippocampus_011.nii.gz", "label": "./labelsTr/hippocampus_011.nii.gz"}, {"image": "./imagesTr/hippocampus_044.nii.gz", "label": "./labelsTr/hippocampus_044.nii.gz"}, {"image": "./imagesTr/hippocampus_144.nii.gz", "label": "./labelsTr/hippocampus_144.nii.gz"}, {"image": "./imagesTr/hippocampus_039.nii.gz", "label": "./labelsTr/hippocampus_039.nii.gz"}, {"image": "./imagesTr/hippocampus_290.nii.gz", "label": "./labelsTr/hippocampus_290.nii.gz"}, {"image": "./imagesTr/hippocampus_390.nii.gz", "label": "./labelsTr/hippocampus_390.nii.gz"}, {"image": "./imagesTr/hippocampus_127.nii.gz", "label": "./labelsTr/hippocampus_127.nii.gz"}, {"image": "./imagesTr/hippocampus_156.nii.gz", "label": "./labelsTr/hippocampus_156.nii.gz"}, {"image": "./imagesTr/hippocampus_056.nii.gz", "label": "./labelsTr/hippocampus_056.nii.gz"}, {"image": "./imagesTr/hippocampus_148.nii.gz", "label": "./labelsTr/hippocampus_148.nii.gz"}, {"image": "./imagesTr/hippocampus_048.nii.gz", "label": "./labelsTr/hippocampus_048.nii.gz"}, {"image": "./imagesTr/hippocampus_135.nii.gz", "label": "./labelsTr/hippocampus_135.nii.gz"}, {"image": "./imagesTr/hippocampus_035.nii.gz", "label": "./labelsTr/hippocampus_035.nii.gz"}, {"image": "./imagesTr/hippocampus_282.nii.gz", "label": "./labelsTr/hippocampus_282.nii.gz"}, {"image": "./imagesTr/hippocampus_169.nii.gz", "label": "./labelsTr/hippocampus_169.nii.gz"}, {"image": "./imagesTr/hippocampus_114.nii.gz", "label": "./labelsTr/hippocampus_114.nii.gz"}, {"image": "./imagesTr/hippocampus_014.nii.gz", "label": "./labelsTr/hippocampus_014.nii.gz"}, {"image": "./imagesTr/hippocampus_177.nii.gz", "label": "./labelsTr/hippocampus_177.nii.gz"}, {"image": "./imagesTr/hippocampus_077.nii.gz", "label": "./labelsTr/hippocampus_077.nii.gz"}, {"image": "./imagesTr/hippocampus_006.nii.gz", "label": "./labelsTr/hippocampus_006.nii.gz"}, {"image": "./imagesTr/hippocampus_106.nii.gz", "label": "./labelsTr/hippocampus_106.nii.gz"}, {"image": "./imagesTr/hippocampus_065.nii.gz", "label": "./labelsTr/hippocampus_065.nii.gz"}, {"image": "./imagesTr/hippocampus_165.nii.gz", "label": "./labelsTr/hippocampus_165.nii.gz"}, {"image": "./imagesTr/hippocampus_287.nii.gz", "label": "./labelsTr/hippocampus_287.nii.gz"}, {"image": "./imagesTr/hippocampus_130.nii.gz", "label": "./labelsTr/hippocampus_130.nii.gz"}, {"image": "./imagesTr/hippocampus_387.nii.gz", "label": "./labelsTr/hippocampus_387.nii.gz"}, {"image": "./imagesTr/hippocampus_053.nii.gz", "label": "./labelsTr/hippocampus_053.nii.gz"}, {"image": "./imagesTr/hippocampus_299.nii.gz", "label": "./labelsTr/hippocampus_299.nii.gz"}, {"image": "./imagesTr/hippocampus_295.nii.gz", "label": "./labelsTr/hippocampus_295.nii.gz"}, {"image": "./imagesTr/hippocampus_141.nii.gz", "label": "./labelsTr/hippocampus_141.nii.gz"}, {"image": "./imagesTr/hippocampus_041.nii.gz", "label": "./labelsTr/hippocampus_041.nii.gz"}, {"image": "./imagesTr/hippocampus_321.nii.gz", "label": "./labelsTr/hippocampus_321.nii.gz"}, {"image": "./imagesTr/hippocampus_221.nii.gz", "label": "./labelsTr/hippocampus_221.nii.gz"}, {"image": "./imagesTr/hippocampus_096.nii.gz", "label": "./labelsTr/hippocampus_096.nii.gz"}, {"image": "./imagesTr/hippocampus_242.nii.gz", "label": "./labelsTr/hippocampus_242.nii.gz"}, {"image": "./imagesTr/hippocampus_188.nii.gz", "label": "./labelsTr/hippocampus_188.nii.gz"}, {"image": "./imagesTr/hippocampus_088.nii.gz", "label": "./labelsTr/hippocampus_088.nii.gz"}, {"image": "./imagesTr/hippocampus_084.nii.gz", "label": "./labelsTr/hippocampus_084.nii.gz"}, {"image": "./imagesTr/hippocampus_233.nii.gz", "label": "./labelsTr/hippocampus_233.nii.gz"}, {"image": "./imagesTr/hippocampus_184.nii.gz", "label": "./labelsTr/hippocampus_184.nii.gz"}, {"image": "./imagesTr/hippocampus_333.nii.gz", "label": "./labelsTr/hippocampus_333.nii.gz"}, {"image": "./imagesTr/hippocampus_250.nii.gz", "label": "./labelsTr/hippocampus_250.nii.gz"}, {"image": "./imagesTr/hippocampus_350.nii.gz", "label": "./labelsTr/hippocampus_350.nii.gz"}, {"image": "./imagesTr/hippocampus_378.nii.gz", "label": "./labelsTr/hippocampus_378.nii.gz"}, {"image": "./imagesTr/hippocampus_205.nii.gz", "label": "./labelsTr/hippocampus_205.nii.gz"}, {"image": "./imagesTr/hippocampus_305.nii.gz", "label": "./labelsTr/hippocampus_305.nii.gz"}, {"image": "./imagesTr/hippocampus_366.nii.gz", "label": "./labelsTr/hippocampus_366.nii.gz"}, {"image": "./imagesTr/hippocampus_317.nii.gz", "label": "./labelsTr/hippocampus_317.nii.gz"}, {"image": "./imagesTr/hippocampus_217.nii.gz", "label": "./labelsTr/hippocampus_217.nii.gz"}, {"image": "./imagesTr/hippocampus_374.nii.gz", "label": "./labelsTr/hippocampus_374.nii.gz"}, {"image": "./imagesTr/hippocampus_274.nii.gz", "label": "./labelsTr/hippocampus_274.nii.gz"}, {"image": "./imagesTr/hippocampus_309.nii.gz", "label": "./labelsTr/hippocampus_309.nii.gz"}, {"image": "./imagesTr/hippocampus_252.nii.gz", "label": "./labelsTr/hippocampus_252.nii.gz"}, {"image": "./imagesTr/hippocampus_352.nii.gz", "label": "./labelsTr/hippocampus_352.nii.gz"}, {"image": "./imagesTr/hippocampus_098.nii.gz", "label": "./labelsTr/hippocampus_098.nii.gz"}, {"image": "./imagesTr/hippocampus_231.nii.gz", "label": "./labelsTr/hippocampus_231.nii.gz"}, {"image": "./imagesTr/hippocampus_331.nii.gz", "label": "./labelsTr/hippocampus_331.nii.gz"}, {"image": "./imagesTr/hippocampus_340.nii.gz", "label": "./labelsTr/hippocampus_340.nii.gz"}, {"image": "./imagesTr/hippocampus_194.nii.gz", "label": "./labelsTr/hippocampus_194.nii.gz"}, {"image": "./imagesTr/hippocampus_223.nii.gz", "label": "./labelsTr/hippocampus_223.nii.gz"}, {"image": "./imagesTr/hippocampus_094.nii.gz", "label": "./labelsTr/hippocampus_094.nii.gz"}, {"image": "./imagesTr/hippocampus_376.nii.gz", "label": "./labelsTr/hippocampus_376.nii.gz"}, {"image": "./imagesTr/hippocampus_276.nii.gz", "label": "./labelsTr/hippocampus_276.nii.gz"}, {"image": "./imagesTr/hippocampus_368.nii.gz", "label": "./labelsTr/hippocampus_368.nii.gz"}, {"image": "./imagesTr/hippocampus_268.nii.gz", "label": "./labelsTr/hippocampus_268.nii.gz"}, {"image": "./imagesTr/hippocampus_215.nii.gz", "label": "./labelsTr/hippocampus_215.nii.gz"}, {"image": "./imagesTr/hippocampus_264.nii.gz", "label": "./labelsTr/hippocampus_264.nii.gz"}, {"image": "./imagesTr/hippocampus_219.nii.gz", "label": "./labelsTr/hippocampus_219.nii.gz"}, {"image": "./imagesTr/hippocampus_319.nii.gz", "label": "./labelsTr/hippocampus_319.nii.gz"}, {"image": "./imagesTr/hippocampus_207.nii.gz", "label": "./labelsTr/hippocampus_207.nii.gz"}, {"image": "./imagesTr/hippocampus_067.nii.gz", "label": "./labelsTr/hippocampus_067.nii.gz"}, {"image": "./imagesTr/hippocampus_004.nii.gz", "label": "./labelsTr/hippocampus_004.nii.gz"}, {"image": "./imagesTr/hippocampus_104.nii.gz", "label": "./labelsTr/hippocampus_104.nii.gz"}, {"image": "./imagesTr/hippocampus_175.nii.gz", "label": "./labelsTr/hippocampus_175.nii.gz"}, {"image": "./imagesTr/hippocampus_075.nii.gz", "label": "./labelsTr/hippocampus_075.nii.gz"}, {"image": "./imagesTr/hippocampus_108.nii.gz", "label": "./labelsTr/hippocampus_108.nii.gz"}, {"image": "./imagesTr/hippocampus_008.nii.gz", "label": "./labelsTr/hippocampus_008.nii.gz"}, {"image": "./imagesTr/hippocampus_143.nii.gz", "label": "./labelsTr/hippocampus_143.nii.gz"}, {"image": "./imagesTr/hippocampus_389.nii.gz", "label": "./labelsTr/hippocampus_389.nii.gz"}, {"image": "./imagesTr/hippocampus_289.nii.gz", "label": "./labelsTr/hippocampus_289.nii.gz"}, {"image": "./imagesTr/hippocampus_297.nii.gz", "label": "./labelsTr/hippocampus_297.nii.gz"}, {"image": "./imagesTr/hippocampus_020.nii.gz", "label": "./labelsTr/hippocampus_020.nii.gz"}, {"image": "./imagesTr/hippocampus_051.nii.gz", "label": "./labelsTr/hippocampus_051.nii.gz"}, {"image": "./imagesTr/hippocampus_132.nii.gz", "label": "./labelsTr/hippocampus_132.nii.gz"}, {"image": "./imagesTr/hippocampus_385.nii.gz", "label": "./labelsTr/hippocampus_385.nii.gz"}, {"image": "./imagesTr/hippocampus_260.nii.gz", "label": "./labelsTr/hippocampus_260.nii.gz"}, {"image": "./imagesTr/hippocampus_360.nii.gz", "label": "./labelsTr/hippocampus_360.nii.gz"}, {"image": "./imagesTr/hippocampus_203.nii.gz", "label": "./labelsTr/hippocampus_203.nii.gz"}, {"image": "./imagesTr/hippocampus_303.nii.gz", "label": "./labelsTr/hippocampus_303.nii.gz"}, {"image": "./imagesTr/hippocampus_372.nii.gz", "label": "./labelsTr/hippocampus_372.nii.gz"}, {"image": "./imagesTr/hippocampus_311.nii.gz", "label": "./labelsTr/hippocampus_311.nii.gz"}, {"image": "./imagesTr/hippocampus_244.nii.gz", "label": "./labelsTr/hippocampus_244.nii.gz"}, {"image": "./imagesTr/hippocampus_327.nii.gz", "label": "./labelsTr/hippocampus_327.nii.gz"}, {"image": "./imagesTr/hippocampus_190.nii.gz", "label": "./labelsTr/hippocampus_190.nii.gz"}, {"image": "./imagesTr/hippocampus_227.nii.gz", "label": "./labelsTr/hippocampus_227.nii.gz"}, {"image": "./imagesTr/hippocampus_090.nii.gz", "label": "./labelsTr/hippocampus_090.nii.gz"}, {"image": "./imagesTr/hippocampus_356.nii.gz", "label": "./labelsTr/hippocampus_356.nii.gz"}, {"image": "./imagesTr/hippocampus_235.nii.gz", "label": "./labelsTr/hippocampus_235.nii.gz"}, {"image": "./imagesTr/hippocampus_335.nii.gz", "label": "./labelsTr/hippocampus_335.nii.gz"}, {"image": "./imagesTr/hippocampus_248.nii.gz", "label": "./labelsTr/hippocampus_248.nii.gz"}, {"image": "./imagesTr/hippocampus_155.nii.gz", "label": "./labelsTr/hippocampus_155.nii.gz"}, {"image": "./imagesTr/hippocampus_036.nii.gz", "label": "./labelsTr/hippocampus_036.nii.gz"}, {"image": "./imagesTr/hippocampus_136.nii.gz", "label": "./labelsTr/hippocampus_136.nii.gz"}, {"image": "./imagesTr/hippocampus_381.nii.gz", "label": "./labelsTr/hippocampus_381.nii.gz"}, {"image": "./imagesTr/hippocampus_393.nii.gz", "label": "./labelsTr/hippocampus_393.nii.gz"}, {"image": "./imagesTr/hippocampus_124.nii.gz", "label": "./labelsTr/hippocampus_124.nii.gz"}, {"image": "./imagesTr/hippocampus_024.nii.gz", "label": "./labelsTr/hippocampus_024.nii.gz"}, {"image": "./imagesTr/hippocampus_171.nii.gz", "label": "./labelsTr/hippocampus_171.nii.gz"}, {"image": "./imagesTr/hippocampus_163.nii.gz", "label": "./labelsTr/hippocampus_163.nii.gz"}, {"image": "./imagesTr/hippocampus_126.nii.gz", "label": "./labelsTr/hippocampus_126.nii.gz"}, {"image": "./imagesTr/hippocampus_026.nii.gz", "label": "./labelsTr/hippocampus_026.nii.gz"}, {"image": "./imagesTr/hippocampus_138.nii.gz", "label": "./labelsTr/hippocampus_138.nii.gz"}, {"image": "./imagesTr/hippocampus_038.nii.gz", "label": "./labelsTr/hippocampus_038.nii.gz"}, {"image": "./imagesTr/hippocampus_145.nii.gz", "label": "./labelsTr/hippocampus_145.nii.gz"}, {"image": "./imagesTr/hippocampus_045.nii.gz", "label": "./labelsTr/hippocampus_045.nii.gz"}, {"image": "./imagesTr/hippocampus_034.nii.gz", "label": "./labelsTr/hippocampus_034.nii.gz"}, {"image": "./imagesTr/hippocampus_383.nii.gz", "label": "./labelsTr/hippocampus_383.nii.gz"}, {"image": "./imagesTr/hippocampus_049.nii.gz", "label": "./labelsTr/hippocampus_049.nii.gz"}, {"image": "./imagesTr/hippocampus_149.nii.gz", "label": "./labelsTr/hippocampus_149.nii.gz"}, {"image": "./imagesTr/hippocampus_057.nii.gz", "label": "./labelsTr/hippocampus_057.nii.gz"}, {"image": "./imagesTr/hippocampus_157.nii.gz", "label": "./labelsTr/hippocampus_157.nii.gz"}, {"image": "./imagesTr/hippocampus_102.nii.gz", "label": "./labelsTr/hippocampus_102.nii.gz"}, {"image": "./imagesTr/hippocampus_161.nii.gz", "label": "./labelsTr/hippocampus_161.nii.gz"}, {"image": "./imagesTr/hippocampus_173.nii.gz", "label": "./labelsTr/hippocampus_173.nii.gz"}, {"image": "./imagesTr/hippocampus_370.nii.gz", "label": "./labelsTr/hippocampus_370.nii.gz"}, {"image": "./imagesTr/hippocampus_301.nii.gz", "label": "./labelsTr/hippocampus_301.nii.gz"}, {"image": "./imagesTr/hippocampus_180.nii.gz", "label": "./labelsTr/hippocampus_180.nii.gz"}, {"image": "./imagesTr/hippocampus_337.nii.gz", "label": "./labelsTr/hippocampus_337.nii.gz"}, {"image": "./imagesTr/hippocampus_229.nii.gz", "label": "./labelsTr/hippocampus_229.nii.gz"}, {"image": "./imagesTr/hippocampus_329.nii.gz", "label": "./labelsTr/hippocampus_329.nii.gz"}, {"image": "./imagesTr/hippocampus_354.nii.gz", "label": "./labelsTr/hippocampus_354.nii.gz"}, {"image": "./imagesTr/hippocampus_325.nii.gz", "label": "./labelsTr/hippocampus_325.nii.gz"}, {"image": "./imagesTr/hippocampus_225.nii.gz", "label": "./labelsTr/hippocampus_225.nii.gz"}, {"image": "./imagesTr/hippocampus_092.nii.gz", "label": "./labelsTr/hippocampus_092.nii.gz"}, {"image": "./imagesTr/hippocampus_358.nii.gz", "label": "./labelsTr/hippocampus_358.nii.gz"}], "test": ["./imagesTs/hippocampus_267.nii.gz", "./imagesTs/hippocampus_379.nii.gz", "./imagesTs/hippocampus_208.nii.gz", "./imagesTs/hippocampus_275.nii.gz", "./imagesTs/hippocampus_131.nii.gz", "./imagesTs/hippocampus_140.nii.gz", "./imagesTs/hippocampus_076.nii.gz", "./imagesTs/hippocampus_115.nii.gz", "./imagesTs/hippocampus_168.nii.gz", "./imagesTs/hippocampus_119.nii.gz", "./imagesTs/hippocampus_021.nii.gz", "./imagesTs/hippocampus_121.nii.gz", "./imagesTs/hippocampus_388.nii.gz", "./imagesTs/hippocampus_384.nii.gz", "./imagesTs/hippocampus_284.nii.gz", "./imagesTs/hippocampus_005.nii.gz", "./imagesTs/hippocampus_078.nii.gz", "./imagesTs/hippocampus_066.nii.gz", "./imagesTs/hippocampus_117.nii.gz", "./imagesTs/hippocampus_009.nii.gz", "./imagesTs/hippocampus_214.nii.gz", "./imagesTs/hippocampus_369.nii.gz", "./imagesTs/hippocampus_377.nii.gz", "./imagesTs/hippocampus_306.nii.gz", "./imagesTs/hippocampus_206.nii.gz", "./imagesTs/hippocampus_218.nii.gz", "./imagesTs/hippocampus_365.nii.gz", "./imagesTs/hippocampus_187.nii.gz", "./imagesTs/hippocampus_241.nii.gz", "./imagesTs/hippocampus_013.nii.gz", "./imagesTs/hippocampus_113.nii.gz", "./imagesTs/hippocampus_062.nii.gz", "./imagesTs/hippocampus_137.nii.gz", "./imagesTs/hippocampus_054.nii.gz", "./imagesTs/hippocampus_129.nii.gz", "./imagesTs/hippocampus_029.nii.gz", "./imagesTs/hippocampus_392.nii.gz", "./imagesTs/hippocampus_191.nii.gz", "./imagesTs/hippocampus_183.nii.gz", "./imagesTs/hippocampus_357.nii.gz", "./imagesTs/hippocampus_202.nii.gz", "./imagesTs/hippocampus_273.nii.gz", "./imagesTs/hippocampus_255.nii.gz", "./imagesTs/hippocampus_081.nii.gz", "./imagesTs/hippocampus_247.nii.gz", "./imagesTs/hippocampus_347.nii.gz", "./imagesTs/hippocampus_324.nii.gz", "./imagesTs/hippocampus_271.nii.gz", "./imagesTs/hippocampus_371.nii.gz", "./imagesTs/hippocampus_312.nii.gz", "./imagesTs/hippocampus_200.nii.gz", "./imagesTs/hippocampus_103.nii.gz", "./imagesTs/hippocampus_072.nii.gz", "./imagesTs/hippocampus_111.nii.gz", "./imagesTs/hippocampus_139.nii.gz", "./imagesTs/hippocampus_027.nii.gz", "./imagesTs/hippocampus_382.nii.gz", "./imagesTs/hippocampus_069.nii.gz", "./imagesTs/hippocampus_018.nii.gz", "./imagesTs/hippocampus_118.nii.gz", "./imagesTs/hippocampus_030.nii.gz", "./imagesTs/hippocampus_153.nii.gz", "./imagesTs/hippocampus_122.nii.gz", "./imagesTs/hippocampus_022.nii.gz", "./imagesTs/hippocampus_196.nii.gz", "./imagesTs/hippocampus_342.nii.gz", "./imagesTs/hippocampus_278.nii.gz", "./imagesTs/hippocampus_266.nii.gz", "./imagesTs/hippocampus_209.nii.gz", "./imagesTs/hippocampus_198.nii.gz", "./imagesTs/hippocampus_186.nii.gz", "./imagesTs/hippocampus_240.nii.gz", "./imagesTs/hippocampus_323.nii.gz", "./imagesTs/hippocampus_315.nii.gz", "./imagesTs/hippocampus_364.nii.gz", "./imagesTs/hippocampus_307.nii.gz", "./imagesTs/hippocampus_167.nii.gz", "./imagesTs/hippocampus_079.nii.gz", "./imagesTs/hippocampus_179.nii.gz", "./imagesTs/hippocampus_116.nii.gz", "./imagesTs/hippocampus_016.nii.gz", "./imagesTs/hippocampus_043.nii.gz", "./imagesTs/hippocampus_120.nii.gz", "./imagesTs/hippocampus_151.nii.gz", "./imagesTs/hippocampus_285.nii.gz", "./imagesTs/hippocampus_272.nii.gz", "./imagesTs/hippocampus_211.nii.gz", "./imagesTs/hippocampus_339.nii.gz", "./imagesTs/hippocampus_239.nii.gz", "./imagesTs/hippocampus_344.nii.gz", "./imagesTs/hippocampus_256.nii.gz", "./imagesTs/hippocampus_082.nii.gz", "./imagesTs/hippocampus_182.nii.gz", "./imagesTs/hippocampus_348.nii.gz", "./imagesTs/hippocampus_028.nii.gz", "./imagesTs/hippocampus_128.nii.gz", "./imagesTs/hippocampus_055.nii.gz", "./imagesTs/hippocampus_281.nii.gz", "./imagesTs/hippocampus_147.nii.gz", "./imagesTs/hippocampus_047.nii.gz", "./imagesTs/hippocampus_293.nii.gz", "./imagesTs/hippocampus_159.nii.gz", "./imagesTs/hippocampus_059.nii.gz", "./imagesTs/hippocampus_071.nii.gz", "./imagesTs/hippocampus_112.nii.gz", "./imagesTs/hippocampus_012.nii.gz", "./imagesTs/hippocampus_063.nii.gz", "./imagesTs/hippocampus_100.nii.gz", "./imagesTs/hippocampus_391.nii.gz", "./imagesTs/hippocampus_291.nii.gz", "./imagesTs/hippocampus_283.nii.gz", "./imagesTs/hippocampus_134.nii.gz", "./imagesTs/hippocampus_002.nii.gz", "./imagesTs/hippocampus_061.nii.gz", "./imagesTs/hippocampus_110.nii.gz", "./imagesTs/hippocampus_010.nii.gz", "./imagesTs/hippocampus_073.nii.gz", "./imagesTs/hippocampus_313.nii.gz", "./imagesTs/hippocampus_213.nii.gz", "./imagesTs/hippocampus_270.nii.gz", "./imagesTs/hippocampus_201.nii.gz", "./imagesTs/hippocampus_262.nii.gz", "./imagesTs/hippocampus_362.nii.gz", "./imagesTs/hippocampus_080.nii.gz", "./imagesTs/hippocampus_237.nii.gz", "./imagesTs/hippocampus_254.nii.gz", "./imagesTs/hippocampus_192.nii.gz", "./imagesTs/hippocampus_258.nii.gz", "./imagesTs/hippocampus_346.nii.gz", "./imagesTs/hippocampus_246.nii.gz"], "validation_fold0": [{"image": "./imagesTr/hippocampus_017.nii.gz", "label": "./labelsTr/hippocampus_017.nii.gz"}, {"image": "./imagesTr/hippocampus_019.nii.gz", "label": "./labelsTr/hippocampus_019.nii.gz"}, {"image": "./imagesTr/hippocampus_033.nii.gz", "label": "./labelsTr/hippocampus_033.nii.gz"}, {"image": "./imagesTr/hippocampus_035.nii.gz", "label": "./labelsTr/hippocampus_035.nii.gz"}, {"image": "./imagesTr/hippocampus_037.nii.gz", "label": "./labelsTr/hippocampus_037.nii.gz"}, {"image": "./imagesTr/hippocampus_049.nii.gz", "label": "./labelsTr/hippocampus_049.nii.gz"}, {"image": "./imagesTr/hippocampus_052.nii.gz", "label": "./labelsTr/hippocampus_052.nii.gz"}, {"image": "./imagesTr/hippocampus_065.nii.gz", "label": "./labelsTr/hippocampus_065.nii.gz"}, {"image": "./imagesTr/hippocampus_083.nii.gz", "label": "./labelsTr/hippocampus_083.nii.gz"}, {"image": "./imagesTr/hippocampus_088.nii.gz", "label": "./labelsTr/hippocampus_088.nii.gz"}, {"image": "./imagesTr/hippocampus_090.nii.gz", "label": "./labelsTr/hippocampus_090.nii.gz"}, {"image": "./imagesTr/hippocampus_092.nii.gz", "label": "./labelsTr/hippocampus_092.nii.gz"}, {"image": "./imagesTr/hippocampus_095.nii.gz", "label": "./labelsTr/hippocampus_095.nii.gz"}, {"image": "./imagesTr/hippocampus_107.nii.gz", "label": "./labelsTr/hippocampus_107.nii.gz"}, {"image": "./imagesTr/hippocampus_108.nii.gz", "label": "./labelsTr/hippocampus_108.nii.gz"}, {"image": "./imagesTr/hippocampus_123.nii.gz", "label": "./labelsTr/hippocampus_123.nii.gz"}, {"image": "./imagesTr/hippocampus_125.nii.gz", "label": "./labelsTr/hippocampus_125.nii.gz"}, {"image": "./imagesTr/hippocampus_157.nii.gz", "label": "./labelsTr/hippocampus_157.nii.gz"}, {"image": "./imagesTr/hippocampus_164.nii.gz", "label": "./labelsTr/hippocampus_164.nii.gz"}, {"image": "./imagesTr/hippocampus_169.nii.gz", "label": "./labelsTr/hippocampus_169.nii.gz"}, {"image": "./imagesTr/hippocampus_175.nii.gz", "label": "./labelsTr/hippocampus_175.nii.gz"}, {"image": "./imagesTr/hippocampus_185.nii.gz", "label": "./labelsTr/hippocampus_185.nii.gz"}, {"image": "./imagesTr/hippocampus_190.nii.gz", "label": "./labelsTr/hippocampus_190.nii.gz"}, {"image": "./imagesTr/hippocampus_194.nii.gz", "label": "./labelsTr/hippocampus_194.nii.gz"}, {"image": "./imagesTr/hippocampus_204.nii.gz", "label": "./labelsTr/hippocampus_204.nii.gz"}, {"image": "./imagesTr/hippocampus_205.nii.gz", "label": "./labelsTr/hippocampus_205.nii.gz"}, {"image": "./imagesTr/hippocampus_210.nii.gz", "label": "./labelsTr/hippocampus_210.nii.gz"}, {"image": "./imagesTr/hippocampus_217.nii.gz", "label": "./labelsTr/hippocampus_217.nii.gz"}, {"image": "./imagesTr/hippocampus_219.nii.gz", "label": "./labelsTr/hippocampus_219.nii.gz"}, {"image": "./imagesTr/hippocampus_229.nii.gz", "label": "./labelsTr/hippocampus_229.nii.gz"}, {"image": "./imagesTr/hippocampus_244.nii.gz", "label": "./labelsTr/hippocampus_244.nii.gz"}, {"image": "./imagesTr/hippocampus_261.nii.gz", "label": "./labelsTr/hippocampus_261.nii.gz"}, {"image": "./imagesTr/hippocampus_264.nii.gz", "label": "./labelsTr/hippocampus_264.nii.gz"}, {"image": "./imagesTr/hippocampus_277.nii.gz", "label": "./labelsTr/hippocampus_277.nii.gz"}, {"image": "./imagesTr/hippocampus_280.nii.gz", "label": "./labelsTr/hippocampus_280.nii.gz"}, {"image": "./imagesTr/hippocampus_286.nii.gz", "label": "./labelsTr/hippocampus_286.nii.gz"}, {"image": "./imagesTr/hippocampus_288.nii.gz", "label": "./labelsTr/hippocampus_288.nii.gz"}, {"image": "./imagesTr/hippocampus_289.nii.gz", "label": "./labelsTr/hippocampus_289.nii.gz"}, {"image": "./imagesTr/hippocampus_296.nii.gz", "label": "./labelsTr/hippocampus_296.nii.gz"}, {"image": "./imagesTr/hippocampus_305.nii.gz", "label": "./labelsTr/hippocampus_305.nii.gz"}, {"image": "./imagesTr/hippocampus_308.nii.gz", "label": "./labelsTr/hippocampus_308.nii.gz"}, {"image": "./imagesTr/hippocampus_317.nii.gz", "label": "./labelsTr/hippocampus_317.nii.gz"}, {"image": "./imagesTr/hippocampus_327.nii.gz", "label": "./labelsTr/hippocampus_327.nii.gz"}, {"image": "./imagesTr/hippocampus_330.nii.gz", "label": "./labelsTr/hippocampus_330.nii.gz"}, {"image": "./imagesTr/hippocampus_332.nii.gz", "label": "./labelsTr/hippocampus_332.nii.gz"}, {"image": "./imagesTr/hippocampus_338.nii.gz", "label": "./labelsTr/hippocampus_338.nii.gz"}, {"image": "./imagesTr/hippocampus_349.nii.gz", "label": "./labelsTr/hippocampus_349.nii.gz"}, {"image": "./imagesTr/hippocampus_350.nii.gz", "label": "./labelsTr/hippocampus_350.nii.gz"}, {"image": "./imagesTr/hippocampus_356.nii.gz", "label": "./labelsTr/hippocampus_356.nii.gz"}, {"image": "./imagesTr/hippocampus_358.nii.gz", "label": "./labelsTr/hippocampus_358.nii.gz"}, {"image": "./imagesTr/hippocampus_374.nii.gz", "label": "./labelsTr/hippocampus_374.nii.gz"}, {"image": "./imagesTr/hippocampus_394.nii.gz", "label": "./labelsTr/hippocampus_394.nii.gz"}], "train_fold0": [{"image": "./imagesTr/hippocampus_001.nii.gz", "label": "./labelsTr/hippocampus_001.nii.gz"}, {"image": "./imagesTr/hippocampus_003.nii.gz", "label": "./labelsTr/hippocampus_003.nii.gz"}, {"image": "./imagesTr/hippocampus_004.nii.gz", "label": "./labelsTr/hippocampus_004.nii.gz"}, {"image": "./imagesTr/hippocampus_006.nii.gz", "label": "./labelsTr/hippocampus_006.nii.gz"}, {"image": "./imagesTr/hippocampus_007.nii.gz", "label": "./labelsTr/hippocampus_007.nii.gz"}, {"image": "./imagesTr/hippocampus_008.nii.gz", "label": "./labelsTr/hippocampus_008.nii.gz"}, {"image": "./imagesTr/hippocampus_011.nii.gz", "label": "./labelsTr/hippocampus_011.nii.gz"}, {"image": "./imagesTr/hippocampus_014.nii.gz", "label": "./labelsTr/hippocampus_014.nii.gz"}, {"image": "./imagesTr/hippocampus_015.nii.gz", "label": "./labelsTr/hippocampus_015.nii.gz"}, {"image": "./imagesTr/hippocampus_020.nii.gz", "label": "./labelsTr/hippocampus_020.nii.gz"}, {"image": "./imagesTr/hippocampus_023.nii.gz", "label": "./labelsTr/hippocampus_023.nii.gz"}, {"image": "./imagesTr/hippocampus_024.nii.gz", "label": "./labelsTr/hippocampus_024.nii.gz"}, {"image": "./imagesTr/hippocampus_025.nii.gz", "label": "./labelsTr/hippocampus_025.nii.gz"}, {"image": "./imagesTr/hippocampus_026.nii.gz", "label": "./labelsTr/hippocampus_026.nii.gz"}, {"image": "./imagesTr/hippocampus_034.nii.gz", "label": "./labelsTr/hippocampus_034.nii.gz"}, {"image": "./imagesTr/hippocampus_036.nii.gz", "label": "./labelsTr/hippocampus_036.nii.gz"}, {"image": "./imagesTr/hippocampus_038.nii.gz", "label": "./labelsTr/hippocampus_038.nii.gz"}, {"image": "./imagesTr/hippocampus_039.nii.gz", "label": "./labelsTr/hippocampus_039.nii.gz"}, {"image": "./imagesTr/hippocampus_040.nii.gz", "label": "./labelsTr/hippocampus_040.nii.gz"}, {"image": "./imagesTr/hippocampus_041.nii.gz", "label": "./labelsTr/hippocampus_041.nii.gz"}, {"image": "./imagesTr/hippocampus_042.nii.gz", "label": "./labelsTr/hippocampus_042.nii.gz"}, {"image": "./imagesTr/hippocampus_044.nii.gz", "label": "./labelsTr/hippocampus_044.nii.gz"}, {"image": "./imagesTr/hippocampus_045.nii.gz", "label": "./labelsTr/hippocampus_045.nii.gz"}, {"image": "./imagesTr/hippocampus_046.nii.gz", "label": "./labelsTr/hippocampus_046.nii.gz"}, {"image": "./imagesTr/hippocampus_048.nii.gz", "label": "./labelsTr/hippocampus_048.nii.gz"}, {"image": "./imagesTr/hippocampus_050.nii.gz", "label": "./labelsTr/hippocampus_050.nii.gz"}, {"image": "./imagesTr/hippocampus_051.nii.gz", "label": "./labelsTr/hippocampus_051.nii.gz"}, {"image": "./imagesTr/hippocampus_053.nii.gz", "label": "./labelsTr/hippocampus_053.nii.gz"}, {"image": "./imagesTr/hippocampus_056.nii.gz", "label": "./labelsTr/hippocampus_056.nii.gz"}, {"image": "./imagesTr/hippocampus_057.nii.gz", "label": "./labelsTr/hippocampus_057.nii.gz"}, {"image": "./imagesTr/hippocampus_058.nii.gz", "label": "./labelsTr/hippocampus_058.nii.gz"}, {"image": "./imagesTr/hippocampus_060.nii.gz", "label": "./labelsTr/hippocampus_060.nii.gz"}, {"image": "./imagesTr/hippocampus_064.nii.gz", "label": "./labelsTr/hippocampus_064.nii.gz"}, {"image": "./imagesTr/hippocampus_067.nii.gz", "label": "./labelsTr/hippocampus_067.nii.gz"}, {"image": "./imagesTr/hippocampus_068.nii.gz", "label": "./labelsTr/hippocampus_068.nii.gz"}, {"image": "./imagesTr/hippocampus_070.nii.gz", "label": "./labelsTr/hippocampus_070.nii.gz"}, {"image": "./imagesTr/hippocampus_074.nii.gz", "label": "./labelsTr/hippocampus_074.nii.gz"}, {"image": "./imagesTr/hippocampus_075.nii.gz", "label": "./labelsTr/hippocampus_075.nii.gz"}, {"image": "./imagesTr/hippocampus_077.nii.gz", "label": "./labelsTr/hippocampus_077.nii.gz"}, {"image": "./imagesTr/hippocampus_084.nii.gz", "label": "./labelsTr/hippocampus_084.nii.gz"}, {"image": "./imagesTr/hippocampus_087.nii.gz", "label": "./labelsTr/hippocampus_087.nii.gz"}, {"image": "./imagesTr/hippocampus_089.nii.gz", "label": "./labelsTr/hippocampus_089.nii.gz"}, {"image": "./imagesTr/hippocampus_091.nii.gz", "label": "./labelsTr/hippocampus_091.nii.gz"}, {"image": "./imagesTr/hippocampus_093.nii.gz", "label": "./labelsTr/hippocampus_093.nii.gz"}, {"image": "./imagesTr/hippocampus_094.nii.gz", "label": "./labelsTr/hippocampus_094.nii.gz"}, {"image": "./imagesTr/hippocampus_096.nii.gz", "label": "./labelsTr/hippocampus_096.nii.gz"}, {"image": "./imagesTr/hippocampus_097.nii.gz", "label": "./labelsTr/hippocampus_097.nii.gz"}, {"image": "./imagesTr/hippocampus_098.nii.gz", "label": "./labelsTr/hippocampus_098.nii.gz"}, {"image": "./imagesTr/hippocampus_099.nii.gz", "label": "./labelsTr/hippocampus_099.nii.gz"}, {"image": "./imagesTr/hippocampus_101.nii.gz", "label": "./labelsTr/hippocampus_101.nii.gz"}, {"image": "./imagesTr/hippocampus_102.nii.gz", "label": "./labelsTr/hippocampus_102.nii.gz"}, {"image": "./imagesTr/hippocampus_104.nii.gz", "label": "./labelsTr/hippocampus_104.nii.gz"}, {"image": "./imagesTr/hippocampus_105.nii.gz", "label": "./labelsTr/hippocampus_105.nii.gz"}, {"image": "./imagesTr/hippocampus_106.nii.gz", "label": "./labelsTr/hippocampus_106.nii.gz"}, {"image": "./imagesTr/hippocampus_109.nii.gz", "label": "./labelsTr/hippocampus_109.nii.gz"}, {"image": "./imagesTr/hippocampus_114.nii.gz", "label": "./labelsTr/hippocampus_114.nii.gz"}, {"image": "./imagesTr/hippocampus_124.nii.gz", "label": "./labelsTr/hippocampus_124.nii.gz"}, {"image": "./imagesTr/hippocampus_126.nii.gz", "label": "./labelsTr/hippocampus_126.nii.gz"}, {"image": "./imagesTr/hippocampus_127.nii.gz", "label": "./labelsTr/hippocampus_127.nii.gz"}, {"image": "./imagesTr/hippocampus_130.nii.gz", "label": "./labelsTr/hippocampus_130.nii.gz"}, {"image": "./imagesTr/hippocampus_132.nii.gz", "label": "./labelsTr/hippocampus_132.nii.gz"}, {"image": "./imagesTr/hippocampus_133.nii.gz", "label": "./labelsTr/hippocampus_133.nii.gz"}, {"image": "./imagesTr/hippocampus_135.nii.gz", "label": "./labelsTr/hippocampus_135.nii.gz"}, {"image": "./imagesTr/hippocampus_136.nii.gz", "label": "./labelsTr/hippocampus_136.nii.gz"}, {"image": "./imagesTr/hippocampus_138.nii.gz", "label": "./labelsTr/hippocampus_138.nii.gz"}, {"image": "./imagesTr/hippocampus_141.nii.gz", "label": "./labelsTr/hippocampus_141.nii.gz"}, {"image": "./imagesTr/hippocampus_142.nii.gz", "label": "./labelsTr/hippocampus_142.nii.gz"}, {"image": "./imagesTr/hippocampus_143.nii.gz", "label": "./labelsTr/hippocampus_143.nii.gz"}, {"image": "./imagesTr/hippocampus_144.nii.gz", "label": "./labelsTr/hippocampus_144.nii.gz"}, {"image": "./imagesTr/hippocampus_145.nii.gz", "label": "./labelsTr/hippocampus_145.nii.gz"}, {"image": "./imagesTr/hippocampus_146.nii.gz", "label": "./labelsTr/hippocampus_146.nii.gz"}, {"image": "./imagesTr/hippocampus_148.nii.gz", "label": "./labelsTr/hippocampus_148.nii.gz"}, {"image": "./imagesTr/hippocampus_149.nii.gz", "label": "./labelsTr/hippocampus_149.nii.gz"}, {"image": "./imagesTr/hippocampus_150.nii.gz", "label": "./labelsTr/hippocampus_150.nii.gz"}, {"image": "./imagesTr/hippocampus_152.nii.gz", "label": "./labelsTr/hippocampus_152.nii.gz"}, {"image": "./imagesTr/hippocampus_154.nii.gz", "label": "./labelsTr/hippocampus_154.nii.gz"}, {"image": "./imagesTr/hippocampus_155.nii.gz", "label": "./labelsTr/hippocampus_155.nii.gz"}, {"image": "./imagesTr/hippocampus_156.nii.gz", "label": "./labelsTr/hippocampus_156.nii.gz"}, {"image": "./imagesTr/hippocampus_158.nii.gz", "label": "./labelsTr/hippocampus_158.nii.gz"}, {"image": "./imagesTr/hippocampus_160.nii.gz", "label": "./labelsTr/hippocampus_160.nii.gz"}, {"image": "./imagesTr/hippocampus_161.nii.gz", "label": "./labelsTr/hippocampus_161.nii.gz"}, {"image": "./imagesTr/hippocampus_162.nii.gz", "label": "./labelsTr/hippocampus_162.nii.gz"}, {"image": "./imagesTr/hippocampus_163.nii.gz", "label": "./labelsTr/hippocampus_163.nii.gz"}, {"image": "./imagesTr/hippocampus_165.nii.gz", "label": "./labelsTr/hippocampus_165.nii.gz"}, {"image": "./imagesTr/hippocampus_166.nii.gz", "label": "./labelsTr/hippocampus_166.nii.gz"}, {"image": "./imagesTr/hippocampus_170.nii.gz", "label": "./labelsTr/hippocampus_170.nii.gz"}, {"image": "./imagesTr/hippocampus_171.nii.gz", "label": "./labelsTr/hippocampus_171.nii.gz"}, {"image": "./imagesTr/hippocampus_172.nii.gz", "label": "./labelsTr/hippocampus_172.nii.gz"}, {"image": "./imagesTr/hippocampus_173.nii.gz", "label": "./labelsTr/hippocampus_173.nii.gz"}, {"image": "./imagesTr/hippocampus_174.nii.gz", "label": "./labelsTr/hippocampus_174.nii.gz"}, {"image": "./imagesTr/hippocampus_176.nii.gz", "label": "./labelsTr/hippocampus_176.nii.gz"}, {"image": "./imagesTr/hippocampus_177.nii.gz", "label": "./labelsTr/hippocampus_177.nii.gz"}, {"image": "./imagesTr/hippocampus_178.nii.gz", "label": "./labelsTr/hippocampus_178.nii.gz"}, {"image": "./imagesTr/hippocampus_180.nii.gz", "label": "./labelsTr/hippocampus_180.nii.gz"}, {"image": "./imagesTr/hippocampus_181.nii.gz", "label": "./labelsTr/hippocampus_181.nii.gz"}, {"image": "./imagesTr/hippocampus_184.nii.gz", "label": "./labelsTr/hippocampus_184.nii.gz"}, {"image": "./imagesTr/hippocampus_188.nii.gz", "label": "./labelsTr/hippocampus_188.nii.gz"}, {"image": "./imagesTr/hippocampus_189.nii.gz", "label": "./labelsTr/hippocampus_189.nii.gz"}, {"image": "./imagesTr/hippocampus_193.nii.gz", "label": "./labelsTr/hippocampus_193.nii.gz"}, {"image": "./imagesTr/hippocampus_195.nii.gz", "label": "./labelsTr/hippocampus_195.nii.gz"}, {"image": "./imagesTr/hippocampus_197.nii.gz", "label": "./labelsTr/hippocampus_197.nii.gz"}, {"image": "./imagesTr/hippocampus_199.nii.gz", "label": "./labelsTr/hippocampus_199.nii.gz"}, {"image": "./imagesTr/hippocampus_203.nii.gz", "label": "./labelsTr/hippocampus_203.nii.gz"}, {"image": "./imagesTr/hippocampus_207.nii.gz", "label": "./labelsTr/hippocampus_207.nii.gz"}, {"image": "./imagesTr/hippocampus_212.nii.gz", "label": "./labelsTr/hippocampus_212.nii.gz"}, {"image": "./imagesTr/hippocampus_215.nii.gz", "label": "./labelsTr/hippocampus_215.nii.gz"}, {"image": "./imagesTr/hippocampus_216.nii.gz", "label": "./labelsTr/hippocampus_216.nii.gz"}, {"image": "./imagesTr/hippocampus_220.nii.gz", "label": "./labelsTr/hippocampus_220.nii.gz"}, {"image": "./imagesTr/hippocampus_221.nii.gz", "label": "./labelsTr/hippocampus_221.nii.gz"}, {"image": "./imagesTr/hippocampus_222.nii.gz", "label": "./labelsTr/hippocampus_222.nii.gz"}, {"image": "./imagesTr/hippocampus_223.nii.gz", "label": "./labelsTr/hippocampus_223.nii.gz"}, {"image": "./imagesTr/hippocampus_224.nii.gz", "label": "./labelsTr/hippocampus_224.nii.gz"}, {"image": "./imagesTr/hippocampus_225.nii.gz", "label": "./labelsTr/hippocampus_225.nii.gz"}, {"image": "./imagesTr/hippocampus_226.nii.gz", "label": "./labelsTr/hippocampus_226.nii.gz"}, {"image": "./imagesTr/hippocampus_227.nii.gz", "label": "./labelsTr/hippocampus_227.nii.gz"}, {"image": "./imagesTr/hippocampus_228.nii.gz", "label": "./labelsTr/hippocampus_228.nii.gz"}, {"image": "./imagesTr/hippocampus_230.nii.gz", "label": "./labelsTr/hippocampus_230.nii.gz"}, {"image": "./imagesTr/hippocampus_231.nii.gz", "label": "./labelsTr/hippocampus_231.nii.gz"}, {"image": "./imagesTr/hippocampus_232.nii.gz", "label": "./labelsTr/hippocampus_232.nii.gz"}, {"image": "./imagesTr/hippocampus_233.nii.gz", "label": "./labelsTr/hippocampus_233.nii.gz"}, {"image": "./imagesTr/hippocampus_234.nii.gz", "label": "./labelsTr/hippocampus_234.nii.gz"}, {"image": "./imagesTr/hippocampus_235.nii.gz", "label": "./labelsTr/hippocampus_235.nii.gz"}, {"image": "./imagesTr/hippocampus_236.nii.gz", "label": "./labelsTr/hippocampus_236.nii.gz"}, {"image": "./imagesTr/hippocampus_238.nii.gz", "label": "./labelsTr/hippocampus_238.nii.gz"}, {"image": "./imagesTr/hippocampus_242.nii.gz", "label": "./labelsTr/hippocampus_242.nii.gz"}, {"image": "./imagesTr/hippocampus_243.nii.gz", "label": "./labelsTr/hippocampus_243.nii.gz"}, {"image": "./imagesTr/hippocampus_245.nii.gz", "label": "./labelsTr/hippocampus_245.nii.gz"}, {"image": "./imagesTr/hippocampus_248.nii.gz", "label": "./labelsTr/hippocampus_248.nii.gz"}, {"image": "./imagesTr/hippocampus_249.nii.gz", "label": "./labelsTr/hippocampus_249.nii.gz"}, {"image": "./imagesTr/hippocampus_250.nii.gz", "label": "./labelsTr/hippocampus_250.nii.gz"}, {"image": "./imagesTr/hippocampus_251.nii.gz", "label": "./labelsTr/hippocampus_251.nii.gz"}, {"image": "./imagesTr/hippocampus_252.nii.gz", "label": "./labelsTr/hippocampus_252.nii.gz"}, {"image": "./imagesTr/hippocampus_253.nii.gz", "label": "./labelsTr/hippocampus_253.nii.gz"}, {"image": "./imagesTr/hippocampus_257.nii.gz", "label": "./labelsTr/hippocampus_257.nii.gz"}, {"image": "./imagesTr/hippocampus_259.nii.gz", "label": "./labelsTr/hippocampus_259.nii.gz"}, {"image": "./imagesTr/hippocampus_260.nii.gz", "label": "./labelsTr/hippocampus_260.nii.gz"}, {"image": "./imagesTr/hippocampus_263.nii.gz", "label": "./labelsTr/hippocampus_263.nii.gz"}, {"image": "./imagesTr/hippocampus_265.nii.gz", "label": "./labelsTr/hippocampus_265.nii.gz"}, {"image": "./imagesTr/hippocampus_268.nii.gz", "label": "./labelsTr/hippocampus_268.nii.gz"}, {"image": "./imagesTr/hippocampus_269.nii.gz", "label": "./labelsTr/hippocampus_269.nii.gz"}, {"image": "./imagesTr/hippocampus_274.nii.gz", "label": "./labelsTr/hippocampus_274.nii.gz"}, {"image": "./imagesTr/hippocampus_276.nii.gz", "label": "./labelsTr/hippocampus_276.nii.gz"}, {"image": "./imagesTr/hippocampus_279.nii.gz", "label": "./labelsTr/hippocampus_279.nii.gz"}, {"image": "./imagesTr/hippocampus_282.nii.gz", "label": "./labelsTr/hippocampus_282.nii.gz"}, {"image": "./imagesTr/hippocampus_287.nii.gz", "label": "./labelsTr/hippocampus_287.nii.gz"}, {"image": "./imagesTr/hippocampus_290.nii.gz", "label": "./labelsTr/hippocampus_290.nii.gz"}, {"image": "./imagesTr/hippocampus_292.nii.gz", "label": "./labelsTr/hippocampus_292.nii.gz"}, {"image": "./imagesTr/hippocampus_294.nii.gz", "label": "./labelsTr/hippocampus_294.nii.gz"}, {"image": "./imagesTr/hippocampus_295.nii.gz", "label": "./labelsTr/hippocampus_295.nii.gz"}, {"image": "./imagesTr/hippocampus_297.nii.gz", "label": "./labelsTr/hippocampus_297.nii.gz"}, {"image": "./imagesTr/hippocampus_298.nii.gz", "label": "./labelsTr/hippocampus_298.nii.gz"}, {"image": "./imagesTr/hippocampus_299.nii.gz", "label": "./labelsTr/hippocampus_299.nii.gz"}, {"image": "./imagesTr/hippocampus_300.nii.gz", "label": "./labelsTr/hippocampus_300.nii.gz"}, {"image": "./imagesTr/hippocampus_301.nii.gz", "label": "./labelsTr/hippocampus_301.nii.gz"}, {"image": "./imagesTr/hippocampus_302.nii.gz", "label": "./labelsTr/hippocampus_302.nii.gz"}, {"image": "./imagesTr/hippocampus_303.nii.gz", "label": "./labelsTr/hippocampus_303.nii.gz"}, {"image": "./imagesTr/hippocampus_304.nii.gz", "label": "./labelsTr/hippocampus_304.nii.gz"}, {"image": "./imagesTr/hippocampus_309.nii.gz", "label": "./labelsTr/hippocampus_309.nii.gz"}, {"image": "./imagesTr/hippocampus_310.nii.gz", "label": "./labelsTr/hippocampus_310.nii.gz"}, {"image": "./imagesTr/hippocampus_311.nii.gz", "label": "./labelsTr/hippocampus_311.nii.gz"}, {"image": "./imagesTr/hippocampus_314.nii.gz", "label": "./labelsTr/hippocampus_314.nii.gz"}, {"image": "./imagesTr/hippocampus_316.nii.gz", "label": "./labelsTr/hippocampus_316.nii.gz"}, {"image": "./imagesTr/hippocampus_318.nii.gz", "label": "./labelsTr/hippocampus_318.nii.gz"}, {"image": "./imagesTr/hippocampus_319.nii.gz", "label": "./labelsTr/hippocampus_319.nii.gz"}, {"image": "./imagesTr/hippocampus_320.nii.gz", "label": "./labelsTr/hippocampus_320.nii.gz"}, {"image": "./imagesTr/hippocampus_321.nii.gz", "label": "./labelsTr/hippocampus_321.nii.gz"}, {"image": "./imagesTr/hippocampus_322.nii.gz", "label": "./labelsTr/hippocampus_322.nii.gz"}, {"image": "./imagesTr/hippocampus_325.nii.gz", "label": "./labelsTr/hippocampus_325.nii.gz"}, {"image": "./imagesTr/hippocampus_326.nii.gz", "label": "./labelsTr/hippocampus_326.nii.gz"}, {"image": "./imagesTr/hippocampus_328.nii.gz", "label": "./labelsTr/hippocampus_328.nii.gz"}, {"image": "./imagesTr/hippocampus_329.nii.gz", "label": "./labelsTr/hippocampus_329.nii.gz"}, {"image": "./imagesTr/hippocampus_331.nii.gz", "label": "./labelsTr/hippocampus_331.nii.gz"}, {"image": "./imagesTr/hippocampus_333.nii.gz", "label": "./labelsTr/hippocampus_333.nii.gz"}, {"image": "./imagesTr/hippocampus_334.nii.gz", "label": "./labelsTr/hippocampus_334.nii.gz"}, {"image": "./imagesTr/hippocampus_335.nii.gz", "label": "./labelsTr/hippocampus_335.nii.gz"}, {"image": "./imagesTr/hippocampus_336.nii.gz", "label": "./labelsTr/hippocampus_336.nii.gz"}, {"image": "./imagesTr/hippocampus_337.nii.gz", "label": "./labelsTr/hippocampus_337.nii.gz"}, {"image": "./imagesTr/hippocampus_340.nii.gz", "label": "./labelsTr/hippocampus_340.nii.gz"}, {"image": "./imagesTr/hippocampus_341.nii.gz", "label": "./labelsTr/hippocampus_341.nii.gz"}, {"image": "./imagesTr/hippocampus_343.nii.gz", "label": "./labelsTr/hippocampus_343.nii.gz"}, {"image": "./imagesTr/hippocampus_345.nii.gz", "label": "./labelsTr/hippocampus_345.nii.gz"}, {"image": "./imagesTr/hippocampus_351.nii.gz", "label": "./labelsTr/hippocampus_351.nii.gz"}, {"image": "./imagesTr/hippocampus_352.nii.gz", "label": "./labelsTr/hippocampus_352.nii.gz"}, {"image": "./imagesTr/hippocampus_353.nii.gz", "label": "./labelsTr/hippocampus_353.nii.gz"}, {"image": "./imagesTr/hippocampus_354.nii.gz", "label": "./labelsTr/hippocampus_354.nii.gz"}, {"image": "./imagesTr/hippocampus_355.nii.gz", "label": "./labelsTr/hippocampus_355.nii.gz"}, {"image": "./imagesTr/hippocampus_359.nii.gz", "label": "./labelsTr/hippocampus_359.nii.gz"}, {"image": "./imagesTr/hippocampus_360.nii.gz", "label": "./labelsTr/hippocampus_360.nii.gz"}, {"image": "./imagesTr/hippocampus_361.nii.gz", "label": "./labelsTr/hippocampus_361.nii.gz"}, {"image": "./imagesTr/hippocampus_363.nii.gz", "label": "./labelsTr/hippocampus_363.nii.gz"}, {"image": "./imagesTr/hippocampus_366.nii.gz", "label": "./labelsTr/hippocampus_366.nii.gz"}, {"image": "./imagesTr/hippocampus_367.nii.gz", "label": "./labelsTr/hippocampus_367.nii.gz"}, {"image": "./imagesTr/hippocampus_368.nii.gz", "label": "./labelsTr/hippocampus_368.nii.gz"}, {"image": "./imagesTr/hippocampus_370.nii.gz", "label": "./labelsTr/hippocampus_370.nii.gz"}, {"image": "./imagesTr/hippocampus_372.nii.gz", "label": "./labelsTr/hippocampus_372.nii.gz"}, {"image": "./imagesTr/hippocampus_373.nii.gz", "label": "./labelsTr/hippocampus_373.nii.gz"}, {"image": "./imagesTr/hippocampus_375.nii.gz", "label": "./labelsTr/hippocampus_375.nii.gz"}, {"image": "./imagesTr/hippocampus_376.nii.gz", "label": "./labelsTr/hippocampus_376.nii.gz"}, {"image": "./imagesTr/hippocampus_378.nii.gz", "label": "./labelsTr/hippocampus_378.nii.gz"}, {"image": "./imagesTr/hippocampus_380.nii.gz", "label": "./labelsTr/hippocampus_380.nii.gz"}, {"image": "./imagesTr/hippocampus_381.nii.gz", "label": "./labelsTr/hippocampus_381.nii.gz"}, {"image": "./imagesTr/hippocampus_383.nii.gz", "label": "./labelsTr/hippocampus_383.nii.gz"}, {"image": "./imagesTr/hippocampus_385.nii.gz", "label": "./labelsTr/hippocampus_385.nii.gz"}, {"image": "./imagesTr/hippocampus_386.nii.gz", "label": "./labelsTr/hippocampus_386.nii.gz"}, {"image": "./imagesTr/hippocampus_387.nii.gz", "label": "./labelsTr/hippocampus_387.nii.gz"}, {"image": "./imagesTr/hippocampus_389.nii.gz", "label": "./labelsTr/hippocampus_389.nii.gz"}, {"image": "./imagesTr/hippocampus_390.nii.gz", "label": "./labelsTr/hippocampus_390.nii.gz"}, {"image": "./imagesTr/hippocampus_393.nii.gz", "label": "./labelsTr/hippocampus_393.nii.gz"}], "validation_fold1": [{"image": "./imagesTr/hippocampus_003.nii.gz", "label": "./labelsTr/hippocampus_003.nii.gz"}, {"image": "./imagesTr/hippocampus_025.nii.gz", "label": "./labelsTr/hippocampus_025.nii.gz"}, {"image": "./imagesTr/hippocampus_026.nii.gz", "label": "./labelsTr/hippocampus_026.nii.gz"}, {"image": "./imagesTr/hippocampus_034.nii.gz", "label": "./labelsTr/hippocampus_034.nii.gz"}, {"image": "./imagesTr/hippocampus_036.nii.gz", "label": "./labelsTr/hippocampus_036.nii.gz"}, {"image": "./imagesTr/hippocampus_044.nii.gz", "label": "./labelsTr/hippocampus_044.nii.gz"}, {"image": "./imagesTr/hippocampus_045.nii.gz", "label": "./labelsTr/hippocampus_045.nii.gz"}, {"image": "./imagesTr/hippocampus_064.nii.gz", "label": "./labelsTr/hippocampus_064.nii.gz"}, {"image": "./imagesTr/hippocampus_087.nii.gz", "label": "./labelsTr/hippocampus_087.nii.gz"}, {"image": "./imagesTr/hippocampus_093.nii.gz", "label": "./labelsTr/hippocampus_093.nii.gz"}, {"image": "./imagesTr/hippocampus_094.nii.gz", "label": "./labelsTr/hippocampus_094.nii.gz"}, {"image": "./imagesTr/hippocampus_106.nii.gz", "label": "./labelsTr/hippocampus_106.nii.gz"}, {"image": "./imagesTr/hippocampus_114.nii.gz", "label": "./labelsTr/hippocampus_114.nii.gz"}, {"image": "./imagesTr/hippocampus_144.nii.gz", "label": "./labelsTr/hippocampus_144.nii.gz"}, {"image": "./imagesTr/hippocampus_149.nii.gz", "label": "./labelsTr/hippocampus_149.nii.gz"}, {"image": "./imagesTr/hippocampus_154.nii.gz", "label": "./labelsTr/hippocampus_154.nii.gz"}, {"image": "./imagesTr/hippocampus_155.nii.gz", "label": "./labelsTr/hippocampus_155.nii.gz"}, {"image": "./imagesTr/hippocampus_162.nii.gz", "label": "./labelsTr/hippocampus_162.nii.gz"}, {"image": "./imagesTr/hippocampus_163.nii.gz", "label": "./labelsTr/hippocampus_163.nii.gz"}, {"image": "./imagesTr/hippocampus_166.nii.gz", "label": "./labelsTr/hippocampus_166.nii.gz"}, {"image": "./imagesTr/hippocampus_171.nii.gz", "label": "./labelsTr/hippocampus_171.nii.gz"}, {"image": "./imagesTr/hippocampus_177.nii.gz", "label": "./labelsTr/hippocampus_177.nii.gz"}, {"image": "./imagesTr/hippocampus_203.nii.gz", "label": "./labelsTr/hippocampus_203.nii.gz"}, {"image": "./imagesTr/hippocampus_215.nii.gz", "label": "./labelsTr/hippocampus_215.nii.gz"}, {"image": "./imagesTr/hippocampus_223.nii.gz", "label": "./labelsTr/hippocampus_223.nii.gz"}, {"image": "./imagesTr/hippocampus_228.nii.gz", "label": "./labelsTr/hippocampus_228.nii.gz"}, {"image": "./imagesTr/hippocampus_231.nii.gz", "label": "./labelsTr/hippocampus_231.nii.gz"}, {"image": "./imagesTr/hippocampus_234.nii.gz", "label": "./labelsTr/hippocampus_234.nii.gz"}, {"image": "./imagesTr/hippocampus_235.nii.gz", "label": "./labelsTr/hippocampus_235.nii.gz"}, {"image": "./imagesTr/hippocampus_236.nii.gz", "label": "./labelsTr/hippocampus_236.nii.gz"}, {"image": "./imagesTr/hippocampus_238.nii.gz", "label": "./labelsTr/hippocampus_238.nii.gz"}, {"image": "./imagesTr/hippocampus_245.nii.gz", "label": "./labelsTr/hippocampus_245.nii.gz"}, {"image": "./imagesTr/hippocampus_250.nii.gz", "label": "./labelsTr/hippocampus_250.nii.gz"}, {"image": "./imagesTr/hippocampus_263.nii.gz", "label": "./labelsTr/hippocampus_263.nii.gz"}, {"image": "./imagesTr/hippocampus_274.nii.gz", "label": "./labelsTr/hippocampus_274.nii.gz"}, {"image": "./imagesTr/hippocampus_287.nii.gz", "label": "./labelsTr/hippocampus_287.nii.gz"}, {"image": "./imagesTr/hippocampus_295.nii.gz", "label": "./labelsTr/hippocampus_295.nii.gz"}, {"image": "./imagesTr/hippocampus_299.nii.gz", "label": "./labelsTr/hippocampus_299.nii.gz"}, {"image": "./imagesTr/hippocampus_300.nii.gz", "label": "./labelsTr/hippocampus_300.nii.gz"}, {"image": "./imagesTr/hippocampus_309.nii.gz", "label": "./labelsTr/hippocampus_309.nii.gz"}, {"image": "./imagesTr/hippocampus_316.nii.gz", "label": "./labelsTr/hippocampus_316.nii.gz"}, {"image": "./imagesTr/hippocampus_321.nii.gz", "label": "./labelsTr/hippocampus_321.nii.gz"}, {"image": "./imagesTr/hippocampus_328.nii.gz", "label": "./labelsTr/hippocampus_328.nii.gz"}, {"image": "./imagesTr/hippocampus_329.nii.gz", "label": "./labelsTr/hippocampus_329.nii.gz"}, {"image": "./imagesTr/hippocampus_336.nii.gz", "label": "./labelsTr/hippocampus_336.nii.gz"}, {"image": "./imagesTr/hippocampus_337.nii.gz", "label": "./labelsTr/hippocampus_337.nii.gz"}, {"image": "./imagesTr/hippocampus_345.nii.gz", "label": "./labelsTr/hippocampus_345.nii.gz"}, {"image": "./imagesTr/hippocampus_351.nii.gz", "label": "./labelsTr/hippocampus_351.nii.gz"}, {"image": "./imagesTr/hippocampus_352.nii.gz", "label": "./labelsTr/hippocampus_352.nii.gz"}, {"image": "./imagesTr/hippocampus_354.nii.gz", "label": "./labelsTr/hippocampus_354.nii.gz"}, {"image": "./imagesTr/hippocampus_355.nii.gz", "label": "./labelsTr/hippocampus_355.nii.gz"}, {"image": "./imagesTr/hippocampus_360.nii.gz", "label": "./labelsTr/hippocampus_360.nii.gz"}], "train_fold1": [{"image": "./imagesTr/hippocampus_001.nii.gz", "label": "./labelsTr/hippocampus_001.nii.gz"}, {"image": "./imagesTr/hippocampus_004.nii.gz", "label": "./labelsTr/hippocampus_004.nii.gz"}, {"image": "./imagesTr/hippocampus_006.nii.gz", "label": "./labelsTr/hippocampus_006.nii.gz"}, {"image": "./imagesTr/hippocampus_007.nii.gz", "label": "./labelsTr/hippocampus_007.nii.gz"}, {"image": "./imagesTr/hippocampus_008.nii.gz", "label": "./labelsTr/hippocampus_008.nii.gz"}, {"image": "./imagesTr/hippocampus_011.nii.gz", "label": "./labelsTr/hippocampus_011.nii.gz"}, {"image": "./imagesTr/hippocampus_014.nii.gz", "label": "./labelsTr/hippocampus_014.nii.gz"}, {"image": "./imagesTr/hippocampus_015.nii.gz", "label": "./labelsTr/hippocampus_015.nii.gz"}, {"image": "./imagesTr/hippocampus_017.nii.gz", "label": "./labelsTr/hippocampus_017.nii.gz"}, {"image": "./imagesTr/hippocampus_019.nii.gz", "label": "./labelsTr/hippocampus_019.nii.gz"}, {"image": "./imagesTr/hippocampus_020.nii.gz", "label": "./labelsTr/hippocampus_020.nii.gz"}, {"image": "./imagesTr/hippocampus_023.nii.gz", "label": "./labelsTr/hippocampus_023.nii.gz"}, {"image": "./imagesTr/hippocampus_024.nii.gz", "label": "./labelsTr/hippocampus_024.nii.gz"}, {"image": "./imagesTr/hippocampus_033.nii.gz", "label": "./labelsTr/hippocampus_033.nii.gz"}, {"image": "./imagesTr/hippocampus_035.nii.gz", "label": "./labelsTr/hippocampus_035.nii.gz"}, {"image": "./imagesTr/hippocampus_037.nii.gz", "label": "./labelsTr/hippocampus_037.nii.gz"}, {"image": "./imagesTr/hippocampus_038.nii.gz", "label": "./labelsTr/hippocampus_038.nii.gz"}, {"image": "./imagesTr/hippocampus_039.nii.gz", "label": "./labelsTr/hippocampus_039.nii.gz"}, {"image": "./imagesTr/hippocampus_040.nii.gz", "label": "./labelsTr/hippocampus_040.nii.gz"}, {"image": "./imagesTr/hippocampus_041.nii.gz", "label": "./labelsTr/hippocampus_041.nii.gz"}, {"image": "./imagesTr/hippocampus_042.nii.gz", "label": "./labelsTr/hippocampus_042.nii.gz"}, {"image": "./imagesTr/hippocampus_046.nii.gz", "label": "./labelsTr/hippocampus_046.nii.gz"}, {"image": "./imagesTr/hippocampus_048.nii.gz", "label": "./labelsTr/hippocampus_048.nii.gz"}, {"image": "./imagesTr/hippocampus_049.nii.gz", "label": "./labelsTr/hippocampus_049.nii.gz"}, {"image": "./imagesTr/hippocampus_050.nii.gz", "label": "./labelsTr/hippocampus_050.nii.gz"}, {"image": "./imagesTr/hippocampus_051.nii.gz", "label": "./labelsTr/hippocampus_051.nii.gz"}, {"image": "./imagesTr/hippocampus_052.nii.gz", "label": "./labelsTr/hippocampus_052.nii.gz"}, {"image": "./imagesTr/hippocampus_053.nii.gz", "label": "./labelsTr/hippocampus_053.nii.gz"}, {"image": "./imagesTr/hippocampus_056.nii.gz", "label": "./labelsTr/hippocampus_056.nii.gz"}, {"image": "./imagesTr/hippocampus_057.nii.gz", "label": "./labelsTr/hippocampus_057.nii.gz"}, {"image": "./imagesTr/hippocampus_058.nii.gz", "label": "./labelsTr/hippocampus_058.nii.gz"}, {"image": "./imagesTr/hippocampus_060.nii.gz", "label": "./labelsTr/hippocampus_060.nii.gz"}, {"image": "./imagesTr/hippocampus_065.nii.gz", "label": "./labelsTr/hippocampus_065.nii.gz"}, {"image": "./imagesTr/hippocampus_067.nii.gz", "label": "./labelsTr/hippocampus_067.nii.gz"}, {"image": "./imagesTr/hippocampus_068.nii.gz", "label": "./labelsTr/hippocampus_068.nii.gz"}, {"image": "./imagesTr/hippocampus_070.nii.gz", "label": "./labelsTr/hippocampus_070.nii.gz"}, {"image": "./imagesTr/hippocampus_074.nii.gz", "label": "./labelsTr/hippocampus_074.nii.gz"}, {"image": "./imagesTr/hippocampus_075.nii.gz", "label": "./labelsTr/hippocampus_075.nii.gz"}, {"image": "./imagesTr/hippocampus_077.nii.gz", "label": "./labelsTr/hippocampus_077.nii.gz"}, {"image": "./imagesTr/hippocampus_083.nii.gz", "label": "./labelsTr/hippocampus_083.nii.gz"}, {"image": "./imagesTr/hippocampus_084.nii.gz", "label": "./labelsTr/hippocampus_084.nii.gz"}, {"image": "./imagesTr/hippocampus_088.nii.gz", "label": "./labelsTr/hippocampus_088.nii.gz"}, {"image": "./imagesTr/hippocampus_089.nii.gz", "label": "./labelsTr/hippocampus_089.nii.gz"}, {"image": "./imagesTr/hippocampus_090.nii.gz", "label": "./labelsTr/hippocampus_090.nii.gz"}, {"image": "./imagesTr/hippocampus_091.nii.gz", "label": "./labelsTr/hippocampus_091.nii.gz"}, {"image": "./imagesTr/hippocampus_092.nii.gz", "label": "./labelsTr/hippocampus_092.nii.gz"}, {"image": "./imagesTr/hippocampus_095.nii.gz", "label": "./labelsTr/hippocampus_095.nii.gz"}, {"image": "./imagesTr/hippocampus_096.nii.gz", "label": "./labelsTr/hippocampus_096.nii.gz"}, {"image": "./imagesTr/hippocampus_097.nii.gz", "label": "./labelsTr/hippocampus_097.nii.gz"}, {"image": "./imagesTr/hippocampus_098.nii.gz", "label": "./labelsTr/hippocampus_098.nii.gz"}, {"image": "./imagesTr/hippocampus_099.nii.gz", "label": "./labelsTr/hippocampus_099.nii.gz"}, {"image": "./imagesTr/hippocampus_101.nii.gz", "label": "./labelsTr/hippocampus_101.nii.gz"}, {"image": "./imagesTr/hippocampus_102.nii.gz", "label": "./labelsTr/hippocampus_102.nii.gz"}, {"image": "./imagesTr/hippocampus_104.nii.gz", "label": "./labelsTr/hippocampus_104.nii.gz"}, {"image": "./imagesTr/hippocampus_105.nii.gz", "label": "./labelsTr/hippocampus_105.nii.gz"}, {"image": "./imagesTr/hippocampus_107.nii.gz", "label": "./labelsTr/hippocampus_107.nii.gz"}, {"image": "./imagesTr/hippocampus_108.nii.gz", "label": "./labelsTr/hippocampus_108.nii.gz"}, {"image": "./imagesTr/hippocampus_109.nii.gz", "label": "./labelsTr/hippocampus_109.nii.gz"}, {"image": "./imagesTr/hippocampus_123.nii.gz", "label": "./labelsTr/hippocampus_123.nii.gz"}, {"image": "./imagesTr/hippocampus_124.nii.gz", "label": "./labelsTr/hippocampus_124.nii.gz"}, {"image": "./imagesTr/hippocampus_125.nii.gz", "label": "./labelsTr/hippocampus_125.nii.gz"}, {"image": "./imagesTr/hippocampus_126.nii.gz", "label": "./labelsTr/hippocampus_126.nii.gz"}, {"image": "./imagesTr/hippocampus_127.nii.gz", "label": "./labelsTr/hippocampus_127.nii.gz"}, {"image": "./imagesTr/hippocampus_130.nii.gz", "label": "./labelsTr/hippocampus_130.nii.gz"}, {"image": "./imagesTr/hippocampus_132.nii.gz", "label": "./labelsTr/hippocampus_132.nii.gz"}, {"image": "./imagesTr/hippocampus_133.nii.gz", "label": "./labelsTr/hippocampus_133.nii.gz"}, {"image": "./imagesTr/hippocampus_135.nii.gz", "label": "./labelsTr/hippocampus_135.nii.gz"}, {"image": "./imagesTr/hippocampus_136.nii.gz", "label": "./labelsTr/hippocampus_136.nii.gz"}, {"image": "./imagesTr/hippocampus_138.nii.gz", "label": "./labelsTr/hippocampus_138.nii.gz"}, {"image": "./imagesTr/hippocampus_141.nii.gz", "label": "./labelsTr/hippocampus_141.nii.gz"}, {"image": "./imagesTr/hippocampus_142.nii.gz", "label": "./labelsTr/hippocampus_142.nii.gz"}, {"image": "./imagesTr/hippocampus_143.nii.gz", "label": "./labelsTr/hippocampus_143.nii.gz"}, {"image": "./imagesTr/hippocampus_145.nii.gz", "label": "./labelsTr/hippocampus_145.nii.gz"}, {"image": "./imagesTr/hippocampus_146.nii.gz", "label": "./labelsTr/hippocampus_146.nii.gz"}, {"image": "./imagesTr/hippocampus_148.nii.gz", "label": "./labelsTr/hippocampus_148.nii.gz"}, {"image": "./imagesTr/hippocampus_150.nii.gz", "label": "./labelsTr/hippocampus_150.nii.gz"}, {"image": "./imagesTr/hippocampus_152.nii.gz", "label": "./labelsTr/hippocampus_152.nii.gz"}, {"image": "./imagesTr/hippocampus_156.nii.gz", "label": "./labelsTr/hippocampus_156.nii.gz"}, {"image": "./imagesTr/hippocampus_157.nii.gz", "label": "./labelsTr/hippocampus_157.nii.gz"}, {"image": "./imagesTr/hippocampus_158.nii.gz", "label": "./labelsTr/hippocampus_158.nii.gz"}, {"image": "./imagesTr/hippocampus_160.nii.gz", "label": "./labelsTr/hippocampus_160.nii.gz"}, {"image": "./imagesTr/hippocampus_161.nii.gz", "label": "./labelsTr/hippocampus_161.nii.gz"}, {"image": "./imagesTr/hippocampus_164.nii.gz", "label": "./labelsTr/hippocampus_164.nii.gz"}, {"image": "./imagesTr/hippocampus_165.nii.gz", "label": "./labelsTr/hippocampus_165.nii.gz"}, {"image": "./imagesTr/hippocampus_169.nii.gz", "label": "./labelsTr/hippocampus_169.nii.gz"}, {"image": "./imagesTr/hippocampus_170.nii.gz", "label": "./labelsTr/hippocampus_170.nii.gz"}, {"image": "./imagesTr/hippocampus_172.nii.gz", "label": "./labelsTr/hippocampus_172.nii.gz"}, {"image": "./imagesTr/hippocampus_173.nii.gz", "label": "./labelsTr/hippocampus_173.nii.gz"}, {"image": "./imagesTr/hippocampus_174.nii.gz", "label": "./labelsTr/hippocampus_174.nii.gz"}, {"image": "./imagesTr/hippocampus_175.nii.gz", "label": "./labelsTr/hippocampus_175.nii.gz"}, {"image": "./imagesTr/hippocampus_176.nii.gz", "label": "./labelsTr/hippocampus_176.nii.gz"}, {"image": "./imagesTr/hippocampus_178.nii.gz", "label": "./labelsTr/hippocampus_178.nii.gz"}, {"image": "./imagesTr/hippocampus_180.nii.gz", "label": "./labelsTr/hippocampus_180.nii.gz"}, {"image": "./imagesTr/hippocampus_181.nii.gz", "label": "./labelsTr/hippocampus_181.nii.gz"}, {"image": "./imagesTr/hippocampus_184.nii.gz", "label": "./labelsTr/hippocampus_184.nii.gz"}, {"image": "./imagesTr/hippocampus_185.nii.gz", "label": "./labelsTr/hippocampus_185.nii.gz"}, {"image": "./imagesTr/hippocampus_188.nii.gz", "label": "./labelsTr/hippocampus_188.nii.gz"}, {"image": "./imagesTr/hippocampus_189.nii.gz", "label": "./labelsTr/hippocampus_189.nii.gz"}, {"image": "./imagesTr/hippocampus_190.nii.gz", "label": "./labelsTr/hippocampus_190.nii.gz"}, {"image": "./imagesTr/hippocampus_193.nii.gz", "label": "./labelsTr/hippocampus_193.nii.gz"}, {"image": "./imagesTr/hippocampus_194.nii.gz", "label": "./labelsTr/hippocampus_194.nii.gz"}, {"image": "./imagesTr/hippocampus_195.nii.gz", "label": "./labelsTr/hippocampus_195.nii.gz"}, {"image": "./imagesTr/hippocampus_197.nii.gz", "label": "./labelsTr/hippocampus_197.nii.gz"}, {"image": "./imagesTr/hippocampus_199.nii.gz", "label": "./labelsTr/hippocampus_199.nii.gz"}, {"image": "./imagesTr/hippocampus_204.nii.gz", "label": "./labelsTr/hippocampus_204.nii.gz"}, {"image": "./imagesTr/hippocampus_205.nii.gz", "label": "./labelsTr/hippocampus_205.nii.gz"}, {"image": "./imagesTr/hippocampus_207.nii.gz", "label": "./labelsTr/hippocampus_207.nii.gz"}, {"image": "./imagesTr/hippocampus_210.nii.gz", "label": "./labelsTr/hippocampus_210.nii.gz"}, {"image": "./imagesTr/hippocampus_212.nii.gz", "label": "./labelsTr/hippocampus_212.nii.gz"}, {"image": "./imagesTr/hippocampus_216.nii.gz", "label": "./labelsTr/hippocampus_216.nii.gz"}, {"image": "./imagesTr/hippocampus_217.nii.gz", "label": "./labelsTr/hippocampus_217.nii.gz"}, {"image": "./imagesTr/hippocampus_219.nii.gz", "label": "./labelsTr/hippocampus_219.nii.gz"}, {"image": "./imagesTr/hippocampus_220.nii.gz", "label": "./labelsTr/hippocampus_220.nii.gz"}, {"image": "./imagesTr/hippocampus_221.nii.gz", "label": "./labelsTr/hippocampus_221.nii.gz"}, {"image": "./imagesTr/hippocampus_222.nii.gz", "label": "./labelsTr/hippocampus_222.nii.gz"}, {"image": "./imagesTr/hippocampus_224.nii.gz", "label": "./labelsTr/hippocampus_224.nii.gz"}, {"image": "./imagesTr/hippocampus_225.nii.gz", "label": "./labelsTr/hippocampus_225.nii.gz"}, {"image": "./imagesTr/hippocampus_226.nii.gz", "label": "./labelsTr/hippocampus_226.nii.gz"}, {"image": "./imagesTr/hippocampus_227.nii.gz", "label": "./labelsTr/hippocampus_227.nii.gz"}, {"image": "./imagesTr/hippocampus_229.nii.gz", "label": "./labelsTr/hippocampus_229.nii.gz"}, {"image": "./imagesTr/hippocampus_230.nii.gz", "label": "./labelsTr/hippocampus_230.nii.gz"}, {"image": "./imagesTr/hippocampus_232.nii.gz", "label": "./labelsTr/hippocampus_232.nii.gz"}, {"image": "./imagesTr/hippocampus_233.nii.gz", "label": "./labelsTr/hippocampus_233.nii.gz"}, {"image": "./imagesTr/hippocampus_242.nii.gz", "label": "./labelsTr/hippocampus_242.nii.gz"}, {"image": "./imagesTr/hippocampus_243.nii.gz", "label": "./labelsTr/hippocampus_243.nii.gz"}, {"image": "./imagesTr/hippocampus_244.nii.gz", "label": "./labelsTr/hippocampus_244.nii.gz"}, {"image": "./imagesTr/hippocampus_248.nii.gz", "label": "./labelsTr/hippocampus_248.nii.gz"}, {"image": "./imagesTr/hippocampus_249.nii.gz", "label": "./labelsTr/hippocampus_249.nii.gz"}, {"image": "./imagesTr/hippocampus_251.nii.gz", "label": "./labelsTr/hippocampus_251.nii.gz"}, {"image": "./imagesTr/hippocampus_252.nii.gz", "label": "./labelsTr/hippocampus_252.nii.gz"}, {"image": "./imagesTr/hippocampus_253.nii.gz", "label": "./labelsTr/hippocampus_253.nii.gz"}, {"image": "./imagesTr/hippocampus_257.nii.gz", "label": "./labelsTr/hippocampus_257.nii.gz"}, {"image": "./imagesTr/hippocampus_259.nii.gz", "label": "./labelsTr/hippocampus_259.nii.gz"}, {"image": "./imagesTr/hippocampus_260.nii.gz", "label": "./labelsTr/hippocampus_260.nii.gz"}, {"image": "./imagesTr/hippocampus_261.nii.gz", "label": "./labelsTr/hippocampus_261.nii.gz"}, {"image": "./imagesTr/hippocampus_264.nii.gz", "label": "./labelsTr/hippocampus_264.nii.gz"}, {"image": "./imagesTr/hippocampus_265.nii.gz", "label": "./labelsTr/hippocampus_265.nii.gz"}, {"image": "./imagesTr/hippocampus_268.nii.gz", "label": "./labelsTr/hippocampus_268.nii.gz"}, {"image": "./imagesTr/hippocampus_269.nii.gz", "label": "./labelsTr/hippocampus_269.nii.gz"}, {"image": "./imagesTr/hippocampus_276.nii.gz", "label": "./labelsTr/hippocampus_276.nii.gz"}, {"image": "./imagesTr/hippocampus_277.nii.gz", "label": "./labelsTr/hippocampus_277.nii.gz"}, {"image": "./imagesTr/hippocampus_279.nii.gz", "label": "./labelsTr/hippocampus_279.nii.gz"}, {"image": "./imagesTr/hippocampus_280.nii.gz", "label": "./labelsTr/hippocampus_280.nii.gz"}, {"image": "./imagesTr/hippocampus_282.nii.gz", "label": "./labelsTr/hippocampus_282.nii.gz"}, {"image": "./imagesTr/hippocampus_286.nii.gz", "label": "./labelsTr/hippocampus_286.nii.gz"}, {"image": "./imagesTr/hippocampus_288.nii.gz", "label": "./labelsTr/hippocampus_288.nii.gz"}, {"image": "./imagesTr/hippocampus_289.nii.gz", "label": "./labelsTr/hippocampus_289.nii.gz"}, {"image": "./imagesTr/hippocampus_290.nii.gz", "label": "./labelsTr/hippocampus_290.nii.gz"}, {"image": "./imagesTr/hippocampus_292.nii.gz", "label": "./labelsTr/hippocampus_292.nii.gz"}, {"image": "./imagesTr/hippocampus_294.nii.gz", "label": "./labelsTr/hippocampus_294.nii.gz"}, {"image": "./imagesTr/hippocampus_296.nii.gz", "label": "./labelsTr/hippocampus_296.nii.gz"}, {"image": "./imagesTr/hippocampus_297.nii.gz", "label": "./labelsTr/hippocampus_297.nii.gz"}, {"image": "./imagesTr/hippocampus_298.nii.gz", "label": "./labelsTr/hippocampus_298.nii.gz"}, {"image": "./imagesTr/hippocampus_301.nii.gz", "label": "./labelsTr/hippocampus_301.nii.gz"}, {"image": "./imagesTr/hippocampus_302.nii.gz", "label": "./labelsTr/hippocampus_302.nii.gz"}, {"image": "./imagesTr/hippocampus_303.nii.gz", "label": "./labelsTr/hippocampus_303.nii.gz"}, {"image": "./imagesTr/hippocampus_304.nii.gz", "label": "./labelsTr/hippocampus_304.nii.gz"}, {"image": "./imagesTr/hippocampus_305.nii.gz", "label": "./labelsTr/hippocampus_305.nii.gz"}, {"image": "./imagesTr/hippocampus_308.nii.gz", "label": "./labelsTr/hippocampus_308.nii.gz"}, {"image": "./imagesTr/hippocampus_310.nii.gz", "label": "./labelsTr/hippocampus_310.nii.gz"}, {"image": "./imagesTr/hippocampus_311.nii.gz", "label": "./labelsTr/hippocampus_311.nii.gz"}, {"image": "./imagesTr/hippocampus_314.nii.gz", "label": "./labelsTr/hippocampus_314.nii.gz"}, {"image": "./imagesTr/hippocampus_317.nii.gz", "label": "./labelsTr/hippocampus_317.nii.gz"}, {"image": "./imagesTr/hippocampus_318.nii.gz", "label": "./labelsTr/hippocampus_318.nii.gz"}, {"image": "./imagesTr/hippocampus_319.nii.gz", "label": "./labelsTr/hippocampus_319.nii.gz"}, {"image": "./imagesTr/hippocampus_320.nii.gz", "label": "./labelsTr/hippocampus_320.nii.gz"}, {"image": "./imagesTr/hippocampus_322.nii.gz", "label": "./labelsTr/hippocampus_322.nii.gz"}, {"image": "./imagesTr/hippocampus_325.nii.gz", "label": "./labelsTr/hippocampus_325.nii.gz"}, {"image": "./imagesTr/hippocampus_326.nii.gz", "label": "./labelsTr/hippocampus_326.nii.gz"}, {"image": "./imagesTr/hippocampus_327.nii.gz", "label": "./labelsTr/hippocampus_327.nii.gz"}, {"image": "./imagesTr/hippocampus_330.nii.gz", "label": "./labelsTr/hippocampus_330.nii.gz"}, {"image": "./imagesTr/hippocampus_331.nii.gz", "label": "./labelsTr/hippocampus_331.nii.gz"}, {"image": "./imagesTr/hippocampus_332.nii.gz", "label": "./labelsTr/hippocampus_332.nii.gz"}, {"image": "./imagesTr/hippocampus_333.nii.gz", "label": "./labelsTr/hippocampus_333.nii.gz"}, {"image": "./imagesTr/hippocampus_334.nii.gz", "label": "./labelsTr/hippocampus_334.nii.gz"}, {"image": "./imagesTr/hippocampus_335.nii.gz", "label": "./labelsTr/hippocampus_335.nii.gz"}, {"image": "./imagesTr/hippocampus_338.nii.gz", "label": "./labelsTr/hippocampus_338.nii.gz"}, {"image": "./imagesTr/hippocampus_340.nii.gz", "label": "./labelsTr/hippocampus_340.nii.gz"}, {"image": "./imagesTr/hippocampus_341.nii.gz", "label": "./labelsTr/hippocampus_341.nii.gz"}, {"image": "./imagesTr/hippocampus_343.nii.gz", "label": "./labelsTr/hippocampus_343.nii.gz"}, {"image": "./imagesTr/hippocampus_349.nii.gz", "label": "./labelsTr/hippocampus_349.nii.gz"}, {"image": "./imagesTr/hippocampus_350.nii.gz", "label": "./labelsTr/hippocampus_350.nii.gz"}, {"image": "./imagesTr/hippocampus_353.nii.gz", "label": "./labelsTr/hippocampus_353.nii.gz"}, {"image": "./imagesTr/hippocampus_356.nii.gz", "label": "./labelsTr/hippocampus_356.nii.gz"}, {"image": "./imagesTr/hippocampus_358.nii.gz", "label": "./labelsTr/hippocampus_358.nii.gz"}, {"image": "./imagesTr/hippocampus_359.nii.gz", "label": "./labelsTr/hippocampus_359.nii.gz"}, {"image": "./imagesTr/hippocampus_361.nii.gz", "label": "./labelsTr/hippocampus_361.nii.gz"}, {"image": "./imagesTr/hippocampus_363.nii.gz", "label": "./labelsTr/hippocampus_363.nii.gz"}, {"image": "./imagesTr/hippocampus_366.nii.gz", "label": "./labelsTr/hippocampus_366.nii.gz"}, {"image": "./imagesTr/hippocampus_367.nii.gz", "label": "./labelsTr/hippocampus_367.nii.gz"}, {"image": "./imagesTr/hippocampus_368.nii.gz", "label": "./labelsTr/hippocampus_368.nii.gz"}, {"image": "./imagesTr/hippocampus_370.nii.gz", "label": "./labelsTr/hippocampus_370.nii.gz"}, {"image": "./imagesTr/hippocampus_372.nii.gz", "label": "./labelsTr/hippocampus_372.nii.gz"}, {"image": "./imagesTr/hippocampus_373.nii.gz", "label": "./labelsTr/hippocampus_373.nii.gz"}, {"image": "./imagesTr/hippocampus_374.nii.gz", "label": "./labelsTr/hippocampus_374.nii.gz"}, {"image": "./imagesTr/hippocampus_375.nii.gz", "label": "./labelsTr/hippocampus_375.nii.gz"}, {"image": "./imagesTr/hippocampus_376.nii.gz", "label": "./labelsTr/hippocampus_376.nii.gz"}, {"image": "./imagesTr/hippocampus_378.nii.gz", "label": "./labelsTr/hippocampus_378.nii.gz"}, {"image": "./imagesTr/hippocampus_380.nii.gz", "label": "./labelsTr/hippocampus_380.nii.gz"}, {"image": "./imagesTr/hippocampus_381.nii.gz", "label": "./labelsTr/hippocampus_381.nii.gz"}, {"image": "./imagesTr/hippocampus_383.nii.gz", "label": "./labelsTr/hippocampus_383.nii.gz"}, {"image": "./imagesTr/hippocampus_385.nii.gz", "label": "./labelsTr/hippocampus_385.nii.gz"}, {"image": "./imagesTr/hippocampus_386.nii.gz", "label": "./labelsTr/hippocampus_386.nii.gz"}, {"image": "./imagesTr/hippocampus_387.nii.gz", "label": "./labelsTr/hippocampus_387.nii.gz"}, {"image": "./imagesTr/hippocampus_389.nii.gz", "label": "./labelsTr/hippocampus_389.nii.gz"}, {"image": "./imagesTr/hippocampus_390.nii.gz", "label": "./labelsTr/hippocampus_390.nii.gz"}, {"image": "./imagesTr/hippocampus_393.nii.gz", "label": "./labelsTr/hippocampus_393.nii.gz"}, {"image": "./imagesTr/hippocampus_394.nii.gz", "label": "./labelsTr/hippocampus_394.nii.gz"}], "validation_fold2": [{"image": "./imagesTr/hippocampus_004.nii.gz", "label": "./labelsTr/hippocampus_004.nii.gz"}, {"image": "./imagesTr/hippocampus_007.nii.gz", "label": "./labelsTr/hippocampus_007.nii.gz"}, {"image": "./imagesTr/hippocampus_015.nii.gz", "label": "./labelsTr/hippocampus_015.nii.gz"}, {"image": "./imagesTr/hippocampus_024.nii.gz", "label": "./labelsTr/hippocampus_024.nii.gz"}, {"image": "./imagesTr/hippocampus_041.nii.gz", "label": "./labelsTr/hippocampus_041.nii.gz"}, {"image": "./imagesTr/hippocampus_042.nii.gz", "label": "./labelsTr/hippocampus_042.nii.gz"}, {"image": "./imagesTr/hippocampus_046.nii.gz", "label": "./labelsTr/hippocampus_046.nii.gz"}, {"image": "./imagesTr/hippocampus_056.nii.gz", "label": "./labelsTr/hippocampus_056.nii.gz"}, {"image": "./imagesTr/hippocampus_068.nii.gz", "label": "./labelsTr/hippocampus_068.nii.gz"}, {"image": "./imagesTr/hippocampus_074.nii.gz", "label": "./labelsTr/hippocampus_074.nii.gz"}, {"image": "./imagesTr/hippocampus_084.nii.gz", "label": "./labelsTr/hippocampus_084.nii.gz"}, {"image": "./imagesTr/hippocampus_089.nii.gz", "label": "./labelsTr/hippocampus_089.nii.gz"}, {"image": "./imagesTr/hippocampus_098.nii.gz", "label": "./labelsTr/hippocampus_098.nii.gz"}, {"image": "./imagesTr/hippocampus_099.nii.gz", "label": "./labelsTr/hippocampus_099.nii.gz"}, {"image": "./imagesTr/hippocampus_133.nii.gz", "label": "./labelsTr/hippocampus_133.nii.gz"}, {"image": "./imagesTr/hippocampus_135.nii.gz", "label": "./labelsTr/hippocampus_135.nii.gz"}, {"image": "./imagesTr/hippocampus_143.nii.gz", "label": "./labelsTr/hippocampus_143.nii.gz"}, {"image": "./imagesTr/hippocampus_145.nii.gz", "label": "./labelsTr/hippocampus_145.nii.gz"}, {"image": "./imagesTr/hippocampus_150.nii.gz", "label": "./labelsTr/hippocampus_150.nii.gz"}, {"image": "./imagesTr/hippocampus_156.nii.gz", "label": "./labelsTr/hippocampus_156.nii.gz"}, {"image": "./imagesTr/hippocampus_158.nii.gz", "label": "./labelsTr/hippocampus_158.nii.gz"}, {"image": "./imagesTr/hippocampus_161.nii.gz", "label": "./labelsTr/hippocampus_161.nii.gz"}, {"image": "./imagesTr/hippocampus_165.nii.gz", "label": "./labelsTr/hippocampus_165.nii.gz"}, {"image": "./imagesTr/hippocampus_174.nii.gz", "label": "./labelsTr/hippocampus_174.nii.gz"}, {"image": "./imagesTr/hippocampus_176.nii.gz", "label": "./labelsTr/hippocampus_176.nii.gz"}, {"image": "./imagesTr/hippocampus_199.nii.gz", "label": "./labelsTr/hippocampus_199.nii.gz"}, {"image": "./imagesTr/hippocampus_220.nii.gz", "label": "./labelsTr/hippocampus_220.nii.gz"}, {"image": "./imagesTr/hippocampus_221.nii.gz", "label": "./labelsTr/hippocampus_221.nii.gz"}, {"image": "./imagesTr/hippocampus_224.nii.gz", "label": "./labelsTr/hippocampus_224.nii.gz"}, {"image": "./imagesTr/hippocampus_225.nii.gz", "label": "./labelsTr/hippocampus_225.nii.gz"}, {"image": "./imagesTr/hippocampus_232.nii.gz", "label": "./labelsTr/hippocampus_232.nii.gz"}, {"image": "./imagesTr/hippocampus_251.nii.gz", "label": "./labelsTr/hippocampus_251.nii.gz"}, {"image": "./imagesTr/hippocampus_252.nii.gz", "label": "./labelsTr/hippocampus_252.nii.gz"}, {"image": "./imagesTr/hippocampus_257.nii.gz", "label": "./labelsTr/hippocampus_257.nii.gz"}, {"image": "./imagesTr/hippocampus_259.nii.gz", "label": "./labelsTr/hippocampus_259.nii.gz"}, {"image": "./imagesTr/hippocampus_265.nii.gz", "label": "./labelsTr/hippocampus_265.nii.gz"}, {"image": "./imagesTr/hippocampus_276.nii.gz", "label": "./labelsTr/hippocampus_276.nii.gz"}, {"image": "./imagesTr/hippocampus_279.nii.gz", "label": "./labelsTr/hippocampus_279.nii.gz"}, {"image": "./imagesTr/hippocampus_297.nii.gz", "label": "./labelsTr/hippocampus_297.nii.gz"}, {"image": "./imagesTr/hippocampus_302.nii.gz", "label": "./labelsTr/hippocampus_302.nii.gz"}, {"image": "./imagesTr/hippocampus_304.nii.gz", "label": "./labelsTr/hippocampus_304.nii.gz"}, {"image": "./imagesTr/hippocampus_311.nii.gz", "label": "./labelsTr/hippocampus_311.nii.gz"}, {"image": "./imagesTr/hippocampus_320.nii.gz", "label": "./labelsTr/hippocampus_320.nii.gz"}, {"image": "./imagesTr/hippocampus_325.nii.gz", "label": "./labelsTr/hippocampus_325.nii.gz"}, {"image": "./imagesTr/hippocampus_343.nii.gz", "label": "./labelsTr/hippocampus_343.nii.gz"}, {"image": "./imagesTr/hippocampus_366.nii.gz", "label": "./labelsTr/hippocampus_366.nii.gz"}, {"image": "./imagesTr/hippocampus_370.nii.gz", "label": "./labelsTr/hippocampus_370.nii.gz"}, {"image": "./imagesTr/hippocampus_372.nii.gz", "label": "./labelsTr/hippocampus_372.nii.gz"}, {"image": "./imagesTr/hippocampus_373.nii.gz", "label": "./labelsTr/hippocampus_373.nii.gz"}, {"image": "./imagesTr/hippocampus_378.nii.gz", "label": "./labelsTr/hippocampus_378.nii.gz"}, {"image": "./imagesTr/hippocampus_383.nii.gz", "label": "./labelsTr/hippocampus_383.nii.gz"}, {"image": "./imagesTr/hippocampus_387.nii.gz", "label": "./labelsTr/hippocampus_387.nii.gz"}], "train_fold2": [{"image": "./imagesTr/hippocampus_001.nii.gz", "label": "./labelsTr/hippocampus_001.nii.gz"}, {"image": "./imagesTr/hippocampus_003.nii.gz", "label": "./labelsTr/hippocampus_003.nii.gz"}, {"image": "./imagesTr/hippocampus_006.nii.gz", "label": "./labelsTr/hippocampus_006.nii.gz"}, {"image": "./imagesTr/hippocampus_008.nii.gz", "label": "./labelsTr/hippocampus_008.nii.gz"}, {"image": "./imagesTr/hippocampus_011.nii.gz", "label": "./labelsTr/hippocampus_011.nii.gz"}, {"image": "./imagesTr/hippocampus_014.nii.gz", "label": "./labelsTr/hippocampus_014.nii.gz"}, {"image": "./imagesTr/hippocampus_017.nii.gz", "label": "./labelsTr/hippocampus_017.nii.gz"}, {"image": "./imagesTr/hippocampus_019.nii.gz", "label": "./labelsTr/hippocampus_019.nii.gz"}, {"image": "./imagesTr/hippocampus_020.nii.gz", "label": "./labelsTr/hippocampus_020.nii.gz"}, {"image": "./imagesTr/hippocampus_023.nii.gz", "label": "./labelsTr/hippocampus_023.nii.gz"}, {"image": "./imagesTr/hippocampus_025.nii.gz", "label": "./labelsTr/hippocampus_025.nii.gz"}, {"image": "./imagesTr/hippocampus_026.nii.gz", "label": "./labelsTr/hippocampus_026.nii.gz"}, {"image": "./imagesTr/hippocampus_033.nii.gz", "label": "./labelsTr/hippocampus_033.nii.gz"}, {"image": "./imagesTr/hippocampus_034.nii.gz", "label": "./labelsTr/hippocampus_034.nii.gz"}, {"image": "./imagesTr/hippocampus_035.nii.gz", "label": "./labelsTr/hippocampus_035.nii.gz"}, {"image": "./imagesTr/hippocampus_036.nii.gz", "label": "./labelsTr/hippocampus_036.nii.gz"}, {"image": "./imagesTr/hippocampus_037.nii.gz", "label": "./labelsTr/hippocampus_037.nii.gz"}, {"image": "./imagesTr/hippocampus_038.nii.gz", "label": "./labelsTr/hippocampus_038.nii.gz"}, {"image": "./imagesTr/hippocampus_039.nii.gz", "label": "./labelsTr/hippocampus_039.nii.gz"}, {"image": "./imagesTr/hippocampus_040.nii.gz", "label": "./labelsTr/hippocampus_040.nii.gz"}, {"image": "./imagesTr/hippocampus_044.nii.gz", "label": "./labelsTr/hippocampus_044.nii.gz"}, {"image": "./imagesTr/hippocampus_045.nii.gz", "label": "./labelsTr/hippocampus_045.nii.gz"}, {"image": "./imagesTr/hippocampus_048.nii.gz", "label": "./labelsTr/hippocampus_048.nii.gz"}, {"image": "./imagesTr/hippocampus_049.nii.gz", "label": "./labelsTr/hippocampus_049.nii.gz"}, {"image": "./imagesTr/hippocampus_050.nii.gz", "label": "./labelsTr/hippocampus_050.nii.gz"}, {"image": "./imagesTr/hippocampus_051.nii.gz", "label": "./labelsTr/hippocampus_051.nii.gz"}, {"image": "./imagesTr/hippocampus_052.nii.gz", "label": "./labelsTr/hippocampus_052.nii.gz"}, {"image": "./imagesTr/hippocampus_053.nii.gz", "label": "./labelsTr/hippocampus_053.nii.gz"}, {"image": "./imagesTr/hippocampus_057.nii.gz", "label": "./labelsTr/hippocampus_057.nii.gz"}, {"image": "./imagesTr/hippocampus_058.nii.gz", "label": "./labelsTr/hippocampus_058.nii.gz"}, {"image": "./imagesTr/hippocampus_060.nii.gz", "label": "./labelsTr/hippocampus_060.nii.gz"}, {"image": "./imagesTr/hippocampus_064.nii.gz", "label": "./labelsTr/hippocampus_064.nii.gz"}, {"image": "./imagesTr/hippocampus_065.nii.gz", "label": "./labelsTr/hippocampus_065.nii.gz"}, {"image": "./imagesTr/hippocampus_067.nii.gz", "label": "./labelsTr/hippocampus_067.nii.gz"}, {"image": "./imagesTr/hippocampus_070.nii.gz", "label": "./labelsTr/hippocampus_070.nii.gz"}, {"image": "./imagesTr/hippocampus_075.nii.gz", "label": "./labelsTr/hippocampus_075.nii.gz"}, {"image": "./imagesTr/hippocampus_077.nii.gz", "label": "./labelsTr/hippocampus_077.nii.gz"}, {"image": "./imagesTr/hippocampus_083.nii.gz", "label": "./labelsTr/hippocampus_083.nii.gz"}, {"image": "./imagesTr/hippocampus_087.nii.gz", "label": "./labelsTr/hippocampus_087.nii.gz"}, {"image": "./imagesTr/hippocampus_088.nii.gz", "label": "./labelsTr/hippocampus_088.nii.gz"}, {"image": "./imagesTr/hippocampus_090.nii.gz", "label": "./labelsTr/hippocampus_090.nii.gz"}, {"image": "./imagesTr/hippocampus_091.nii.gz", "label": "./labelsTr/hippocampus_091.nii.gz"}, {"image": "./imagesTr/hippocampus_092.nii.gz", "label": "./labelsTr/hippocampus_092.nii.gz"}, {"image": "./imagesTr/hippocampus_093.nii.gz", "label": "./labelsTr/hippocampus_093.nii.gz"}, {"image": "./imagesTr/hippocampus_094.nii.gz", "label": "./labelsTr/hippocampus_094.nii.gz"}, {"image": "./imagesTr/hippocampus_095.nii.gz", "label": "./labelsTr/hippocampus_095.nii.gz"}, {"image": "./imagesTr/hippocampus_096.nii.gz", "label": "./labelsTr/hippocampus_096.nii.gz"}, {"image": "./imagesTr/hippocampus_097.nii.gz", "label": "./labelsTr/hippocampus_097.nii.gz"}, {"image": "./imagesTr/hippocampus_101.nii.gz", "label": "./labelsTr/hippocampus_101.nii.gz"}, {"image": "./imagesTr/hippocampus_102.nii.gz", "label": "./labelsTr/hippocampus_102.nii.gz"}, {"image": "./imagesTr/hippocampus_104.nii.gz", "label": "./labelsTr/hippocampus_104.nii.gz"}, {"image": "./imagesTr/hippocampus_105.nii.gz", "label": "./labelsTr/hippocampus_105.nii.gz"}, {"image": "./imagesTr/hippocampus_106.nii.gz", "label": "./labelsTr/hippocampus_106.nii.gz"}, {"image": "./imagesTr/hippocampus_107.nii.gz", "label": "./labelsTr/hippocampus_107.nii.gz"}, {"image": "./imagesTr/hippocampus_108.nii.gz", "label": "./labelsTr/hippocampus_108.nii.gz"}, {"image": "./imagesTr/hippocampus_109.nii.gz", "label": "./labelsTr/hippocampus_109.nii.gz"}, {"image": "./imagesTr/hippocampus_114.nii.gz", "label": "./labelsTr/hippocampus_114.nii.gz"}, {"image": "./imagesTr/hippocampus_123.nii.gz", "label": "./labelsTr/hippocampus_123.nii.gz"}, {"image": "./imagesTr/hippocampus_124.nii.gz", "label": "./labelsTr/hippocampus_124.nii.gz"}, {"image": "./imagesTr/hippocampus_125.nii.gz", "label": "./labelsTr/hippocampus_125.nii.gz"}, {"image": "./imagesTr/hippocampus_126.nii.gz", "label": "./labelsTr/hippocampus_126.nii.gz"}, {"image": "./imagesTr/hippocampus_127.nii.gz", "label": "./labelsTr/hippocampus_127.nii.gz"}, {"image": "./imagesTr/hippocampus_130.nii.gz", "label": "./labelsTr/hippocampus_130.nii.gz"}, {"image": "./imagesTr/hippocampus_132.nii.gz", "label": "./labelsTr/hippocampus_132.nii.gz"}, {"image": "./imagesTr/hippocampus_136.nii.gz", "label": "./labelsTr/hippocampus_136.nii.gz"}, {"image": "./imagesTr/hippocampus_138.nii.gz", "label": "./labelsTr/hippocampus_138.nii.gz"}, {"image": "./imagesTr/hippocampus_141.nii.gz", "label": "./labelsTr/hippocampus_141.nii.gz"}, {"image": "./imagesTr/hippocampus_142.nii.gz", "label": "./labelsTr/hippocampus_142.nii.gz"}, {"image": "./imagesTr/hippocampus_144.nii.gz", "label": "./labelsTr/hippocampus_144.nii.gz"}, {"image": "./imagesTr/hippocampus_146.nii.gz", "label": "./labelsTr/hippocampus_146.nii.gz"}, {"image": "./imagesTr/hippocampus_148.nii.gz", "label": "./labelsTr/hippocampus_148.nii.gz"}, {"image": "./imagesTr/hippocampus_149.nii.gz", "label": "./labelsTr/hippocampus_149.nii.gz"}, {"image": "./imagesTr/hippocampus_152.nii.gz", "label": "./labelsTr/hippocampus_152.nii.gz"}, {"image": "./imagesTr/hippocampus_154.nii.gz", "label": "./labelsTr/hippocampus_154.nii.gz"}, {"image": "./imagesTr/hippocampus_155.nii.gz", "label": "./labelsTr/hippocampus_155.nii.gz"}, {"image": "./imagesTr/hippocampus_157.nii.gz", "label": "./labelsTr/hippocampus_157.nii.gz"}, {"image": "./imagesTr/hippocampus_160.nii.gz", "label": "./labelsTr/hippocampus_160.nii.gz"}, {"image": "./imagesTr/hippocampus_162.nii.gz", "label": "./labelsTr/hippocampus_162.nii.gz"}, {"image": "./imagesTr/hippocampus_163.nii.gz", "label": "./labelsTr/hippocampus_163.nii.gz"}, {"image": "./imagesTr/hippocampus_164.nii.gz", "label": "./labelsTr/hippocampus_164.nii.gz"}, {"image": "./imagesTr/hippocampus_166.nii.gz", "label": "./labelsTr/hippocampus_166.nii.gz"}, {"image": "./imagesTr/hippocampus_169.nii.gz", "label": "./labelsTr/hippocampus_169.nii.gz"}, {"image": "./imagesTr/hippocampus_170.nii.gz", "label": "./labelsTr/hippocampus_170.nii.gz"}, {"image": "./imagesTr/hippocampus_171.nii.gz", "label": "./labelsTr/hippocampus_171.nii.gz"}, {"image": "./imagesTr/hippocampus_172.nii.gz", "label": "./labelsTr/hippocampus_172.nii.gz"}, {"image": "./imagesTr/hippocampus_173.nii.gz", "label": "./labelsTr/hippocampus_173.nii.gz"}, {"image": "./imagesTr/hippocampus_175.nii.gz", "label": "./labelsTr/hippocampus_175.nii.gz"}, {"image": "./imagesTr/hippocampus_177.nii.gz", "label": "./labelsTr/hippocampus_177.nii.gz"}, {"image": "./imagesTr/hippocampus_178.nii.gz", "label": "./labelsTr/hippocampus_178.nii.gz"}, {"image": "./imagesTr/hippocampus_180.nii.gz", "label": "./labelsTr/hippocampus_180.nii.gz"}, {"image": "./imagesTr/hippocampus_181.nii.gz", "label": "./labelsTr/hippocampus_181.nii.gz"}, {"image": "./imagesTr/hippocampus_184.nii.gz", "label": "./labelsTr/hippocampus_184.nii.gz"}, {"image": "./imagesTr/hippocampus_185.nii.gz", "label": "./labelsTr/hippocampus_185.nii.gz"}, {"image": "./imagesTr/hippocampus_188.nii.gz", "label": "./labelsTr/hippocampus_188.nii.gz"}, {"image": "./imagesTr/hippocampus_189.nii.gz", "label": "./labelsTr/hippocampus_189.nii.gz"}, {"image": "./imagesTr/hippocampus_190.nii.gz", "label": "./labelsTr/hippocampus_190.nii.gz"}, {"image": "./imagesTr/hippocampus_193.nii.gz", "label": "./labelsTr/hippocampus_193.nii.gz"}, {"image": "./imagesTr/hippocampus_194.nii.gz", "label": "./labelsTr/hippocampus_194.nii.gz"}, {"image": "./imagesTr/hippocampus_195.nii.gz", "label": "./labelsTr/hippocampus_195.nii.gz"}, {"image": "./imagesTr/hippocampus_197.nii.gz", "label": "./labelsTr/hippocampus_197.nii.gz"}, {"image": "./imagesTr/hippocampus_203.nii.gz", "label": "./labelsTr/hippocampus_203.nii.gz"}, {"image": "./imagesTr/hippocampus_204.nii.gz", "label": "./labelsTr/hippocampus_204.nii.gz"}, {"image": "./imagesTr/hippocampus_205.nii.gz", "label": "./labelsTr/hippocampus_205.nii.gz"}, {"image": "./imagesTr/hippocampus_207.nii.gz", "label": "./labelsTr/hippocampus_207.nii.gz"}, {"image": "./imagesTr/hippocampus_210.nii.gz", "label": "./labelsTr/hippocampus_210.nii.gz"}, {"image": "./imagesTr/hippocampus_212.nii.gz", "label": "./labelsTr/hippocampus_212.nii.gz"}, {"image": "./imagesTr/hippocampus_215.nii.gz", "label": "./labelsTr/hippocampus_215.nii.gz"}, {"image": "./imagesTr/hippocampus_216.nii.gz", "label": "./labelsTr/hippocampus_216.nii.gz"}, {"image": "./imagesTr/hippocampus_217.nii.gz", "label": "./labelsTr/hippocampus_217.nii.gz"}, {"image": "./imagesTr/hippocampus_219.nii.gz", "label": "./labelsTr/hippocampus_219.nii.gz"}, {"image": "./imagesTr/hippocampus_222.nii.gz", "label": "./labelsTr/hippocampus_222.nii.gz"}, {"image": "./imagesTr/hippocampus_223.nii.gz", "label": "./labelsTr/hippocampus_223.nii.gz"}, {"image": "./imagesTr/hippocampus_226.nii.gz", "label": "./labelsTr/hippocampus_226.nii.gz"}, {"image": "./imagesTr/hippocampus_227.nii.gz", "label": "./labelsTr/hippocampus_227.nii.gz"}, {"image": "./imagesTr/hippocampus_228.nii.gz", "label": "./labelsTr/hippocampus_228.nii.gz"}, {"image": "./imagesTr/hippocampus_229.nii.gz", "label": "./labelsTr/hippocampus_229.nii.gz"}, {"image": "./imagesTr/hippocampus_230.nii.gz", "label": "./labelsTr/hippocampus_230.nii.gz"}, {"image": "./imagesTr/hippocampus_231.nii.gz", "label": "./labelsTr/hippocampus_231.nii.gz"}, {"image": "./imagesTr/hippocampus_233.nii.gz", "label": "./labelsTr/hippocampus_233.nii.gz"}, {"image": "./imagesTr/hippocampus_234.nii.gz", "label": "./labelsTr/hippocampus_234.nii.gz"}, {"image": "./imagesTr/hippocampus_235.nii.gz", "label": "./labelsTr/hippocampus_235.nii.gz"}, {"image": "./imagesTr/hippocampus_236.nii.gz", "label": "./labelsTr/hippocampus_236.nii.gz"}, {"image": "./imagesTr/hippocampus_238.nii.gz", "label": "./labelsTr/hippocampus_238.nii.gz"}, {"image": "./imagesTr/hippocampus_242.nii.gz", "label": "./labelsTr/hippocampus_242.nii.gz"}, {"image": "./imagesTr/hippocampus_243.nii.gz", "label": "./labelsTr/hippocampus_243.nii.gz"}, {"image": "./imagesTr/hippocampus_244.nii.gz", "label": "./labelsTr/hippocampus_244.nii.gz"}, {"image": "./imagesTr/hippocampus_245.nii.gz", "label": "./labelsTr/hippocampus_245.nii.gz"}, {"image": "./imagesTr/hippocampus_248.nii.gz", "label": "./labelsTr/hippocampus_248.nii.gz"}, {"image": "./imagesTr/hippocampus_249.nii.gz", "label": "./labelsTr/hippocampus_249.nii.gz"}, {"image": "./imagesTr/hippocampus_250.nii.gz", "label": "./labelsTr/hippocampus_250.nii.gz"}, {"image": "./imagesTr/hippocampus_253.nii.gz", "label": "./labelsTr/hippocampus_253.nii.gz"}, {"image": "./imagesTr/hippocampus_260.nii.gz", "label": "./labelsTr/hippocampus_260.nii.gz"}, {"image": "./imagesTr/hippocampus_261.nii.gz", "label": "./labelsTr/hippocampus_261.nii.gz"}, {"image": "./imagesTr/hippocampus_263.nii.gz", "label": "./labelsTr/hippocampus_263.nii.gz"}, {"image": "./imagesTr/hippocampus_264.nii.gz", "label": "./labelsTr/hippocampus_264.nii.gz"}, {"image": "./imagesTr/hippocampus_268.nii.gz", "label": "./labelsTr/hippocampus_268.nii.gz"}, {"image": "./imagesTr/hippocampus_269.nii.gz", "label": "./labelsTr/hippocampus_269.nii.gz"}, {"image": "./imagesTr/hippocampus_274.nii.gz", "label": "./labelsTr/hippocampus_274.nii.gz"}, {"image": "./imagesTr/hippocampus_277.nii.gz", "label": "./labelsTr/hippocampus_277.nii.gz"}, {"image": "./imagesTr/hippocampus_280.nii.gz", "label": "./labelsTr/hippocampus_280.nii.gz"}, {"image": "./imagesTr/hippocampus_282.nii.gz", "label": "./labelsTr/hippocampus_282.nii.gz"}, {"image": "./imagesTr/hippocampus_286.nii.gz", "label": "./labelsTr/hippocampus_286.nii.gz"}, {"image": "./imagesTr/hippocampus_287.nii.gz", "label": "./labelsTr/hippocampus_287.nii.gz"}, {"image": "./imagesTr/hippocampus_288.nii.gz", "label": "./labelsTr/hippocampus_288.nii.gz"}, {"image": "./imagesTr/hippocampus_289.nii.gz", "label": "./labelsTr/hippocampus_289.nii.gz"}, {"image": "./imagesTr/hippocampus_290.nii.gz", "label": "./labelsTr/hippocampus_290.nii.gz"}, {"image": "./imagesTr/hippocampus_292.nii.gz", "label": "./labelsTr/hippocampus_292.nii.gz"}, {"image": "./imagesTr/hippocampus_294.nii.gz", "label": "./labelsTr/hippocampus_294.nii.gz"}, {"image": "./imagesTr/hippocampus_295.nii.gz", "label": "./labelsTr/hippocampus_295.nii.gz"}, {"image": "./imagesTr/hippocampus_296.nii.gz", "label": "./labelsTr/hippocampus_296.nii.gz"}, {"image": "./imagesTr/hippocampus_298.nii.gz", "label": "./labelsTr/hippocampus_298.nii.gz"}, {"image": "./imagesTr/hippocampus_299.nii.gz", "label": "./labelsTr/hippocampus_299.nii.gz"}, {"image": "./imagesTr/hippocampus_300.nii.gz", "label": "./labelsTr/hippocampus_300.nii.gz"}, {"image": "./imagesTr/hippocampus_301.nii.gz", "label": "./labelsTr/hippocampus_301.nii.gz"}, {"image": "./imagesTr/hippocampus_303.nii.gz", "label": "./labelsTr/hippocampus_303.nii.gz"}, {"image": "./imagesTr/hippocampus_305.nii.gz", "label": "./labelsTr/hippocampus_305.nii.gz"}, {"image": "./imagesTr/hippocampus_308.nii.gz", "label": "./labelsTr/hippocampus_308.nii.gz"}, {"image": "./imagesTr/hippocampus_309.nii.gz", "label": "./labelsTr/hippocampus_309.nii.gz"}, {"image": "./imagesTr/hippocampus_310.nii.gz", "label": "./labelsTr/hippocampus_310.nii.gz"}, {"image": "./imagesTr/hippocampus_314.nii.gz", "label": "./labelsTr/hippocampus_314.nii.gz"}, {"image": "./imagesTr/hippocampus_316.nii.gz", "label": "./labelsTr/hippocampus_316.nii.gz"}, {"image": "./imagesTr/hippocampus_317.nii.gz", "label": "./labelsTr/hippocampus_317.nii.gz"}, {"image": "./imagesTr/hippocampus_318.nii.gz", "label": "./labelsTr/hippocampus_318.nii.gz"}, {"image": "./imagesTr/hippocampus_319.nii.gz", "label": "./labelsTr/hippocampus_319.nii.gz"}, {"image": "./imagesTr/hippocampus_321.nii.gz", "label": "./labelsTr/hippocampus_321.nii.gz"}, {"image": "./imagesTr/hippocampus_322.nii.gz", "label": "./labelsTr/hippocampus_322.nii.gz"}, {"image": "./imagesTr/hippocampus_326.nii.gz", "label": "./labelsTr/hippocampus_326.nii.gz"}, {"image": "./imagesTr/hippocampus_327.nii.gz", "label": "./labelsTr/hippocampus_327.nii.gz"}, {"image": "./imagesTr/hippocampus_328.nii.gz", "label": "./labelsTr/hippocampus_328.nii.gz"}, {"image": "./imagesTr/hippocampus_329.nii.gz", "label": "./labelsTr/hippocampus_329.nii.gz"}, {"image": "./imagesTr/hippocampus_330.nii.gz", "label": "./labelsTr/hippocampus_330.nii.gz"}, {"image": "./imagesTr/hippocampus_331.nii.gz", "label": "./labelsTr/hippocampus_331.nii.gz"}, {"image": "./imagesTr/hippocampus_332.nii.gz", "label": "./labelsTr/hippocampus_332.nii.gz"}, {"image": "./imagesTr/hippocampus_333.nii.gz", "label": "./labelsTr/hippocampus_333.nii.gz"}, {"image": "./imagesTr/hippocampus_334.nii.gz", "label": "./labelsTr/hippocampus_334.nii.gz"}, {"image": "./imagesTr/hippocampus_335.nii.gz", "label": "./labelsTr/hippocampus_335.nii.gz"}, {"image": "./imagesTr/hippocampus_336.nii.gz", "label": "./labelsTr/hippocampus_336.nii.gz"}, {"image": "./imagesTr/hippocampus_337.nii.gz", "label": "./labelsTr/hippocampus_337.nii.gz"}, {"image": "./imagesTr/hippocampus_338.nii.gz", "label": "./labelsTr/hippocampus_338.nii.gz"}, {"image": "./imagesTr/hippocampus_340.nii.gz", "label": "./labelsTr/hippocampus_340.nii.gz"}, {"image": "./imagesTr/hippocampus_341.nii.gz", "label": "./labelsTr/hippocampus_341.nii.gz"}, {"image": "./imagesTr/hippocampus_345.nii.gz", "label": "./labelsTr/hippocampus_345.nii.gz"}, {"image": "./imagesTr/hippocampus_349.nii.gz", "label": "./labelsTr/hippocampus_349.nii.gz"}, {"image": "./imagesTr/hippocampus_350.nii.gz", "label": "./labelsTr/hippocampus_350.nii.gz"}, {"image": "./imagesTr/hippocampus_351.nii.gz", "label": "./labelsTr/hippocampus_351.nii.gz"}, {"image": "./imagesTr/hippocampus_352.nii.gz", "label": "./labelsTr/hippocampus_352.nii.gz"}, {"image": "./imagesTr/hippocampus_353.nii.gz", "label": "./labelsTr/hippocampus_353.nii.gz"}, {"image": "./imagesTr/hippocampus_354.nii.gz", "label": "./labelsTr/hippocampus_354.nii.gz"}, {"image": "./imagesTr/hippocampus_355.nii.gz", "label": "./labelsTr/hippocampus_355.nii.gz"}, {"image": "./imagesTr/hippocampus_356.nii.gz", "label": "./labelsTr/hippocampus_356.nii.gz"}, {"image": "./imagesTr/hippocampus_358.nii.gz", "label": "./labelsTr/hippocampus_358.nii.gz"}, {"image": "./imagesTr/hippocampus_359.nii.gz", "label": "./labelsTr/hippocampus_359.nii.gz"}, {"image": "./imagesTr/hippocampus_360.nii.gz", "label": "./labelsTr/hippocampus_360.nii.gz"}, {"image": "./imagesTr/hippocampus_361.nii.gz", "label": "./labelsTr/hippocampus_361.nii.gz"}, {"image": "./imagesTr/hippocampus_363.nii.gz", "label": "./labelsTr/hippocampus_363.nii.gz"}, {"image": "./imagesTr/hippocampus_367.nii.gz", "label": "./labelsTr/hippocampus_367.nii.gz"}, {"image": "./imagesTr/hippocampus_368.nii.gz", "label": "./labelsTr/hippocampus_368.nii.gz"}, {"image": "./imagesTr/hippocampus_374.nii.gz", "label": "./labelsTr/hippocampus_374.nii.gz"}, {"image": "./imagesTr/hippocampus_375.nii.gz", "label": "./labelsTr/hippocampus_375.nii.gz"}, {"image": "./imagesTr/hippocampus_376.nii.gz", "label": "./labelsTr/hippocampus_376.nii.gz"}, {"image": "./imagesTr/hippocampus_380.nii.gz", "label": "./labelsTr/hippocampus_380.nii.gz"}, {"image": "./imagesTr/hippocampus_381.nii.gz", "label": "./labelsTr/hippocampus_381.nii.gz"}, {"image": "./imagesTr/hippocampus_385.nii.gz", "label": "./labelsTr/hippocampus_385.nii.gz"}, {"image": "./imagesTr/hippocampus_386.nii.gz", "label": "./labelsTr/hippocampus_386.nii.gz"}, {"image": "./imagesTr/hippocampus_389.nii.gz", "label": "./labelsTr/hippocampus_389.nii.gz"}, {"image": "./imagesTr/hippocampus_390.nii.gz", "label": "./labelsTr/hippocampus_390.nii.gz"}, {"image": "./imagesTr/hippocampus_393.nii.gz", "label": "./labelsTr/hippocampus_393.nii.gz"}, {"image": "./imagesTr/hippocampus_394.nii.gz", "label": "./labelsTr/hippocampus_394.nii.gz"}], "validation_fold3": [{"image": "./imagesTr/hippocampus_001.nii.gz", "label": "./labelsTr/hippocampus_001.nii.gz"}, {"image": "./imagesTr/hippocampus_006.nii.gz", "label": "./labelsTr/hippocampus_006.nii.gz"}, {"image": "./imagesTr/hippocampus_011.nii.gz", "label": "./labelsTr/hippocampus_011.nii.gz"}, {"image": "./imagesTr/hippocampus_023.nii.gz", "label": "./labelsTr/hippocampus_023.nii.gz"}, {"image": "./imagesTr/hippocampus_038.nii.gz", "label": "./labelsTr/hippocampus_038.nii.gz"}, {"image": "./imagesTr/hippocampus_039.nii.gz", "label": "./labelsTr/hippocampus_039.nii.gz"}, {"image": "./imagesTr/hippocampus_051.nii.gz", "label": "./labelsTr/hippocampus_051.nii.gz"}, {"image": "./imagesTr/hippocampus_058.nii.gz", "label": "./labelsTr/hippocampus_058.nii.gz"}, {"image": "./imagesTr/hippocampus_060.nii.gz", "label": "./labelsTr/hippocampus_060.nii.gz"}, {"image": "./imagesTr/hippocampus_067.nii.gz", "label": "./labelsTr/hippocampus_067.nii.gz"}, {"image": "./imagesTr/hippocampus_075.nii.gz", "label": "./labelsTr/hippocampus_075.nii.gz"}, {"image": "./imagesTr/hippocampus_077.nii.gz", "label": "./labelsTr/hippocampus_077.nii.gz"}, {"image": "./imagesTr/hippocampus_096.nii.gz", "label": "./labelsTr/hippocampus_096.nii.gz"}, {"image": "./imagesTr/hippocampus_101.nii.gz", "label": "./labelsTr/hippocampus_101.nii.gz"}, {"image": "./imagesTr/hippocampus_102.nii.gz", "label": "./labelsTr/hippocampus_102.nii.gz"}, {"image": "./imagesTr/hippocampus_105.nii.gz", "label": "./labelsTr/hippocampus_105.nii.gz"}, {"image": "./imagesTr/hippocampus_109.nii.gz", "label": "./labelsTr/hippocampus_109.nii.gz"}, {"image": "./imagesTr/hippocampus_126.nii.gz", "label": "./labelsTr/hippocampus_126.nii.gz"}, {"image": "./imagesTr/hippocampus_130.nii.gz", "label": "./labelsTr/hippocampus_130.nii.gz"}, {"image": "./imagesTr/hippocampus_136.nii.gz", "label": "./labelsTr/hippocampus_136.nii.gz"}, {"image": "./imagesTr/hippocampus_141.nii.gz", "label": "./labelsTr/hippocampus_141.nii.gz"}, {"image": "./imagesTr/hippocampus_142.nii.gz", "label": "./labelsTr/hippocampus_142.nii.gz"}, {"image": "./imagesTr/hippocampus_148.nii.gz", "label": "./labelsTr/hippocampus_148.nii.gz"}, {"image": "./imagesTr/hippocampus_184.nii.gz", "label": "./labelsTr/hippocampus_184.nii.gz"}, {"image": "./imagesTr/hippocampus_193.nii.gz", "label": "./labelsTr/hippocampus_193.nii.gz"}, {"image": "./imagesTr/hippocampus_195.nii.gz", "label": "./labelsTr/hippocampus_195.nii.gz"}, {"image": "./imagesTr/hippocampus_230.nii.gz", "label": "./labelsTr/hippocampus_230.nii.gz"}, {"image": "./imagesTr/hippocampus_233.nii.gz", "label": "./labelsTr/hippocampus_233.nii.gz"}, {"image": "./imagesTr/hippocampus_242.nii.gz", "label": "./labelsTr/hippocampus_242.nii.gz"}, {"image": "./imagesTr/hippocampus_243.nii.gz", "label": "./labelsTr/hippocampus_243.nii.gz"}, {"image": "./imagesTr/hippocampus_248.nii.gz", "label": "./labelsTr/hippocampus_248.nii.gz"}, {"image": "./imagesTr/hippocampus_249.nii.gz", "label": "./labelsTr/hippocampus_249.nii.gz"}, {"image": "./imagesTr/hippocampus_253.nii.gz", "label": "./labelsTr/hippocampus_253.nii.gz"}, {"image": "./imagesTr/hippocampus_268.nii.gz", "label": "./labelsTr/hippocampus_268.nii.gz"}, {"image": "./imagesTr/hippocampus_269.nii.gz", "label": "./labelsTr/hippocampus_269.nii.gz"}, {"image": "./imagesTr/hippocampus_282.nii.gz", "label": "./labelsTr/hippocampus_282.nii.gz"}, {"image": "./imagesTr/hippocampus_294.nii.gz", "label": "./labelsTr/hippocampus_294.nii.gz"}, {"image": "./imagesTr/hippocampus_301.nii.gz", "label": "./labelsTr/hippocampus_301.nii.gz"}, {"image": "./imagesTr/hippocampus_303.nii.gz", "label": "./labelsTr/hippocampus_303.nii.gz"}, {"image": "./imagesTr/hippocampus_310.nii.gz", "label": "./labelsTr/hippocampus_310.nii.gz"}, {"image": "./imagesTr/hippocampus_318.nii.gz", "label": "./labelsTr/hippocampus_318.nii.gz"}, {"image": "./imagesTr/hippocampus_319.nii.gz", "label": "./labelsTr/hippocampus_319.nii.gz"}, {"image": "./imagesTr/hippocampus_331.nii.gz", "label": "./labelsTr/hippocampus_331.nii.gz"}, {"image": "./imagesTr/hippocampus_333.nii.gz", "label": "./labelsTr/hippocampus_333.nii.gz"}, {"image": "./imagesTr/hippocampus_335.nii.gz", "label": "./labelsTr/hippocampus_335.nii.gz"}, {"image": "./imagesTr/hippocampus_341.nii.gz", "label": "./labelsTr/hippocampus_341.nii.gz"}, {"image": "./imagesTr/hippocampus_359.nii.gz", "label": "./labelsTr/hippocampus_359.nii.gz"}, {"image": "./imagesTr/hippocampus_361.nii.gz", "label": "./labelsTr/hippocampus_361.nii.gz"}, {"image": "./imagesTr/hippocampus_363.nii.gz", "label": "./labelsTr/hippocampus_363.nii.gz"}, {"image": "./imagesTr/hippocampus_376.nii.gz", "label": "./labelsTr/hippocampus_376.nii.gz"}, {"image": "./imagesTr/hippocampus_380.nii.gz", "label": "./labelsTr/hippocampus_380.nii.gz"}, {"image": "./imagesTr/hippocampus_386.nii.gz", "label": "./labelsTr/hippocampus_386.nii.gz"}], "train_fold3": [{"image": "./imagesTr/hippocampus_003.nii.gz", "label": "./labelsTr/hippocampus_003.nii.gz"}, {"image": "./imagesTr/hippocampus_004.nii.gz", "label": "./labelsTr/hippocampus_004.nii.gz"}, {"image": "./imagesTr/hippocampus_007.nii.gz", "label": "./labelsTr/hippocampus_007.nii.gz"}, {"image": "./imagesTr/hippocampus_008.nii.gz", "label": "./labelsTr/hippocampus_008.nii.gz"}, {"image": "./imagesTr/hippocampus_014.nii.gz", "label": "./labelsTr/hippocampus_014.nii.gz"}, {"image": "./imagesTr/hippocampus_015.nii.gz", "label": "./labelsTr/hippocampus_015.nii.gz"}, {"image": "./imagesTr/hippocampus_017.nii.gz", "label": "./labelsTr/hippocampus_017.nii.gz"}, {"image": "./imagesTr/hippocampus_019.nii.gz", "label": "./labelsTr/hippocampus_019.nii.gz"}, {"image": "./imagesTr/hippocampus_020.nii.gz", "label": "./labelsTr/hippocampus_020.nii.gz"}, {"image": "./imagesTr/hippocampus_024.nii.gz", "label": "./labelsTr/hippocampus_024.nii.gz"}, {"image": "./imagesTr/hippocampus_025.nii.gz", "label": "./labelsTr/hippocampus_025.nii.gz"}, {"image": "./imagesTr/hippocampus_026.nii.gz", "label": "./labelsTr/hippocampus_026.nii.gz"}, {"image": "./imagesTr/hippocampus_033.nii.gz", "label": "./labelsTr/hippocampus_033.nii.gz"}, {"image": "./imagesTr/hippocampus_034.nii.gz", "label": "./labelsTr/hippocampus_034.nii.gz"}, {"image": "./imagesTr/hippocampus_035.nii.gz", "label": "./labelsTr/hippocampus_035.nii.gz"}, {"image": "./imagesTr/hippocampus_036.nii.gz", "label": "./labelsTr/hippocampus_036.nii.gz"}, {"image": "./imagesTr/hippocampus_037.nii.gz", "label": "./labelsTr/hippocampus_037.nii.gz"}, {"image": "./imagesTr/hippocampus_040.nii.gz", "label": "./labelsTr/hippocampus_040.nii.gz"}, {"image": "./imagesTr/hippocampus_041.nii.gz", "label": "./labelsTr/hippocampus_041.nii.gz"}, {"image": "./imagesTr/hippocampus_042.nii.gz", "label": "./labelsTr/hippocampus_042.nii.gz"}, {"image": "./imagesTr/hippocampus_044.nii.gz", "label": "./labelsTr/hippocampus_044.nii.gz"}, {"image": "./imagesTr/hippocampus_045.nii.gz", "label": "./labelsTr/hippocampus_045.nii.gz"}, {"image": "./imagesTr/hippocampus_046.nii.gz", "label": "./labelsTr/hippocampus_046.nii.gz"}, {"image": "./imagesTr/hippocampus_048.nii.gz", "label": "./labelsTr/hippocampus_048.nii.gz"}, {"image": "./imagesTr/hippocampus_049.nii.gz", "label": "./labelsTr/hippocampus_049.nii.gz"}, {"image": "./imagesTr/hippocampus_050.nii.gz", "label": "./labelsTr/hippocampus_050.nii.gz"}, {"image": "./imagesTr/hippocampus_052.nii.gz", "label": "./labelsTr/hippocampus_052.nii.gz"}, {"image": "./imagesTr/hippocampus_053.nii.gz", "label": "./labelsTr/hippocampus_053.nii.gz"}, {"image": "./imagesTr/hippocampus_056.nii.gz", "label": "./labelsTr/hippocampus_056.nii.gz"}, {"image": "./imagesTr/hippocampus_057.nii.gz", "label": "./labelsTr/hippocampus_057.nii.gz"}, {"image": "./imagesTr/hippocampus_064.nii.gz", "label": "./labelsTr/hippocampus_064.nii.gz"}, {"image": "./imagesTr/hippocampus_065.nii.gz", "label": "./labelsTr/hippocampus_065.nii.gz"}, {"image": "./imagesTr/hippocampus_068.nii.gz", "label": "./labelsTr/hippocampus_068.nii.gz"}, {"image": "./imagesTr/hippocampus_070.nii.gz", "label": "./labelsTr/hippocampus_070.nii.gz"}, {"image": "./imagesTr/hippocampus_074.nii.gz", "label": "./labelsTr/hippocampus_074.nii.gz"}, {"image": "./imagesTr/hippocampus_083.nii.gz", "label": "./labelsTr/hippocampus_083.nii.gz"}, {"image": "./imagesTr/hippocampus_084.nii.gz", "label": "./labelsTr/hippocampus_084.nii.gz"}, {"image": "./imagesTr/hippocampus_087.nii.gz", "label": "./labelsTr/hippocampus_087.nii.gz"}, {"image": "./imagesTr/hippocampus_088.nii.gz", "label": "./labelsTr/hippocampus_088.nii.gz"}, {"image": "./imagesTr/hippocampus_089.nii.gz", "label": "./labelsTr/hippocampus_089.nii.gz"}, {"image": "./imagesTr/hippocampus_090.nii.gz", "label": "./labelsTr/hippocampus_090.nii.gz"}, {"image": "./imagesTr/hippocampus_091.nii.gz", "label": "./labelsTr/hippocampus_091.nii.gz"}, {"image": "./imagesTr/hippocampus_092.nii.gz", "label": "./labelsTr/hippocampus_092.nii.gz"}, {"image": "./imagesTr/hippocampus_093.nii.gz", "label": "./labelsTr/hippocampus_093.nii.gz"}, {"image": "./imagesTr/hippocampus_094.nii.gz", "label": "./labelsTr/hippocampus_094.nii.gz"}, {"image": "./imagesTr/hippocampus_095.nii.gz", "label": "./labelsTr/hippocampus_095.nii.gz"}, {"image": "./imagesTr/hippocampus_097.nii.gz", "label": "./labelsTr/hippocampus_097.nii.gz"}, {"image": "./imagesTr/hippocampus_098.nii.gz", "label": "./labelsTr/hippocampus_098.nii.gz"}, {"image": "./imagesTr/hippocampus_099.nii.gz", "label": "./labelsTr/hippocampus_099.nii.gz"}, {"image": "./imagesTr/hippocampus_104.nii.gz", "label": "./labelsTr/hippocampus_104.nii.gz"}, {"image": "./imagesTr/hippocampus_106.nii.gz", "label": "./labelsTr/hippocampus_106.nii.gz"}, {"image": "./imagesTr/hippocampus_107.nii.gz", "label": "./labelsTr/hippocampus_107.nii.gz"}, {"image": "./imagesTr/hippocampus_108.nii.gz", "label": "./labelsTr/hippocampus_108.nii.gz"}, {"image": "./imagesTr/hippocampus_114.nii.gz", "label": "./labelsTr/hippocampus_114.nii.gz"}, {"image": "./imagesTr/hippocampus_123.nii.gz", "label": "./labelsTr/hippocampus_123.nii.gz"}, {"image": "./imagesTr/hippocampus_124.nii.gz", "label": "./labelsTr/hippocampus_124.nii.gz"}, {"image": "./imagesTr/hippocampus_125.nii.gz", "label": "./labelsTr/hippocampus_125.nii.gz"}, {"image": "./imagesTr/hippocampus_127.nii.gz", "label": "./labelsTr/hippocampus_127.nii.gz"}, {"image": "./imagesTr/hippocampus_132.nii.gz", "label": "./labelsTr/hippocampus_132.nii.gz"}, {"image": "./imagesTr/hippocampus_133.nii.gz", "label": "./labelsTr/hippocampus_133.nii.gz"}, {"image": "./imagesTr/hippocampus_135.nii.gz", "label": "./labelsTr/hippocampus_135.nii.gz"}, {"image": "./imagesTr/hippocampus_138.nii.gz", "label": "./labelsTr/hippocampus_138.nii.gz"}, {"image": "./imagesTr/hippocampus_143.nii.gz", "label": "./labelsTr/hippocampus_143.nii.gz"}, {"image": "./imagesTr/hippocampus_144.nii.gz", "label": "./labelsTr/hippocampus_144.nii.gz"}, {"image": "./imagesTr/hippocampus_145.nii.gz", "label": "./labelsTr/hippocampus_145.nii.gz"}, {"image": "./imagesTr/hippocampus_146.nii.gz", "label": "./labelsTr/hippocampus_146.nii.gz"}, {"image": "./imagesTr/hippocampus_149.nii.gz", "label": "./labelsTr/hippocampus_149.nii.gz"}, {"image": "./imagesTr/hippocampus_150.nii.gz", "label": "./labelsTr/hippocampus_150.nii.gz"}, {"image": "./imagesTr/hippocampus_152.nii.gz", "label": "./labelsTr/hippocampus_152.nii.gz"}, {"image": "./imagesTr/hippocampus_154.nii.gz", "label": "./labelsTr/hippocampus_154.nii.gz"}, {"image": "./imagesTr/hippocampus_155.nii.gz", "label": "./labelsTr/hippocampus_155.nii.gz"}, {"image": "./imagesTr/hippocampus_156.nii.gz", "label": "./labelsTr/hippocampus_156.nii.gz"}, {"image": "./imagesTr/hippocampus_157.nii.gz", "label": "./labelsTr/hippocampus_157.nii.gz"}, {"image": "./imagesTr/hippocampus_158.nii.gz", "label": "./labelsTr/hippocampus_158.nii.gz"}, {"image": "./imagesTr/hippocampus_160.nii.gz", "label": "./labelsTr/hippocampus_160.nii.gz"}, {"image": "./imagesTr/hippocampus_161.nii.gz", "label": "./labelsTr/hippocampus_161.nii.gz"}, {"image": "./imagesTr/hippocampus_162.nii.gz", "label": "./labelsTr/hippocampus_162.nii.gz"}, {"image": "./imagesTr/hippocampus_163.nii.gz", "label": "./labelsTr/hippocampus_163.nii.gz"}, {"image": "./imagesTr/hippocampus_164.nii.gz", "label": "./labelsTr/hippocampus_164.nii.gz"}, {"image": "./imagesTr/hippocampus_165.nii.gz", "label": "./labelsTr/hippocampus_165.nii.gz"}, {"image": "./imagesTr/hippocampus_166.nii.gz", "label": "./labelsTr/hippocampus_166.nii.gz"}, {"image": "./imagesTr/hippocampus_169.nii.gz", "label": "./labelsTr/hippocampus_169.nii.gz"}, {"image": "./imagesTr/hippocampus_170.nii.gz", "label": "./labelsTr/hippocampus_170.nii.gz"}, {"image": "./imagesTr/hippocampus_171.nii.gz", "label": "./labelsTr/hippocampus_171.nii.gz"}, {"image": "./imagesTr/hippocampus_172.nii.gz", "label": "./labelsTr/hippocampus_172.nii.gz"}, {"image": "./imagesTr/hippocampus_173.nii.gz", "label": "./labelsTr/hippocampus_173.nii.gz"}, {"image": "./imagesTr/hippocampus_174.nii.gz", "label": "./labelsTr/hippocampus_174.nii.gz"}, {"image": "./imagesTr/hippocampus_175.nii.gz", "label": "./labelsTr/hippocampus_175.nii.gz"}, {"image": "./imagesTr/hippocampus_176.nii.gz", "label": "./labelsTr/hippocampus_176.nii.gz"}, {"image": "./imagesTr/hippocampus_177.nii.gz", "label": "./labelsTr/hippocampus_177.nii.gz"}, {"image": "./imagesTr/hippocampus_178.nii.gz", "label": "./labelsTr/hippocampus_178.nii.gz"}, {"image": "./imagesTr/hippocampus_180.nii.gz", "label": "./labelsTr/hippocampus_180.nii.gz"}, {"image": "./imagesTr/hippocampus_181.nii.gz", "label": "./labelsTr/hippocampus_181.nii.gz"}, {"image": "./imagesTr/hippocampus_185.nii.gz", "label": "./labelsTr/hippocampus_185.nii.gz"}, {"image": "./imagesTr/hippocampus_188.nii.gz", "label": "./labelsTr/hippocampus_188.nii.gz"}, {"image": "./imagesTr/hippocampus_189.nii.gz", "label": "./labelsTr/hippocampus_189.nii.gz"}, {"image": "./imagesTr/hippocampus_190.nii.gz", "label": "./labelsTr/hippocampus_190.nii.gz"}, {"image": "./imagesTr/hippocampus_194.nii.gz", "label": "./labelsTr/hippocampus_194.nii.gz"}, {"image": "./imagesTr/hippocampus_197.nii.gz", "label": "./labelsTr/hippocampus_197.nii.gz"}, {"image": "./imagesTr/hippocampus_199.nii.gz", "label": "./labelsTr/hippocampus_199.nii.gz"}, {"image": "./imagesTr/hippocampus_203.nii.gz", "label": "./labelsTr/hippocampus_203.nii.gz"}, {"image": "./imagesTr/hippocampus_204.nii.gz", "label": "./labelsTr/hippocampus_204.nii.gz"}, {"image": "./imagesTr/hippocampus_205.nii.gz", "label": "./labelsTr/hippocampus_205.nii.gz"}, {"image": "./imagesTr/hippocampus_207.nii.gz", "label": "./labelsTr/hippocampus_207.nii.gz"}, {"image": "./imagesTr/hippocampus_210.nii.gz", "label": "./labelsTr/hippocampus_210.nii.gz"}, {"image": "./imagesTr/hippocampus_212.nii.gz", "label": "./labelsTr/hippocampus_212.nii.gz"}, {"image": "./imagesTr/hippocampus_215.nii.gz", "label": "./labelsTr/hippocampus_215.nii.gz"}, {"image": "./imagesTr/hippocampus_216.nii.gz", "label": "./labelsTr/hippocampus_216.nii.gz"}, {"image": "./imagesTr/hippocampus_217.nii.gz", "label": "./labelsTr/hippocampus_217.nii.gz"}, {"image": "./imagesTr/hippocampus_219.nii.gz", "label": "./labelsTr/hippocampus_219.nii.gz"}, {"image": "./imagesTr/hippocampus_220.nii.gz", "label": "./labelsTr/hippocampus_220.nii.gz"}, {"image": "./imagesTr/hippocampus_221.nii.gz", "label": "./labelsTr/hippocampus_221.nii.gz"}, {"image": "./imagesTr/hippocampus_222.nii.gz", "label": "./labelsTr/hippocampus_222.nii.gz"}, {"image": "./imagesTr/hippocampus_223.nii.gz", "label": "./labelsTr/hippocampus_223.nii.gz"}, {"image": "./imagesTr/hippocampus_224.nii.gz", "label": "./labelsTr/hippocampus_224.nii.gz"}, {"image": "./imagesTr/hippocampus_225.nii.gz", "label": "./labelsTr/hippocampus_225.nii.gz"}, {"image": "./imagesTr/hippocampus_226.nii.gz", "label": "./labelsTr/hippocampus_226.nii.gz"}, {"image": "./imagesTr/hippocampus_227.nii.gz", "label": "./labelsTr/hippocampus_227.nii.gz"}, {"image": "./imagesTr/hippocampus_228.nii.gz", "label": "./labelsTr/hippocampus_228.nii.gz"}, {"image": "./imagesTr/hippocampus_229.nii.gz", "label": "./labelsTr/hippocampus_229.nii.gz"}, {"image": "./imagesTr/hippocampus_231.nii.gz", "label": "./labelsTr/hippocampus_231.nii.gz"}, {"image": "./imagesTr/hippocampus_232.nii.gz", "label": "./labelsTr/hippocampus_232.nii.gz"}, {"image": "./imagesTr/hippocampus_234.nii.gz", "label": "./labelsTr/hippocampus_234.nii.gz"}, {"image": "./imagesTr/hippocampus_235.nii.gz", "label": "./labelsTr/hippocampus_235.nii.gz"}, {"image": "./imagesTr/hippocampus_236.nii.gz", "label": "./labelsTr/hippocampus_236.nii.gz"}, {"image": "./imagesTr/hippocampus_238.nii.gz", "label": "./labelsTr/hippocampus_238.nii.gz"}, {"image": "./imagesTr/hippocampus_244.nii.gz", "label": "./labelsTr/hippocampus_244.nii.gz"}, {"image": "./imagesTr/hippocampus_245.nii.gz", "label": "./labelsTr/hippocampus_245.nii.gz"}, {"image": "./imagesTr/hippocampus_250.nii.gz", "label": "./labelsTr/hippocampus_250.nii.gz"}, {"image": "./imagesTr/hippocampus_251.nii.gz", "label": "./labelsTr/hippocampus_251.nii.gz"}, {"image": "./imagesTr/hippocampus_252.nii.gz", "label": "./labelsTr/hippocampus_252.nii.gz"}, {"image": "./imagesTr/hippocampus_257.nii.gz", "label": "./labelsTr/hippocampus_257.nii.gz"}, {"image": "./imagesTr/hippocampus_259.nii.gz", "label": "./labelsTr/hippocampus_259.nii.gz"}, {"image": "./imagesTr/hippocampus_260.nii.gz", "label": "./labelsTr/hippocampus_260.nii.gz"}, {"image": "./imagesTr/hippocampus_261.nii.gz", "label": "./labelsTr/hippocampus_261.nii.gz"}, {"image": "./imagesTr/hippocampus_263.nii.gz", "label": "./labelsTr/hippocampus_263.nii.gz"}, {"image": "./imagesTr/hippocampus_264.nii.gz", "label": "./labelsTr/hippocampus_264.nii.gz"}, {"image": "./imagesTr/hippocampus_265.nii.gz", "label": "./labelsTr/hippocampus_265.nii.gz"}, {"image": "./imagesTr/hippocampus_274.nii.gz", "label": "./labelsTr/hippocampus_274.nii.gz"}, {"image": "./imagesTr/hippocampus_276.nii.gz", "label": "./labelsTr/hippocampus_276.nii.gz"}, {"image": "./imagesTr/hippocampus_277.nii.gz", "label": "./labelsTr/hippocampus_277.nii.gz"}, {"image": "./imagesTr/hippocampus_279.nii.gz", "label": "./labelsTr/hippocampus_279.nii.gz"}, {"image": "./imagesTr/hippocampus_280.nii.gz", "label": "./labelsTr/hippocampus_280.nii.gz"}, {"image": "./imagesTr/hippocampus_286.nii.gz", "label": "./labelsTr/hippocampus_286.nii.gz"}, {"image": "./imagesTr/hippocampus_287.nii.gz", "label": "./labelsTr/hippocampus_287.nii.gz"}, {"image": "./imagesTr/hippocampus_288.nii.gz", "label": "./labelsTr/hippocampus_288.nii.gz"}, {"image": "./imagesTr/hippocampus_289.nii.gz", "label": "./labelsTr/hippocampus_289.nii.gz"}, {"image": "./imagesTr/hippocampus_290.nii.gz", "label": "./labelsTr/hippocampus_290.nii.gz"}, {"image": "./imagesTr/hippocampus_292.nii.gz", "label": "./labelsTr/hippocampus_292.nii.gz"}, {"image": "./imagesTr/hippocampus_295.nii.gz", "label": "./labelsTr/hippocampus_295.nii.gz"}, {"image": "./imagesTr/hippocampus_296.nii.gz", "label": "./labelsTr/hippocampus_296.nii.gz"}, {"image": "./imagesTr/hippocampus_297.nii.gz", "label": "./labelsTr/hippocampus_297.nii.gz"}, {"image": "./imagesTr/hippocampus_298.nii.gz", "label": "./labelsTr/hippocampus_298.nii.gz"}, {"image": "./imagesTr/hippocampus_299.nii.gz", "label": "./labelsTr/hippocampus_299.nii.gz"}, {"image": "./imagesTr/hippocampus_300.nii.gz", "label": "./labelsTr/hippocampus_300.nii.gz"}, {"image": "./imagesTr/hippocampus_302.nii.gz", "label": "./labelsTr/hippocampus_302.nii.gz"}, {"image": "./imagesTr/hippocampus_304.nii.gz", "label": "./labelsTr/hippocampus_304.nii.gz"}, {"image": "./imagesTr/hippocampus_305.nii.gz", "label": "./labelsTr/hippocampus_305.nii.gz"}, {"image": "./imagesTr/hippocampus_308.nii.gz", "label": "./labelsTr/hippocampus_308.nii.gz"}, {"image": "./imagesTr/hippocampus_309.nii.gz", "label": "./labelsTr/hippocampus_309.nii.gz"}, {"image": "./imagesTr/hippocampus_311.nii.gz", "label": "./labelsTr/hippocampus_311.nii.gz"}, {"image": "./imagesTr/hippocampus_314.nii.gz", "label": "./labelsTr/hippocampus_314.nii.gz"}, {"image": "./imagesTr/hippocampus_316.nii.gz", "label": "./labelsTr/hippocampus_316.nii.gz"}, {"image": "./imagesTr/hippocampus_317.nii.gz", "label": "./labelsTr/hippocampus_317.nii.gz"}, {"image": "./imagesTr/hippocampus_320.nii.gz", "label": "./labelsTr/hippocampus_320.nii.gz"}, {"image": "./imagesTr/hippocampus_321.nii.gz", "label": "./labelsTr/hippocampus_321.nii.gz"}, {"image": "./imagesTr/hippocampus_322.nii.gz", "label": "./labelsTr/hippocampus_322.nii.gz"}, {"image": "./imagesTr/hippocampus_325.nii.gz", "label": "./labelsTr/hippocampus_325.nii.gz"}, {"image": "./imagesTr/hippocampus_326.nii.gz", "label": "./labelsTr/hippocampus_326.nii.gz"}, {"image": "./imagesTr/hippocampus_327.nii.gz", "label": "./labelsTr/hippocampus_327.nii.gz"}, {"image": "./imagesTr/hippocampus_328.nii.gz", "label": "./labelsTr/hippocampus_328.nii.gz"}, {"image": "./imagesTr/hippocampus_329.nii.gz", "label": "./labelsTr/hippocampus_329.nii.gz"}, {"image": "./imagesTr/hippocampus_330.nii.gz", "label": "./labelsTr/hippocampus_330.nii.gz"}, {"image": "./imagesTr/hippocampus_332.nii.gz", "label": "./labelsTr/hippocampus_332.nii.gz"}, {"image": "./imagesTr/hippocampus_334.nii.gz", "label": "./labelsTr/hippocampus_334.nii.gz"}, {"image": "./imagesTr/hippocampus_336.nii.gz", "label": "./labelsTr/hippocampus_336.nii.gz"}, {"image": "./imagesTr/hippocampus_337.nii.gz", "label": "./labelsTr/hippocampus_337.nii.gz"}, {"image": "./imagesTr/hippocampus_338.nii.gz", "label": "./labelsTr/hippocampus_338.nii.gz"}, {"image": "./imagesTr/hippocampus_340.nii.gz", "label": "./labelsTr/hippocampus_340.nii.gz"}, {"image": "./imagesTr/hippocampus_343.nii.gz", "label": "./labelsTr/hippocampus_343.nii.gz"}, {"image": "./imagesTr/hippocampus_345.nii.gz", "label": "./labelsTr/hippocampus_345.nii.gz"}, {"image": "./imagesTr/hippocampus_349.nii.gz", "label": "./labelsTr/hippocampus_349.nii.gz"}, {"image": "./imagesTr/hippocampus_350.nii.gz", "label": "./labelsTr/hippocampus_350.nii.gz"}, {"image": "./imagesTr/hippocampus_351.nii.gz", "label": "./labelsTr/hippocampus_351.nii.gz"}, {"image": "./imagesTr/hippocampus_352.nii.gz", "label": "./labelsTr/hippocampus_352.nii.gz"}, {"image": "./imagesTr/hippocampus_353.nii.gz", "label": "./labelsTr/hippocampus_353.nii.gz"}, {"image": "./imagesTr/hippocampus_354.nii.gz", "label": "./labelsTr/hippocampus_354.nii.gz"}, {"image": "./imagesTr/hippocampus_355.nii.gz", "label": "./labelsTr/hippocampus_355.nii.gz"}, {"image": "./imagesTr/hippocampus_356.nii.gz", "label": "./labelsTr/hippocampus_356.nii.gz"}, {"image": "./imagesTr/hippocampus_358.nii.gz", "label": "./labelsTr/hippocampus_358.nii.gz"}, {"image": "./imagesTr/hippocampus_360.nii.gz", "label": "./labelsTr/hippocampus_360.nii.gz"}, {"image": "./imagesTr/hippocampus_366.nii.gz", "label": "./labelsTr/hippocampus_366.nii.gz"}, {"image": "./imagesTr/hippocampus_367.nii.gz", "label": "./labelsTr/hippocampus_367.nii.gz"}, {"image": "./imagesTr/hippocampus_368.nii.gz", "label": "./labelsTr/hippocampus_368.nii.gz"}, {"image": "./imagesTr/hippocampus_370.nii.gz", "label": "./labelsTr/hippocampus_370.nii.gz"}, {"image": "./imagesTr/hippocampus_372.nii.gz", "label": "./labelsTr/hippocampus_372.nii.gz"}, {"image": "./imagesTr/hippocampus_373.nii.gz", "label": "./labelsTr/hippocampus_373.nii.gz"}, {"image": "./imagesTr/hippocampus_374.nii.gz", "label": "./labelsTr/hippocampus_374.nii.gz"}, {"image": "./imagesTr/hippocampus_375.nii.gz", "label": "./labelsTr/hippocampus_375.nii.gz"}, {"image": "./imagesTr/hippocampus_378.nii.gz", "label": "./labelsTr/hippocampus_378.nii.gz"}, {"image": "./imagesTr/hippocampus_381.nii.gz", "label": "./labelsTr/hippocampus_381.nii.gz"}, {"image": "./imagesTr/hippocampus_383.nii.gz", "label": "./labelsTr/hippocampus_383.nii.gz"}, {"image": "./imagesTr/hippocampus_385.nii.gz", "label": "./labelsTr/hippocampus_385.nii.gz"}, {"image": "./imagesTr/hippocampus_387.nii.gz", "label": "./labelsTr/hippocampus_387.nii.gz"}, {"image": "./imagesTr/hippocampus_389.nii.gz", "label": "./labelsTr/hippocampus_389.nii.gz"}, {"image": "./imagesTr/hippocampus_390.nii.gz", "label": "./labelsTr/hippocampus_390.nii.gz"}, {"image": "./imagesTr/hippocampus_393.nii.gz", "label": "./labelsTr/hippocampus_393.nii.gz"}, {"image": "./imagesTr/hippocampus_394.nii.gz", "label": "./labelsTr/hippocampus_394.nii.gz"}], "validation_fold4": [{"image": "./imagesTr/hippocampus_008.nii.gz", "label": "./labelsTr/hippocampus_008.nii.gz"}, {"image": "./imagesTr/hippocampus_014.nii.gz", "label": "./labelsTr/hippocampus_014.nii.gz"}, {"image": "./imagesTr/hippocampus_020.nii.gz", "label": "./labelsTr/hippocampus_020.nii.gz"}, {"image": "./imagesTr/hippocampus_040.nii.gz", "label": "./labelsTr/hippocampus_040.nii.gz"}, {"image": "./imagesTr/hippocampus_048.nii.gz", "label": "./labelsTr/hippocampus_048.nii.gz"}, {"image": "./imagesTr/hippocampus_050.nii.gz", "label": "./labelsTr/hippocampus_050.nii.gz"}, {"image": "./imagesTr/hippocampus_053.nii.gz", "label": "./labelsTr/hippocampus_053.nii.gz"}, {"image": "./imagesTr/hippocampus_057.nii.gz", "label": "./labelsTr/hippocampus_057.nii.gz"}, {"image": "./imagesTr/hippocampus_070.nii.gz", "label": "./labelsTr/hippocampus_070.nii.gz"}, {"image": "./imagesTr/hippocampus_091.nii.gz", "label": "./labelsTr/hippocampus_091.nii.gz"}, {"image": "./imagesTr/hippocampus_097.nii.gz", "label": "./labelsTr/hippocampus_097.nii.gz"}, {"image": "./imagesTr/hippocampus_104.nii.gz", "label": "./labelsTr/hippocampus_104.nii.gz"}, {"image": "./imagesTr/hippocampus_124.nii.gz", "label": "./labelsTr/hippocampus_124.nii.gz"}, {"image": "./imagesTr/hippocampus_127.nii.gz", "label": "./labelsTr/hippocampus_127.nii.gz"}, {"image": "./imagesTr/hippocampus_132.nii.gz", "label": "./labelsTr/hippocampus_132.nii.gz"}, {"image": "./imagesTr/hippocampus_138.nii.gz", "label": "./labelsTr/hippocampus_138.nii.gz"}, {"image": "./imagesTr/hippocampus_146.nii.gz", "label": "./labelsTr/hippocampus_146.nii.gz"}, {"image": "./imagesTr/hippocampus_152.nii.gz", "label": "./labelsTr/hippocampus_152.nii.gz"}, {"image": "./imagesTr/hippocampus_160.nii.gz", "label": "./labelsTr/hippocampus_160.nii.gz"}, {"image": "./imagesTr/hippocampus_170.nii.gz", "label": "./labelsTr/hippocampus_170.nii.gz"}, {"image": "./imagesTr/hippocampus_172.nii.gz", "label": "./labelsTr/hippocampus_172.nii.gz"}, {"image": "./imagesTr/hippocampus_173.nii.gz", "label": "./labelsTr/hippocampus_173.nii.gz"}, {"image": "./imagesTr/hippocampus_178.nii.gz", "label": "./labelsTr/hippocampus_178.nii.gz"}, {"image": "./imagesTr/hippocampus_180.nii.gz", "label": "./labelsTr/hippocampus_180.nii.gz"}, {"image": "./imagesTr/hippocampus_181.nii.gz", "label": "./labelsTr/hippocampus_181.nii.gz"}, {"image": "./imagesTr/hippocampus_188.nii.gz", "label": "./labelsTr/hippocampus_188.nii.gz"}, {"image": "./imagesTr/hippocampus_189.nii.gz", "label": "./labelsTr/hippocampus_189.nii.gz"}, {"image": "./imagesTr/hippocampus_197.nii.gz", "label": "./labelsTr/hippocampus_197.nii.gz"}, {"image": "./imagesTr/hippocampus_207.nii.gz", "label": "./labelsTr/hippocampus_207.nii.gz"}, {"image": "./imagesTr/hippocampus_212.nii.gz", "label": "./labelsTr/hippocampus_212.nii.gz"}, {"image": "./imagesTr/hippocampus_216.nii.gz", "label": "./labelsTr/hippocampus_216.nii.gz"}, {"image": "./imagesTr/hippocampus_222.nii.gz", "label": "./labelsTr/hippocampus_222.nii.gz"}, {"image": "./imagesTr/hippocampus_226.nii.gz", "label": "./labelsTr/hippocampus_226.nii.gz"}, {"image": "./imagesTr/hippocampus_227.nii.gz", "label": "./labelsTr/hippocampus_227.nii.gz"}, {"image": "./imagesTr/hippocampus_260.nii.gz", "label": "./labelsTr/hippocampus_260.nii.gz"}, {"image": "./imagesTr/hippocampus_290.nii.gz", "label": "./labelsTr/hippocampus_290.nii.gz"}, {"image": "./imagesTr/hippocampus_292.nii.gz", "label": "./labelsTr/hippocampus_292.nii.gz"}, {"image": "./imagesTr/hippocampus_298.nii.gz", "label": "./labelsTr/hippocampus_298.nii.gz"}, {"image": "./imagesTr/hippocampus_314.nii.gz", "label": "./labelsTr/hippocampus_314.nii.gz"}, {"image": "./imagesTr/hippocampus_322.nii.gz", "label": "./labelsTr/hippocampus_322.nii.gz"}, {"image": "./imagesTr/hippocampus_326.nii.gz", "label": "./labelsTr/hippocampus_326.nii.gz"}, {"image": "./imagesTr/hippocampus_334.nii.gz", "label": "./labelsTr/hippocampus_334.nii.gz"}, {"image": "./imagesTr/hippocampus_340.nii.gz", "label": "./labelsTr/hippocampus_340.nii.gz"}, {"image": "./imagesTr/hippocampus_353.nii.gz", "label": "./labelsTr/hippocampus_353.nii.gz"}, {"image": "./imagesTr/hippocampus_367.nii.gz", "label": "./labelsTr/hippocampus_367.nii.gz"}, {"image": "./imagesTr/hippocampus_368.nii.gz", "label": "./labelsTr/hippocampus_368.nii.gz"}, {"image": "./imagesTr/hippocampus_375.nii.gz", "label": "./labelsTr/hippocampus_375.nii.gz"}, {"image": "./imagesTr/hippocampus_381.nii.gz", "label": "./labelsTr/hippocampus_381.nii.gz"}, {"image": "./imagesTr/hippocampus_385.nii.gz", "label": "./labelsTr/hippocampus_385.nii.gz"}, {"image": "./imagesTr/hippocampus_389.nii.gz", "label": "./labelsTr/hippocampus_389.nii.gz"}, {"image": "./imagesTr/hippocampus_390.nii.gz", "label": "./labelsTr/hippocampus_390.nii.gz"}, {"image": "./imagesTr/hippocampus_393.nii.gz", "label": "./labelsTr/hippocampus_393.nii.gz"}], "train_fold4": [{"image": "./imagesTr/hippocampus_001.nii.gz", "label": "./labelsTr/hippocampus_001.nii.gz"}, {"image": "./imagesTr/hippocampus_003.nii.gz", "label": "./labelsTr/hippocampus_003.nii.gz"}, {"image": "./imagesTr/hippocampus_004.nii.gz", "label": "./labelsTr/hippocampus_004.nii.gz"}, {"image": "./imagesTr/hippocampus_006.nii.gz", "label": "./labelsTr/hippocampus_006.nii.gz"}, {"image": "./imagesTr/hippocampus_007.nii.gz", "label": "./labelsTr/hippocampus_007.nii.gz"}, {"image": "./imagesTr/hippocampus_011.nii.gz", "label": "./labelsTr/hippocampus_011.nii.gz"}, {"image": "./imagesTr/hippocampus_015.nii.gz", "label": "./labelsTr/hippocampus_015.nii.gz"}, {"image": "./imagesTr/hippocampus_017.nii.gz", "label": "./labelsTr/hippocampus_017.nii.gz"}, {"image": "./imagesTr/hippocampus_019.nii.gz", "label": "./labelsTr/hippocampus_019.nii.gz"}, {"image": "./imagesTr/hippocampus_023.nii.gz", "label": "./labelsTr/hippocampus_023.nii.gz"}, {"image": "./imagesTr/hippocampus_024.nii.gz", "label": "./labelsTr/hippocampus_024.nii.gz"}, {"image": "./imagesTr/hippocampus_025.nii.gz", "label": "./labelsTr/hippocampus_025.nii.gz"}, {"image": "./imagesTr/hippocampus_026.nii.gz", "label": "./labelsTr/hippocampus_026.nii.gz"}, {"image": "./imagesTr/hippocampus_033.nii.gz", "label": "./labelsTr/hippocampus_033.nii.gz"}, {"image": "./imagesTr/hippocampus_034.nii.gz", "label": "./labelsTr/hippocampus_034.nii.gz"}, {"image": "./imagesTr/hippocampus_035.nii.gz", "label": "./labelsTr/hippocampus_035.nii.gz"}, {"image": "./imagesTr/hippocampus_036.nii.gz", "label": "./labelsTr/hippocampus_036.nii.gz"}, {"image": "./imagesTr/hippocampus_037.nii.gz", "label": "./labelsTr/hippocampus_037.nii.gz"}, {"image": "./imagesTr/hippocampus_038.nii.gz", "label": "./labelsTr/hippocampus_038.nii.gz"}, {"image": "./imagesTr/hippocampus_039.nii.gz", "label": "./labelsTr/hippocampus_039.nii.gz"}, {"image": "./imagesTr/hippocampus_041.nii.gz", "label": "./labelsTr/hippocampus_041.nii.gz"}, {"image": "./imagesTr/hippocampus_042.nii.gz", "label": "./labelsTr/hippocampus_042.nii.gz"}, {"image": "./imagesTr/hippocampus_044.nii.gz", "label": "./labelsTr/hippocampus_044.nii.gz"}, {"image": "./imagesTr/hippocampus_045.nii.gz", "label": "./labelsTr/hippocampus_045.nii.gz"}, {"image": "./imagesTr/hippocampus_046.nii.gz", "label": "./labelsTr/hippocampus_046.nii.gz"}, {"image": "./imagesTr/hippocampus_049.nii.gz", "label": "./labelsTr/hippocampus_049.nii.gz"}, {"image": "./imagesTr/hippocampus_051.nii.gz", "label": "./labelsTr/hippocampus_051.nii.gz"}, {"image": "./imagesTr/hippocampus_052.nii.gz", "label": "./labelsTr/hippocampus_052.nii.gz"}, {"image": "./imagesTr/hippocampus_056.nii.gz", "label": "./labelsTr/hippocampus_056.nii.gz"}, {"image": "./imagesTr/hippocampus_058.nii.gz", "label": "./labelsTr/hippocampus_058.nii.gz"}, {"image": "./imagesTr/hippocampus_060.nii.gz", "label": "./labelsTr/hippocampus_060.nii.gz"}, {"image": "./imagesTr/hippocampus_064.nii.gz", "label": "./labelsTr/hippocampus_064.nii.gz"}, {"image": "./imagesTr/hippocampus_065.nii.gz", "label": "./labelsTr/hippocampus_065.nii.gz"}, {"image": "./imagesTr/hippocampus_067.nii.gz", "label": "./labelsTr/hippocampus_067.nii.gz"}, {"image": "./imagesTr/hippocampus_068.nii.gz", "label": "./labelsTr/hippocampus_068.nii.gz"}, {"image": "./imagesTr/hippocampus_074.nii.gz", "label": "./labelsTr/hippocampus_074.nii.gz"}, {"image": "./imagesTr/hippocampus_075.nii.gz", "label": "./labelsTr/hippocampus_075.nii.gz"}, {"image": "./imagesTr/hippocampus_077.nii.gz", "label": "./labelsTr/hippocampus_077.nii.gz"}, {"image": "./imagesTr/hippocampus_083.nii.gz", "label": "./labelsTr/hippocampus_083.nii.gz"}, {"image": "./imagesTr/hippocampus_084.nii.gz", "label": "./labelsTr/hippocampus_084.nii.gz"}, {"image": "./imagesTr/hippocampus_087.nii.gz", "label": "./labelsTr/hippocampus_087.nii.gz"}, {"image": "./imagesTr/hippocampus_088.nii.gz", "label": "./labelsTr/hippocampus_088.nii.gz"}, {"image": "./imagesTr/hippocampus_089.nii.gz", "label": "./labelsTr/hippocampus_089.nii.gz"}, {"image": "./imagesTr/hippocampus_090.nii.gz", "label": "./labelsTr/hippocampus_090.nii.gz"}, {"image": "./imagesTr/hippocampus_092.nii.gz", "label": "./labelsTr/hippocampus_092.nii.gz"}, {"image": "./imagesTr/hippocampus_093.nii.gz", "label": "./labelsTr/hippocampus_093.nii.gz"}, {"image": "./imagesTr/hippocampus_094.nii.gz", "label": "./labelsTr/hippocampus_094.nii.gz"}, {"image": "./imagesTr/hippocampus_095.nii.gz", "label": "./labelsTr/hippocampus_095.nii.gz"}, {"image": "./imagesTr/hippocampus_096.nii.gz", "label": "./labelsTr/hippocampus_096.nii.gz"}, {"image": "./imagesTr/hippocampus_098.nii.gz", "label": "./labelsTr/hippocampus_098.nii.gz"}, {"image": "./imagesTr/hippocampus_099.nii.gz", "label": "./labelsTr/hippocampus_099.nii.gz"}, {"image": "./imagesTr/hippocampus_101.nii.gz", "label": "./labelsTr/hippocampus_101.nii.gz"}, {"image": "./imagesTr/hippocampus_102.nii.gz", "label": "./labelsTr/hippocampus_102.nii.gz"}, {"image": "./imagesTr/hippocampus_105.nii.gz", "label": "./labelsTr/hippocampus_105.nii.gz"}, {"image": "./imagesTr/hippocampus_106.nii.gz", "label": "./labelsTr/hippocampus_106.nii.gz"}, {"image": "./imagesTr/hippocampus_107.nii.gz", "label": "./labelsTr/hippocampus_107.nii.gz"}, {"image": "./imagesTr/hippocampus_108.nii.gz", "label": "./labelsTr/hippocampus_108.nii.gz"}, {"image": "./imagesTr/hippocampus_109.nii.gz", "label": "./labelsTr/hippocampus_109.nii.gz"}, {"image": "./imagesTr/hippocampus_114.nii.gz", "label": "./labelsTr/hippocampus_114.nii.gz"}, {"image": "./imagesTr/hippocampus_123.nii.gz", "label": "./labelsTr/hippocampus_123.nii.gz"}, {"image": "./imagesTr/hippocampus_125.nii.gz", "label": "./labelsTr/hippocampus_125.nii.gz"}, {"image": "./imagesTr/hippocampus_126.nii.gz", "label": "./labelsTr/hippocampus_126.nii.gz"}, {"image": "./imagesTr/hippocampus_130.nii.gz", "label": "./labelsTr/hippocampus_130.nii.gz"}, {"image": "./imagesTr/hippocampus_133.nii.gz", "label": "./labelsTr/hippocampus_133.nii.gz"}, {"image": "./imagesTr/hippocampus_135.nii.gz", "label": "./labelsTr/hippocampus_135.nii.gz"}, {"image": "./imagesTr/hippocampus_136.nii.gz", "label": "./labelsTr/hippocampus_136.nii.gz"}, {"image": "./imagesTr/hippocampus_141.nii.gz", "label": "./labelsTr/hippocampus_141.nii.gz"}, {"image": "./imagesTr/hippocampus_142.nii.gz", "label": "./labelsTr/hippocampus_142.nii.gz"}, {"image": "./imagesTr/hippocampus_143.nii.gz", "label": "./labelsTr/hippocampus_143.nii.gz"}, {"image": "./imagesTr/hippocampus_144.nii.gz", "label": "./labelsTr/hippocampus_144.nii.gz"}, {"image": "./imagesTr/hippocampus_145.nii.gz", "label": "./labelsTr/hippocampus_145.nii.gz"}, {"image": "./imagesTr/hippocampus_148.nii.gz", "label": "./labelsTr/hippocampus_148.nii.gz"}, {"image": "./imagesTr/hippocampus_149.nii.gz", "label": "./labelsTr/hippocampus_149.nii.gz"}, {"image": "./imagesTr/hippocampus_150.nii.gz", "label": "./labelsTr/hippocampus_150.nii.gz"}, {"image": "./imagesTr/hippocampus_154.nii.gz", "label": "./labelsTr/hippocampus_154.nii.gz"}, {"image": "./imagesTr/hippocampus_155.nii.gz", "label": "./labelsTr/hippocampus_155.nii.gz"}, {"image": "./imagesTr/hippocampus_156.nii.gz", "label": "./labelsTr/hippocampus_156.nii.gz"}, {"image": "./imagesTr/hippocampus_157.nii.gz", "label": "./labelsTr/hippocampus_157.nii.gz"}, {"image": "./imagesTr/hippocampus_158.nii.gz", "label": "./labelsTr/hippocampus_158.nii.gz"}, {"image": "./imagesTr/hippocampus_161.nii.gz", "label": "./labelsTr/hippocampus_161.nii.gz"}, {"image": "./imagesTr/hippocampus_162.nii.gz", "label": "./labelsTr/hippocampus_162.nii.gz"}, {"image": "./imagesTr/hippocampus_163.nii.gz", "label": "./labelsTr/hippocampus_163.nii.gz"}, {"image": "./imagesTr/hippocampus_164.nii.gz", "label": "./labelsTr/hippocampus_164.nii.gz"}, {"image": "./imagesTr/hippocampus_165.nii.gz", "label": "./labelsTr/hippocampus_165.nii.gz"}, {"image": "./imagesTr/hippocampus_166.nii.gz", "label": "./labelsTr/hippocampus_166.nii.gz"}, {"image": "./imagesTr/hippocampus_169.nii.gz", "label": "./labelsTr/hippocampus_169.nii.gz"}, {"image": "./imagesTr/hippocampus_171.nii.gz", "label": "./labelsTr/hippocampus_171.nii.gz"}, {"image": "./imagesTr/hippocampus_174.nii.gz", "label": "./labelsTr/hippocampus_174.nii.gz"}, {"image": "./imagesTr/hippocampus_175.nii.gz", "label": "./labelsTr/hippocampus_175.nii.gz"}, {"image": "./imagesTr/hippocampus_176.nii.gz", "label": "./labelsTr/hippocampus_176.nii.gz"}, {"image": "./imagesTr/hippocampus_177.nii.gz", "label": "./labelsTr/hippocampus_177.nii.gz"}, {"image": "./imagesTr/hippocampus_184.nii.gz", "label": "./labelsTr/hippocampus_184.nii.gz"}, {"image": "./imagesTr/hippocampus_185.nii.gz", "label": "./labelsTr/hippocampus_185.nii.gz"}, {"image": "./imagesTr/hippocampus_190.nii.gz", "label": "./labelsTr/hippocampus_190.nii.gz"}, {"image": "./imagesTr/hippocampus_193.nii.gz", "label": "./labelsTr/hippocampus_193.nii.gz"}, {"image": "./imagesTr/hippocampus_194.nii.gz", "label": "./labelsTr/hippocampus_194.nii.gz"}, {"image": "./imagesTr/hippocampus_195.nii.gz", "label": "./labelsTr/hippocampus_195.nii.gz"}, {"image": "./imagesTr/hippocampus_199.nii.gz", "label": "./labelsTr/hippocampus_199.nii.gz"}, {"image": "./imagesTr/hippocampus_203.nii.gz", "label": "./labelsTr/hippocampus_203.nii.gz"}, {"image": "./imagesTr/hippocampus_204.nii.gz", "label": "./labelsTr/hippocampus_204.nii.gz"}, {"image": "./imagesTr/hippocampus_205.nii.gz", "label": "./labelsTr/hippocampus_205.nii.gz"}, {"image": "./imagesTr/hippocampus_210.nii.gz", "label": "./labelsTr/hippocampus_210.nii.gz"}, {"image": "./imagesTr/hippocampus_215.nii.gz", "label": "./labelsTr/hippocampus_215.nii.gz"}, {"image": "./imagesTr/hippocampus_217.nii.gz", "label": "./labelsTr/hippocampus_217.nii.gz"}, {"image": "./imagesTr/hippocampus_219.nii.gz", "label": "./labelsTr/hippocampus_219.nii.gz"}, {"image": "./imagesTr/hippocampus_220.nii.gz", "label": "./labelsTr/hippocampus_220.nii.gz"}, {"image": "./imagesTr/hippocampus_221.nii.gz", "label": "./labelsTr/hippocampus_221.nii.gz"}, {"image": "./imagesTr/hippocampus_223.nii.gz", "label": "./labelsTr/hippocampus_223.nii.gz"}, {"image": "./imagesTr/hippocampus_224.nii.gz", "label": "./labelsTr/hippocampus_224.nii.gz"}, {"image": "./imagesTr/hippocampus_225.nii.gz", "label": "./labelsTr/hippocampus_225.nii.gz"}, {"image": "./imagesTr/hippocampus_228.nii.gz", "label": "./labelsTr/hippocampus_228.nii.gz"}, {"image": "./imagesTr/hippocampus_229.nii.gz", "label": "./labelsTr/hippocampus_229.nii.gz"}, {"image": "./imagesTr/hippocampus_230.nii.gz", "label": "./labelsTr/hippocampus_230.nii.gz"}, {"image": "./imagesTr/hippocampus_231.nii.gz", "label": "./labelsTr/hippocampus_231.nii.gz"}, {"image": "./imagesTr/hippocampus_232.nii.gz", "label": "./labelsTr/hippocampus_232.nii.gz"}, {"image": "./imagesTr/hippocampus_233.nii.gz", "label": "./labelsTr/hippocampus_233.nii.gz"}, {"image": "./imagesTr/hippocampus_234.nii.gz", "label": "./labelsTr/hippocampus_234.nii.gz"}, {"image": "./imagesTr/hippocampus_235.nii.gz", "label": "./labelsTr/hippocampus_235.nii.gz"}, {"image": "./imagesTr/hippocampus_236.nii.gz", "label": "./labelsTr/hippocampus_236.nii.gz"}, {"image": "./imagesTr/hippocampus_238.nii.gz", "label": "./labelsTr/hippocampus_238.nii.gz"}, {"image": "./imagesTr/hippocampus_242.nii.gz", "label": "./labelsTr/hippocampus_242.nii.gz"}, {"image": "./imagesTr/hippocampus_243.nii.gz", "label": "./labelsTr/hippocampus_243.nii.gz"}, {"image": "./imagesTr/hippocampus_244.nii.gz", "label": "./labelsTr/hippocampus_244.nii.gz"}, {"image": "./imagesTr/hippocampus_245.nii.gz", "label": "./labelsTr/hippocampus_245.nii.gz"}, {"image": "./imagesTr/hippocampus_248.nii.gz", "label": "./labelsTr/hippocampus_248.nii.gz"}, {"image": "./imagesTr/hippocampus_249.nii.gz", "label": "./labelsTr/hippocampus_249.nii.gz"}, {"image": "./imagesTr/hippocampus_250.nii.gz", "label": "./labelsTr/hippocampus_250.nii.gz"}, {"image": "./imagesTr/hippocampus_251.nii.gz", "label": "./labelsTr/hippocampus_251.nii.gz"}, {"image": "./imagesTr/hippocampus_252.nii.gz", "label": "./labelsTr/hippocampus_252.nii.gz"}, {"image": "./imagesTr/hippocampus_253.nii.gz", "label": "./labelsTr/hippocampus_253.nii.gz"}, {"image": "./imagesTr/hippocampus_257.nii.gz", "label": "./labelsTr/hippocampus_257.nii.gz"}, {"image": "./imagesTr/hippocampus_259.nii.gz", "label": "./labelsTr/hippocampus_259.nii.gz"}, {"image": "./imagesTr/hippocampus_261.nii.gz", "label": "./labelsTr/hippocampus_261.nii.gz"}, {"image": "./imagesTr/hippocampus_263.nii.gz", "label": "./labelsTr/hippocampus_263.nii.gz"}, {"image": "./imagesTr/hippocampus_264.nii.gz", "label": "./labelsTr/hippocampus_264.nii.gz"}, {"image": "./imagesTr/hippocampus_265.nii.gz", "label": "./labelsTr/hippocampus_265.nii.gz"}, {"image": "./imagesTr/hippocampus_268.nii.gz", "label": "./labelsTr/hippocampus_268.nii.gz"}, {"image": "./imagesTr/hippocampus_269.nii.gz", "label": "./labelsTr/hippocampus_269.nii.gz"}, {"image": "./imagesTr/hippocampus_274.nii.gz", "label": "./labelsTr/hippocampus_274.nii.gz"}, {"image": "./imagesTr/hippocampus_276.nii.gz", "label": "./labelsTr/hippocampus_276.nii.gz"}, {"image": "./imagesTr/hippocampus_277.nii.gz", "label": "./labelsTr/hippocampus_277.nii.gz"}, {"image": "./imagesTr/hippocampus_279.nii.gz", "label": "./labelsTr/hippocampus_279.nii.gz"}, {"image": "./imagesTr/hippocampus_280.nii.gz", "label": "./labelsTr/hippocampus_280.nii.gz"}, {"image": "./imagesTr/hippocampus_282.nii.gz", "label": "./labelsTr/hippocampus_282.nii.gz"}, {"image": "./imagesTr/hippocampus_286.nii.gz", "label": "./labelsTr/hippocampus_286.nii.gz"}, {"image": "./imagesTr/hippocampus_287.nii.gz", "label": "./labelsTr/hippocampus_287.nii.gz"}, {"image": "./imagesTr/hippocampus_288.nii.gz", "label": "./labelsTr/hippocampus_288.nii.gz"}, {"image": "./imagesTr/hippocampus_289.nii.gz", "label": "./labelsTr/hippocampus_289.nii.gz"}, {"image": "./imagesTr/hippocampus_294.nii.gz", "label": "./labelsTr/hippocampus_294.nii.gz"}, {"image": "./imagesTr/hippocampus_295.nii.gz", "label": "./labelsTr/hippocampus_295.nii.gz"}, {"image": "./imagesTr/hippocampus_296.nii.gz", "label": "./labelsTr/hippocampus_296.nii.gz"}, {"image": "./imagesTr/hippocampus_297.nii.gz", "label": "./labelsTr/hippocampus_297.nii.gz"}, {"image": "./imagesTr/hippocampus_299.nii.gz", "label": "./labelsTr/hippocampus_299.nii.gz"}, {"image": "./imagesTr/hippocampus_300.nii.gz", "label": "./labelsTr/hippocampus_300.nii.gz"}, {"image": "./imagesTr/hippocampus_301.nii.gz", "label": "./labelsTr/hippocampus_301.nii.gz"}, {"image": "./imagesTr/hippocampus_302.nii.gz", "label": "./labelsTr/hippocampus_302.nii.gz"}, {"image": "./imagesTr/hippocampus_303.nii.gz", "label": "./labelsTr/hippocampus_303.nii.gz"}, {"image": "./imagesTr/hippocampus_304.nii.gz", "label": "./labelsTr/hippocampus_304.nii.gz"}, {"image": "./imagesTr/hippocampus_305.nii.gz", "label": "./labelsTr/hippocampus_305.nii.gz"}, {"image": "./imagesTr/hippocampus_308.nii.gz", "label": "./labelsTr/hippocampus_308.nii.gz"}, {"image": "./imagesTr/hippocampus_309.nii.gz", "label": "./labelsTr/hippocampus_309.nii.gz"}, {"image": "./imagesTr/hippocampus_310.nii.gz", "label": "./labelsTr/hippocampus_310.nii.gz"}, {"image": "./imagesTr/hippocampus_311.nii.gz", "label": "./labelsTr/hippocampus_311.nii.gz"}, {"image": "./imagesTr/hippocampus_316.nii.gz", "label": "./labelsTr/hippocampus_316.nii.gz"}, {"image": "./imagesTr/hippocampus_317.nii.gz", "label": "./labelsTr/hippocampus_317.nii.gz"}, {"image": "./imagesTr/hippocampus_318.nii.gz", "label": "./labelsTr/hippocampus_318.nii.gz"}, {"image": "./imagesTr/hippocampus_319.nii.gz", "label": "./labelsTr/hippocampus_319.nii.gz"}, {"image": "./imagesTr/hippocampus_320.nii.gz", "label": "./labelsTr/hippocampus_320.nii.gz"}, {"image": "./imagesTr/hippocampus_321.nii.gz", "label": "./labelsTr/hippocampus_321.nii.gz"}, {"image": "./imagesTr/hippocampus_325.nii.gz", "label": "./labelsTr/hippocampus_325.nii.gz"}, {"image": "./imagesTr/hippocampus_327.nii.gz", "label": "./labelsTr/hippocampus_327.nii.gz"}, {"image": "./imagesTr/hippocampus_328.nii.gz", "label": "./labelsTr/hippocampus_328.nii.gz"}, {"image": "./imagesTr/hippocampus_329.nii.gz", "label": "./labelsTr/hippocampus_329.nii.gz"}, {"image": "./imagesTr/hippocampus_330.nii.gz", "label": "./labelsTr/hippocampus_330.nii.gz"}, {"image": "./imagesTr/hippocampus_331.nii.gz", "label": "./labelsTr/hippocampus_331.nii.gz"}, {"image": "./imagesTr/hippocampus_332.nii.gz", "label": "./labelsTr/hippocampus_332.nii.gz"}, {"image": "./imagesTr/hippocampus_333.nii.gz", "label": "./labelsTr/hippocampus_333.nii.gz"}, {"image": "./imagesTr/hippocampus_335.nii.gz", "label": "./labelsTr/hippocampus_335.nii.gz"}, {"image": "./imagesTr/hippocampus_336.nii.gz", "label": "./labelsTr/hippocampus_336.nii.gz"}, {"image": "./imagesTr/hippocampus_337.nii.gz", "label": "./labelsTr/hippocampus_337.nii.gz"}, {"image": "./imagesTr/hippocampus_338.nii.gz", "label": "./labelsTr/hippocampus_338.nii.gz"}, {"image": "./imagesTr/hippocampus_341.nii.gz", "label": "./labelsTr/hippocampus_341.nii.gz"}, {"image": "./imagesTr/hippocampus_343.nii.gz", "label": "./labelsTr/hippocampus_343.nii.gz"}, {"image": "./imagesTr/hippocampus_345.nii.gz", "label": "./labelsTr/hippocampus_345.nii.gz"}, {"image": "./imagesTr/hippocampus_349.nii.gz", "label": "./labelsTr/hippocampus_349.nii.gz"}, {"image": "./imagesTr/hippocampus_350.nii.gz", "label": "./labelsTr/hippocampus_350.nii.gz"}, {"image": "./imagesTr/hippocampus_351.nii.gz", "label": "./labelsTr/hippocampus_351.nii.gz"}, {"image": "./imagesTr/hippocampus_352.nii.gz", "label": "./labelsTr/hippocampus_352.nii.gz"}, {"image": "./imagesTr/hippocampus_354.nii.gz", "label": "./labelsTr/hippocampus_354.nii.gz"}, {"image": "./imagesTr/hippocampus_355.nii.gz", "label": "./labelsTr/hippocampus_355.nii.gz"}, {"image": "./imagesTr/hippocampus_356.nii.gz", "label": "./labelsTr/hippocampus_356.nii.gz"}, {"image": "./imagesTr/hippocampus_358.nii.gz", "label": "./labelsTr/hippocampus_358.nii.gz"}, {"image": "./imagesTr/hippocampus_359.nii.gz", "label": "./labelsTr/hippocampus_359.nii.gz"}, {"image": "./imagesTr/hippocampus_360.nii.gz", "label": "./labelsTr/hippocampus_360.nii.gz"}, {"image": "./imagesTr/hippocampus_361.nii.gz", "label": "./labelsTr/hippocampus_361.nii.gz"}, {"image": "./imagesTr/hippocampus_363.nii.gz", "label": "./labelsTr/hippocampus_363.nii.gz"}, {"image": "./imagesTr/hippocampus_366.nii.gz", "label": "./labelsTr/hippocampus_366.nii.gz"}, {"image": "./imagesTr/hippocampus_370.nii.gz", "label": "./labelsTr/hippocampus_370.nii.gz"}, {"image": "./imagesTr/hippocampus_372.nii.gz", "label": "./labelsTr/hippocampus_372.nii.gz"}, {"image": "./imagesTr/hippocampus_373.nii.gz", "label": "./labelsTr/hippocampus_373.nii.gz"}, {"image": "./imagesTr/hippocampus_374.nii.gz", "label": "./labelsTr/hippocampus_374.nii.gz"}, {"image": "./imagesTr/hippocampus_376.nii.gz", "label": "./labelsTr/hippocampus_376.nii.gz"}, {"image": "./imagesTr/hippocampus_378.nii.gz", "label": "./labelsTr/hippocampus_378.nii.gz"}, {"image": "./imagesTr/hippocampus_380.nii.gz", "label": "./labelsTr/hippocampus_380.nii.gz"}, {"image": "./imagesTr/hippocampus_383.nii.gz", "label": "./labelsTr/hippocampus_383.nii.gz"}, {"image": "./imagesTr/hippocampus_386.nii.gz", "label": "./labelsTr/hippocampus_386.nii.gz"}, {"image": "./imagesTr/hippocampus_387.nii.gz", "label": "./labelsTr/hippocampus_387.nii.gz"}, {"image": "./imagesTr/hippocampus_394.nii.gz", "label": "./labelsTr/hippocampus_394.nii.gz"}]} diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task06.json b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task06.json new file mode 100644 index 0000000000000000000000000000000000000000..efb45c19d51aa0b4799d97a00b172de981d4df8f --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task06.json @@ -0,0 +1 @@ +{"name": "Lung", "description": "Lung and cancer segmentation", "reference": "The Cancer Imaging Archive", "licence": "CC-BY-SA 4.0", "relase": "1.0 04/05/2018", "tensorImageSize": "3D", "modality": {"0": "CT"}, "labels": {"0": "background", "1": "cancer"}, "numTraining": 63, "numTest": 32, "training": [{"image": "./imagesTr/lung_053.nii.gz", "label": "./labelsTr/lung_053.nii.gz"}, {"image": "./imagesTr/lung_022.nii.gz", "label": "./labelsTr/lung_022.nii.gz"}, {"image": "./imagesTr/lung_041.nii.gz", "label": "./labelsTr/lung_041.nii.gz"}, {"image": "./imagesTr/lung_069.nii.gz", "label": "./labelsTr/lung_069.nii.gz"}, {"image": "./imagesTr/lung_014.nii.gz", "label": "./labelsTr/lung_014.nii.gz"}, {"image": "./imagesTr/lung_006.nii.gz", "label": "./labelsTr/lung_006.nii.gz"}, {"image": "./imagesTr/lung_065.nii.gz", "label": "./labelsTr/lung_065.nii.gz"}, {"image": "./imagesTr/lung_018.nii.gz", "label": "./labelsTr/lung_018.nii.gz"}, {"image": "./imagesTr/lung_096.nii.gz", "label": "./labelsTr/lung_096.nii.gz"}, {"image": "./imagesTr/lung_084.nii.gz", "label": "./labelsTr/lung_084.nii.gz"}, {"image": "./imagesTr/lung_086.nii.gz", "label": "./labelsTr/lung_086.nii.gz"}, {"image": "./imagesTr/lung_043.nii.gz", "label": "./labelsTr/lung_043.nii.gz"}, {"image": "./imagesTr/lung_020.nii.gz", "label": "./labelsTr/lung_020.nii.gz"}, {"image": "./imagesTr/lung_051.nii.gz", "label": "./labelsTr/lung_051.nii.gz"}, {"image": "./imagesTr/lung_079.nii.gz", "label": "./labelsTr/lung_079.nii.gz"}, {"image": "./imagesTr/lung_004.nii.gz", "label": "./labelsTr/lung_004.nii.gz"}, {"image": "./imagesTr/lung_075.nii.gz", "label": "./labelsTr/lung_075.nii.gz"}, {"image": "./imagesTr/lung_016.nii.gz", "label": "./labelsTr/lung_016.nii.gz"}, {"image": "./imagesTr/lung_071.nii.gz", "label": "./labelsTr/lung_071.nii.gz"}, {"image": "./imagesTr/lung_028.nii.gz", "label": "./labelsTr/lung_028.nii.gz"}, {"image": "./imagesTr/lung_055.nii.gz", "label": "./labelsTr/lung_055.nii.gz"}, {"image": "./imagesTr/lung_036.nii.gz", "label": "./labelsTr/lung_036.nii.gz"}, {"image": "./imagesTr/lung_047.nii.gz", "label": "./labelsTr/lung_047.nii.gz"}, {"image": "./imagesTr/lung_059.nii.gz", "label": "./labelsTr/lung_059.nii.gz"}, {"image": "./imagesTr/lung_061.nii.gz", "label": "./labelsTr/lung_061.nii.gz"}, {"image": "./imagesTr/lung_010.nii.gz", "label": "./labelsTr/lung_010.nii.gz"}, {"image": "./imagesTr/lung_073.nii.gz", "label": "./labelsTr/lung_073.nii.gz"}, {"image": "./imagesTr/lung_026.nii.gz", "label": "./labelsTr/lung_026.nii.gz"}, {"image": "./imagesTr/lung_038.nii.gz", "label": "./labelsTr/lung_038.nii.gz"}, {"image": "./imagesTr/lung_045.nii.gz", "label": "./labelsTr/lung_045.nii.gz"}, {"image": "./imagesTr/lung_034.nii.gz", "label": "./labelsTr/lung_034.nii.gz"}, {"image": "./imagesTr/lung_049.nii.gz", "label": "./labelsTr/lung_049.nii.gz"}, {"image": "./imagesTr/lung_057.nii.gz", "label": "./labelsTr/lung_057.nii.gz"}, {"image": "./imagesTr/lung_080.nii.gz", "label": "./labelsTr/lung_080.nii.gz"}, {"image": "./imagesTr/lung_092.nii.gz", "label": "./labelsTr/lung_092.nii.gz"}, {"image": "./imagesTr/lung_015.nii.gz", "label": "./labelsTr/lung_015.nii.gz"}, {"image": "./imagesTr/lung_064.nii.gz", "label": "./labelsTr/lung_064.nii.gz"}, {"image": "./imagesTr/lung_031.nii.gz", "label": "./labelsTr/lung_031.nii.gz"}, {"image": "./imagesTr/lung_023.nii.gz", "label": "./labelsTr/lung_023.nii.gz"}, {"image": "./imagesTr/lung_005.nii.gz", "label": "./labelsTr/lung_005.nii.gz"}, {"image": "./imagesTr/lung_078.nii.gz", "label": "./labelsTr/lung_078.nii.gz"}, {"image": "./imagesTr/lung_066.nii.gz", "label": "./labelsTr/lung_066.nii.gz"}, {"image": "./imagesTr/lung_009.nii.gz", "label": "./labelsTr/lung_009.nii.gz"}, {"image": "./imagesTr/lung_074.nii.gz", "label": "./labelsTr/lung_074.nii.gz"}, {"image": "./imagesTr/lung_042.nii.gz", "label": "./labelsTr/lung_042.nii.gz"}, {"image": "./imagesTr/lung_033.nii.gz", "label": "./labelsTr/lung_033.nii.gz"}, {"image": "./imagesTr/lung_095.nii.gz", "label": "./labelsTr/lung_095.nii.gz"}, {"image": "./imagesTr/lung_037.nii.gz", "label": "./labelsTr/lung_037.nii.gz"}, {"image": "./imagesTr/lung_054.nii.gz", "label": "./labelsTr/lung_054.nii.gz"}, {"image": "./imagesTr/lung_029.nii.gz", "label": "./labelsTr/lung_029.nii.gz"}, {"image": "./imagesTr/lung_058.nii.gz", "label": "./labelsTr/lung_058.nii.gz"}, {"image": "./imagesTr/lung_025.nii.gz", "label": "./labelsTr/lung_025.nii.gz"}, {"image": "./imagesTr/lung_046.nii.gz", "label": "./labelsTr/lung_046.nii.gz"}, {"image": "./imagesTr/lung_070.nii.gz", "label": "./labelsTr/lung_070.nii.gz"}, {"image": "./imagesTr/lung_001.nii.gz", "label": "./labelsTr/lung_001.nii.gz"}, {"image": "./imagesTr/lung_062.nii.gz", "label": "./labelsTr/lung_062.nii.gz"}, {"image": "./imagesTr/lung_083.nii.gz", "label": "./labelsTr/lung_083.nii.gz"}, {"image": "./imagesTr/lung_081.nii.gz", "label": "./labelsTr/lung_081.nii.gz"}, {"image": "./imagesTr/lung_093.nii.gz", "label": "./labelsTr/lung_093.nii.gz"}, {"image": "./imagesTr/lung_044.nii.gz", "label": "./labelsTr/lung_044.nii.gz"}, {"image": "./imagesTr/lung_027.nii.gz", "label": "./labelsTr/lung_027.nii.gz"}, {"image": "./imagesTr/lung_048.nii.gz", "label": "./labelsTr/lung_048.nii.gz"}, {"image": "./imagesTr/lung_003.nii.gz", "label": "./labelsTr/lung_003.nii.gz"}], "test": ["./imagesTs/lung_030.nii.gz", "./imagesTs/lung_077.nii.gz", "./imagesTs/lung_088.nii.gz", "./imagesTs/lung_032.nii.gz", "./imagesTs/lung_067.nii.gz", "./imagesTs/lung_008.nii.gz", "./imagesTs/lung_090.nii.gz", "./imagesTs/lung_082.nii.gz", "./imagesTs/lung_012.nii.gz", "./imagesTs/lung_063.nii.gz", "./imagesTs/lung_024.nii.gz", "./imagesTs/lung_002.nii.gz", "./imagesTs/lung_089.nii.gz", "./imagesTs/lung_085.nii.gz", "./imagesTs/lung_076.nii.gz", "./imagesTs/lung_068.nii.gz", "./imagesTs/lung_019.nii.gz", "./imagesTs/lung_007.nii.gz", "./imagesTs/lung_052.nii.gz", "./imagesTs/lung_040.nii.gz", "./imagesTs/lung_017.nii.gz", "./imagesTs/lung_021.nii.gz", "./imagesTs/lung_050.nii.gz", "./imagesTs/lung_087.nii.gz", "./imagesTs/lung_013.nii.gz", "./imagesTs/lung_091.nii.gz", "./imagesTs/lung_039.nii.gz", "./imagesTs/lung_056.nii.gz", "./imagesTs/lung_035.nii.gz", "./imagesTs/lung_060.nii.gz", "./imagesTs/lung_072.nii.gz", "./imagesTs/lung_011.nii.gz"], "validation_fold0": [{"image": "./imagesTr/lung_006.nii.gz", "label": "./labelsTr/lung_006.nii.gz"}, {"image": "./imagesTr/lung_010.nii.gz", "label": "./labelsTr/lung_010.nii.gz"}, {"image": "./imagesTr/lung_033.nii.gz", "label": "./labelsTr/lung_033.nii.gz"}, {"image": "./imagesTr/lung_034.nii.gz", "label": "./labelsTr/lung_034.nii.gz"}, {"image": "./imagesTr/lung_041.nii.gz", "label": "./labelsTr/lung_041.nii.gz"}, {"image": "./imagesTr/lung_042.nii.gz", "label": "./labelsTr/lung_042.nii.gz"}, {"image": "./imagesTr/lung_046.nii.gz", "label": "./labelsTr/lung_046.nii.gz"}, {"image": "./imagesTr/lung_048.nii.gz", "label": "./labelsTr/lung_048.nii.gz"}, {"image": "./imagesTr/lung_059.nii.gz", "label": "./labelsTr/lung_059.nii.gz"}, {"image": "./imagesTr/lung_065.nii.gz", "label": "./labelsTr/lung_065.nii.gz"}, {"image": "./imagesTr/lung_066.nii.gz", "label": "./labelsTr/lung_066.nii.gz"}, {"image": "./imagesTr/lung_070.nii.gz", "label": "./labelsTr/lung_070.nii.gz"}, {"image": "./imagesTr/lung_079.nii.gz", "label": "./labelsTr/lung_079.nii.gz"}], "train_fold0": [{"image": "./imagesTr/lung_001.nii.gz", "label": "./labelsTr/lung_001.nii.gz"}, {"image": "./imagesTr/lung_003.nii.gz", "label": "./labelsTr/lung_003.nii.gz"}, {"image": "./imagesTr/lung_004.nii.gz", "label": "./labelsTr/lung_004.nii.gz"}, {"image": "./imagesTr/lung_005.nii.gz", "label": "./labelsTr/lung_005.nii.gz"}, {"image": "./imagesTr/lung_009.nii.gz", "label": "./labelsTr/lung_009.nii.gz"}, {"image": "./imagesTr/lung_014.nii.gz", "label": "./labelsTr/lung_014.nii.gz"}, {"image": "./imagesTr/lung_015.nii.gz", "label": "./labelsTr/lung_015.nii.gz"}, {"image": "./imagesTr/lung_016.nii.gz", "label": "./labelsTr/lung_016.nii.gz"}, {"image": "./imagesTr/lung_018.nii.gz", "label": "./labelsTr/lung_018.nii.gz"}, {"image": "./imagesTr/lung_020.nii.gz", "label": "./labelsTr/lung_020.nii.gz"}, {"image": "./imagesTr/lung_022.nii.gz", "label": "./labelsTr/lung_022.nii.gz"}, {"image": "./imagesTr/lung_023.nii.gz", "label": "./labelsTr/lung_023.nii.gz"}, {"image": "./imagesTr/lung_025.nii.gz", "label": "./labelsTr/lung_025.nii.gz"}, {"image": "./imagesTr/lung_026.nii.gz", "label": "./labelsTr/lung_026.nii.gz"}, {"image": "./imagesTr/lung_027.nii.gz", "label": "./labelsTr/lung_027.nii.gz"}, {"image": "./imagesTr/lung_028.nii.gz", "label": "./labelsTr/lung_028.nii.gz"}, {"image": "./imagesTr/lung_029.nii.gz", "label": "./labelsTr/lung_029.nii.gz"}, {"image": "./imagesTr/lung_031.nii.gz", "label": "./labelsTr/lung_031.nii.gz"}, {"image": "./imagesTr/lung_036.nii.gz", "label": "./labelsTr/lung_036.nii.gz"}, {"image": "./imagesTr/lung_037.nii.gz", "label": "./labelsTr/lung_037.nii.gz"}, {"image": "./imagesTr/lung_038.nii.gz", "label": "./labelsTr/lung_038.nii.gz"}, {"image": "./imagesTr/lung_043.nii.gz", "label": "./labelsTr/lung_043.nii.gz"}, {"image": "./imagesTr/lung_044.nii.gz", "label": "./labelsTr/lung_044.nii.gz"}, {"image": "./imagesTr/lung_045.nii.gz", "label": "./labelsTr/lung_045.nii.gz"}, {"image": "./imagesTr/lung_047.nii.gz", "label": "./labelsTr/lung_047.nii.gz"}, {"image": "./imagesTr/lung_049.nii.gz", "label": "./labelsTr/lung_049.nii.gz"}, {"image": "./imagesTr/lung_051.nii.gz", "label": "./labelsTr/lung_051.nii.gz"}, {"image": "./imagesTr/lung_053.nii.gz", "label": "./labelsTr/lung_053.nii.gz"}, {"image": "./imagesTr/lung_054.nii.gz", "label": "./labelsTr/lung_054.nii.gz"}, {"image": "./imagesTr/lung_055.nii.gz", "label": "./labelsTr/lung_055.nii.gz"}, {"image": "./imagesTr/lung_057.nii.gz", "label": "./labelsTr/lung_057.nii.gz"}, {"image": "./imagesTr/lung_058.nii.gz", "label": "./labelsTr/lung_058.nii.gz"}, {"image": "./imagesTr/lung_061.nii.gz", "label": "./labelsTr/lung_061.nii.gz"}, {"image": "./imagesTr/lung_062.nii.gz", "label": "./labelsTr/lung_062.nii.gz"}, {"image": "./imagesTr/lung_064.nii.gz", "label": "./labelsTr/lung_064.nii.gz"}, {"image": "./imagesTr/lung_069.nii.gz", "label": "./labelsTr/lung_069.nii.gz"}, {"image": "./imagesTr/lung_071.nii.gz", "label": "./labelsTr/lung_071.nii.gz"}, {"image": "./imagesTr/lung_073.nii.gz", "label": "./labelsTr/lung_073.nii.gz"}, {"image": "./imagesTr/lung_074.nii.gz", "label": "./labelsTr/lung_074.nii.gz"}, {"image": "./imagesTr/lung_075.nii.gz", "label": "./labelsTr/lung_075.nii.gz"}, {"image": "./imagesTr/lung_078.nii.gz", "label": "./labelsTr/lung_078.nii.gz"}, {"image": "./imagesTr/lung_080.nii.gz", "label": "./labelsTr/lung_080.nii.gz"}, {"image": "./imagesTr/lung_081.nii.gz", "label": "./labelsTr/lung_081.nii.gz"}, {"image": "./imagesTr/lung_083.nii.gz", "label": "./labelsTr/lung_083.nii.gz"}, {"image": "./imagesTr/lung_084.nii.gz", "label": "./labelsTr/lung_084.nii.gz"}, {"image": "./imagesTr/lung_086.nii.gz", "label": "./labelsTr/lung_086.nii.gz"}, {"image": "./imagesTr/lung_092.nii.gz", "label": "./labelsTr/lung_092.nii.gz"}, {"image": "./imagesTr/lung_093.nii.gz", "label": "./labelsTr/lung_093.nii.gz"}, {"image": "./imagesTr/lung_095.nii.gz", "label": "./labelsTr/lung_095.nii.gz"}, {"image": "./imagesTr/lung_096.nii.gz", "label": "./labelsTr/lung_096.nii.gz"}], "validation_fold1": [{"image": "./imagesTr/lung_004.nii.gz", "label": "./labelsTr/lung_004.nii.gz"}, {"image": "./imagesTr/lung_015.nii.gz", "label": "./labelsTr/lung_015.nii.gz"}, {"image": "./imagesTr/lung_022.nii.gz", "label": "./labelsTr/lung_022.nii.gz"}, {"image": "./imagesTr/lung_031.nii.gz", "label": "./labelsTr/lung_031.nii.gz"}, {"image": "./imagesTr/lung_036.nii.gz", "label": "./labelsTr/lung_036.nii.gz"}, {"image": "./imagesTr/lung_038.nii.gz", "label": "./labelsTr/lung_038.nii.gz"}, {"image": "./imagesTr/lung_053.nii.gz", "label": "./labelsTr/lung_053.nii.gz"}, {"image": "./imagesTr/lung_062.nii.gz", "label": "./labelsTr/lung_062.nii.gz"}, {"image": "./imagesTr/lung_064.nii.gz", "label": "./labelsTr/lung_064.nii.gz"}, {"image": "./imagesTr/lung_069.nii.gz", "label": "./labelsTr/lung_069.nii.gz"}, {"image": "./imagesTr/lung_071.nii.gz", "label": "./labelsTr/lung_071.nii.gz"}, {"image": "./imagesTr/lung_075.nii.gz", "label": "./labelsTr/lung_075.nii.gz"}, {"image": "./imagesTr/lung_081.nii.gz", "label": "./labelsTr/lung_081.nii.gz"}], "train_fold1": [{"image": "./imagesTr/lung_001.nii.gz", "label": "./labelsTr/lung_001.nii.gz"}, {"image": "./imagesTr/lung_003.nii.gz", "label": "./labelsTr/lung_003.nii.gz"}, {"image": "./imagesTr/lung_005.nii.gz", "label": "./labelsTr/lung_005.nii.gz"}, {"image": "./imagesTr/lung_006.nii.gz", "label": "./labelsTr/lung_006.nii.gz"}, {"image": "./imagesTr/lung_009.nii.gz", "label": "./labelsTr/lung_009.nii.gz"}, {"image": "./imagesTr/lung_010.nii.gz", "label": "./labelsTr/lung_010.nii.gz"}, {"image": "./imagesTr/lung_014.nii.gz", "label": "./labelsTr/lung_014.nii.gz"}, {"image": "./imagesTr/lung_016.nii.gz", "label": "./labelsTr/lung_016.nii.gz"}, {"image": "./imagesTr/lung_018.nii.gz", "label": "./labelsTr/lung_018.nii.gz"}, {"image": "./imagesTr/lung_020.nii.gz", "label": "./labelsTr/lung_020.nii.gz"}, {"image": "./imagesTr/lung_023.nii.gz", "label": "./labelsTr/lung_023.nii.gz"}, {"image": "./imagesTr/lung_025.nii.gz", "label": "./labelsTr/lung_025.nii.gz"}, {"image": "./imagesTr/lung_026.nii.gz", "label": "./labelsTr/lung_026.nii.gz"}, {"image": "./imagesTr/lung_027.nii.gz", "label": "./labelsTr/lung_027.nii.gz"}, {"image": "./imagesTr/lung_028.nii.gz", "label": "./labelsTr/lung_028.nii.gz"}, {"image": "./imagesTr/lung_029.nii.gz", "label": "./labelsTr/lung_029.nii.gz"}, {"image": "./imagesTr/lung_033.nii.gz", "label": "./labelsTr/lung_033.nii.gz"}, {"image": "./imagesTr/lung_034.nii.gz", "label": "./labelsTr/lung_034.nii.gz"}, {"image": "./imagesTr/lung_037.nii.gz", "label": "./labelsTr/lung_037.nii.gz"}, {"image": "./imagesTr/lung_041.nii.gz", "label": "./labelsTr/lung_041.nii.gz"}, {"image": "./imagesTr/lung_042.nii.gz", "label": "./labelsTr/lung_042.nii.gz"}, {"image": "./imagesTr/lung_043.nii.gz", "label": "./labelsTr/lung_043.nii.gz"}, {"image": "./imagesTr/lung_044.nii.gz", "label": "./labelsTr/lung_044.nii.gz"}, {"image": "./imagesTr/lung_045.nii.gz", "label": "./labelsTr/lung_045.nii.gz"}, {"image": "./imagesTr/lung_046.nii.gz", "label": "./labelsTr/lung_046.nii.gz"}, {"image": "./imagesTr/lung_047.nii.gz", "label": "./labelsTr/lung_047.nii.gz"}, {"image": "./imagesTr/lung_048.nii.gz", "label": "./labelsTr/lung_048.nii.gz"}, {"image": "./imagesTr/lung_049.nii.gz", "label": "./labelsTr/lung_049.nii.gz"}, {"image": "./imagesTr/lung_051.nii.gz", "label": "./labelsTr/lung_051.nii.gz"}, {"image": "./imagesTr/lung_054.nii.gz", "label": "./labelsTr/lung_054.nii.gz"}, {"image": "./imagesTr/lung_055.nii.gz", "label": "./labelsTr/lung_055.nii.gz"}, {"image": "./imagesTr/lung_057.nii.gz", "label": "./labelsTr/lung_057.nii.gz"}, {"image": "./imagesTr/lung_058.nii.gz", "label": "./labelsTr/lung_058.nii.gz"}, {"image": "./imagesTr/lung_059.nii.gz", "label": "./labelsTr/lung_059.nii.gz"}, {"image": "./imagesTr/lung_061.nii.gz", "label": "./labelsTr/lung_061.nii.gz"}, {"image": "./imagesTr/lung_065.nii.gz", "label": "./labelsTr/lung_065.nii.gz"}, {"image": "./imagesTr/lung_066.nii.gz", "label": "./labelsTr/lung_066.nii.gz"}, {"image": "./imagesTr/lung_070.nii.gz", "label": "./labelsTr/lung_070.nii.gz"}, {"image": "./imagesTr/lung_073.nii.gz", "label": "./labelsTr/lung_073.nii.gz"}, {"image": "./imagesTr/lung_074.nii.gz", "label": "./labelsTr/lung_074.nii.gz"}, {"image": "./imagesTr/lung_078.nii.gz", "label": "./labelsTr/lung_078.nii.gz"}, {"image": "./imagesTr/lung_079.nii.gz", "label": "./labelsTr/lung_079.nii.gz"}, {"image": "./imagesTr/lung_080.nii.gz", "label": "./labelsTr/lung_080.nii.gz"}, {"image": "./imagesTr/lung_083.nii.gz", "label": "./labelsTr/lung_083.nii.gz"}, {"image": "./imagesTr/lung_084.nii.gz", "label": "./labelsTr/lung_084.nii.gz"}, {"image": "./imagesTr/lung_086.nii.gz", "label": "./labelsTr/lung_086.nii.gz"}, {"image": "./imagesTr/lung_092.nii.gz", "label": "./labelsTr/lung_092.nii.gz"}, {"image": "./imagesTr/lung_093.nii.gz", "label": "./labelsTr/lung_093.nii.gz"}, {"image": "./imagesTr/lung_095.nii.gz", "label": "./labelsTr/lung_095.nii.gz"}, {"image": "./imagesTr/lung_096.nii.gz", "label": "./labelsTr/lung_096.nii.gz"}], "validation_fold2": [{"image": "./imagesTr/lung_001.nii.gz", "label": "./labelsTr/lung_001.nii.gz"}, {"image": "./imagesTr/lung_005.nii.gz", "label": "./labelsTr/lung_005.nii.gz"}, {"image": "./imagesTr/lung_009.nii.gz", "label": "./labelsTr/lung_009.nii.gz"}, {"image": "./imagesTr/lung_026.nii.gz", "label": "./labelsTr/lung_026.nii.gz"}, {"image": "./imagesTr/lung_037.nii.gz", "label": "./labelsTr/lung_037.nii.gz"}, {"image": "./imagesTr/lung_044.nii.gz", "label": "./labelsTr/lung_044.nii.gz"}, {"image": "./imagesTr/lung_047.nii.gz", "label": "./labelsTr/lung_047.nii.gz"}, {"image": "./imagesTr/lung_049.nii.gz", "label": "./labelsTr/lung_049.nii.gz"}, {"image": "./imagesTr/lung_074.nii.gz", "label": "./labelsTr/lung_074.nii.gz"}, {"image": "./imagesTr/lung_078.nii.gz", "label": "./labelsTr/lung_078.nii.gz"}, {"image": "./imagesTr/lung_080.nii.gz", "label": "./labelsTr/lung_080.nii.gz"}, {"image": "./imagesTr/lung_083.nii.gz", "label": "./labelsTr/lung_083.nii.gz"}, {"image": "./imagesTr/lung_086.nii.gz", "label": "./labelsTr/lung_086.nii.gz"}], "train_fold2": [{"image": "./imagesTr/lung_003.nii.gz", "label": "./labelsTr/lung_003.nii.gz"}, {"image": "./imagesTr/lung_004.nii.gz", "label": "./labelsTr/lung_004.nii.gz"}, {"image": "./imagesTr/lung_006.nii.gz", "label": "./labelsTr/lung_006.nii.gz"}, {"image": "./imagesTr/lung_010.nii.gz", "label": "./labelsTr/lung_010.nii.gz"}, {"image": "./imagesTr/lung_014.nii.gz", "label": "./labelsTr/lung_014.nii.gz"}, {"image": "./imagesTr/lung_015.nii.gz", "label": "./labelsTr/lung_015.nii.gz"}, {"image": "./imagesTr/lung_016.nii.gz", "label": "./labelsTr/lung_016.nii.gz"}, {"image": "./imagesTr/lung_018.nii.gz", "label": "./labelsTr/lung_018.nii.gz"}, {"image": "./imagesTr/lung_020.nii.gz", "label": "./labelsTr/lung_020.nii.gz"}, {"image": "./imagesTr/lung_022.nii.gz", "label": "./labelsTr/lung_022.nii.gz"}, {"image": "./imagesTr/lung_023.nii.gz", "label": "./labelsTr/lung_023.nii.gz"}, {"image": "./imagesTr/lung_025.nii.gz", "label": "./labelsTr/lung_025.nii.gz"}, {"image": "./imagesTr/lung_027.nii.gz", "label": "./labelsTr/lung_027.nii.gz"}, {"image": "./imagesTr/lung_028.nii.gz", "label": "./labelsTr/lung_028.nii.gz"}, {"image": "./imagesTr/lung_029.nii.gz", "label": "./labelsTr/lung_029.nii.gz"}, {"image": "./imagesTr/lung_031.nii.gz", "label": "./labelsTr/lung_031.nii.gz"}, {"image": "./imagesTr/lung_033.nii.gz", "label": "./labelsTr/lung_033.nii.gz"}, {"image": "./imagesTr/lung_034.nii.gz", "label": "./labelsTr/lung_034.nii.gz"}, {"image": "./imagesTr/lung_036.nii.gz", "label": "./labelsTr/lung_036.nii.gz"}, {"image": "./imagesTr/lung_038.nii.gz", "label": "./labelsTr/lung_038.nii.gz"}, {"image": "./imagesTr/lung_041.nii.gz", "label": "./labelsTr/lung_041.nii.gz"}, {"image": "./imagesTr/lung_042.nii.gz", "label": "./labelsTr/lung_042.nii.gz"}, {"image": "./imagesTr/lung_043.nii.gz", "label": "./labelsTr/lung_043.nii.gz"}, {"image": "./imagesTr/lung_045.nii.gz", "label": "./labelsTr/lung_045.nii.gz"}, {"image": "./imagesTr/lung_046.nii.gz", "label": "./labelsTr/lung_046.nii.gz"}, {"image": "./imagesTr/lung_048.nii.gz", "label": "./labelsTr/lung_048.nii.gz"}, {"image": "./imagesTr/lung_051.nii.gz", "label": "./labelsTr/lung_051.nii.gz"}, {"image": "./imagesTr/lung_053.nii.gz", "label": "./labelsTr/lung_053.nii.gz"}, {"image": "./imagesTr/lung_054.nii.gz", "label": "./labelsTr/lung_054.nii.gz"}, {"image": "./imagesTr/lung_055.nii.gz", "label": "./labelsTr/lung_055.nii.gz"}, {"image": "./imagesTr/lung_057.nii.gz", "label": "./labelsTr/lung_057.nii.gz"}, {"image": "./imagesTr/lung_058.nii.gz", "label": "./labelsTr/lung_058.nii.gz"}, {"image": "./imagesTr/lung_059.nii.gz", "label": "./labelsTr/lung_059.nii.gz"}, {"image": "./imagesTr/lung_061.nii.gz", "label": "./labelsTr/lung_061.nii.gz"}, {"image": "./imagesTr/lung_062.nii.gz", "label": "./labelsTr/lung_062.nii.gz"}, {"image": "./imagesTr/lung_064.nii.gz", "label": "./labelsTr/lung_064.nii.gz"}, {"image": "./imagesTr/lung_065.nii.gz", "label": "./labelsTr/lung_065.nii.gz"}, {"image": "./imagesTr/lung_066.nii.gz", "label": "./labelsTr/lung_066.nii.gz"}, {"image": "./imagesTr/lung_069.nii.gz", "label": "./labelsTr/lung_069.nii.gz"}, {"image": "./imagesTr/lung_070.nii.gz", "label": "./labelsTr/lung_070.nii.gz"}, {"image": "./imagesTr/lung_071.nii.gz", "label": "./labelsTr/lung_071.nii.gz"}, {"image": "./imagesTr/lung_073.nii.gz", "label": "./labelsTr/lung_073.nii.gz"}, {"image": "./imagesTr/lung_075.nii.gz", "label": "./labelsTr/lung_075.nii.gz"}, {"image": "./imagesTr/lung_079.nii.gz", "label": "./labelsTr/lung_079.nii.gz"}, {"image": "./imagesTr/lung_081.nii.gz", "label": "./labelsTr/lung_081.nii.gz"}, {"image": "./imagesTr/lung_084.nii.gz", "label": "./labelsTr/lung_084.nii.gz"}, {"image": "./imagesTr/lung_092.nii.gz", "label": "./labelsTr/lung_092.nii.gz"}, {"image": "./imagesTr/lung_093.nii.gz", "label": "./labelsTr/lung_093.nii.gz"}, {"image": "./imagesTr/lung_095.nii.gz", "label": "./labelsTr/lung_095.nii.gz"}, {"image": "./imagesTr/lung_096.nii.gz", "label": "./labelsTr/lung_096.nii.gz"}], "validation_fold3": [{"image": "./imagesTr/lung_014.nii.gz", "label": "./labelsTr/lung_014.nii.gz"}, {"image": "./imagesTr/lung_016.nii.gz", "label": "./labelsTr/lung_016.nii.gz"}, {"image": "./imagesTr/lung_018.nii.gz", "label": "./labelsTr/lung_018.nii.gz"}, {"image": "./imagesTr/lung_020.nii.gz", "label": "./labelsTr/lung_020.nii.gz"}, {"image": "./imagesTr/lung_023.nii.gz", "label": "./labelsTr/lung_023.nii.gz"}, {"image": "./imagesTr/lung_027.nii.gz", "label": "./labelsTr/lung_027.nii.gz"}, {"image": "./imagesTr/lung_028.nii.gz", "label": "./labelsTr/lung_028.nii.gz"}, {"image": "./imagesTr/lung_029.nii.gz", "label": "./labelsTr/lung_029.nii.gz"}, {"image": "./imagesTr/lung_043.nii.gz", "label": "./labelsTr/lung_043.nii.gz"}, {"image": "./imagesTr/lung_057.nii.gz", "label": "./labelsTr/lung_057.nii.gz"}, {"image": "./imagesTr/lung_058.nii.gz", "label": "./labelsTr/lung_058.nii.gz"}, {"image": "./imagesTr/lung_084.nii.gz", "label": "./labelsTr/lung_084.nii.gz"}], "train_fold3": [{"image": "./imagesTr/lung_001.nii.gz", "label": "./labelsTr/lung_001.nii.gz"}, {"image": "./imagesTr/lung_003.nii.gz", "label": "./labelsTr/lung_003.nii.gz"}, {"image": "./imagesTr/lung_004.nii.gz", "label": "./labelsTr/lung_004.nii.gz"}, {"image": "./imagesTr/lung_005.nii.gz", "label": "./labelsTr/lung_005.nii.gz"}, {"image": "./imagesTr/lung_006.nii.gz", "label": "./labelsTr/lung_006.nii.gz"}, {"image": "./imagesTr/lung_009.nii.gz", "label": "./labelsTr/lung_009.nii.gz"}, {"image": "./imagesTr/lung_010.nii.gz", "label": "./labelsTr/lung_010.nii.gz"}, {"image": "./imagesTr/lung_015.nii.gz", "label": "./labelsTr/lung_015.nii.gz"}, {"image": "./imagesTr/lung_022.nii.gz", "label": "./labelsTr/lung_022.nii.gz"}, {"image": "./imagesTr/lung_025.nii.gz", "label": "./labelsTr/lung_025.nii.gz"}, {"image": "./imagesTr/lung_026.nii.gz", "label": "./labelsTr/lung_026.nii.gz"}, {"image": "./imagesTr/lung_031.nii.gz", "label": "./labelsTr/lung_031.nii.gz"}, {"image": "./imagesTr/lung_033.nii.gz", "label": "./labelsTr/lung_033.nii.gz"}, {"image": "./imagesTr/lung_034.nii.gz", "label": "./labelsTr/lung_034.nii.gz"}, {"image": "./imagesTr/lung_036.nii.gz", "label": "./labelsTr/lung_036.nii.gz"}, {"image": "./imagesTr/lung_037.nii.gz", "label": "./labelsTr/lung_037.nii.gz"}, {"image": "./imagesTr/lung_038.nii.gz", "label": "./labelsTr/lung_038.nii.gz"}, {"image": "./imagesTr/lung_041.nii.gz", "label": "./labelsTr/lung_041.nii.gz"}, {"image": "./imagesTr/lung_042.nii.gz", "label": "./labelsTr/lung_042.nii.gz"}, {"image": "./imagesTr/lung_044.nii.gz", "label": "./labelsTr/lung_044.nii.gz"}, {"image": "./imagesTr/lung_045.nii.gz", "label": "./labelsTr/lung_045.nii.gz"}, {"image": "./imagesTr/lung_046.nii.gz", "label": "./labelsTr/lung_046.nii.gz"}, {"image": "./imagesTr/lung_047.nii.gz", "label": "./labelsTr/lung_047.nii.gz"}, {"image": "./imagesTr/lung_048.nii.gz", "label": "./labelsTr/lung_048.nii.gz"}, {"image": "./imagesTr/lung_049.nii.gz", "label": "./labelsTr/lung_049.nii.gz"}, {"image": "./imagesTr/lung_051.nii.gz", "label": "./labelsTr/lung_051.nii.gz"}, {"image": "./imagesTr/lung_053.nii.gz", "label": "./labelsTr/lung_053.nii.gz"}, {"image": "./imagesTr/lung_054.nii.gz", "label": "./labelsTr/lung_054.nii.gz"}, {"image": "./imagesTr/lung_055.nii.gz", "label": "./labelsTr/lung_055.nii.gz"}, {"image": "./imagesTr/lung_059.nii.gz", "label": "./labelsTr/lung_059.nii.gz"}, {"image": "./imagesTr/lung_061.nii.gz", "label": "./labelsTr/lung_061.nii.gz"}, {"image": "./imagesTr/lung_062.nii.gz", "label": "./labelsTr/lung_062.nii.gz"}, {"image": "./imagesTr/lung_064.nii.gz", "label": "./labelsTr/lung_064.nii.gz"}, {"image": "./imagesTr/lung_065.nii.gz", "label": "./labelsTr/lung_065.nii.gz"}, {"image": "./imagesTr/lung_066.nii.gz", "label": "./labelsTr/lung_066.nii.gz"}, {"image": "./imagesTr/lung_069.nii.gz", "label": "./labelsTr/lung_069.nii.gz"}, {"image": "./imagesTr/lung_070.nii.gz", "label": "./labelsTr/lung_070.nii.gz"}, {"image": "./imagesTr/lung_071.nii.gz", "label": "./labelsTr/lung_071.nii.gz"}, {"image": "./imagesTr/lung_073.nii.gz", "label": "./labelsTr/lung_073.nii.gz"}, {"image": "./imagesTr/lung_074.nii.gz", "label": "./labelsTr/lung_074.nii.gz"}, {"image": "./imagesTr/lung_075.nii.gz", "label": "./labelsTr/lung_075.nii.gz"}, {"image": "./imagesTr/lung_078.nii.gz", "label": "./labelsTr/lung_078.nii.gz"}, {"image": "./imagesTr/lung_079.nii.gz", "label": "./labelsTr/lung_079.nii.gz"}, {"image": "./imagesTr/lung_080.nii.gz", "label": "./labelsTr/lung_080.nii.gz"}, {"image": "./imagesTr/lung_081.nii.gz", "label": "./labelsTr/lung_081.nii.gz"}, {"image": "./imagesTr/lung_083.nii.gz", "label": "./labelsTr/lung_083.nii.gz"}, {"image": "./imagesTr/lung_086.nii.gz", "label": "./labelsTr/lung_086.nii.gz"}, {"image": "./imagesTr/lung_092.nii.gz", "label": "./labelsTr/lung_092.nii.gz"}, {"image": "./imagesTr/lung_093.nii.gz", "label": "./labelsTr/lung_093.nii.gz"}, {"image": "./imagesTr/lung_095.nii.gz", "label": "./labelsTr/lung_095.nii.gz"}, {"image": "./imagesTr/lung_096.nii.gz", "label": "./labelsTr/lung_096.nii.gz"}], "validation_fold4": [{"image": "./imagesTr/lung_003.nii.gz", "label": "./labelsTr/lung_003.nii.gz"}, {"image": "./imagesTr/lung_025.nii.gz", "label": "./labelsTr/lung_025.nii.gz"}, {"image": "./imagesTr/lung_045.nii.gz", "label": "./labelsTr/lung_045.nii.gz"}, {"image": "./imagesTr/lung_051.nii.gz", "label": "./labelsTr/lung_051.nii.gz"}, {"image": "./imagesTr/lung_054.nii.gz", "label": "./labelsTr/lung_054.nii.gz"}, {"image": "./imagesTr/lung_055.nii.gz", "label": "./labelsTr/lung_055.nii.gz"}, {"image": "./imagesTr/lung_061.nii.gz", "label": "./labelsTr/lung_061.nii.gz"}, {"image": "./imagesTr/lung_073.nii.gz", "label": "./labelsTr/lung_073.nii.gz"}, {"image": "./imagesTr/lung_092.nii.gz", "label": "./labelsTr/lung_092.nii.gz"}, {"image": "./imagesTr/lung_093.nii.gz", "label": "./labelsTr/lung_093.nii.gz"}, {"image": "./imagesTr/lung_095.nii.gz", "label": "./labelsTr/lung_095.nii.gz"}, {"image": "./imagesTr/lung_096.nii.gz", "label": "./labelsTr/lung_096.nii.gz"}], "train_fold4": [{"image": "./imagesTr/lung_001.nii.gz", "label": "./labelsTr/lung_001.nii.gz"}, {"image": "./imagesTr/lung_004.nii.gz", "label": "./labelsTr/lung_004.nii.gz"}, {"image": "./imagesTr/lung_005.nii.gz", "label": "./labelsTr/lung_005.nii.gz"}, {"image": "./imagesTr/lung_006.nii.gz", "label": "./labelsTr/lung_006.nii.gz"}, {"image": "./imagesTr/lung_009.nii.gz", "label": "./labelsTr/lung_009.nii.gz"}, {"image": "./imagesTr/lung_010.nii.gz", "label": "./labelsTr/lung_010.nii.gz"}, {"image": "./imagesTr/lung_014.nii.gz", "label": "./labelsTr/lung_014.nii.gz"}, {"image": "./imagesTr/lung_015.nii.gz", "label": "./labelsTr/lung_015.nii.gz"}, {"image": "./imagesTr/lung_016.nii.gz", "label": "./labelsTr/lung_016.nii.gz"}, {"image": "./imagesTr/lung_018.nii.gz", "label": "./labelsTr/lung_018.nii.gz"}, {"image": "./imagesTr/lung_020.nii.gz", "label": "./labelsTr/lung_020.nii.gz"}, {"image": "./imagesTr/lung_022.nii.gz", "label": "./labelsTr/lung_022.nii.gz"}, {"image": "./imagesTr/lung_023.nii.gz", "label": "./labelsTr/lung_023.nii.gz"}, {"image": "./imagesTr/lung_026.nii.gz", "label": "./labelsTr/lung_026.nii.gz"}, {"image": "./imagesTr/lung_027.nii.gz", "label": "./labelsTr/lung_027.nii.gz"}, {"image": "./imagesTr/lung_028.nii.gz", "label": "./labelsTr/lung_028.nii.gz"}, {"image": "./imagesTr/lung_029.nii.gz", "label": "./labelsTr/lung_029.nii.gz"}, {"image": "./imagesTr/lung_031.nii.gz", "label": "./labelsTr/lung_031.nii.gz"}, {"image": "./imagesTr/lung_033.nii.gz", "label": "./labelsTr/lung_033.nii.gz"}, {"image": "./imagesTr/lung_034.nii.gz", "label": "./labelsTr/lung_034.nii.gz"}, {"image": "./imagesTr/lung_036.nii.gz", "label": "./labelsTr/lung_036.nii.gz"}, {"image": "./imagesTr/lung_037.nii.gz", "label": "./labelsTr/lung_037.nii.gz"}, {"image": "./imagesTr/lung_038.nii.gz", "label": "./labelsTr/lung_038.nii.gz"}, {"image": "./imagesTr/lung_041.nii.gz", "label": "./labelsTr/lung_041.nii.gz"}, {"image": "./imagesTr/lung_042.nii.gz", "label": "./labelsTr/lung_042.nii.gz"}, {"image": "./imagesTr/lung_043.nii.gz", "label": "./labelsTr/lung_043.nii.gz"}, {"image": "./imagesTr/lung_044.nii.gz", "label": "./labelsTr/lung_044.nii.gz"}, {"image": "./imagesTr/lung_046.nii.gz", "label": "./labelsTr/lung_046.nii.gz"}, {"image": "./imagesTr/lung_047.nii.gz", "label": "./labelsTr/lung_047.nii.gz"}, {"image": "./imagesTr/lung_048.nii.gz", "label": "./labelsTr/lung_048.nii.gz"}, {"image": "./imagesTr/lung_049.nii.gz", "label": "./labelsTr/lung_049.nii.gz"}, {"image": "./imagesTr/lung_053.nii.gz", "label": "./labelsTr/lung_053.nii.gz"}, {"image": "./imagesTr/lung_057.nii.gz", "label": "./labelsTr/lung_057.nii.gz"}, {"image": "./imagesTr/lung_058.nii.gz", "label": "./labelsTr/lung_058.nii.gz"}, {"image": "./imagesTr/lung_059.nii.gz", "label": "./labelsTr/lung_059.nii.gz"}, {"image": "./imagesTr/lung_062.nii.gz", "label": "./labelsTr/lung_062.nii.gz"}, {"image": "./imagesTr/lung_064.nii.gz", "label": "./labelsTr/lung_064.nii.gz"}, {"image": "./imagesTr/lung_065.nii.gz", "label": "./labelsTr/lung_065.nii.gz"}, {"image": "./imagesTr/lung_066.nii.gz", "label": "./labelsTr/lung_066.nii.gz"}, {"image": "./imagesTr/lung_069.nii.gz", "label": "./labelsTr/lung_069.nii.gz"}, {"image": "./imagesTr/lung_070.nii.gz", "label": "./labelsTr/lung_070.nii.gz"}, {"image": "./imagesTr/lung_071.nii.gz", "label": "./labelsTr/lung_071.nii.gz"}, {"image": "./imagesTr/lung_074.nii.gz", "label": "./labelsTr/lung_074.nii.gz"}, {"image": "./imagesTr/lung_075.nii.gz", "label": "./labelsTr/lung_075.nii.gz"}, {"image": "./imagesTr/lung_078.nii.gz", "label": "./labelsTr/lung_078.nii.gz"}, {"image": "./imagesTr/lung_079.nii.gz", "label": "./labelsTr/lung_079.nii.gz"}, {"image": "./imagesTr/lung_080.nii.gz", "label": "./labelsTr/lung_080.nii.gz"}, {"image": "./imagesTr/lung_081.nii.gz", "label": "./labelsTr/lung_081.nii.gz"}, {"image": "./imagesTr/lung_083.nii.gz", "label": "./labelsTr/lung_083.nii.gz"}, {"image": "./imagesTr/lung_084.nii.gz", "label": "./labelsTr/lung_084.nii.gz"}, {"image": "./imagesTr/lung_086.nii.gz", "label": "./labelsTr/lung_086.nii.gz"}]} diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task07.json b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task07.json new file mode 100644 index 0000000000000000000000000000000000000000..ccce6d8b4b1e9087b97dbc3c7476520ff3fb7a17 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/config/dataset_task07.json @@ -0,0 +1 @@ +{"name": "Pancreas", "description": "Pancreas and cancer segmentation", "reference": "Memorial Sloan Kettering Cancer Center ", "licence": "CC-BY-SA 4.0", "relase": "1.0 04/05/2018", "tensorImageSize": "3D", "modality": {"0": "CT"}, "labels": {"0": "background", "1": "pancreas", "2": "cancer"}, "numTraining": 281, "numTest": 139, "training": [{"image": "./imagesTr/pancreas_290.nii.gz", "label": "./labelsTr/pancreas_290.nii.gz"}, {"image": "./imagesTr/pancreas_127.nii.gz", "label": "./labelsTr/pancreas_127.nii.gz"}, {"image": "./imagesTr/pancreas_056.nii.gz", "label": "./labelsTr/pancreas_056.nii.gz"}, {"image": "./imagesTr/pancreas_148.nii.gz", "label": "./labelsTr/pancreas_148.nii.gz"}, {"image": "./imagesTr/pancreas_048.nii.gz", "label": "./labelsTr/pancreas_048.nii.gz"}, {"image": "./imagesTr/pancreas_135.nii.gz", "label": "./labelsTr/pancreas_135.nii.gz"}, {"image": "./imagesTr/pancreas_382.nii.gz", "label": "./labelsTr/pancreas_382.nii.gz"}, {"image": "./imagesTr/pancreas_035.nii.gz", "label": "./labelsTr/pancreas_035.nii.gz"}, {"image": "./imagesTr/pancreas_160.nii.gz", "label": "./labelsTr/pancreas_160.nii.gz"}, {"image": "./imagesTr/pancreas_103.nii.gz", "label": "./labelsTr/pancreas_103.nii.gz"}, {"image": "./imagesTr/pancreas_172.nii.gz", "label": "./labelsTr/pancreas_172.nii.gz"}, {"image": "./imagesTr/pancreas_111.nii.gz", "label": "./labelsTr/pancreas_111.nii.gz"}, {"image": "./imagesTr/pancreas_212.nii.gz", "label": "./labelsTr/pancreas_212.nii.gz"}, {"image": "./imagesTr/pancreas_312.nii.gz", "label": "./labelsTr/pancreas_312.nii.gz"}, {"image": "./imagesTr/pancreas_300.nii.gz", "label": "./labelsTr/pancreas_300.nii.gz"}, {"image": "./imagesTr/pancreas_200.nii.gz", "label": "./labelsTr/pancreas_200.nii.gz"}, {"image": "./imagesTr/pancreas_355.nii.gz", "label": "./labelsTr/pancreas_355.nii.gz"}, {"image": "./imagesTr/pancreas_404.nii.gz", "label": "./labelsTr/pancreas_404.nii.gz"}, {"image": "./imagesTr/pancreas_255.nii.gz", "label": "./labelsTr/pancreas_255.nii.gz"}, {"image": "./imagesTr/pancreas_328.nii.gz", "label": "./labelsTr/pancreas_328.nii.gz"}, {"image": "./imagesTr/pancreas_228.nii.gz", "label": "./labelsTr/pancreas_228.nii.gz"}, {"image": "./imagesTr/pancreas_181.nii.gz", "label": "./labelsTr/pancreas_181.nii.gz"}, {"image": "./imagesTr/pancreas_336.nii.gz", "label": "./labelsTr/pancreas_336.nii.gz"}, {"image": "./imagesTr/pancreas_081.nii.gz", "label": "./labelsTr/pancreas_081.nii.gz"}, {"image": "./imagesTr/pancreas_236.nii.gz", "label": "./labelsTr/pancreas_236.nii.gz"}, {"image": "./imagesTr/pancreas_247.nii.gz", "label": "./labelsTr/pancreas_247.nii.gz"}, {"image": "./imagesTr/pancreas_416.nii.gz", "label": "./labelsTr/pancreas_416.nii.gz"}, {"image": "./imagesTr/pancreas_347.nii.gz", "label": "./labelsTr/pancreas_347.nii.gz"}, {"image": "./imagesTr/pancreas_259.nii.gz", "label": "./labelsTr/pancreas_259.nii.gz"}, {"image": "./imagesTr/pancreas_224.nii.gz", "label": "./labelsTr/pancreas_224.nii.gz"}, {"image": "./imagesTr/pancreas_093.nii.gz", "label": "./labelsTr/pancreas_093.nii.gz"}, {"image": "./imagesTr/pancreas_193.nii.gz", "label": "./labelsTr/pancreas_193.nii.gz"}, {"image": "./imagesTr/pancreas_302.nii.gz", "label": "./labelsTr/pancreas_302.nii.gz"}, {"image": "./imagesTr/pancreas_361.nii.gz", "label": "./labelsTr/pancreas_361.nii.gz"}, {"image": "./imagesTr/pancreas_261.nii.gz", "label": "./labelsTr/pancreas_261.nii.gz"}, {"image": "./imagesTr/pancreas_210.nii.gz", "label": "./labelsTr/pancreas_210.nii.gz"}, {"image": "./imagesTr/pancreas_310.nii.gz", "label": "./labelsTr/pancreas_310.nii.gz"}, {"image": "./imagesTr/pancreas_226.nii.gz", "label": "./labelsTr/pancreas_226.nii.gz"}, {"image": "./imagesTr/pancreas_091.nii.gz", "label": "./labelsTr/pancreas_091.nii.gz"}, {"image": "./imagesTr/pancreas_326.nii.gz", "label": "./labelsTr/pancreas_326.nii.gz"}, {"image": "./imagesTr/pancreas_191.nii.gz", "label": "./labelsTr/pancreas_191.nii.gz"}, {"image": "./imagesTr/pancreas_414.nii.gz", "label": "./labelsTr/pancreas_414.nii.gz"}, {"image": "./imagesTr/pancreas_345.nii.gz", "label": "./labelsTr/pancreas_345.nii.gz"}, {"image": "./imagesTr/pancreas_418.nii.gz", "label": "./labelsTr/pancreas_418.nii.gz"}, {"image": "./imagesTr/pancreas_249.nii.gz", "label": "./labelsTr/pancreas_249.nii.gz"}, {"image": "./imagesTr/pancreas_183.nii.gz", "label": "./labelsTr/pancreas_183.nii.gz"}, {"image": "./imagesTr/pancreas_334.nii.gz", "label": "./labelsTr/pancreas_334.nii.gz"}, {"image": "./imagesTr/pancreas_083.nii.gz", "label": "./labelsTr/pancreas_083.nii.gz"}, {"image": "./imagesTr/pancreas_234.nii.gz", "label": "./labelsTr/pancreas_234.nii.gz"}, {"image": "./imagesTr/pancreas_357.nii.gz", "label": "./labelsTr/pancreas_357.nii.gz"}, {"image": "./imagesTr/pancreas_406.nii.gz", "label": "./labelsTr/pancreas_406.nii.gz"}, {"image": "./imagesTr/pancreas_137.nii.gz", "label": "./labelsTr/pancreas_137.nii.gz"}, {"image": "./imagesTr/pancreas_380.nii.gz", "label": "./labelsTr/pancreas_380.nii.gz"}, {"image": "./imagesTr/pancreas_037.nii.gz", "label": "./labelsTr/pancreas_037.nii.gz"}, {"image": "./imagesTr/pancreas_280.nii.gz", "label": "./labelsTr/pancreas_280.nii.gz"}, {"image": "./imagesTr/pancreas_129.nii.gz", "label": "./labelsTr/pancreas_129.nii.gz"}, {"image": "./imagesTr/pancreas_029.nii.gz", "label": "./labelsTr/pancreas_029.nii.gz"}, {"image": "./imagesTr/pancreas_058.nii.gz", "label": "./labelsTr/pancreas_058.nii.gz"}, {"image": "./imagesTr/pancreas_158.nii.gz", "label": "./labelsTr/pancreas_158.nii.gz"}, {"image": "./imagesTr/pancreas_292.nii.gz", "label": "./labelsTr/pancreas_292.nii.gz"}, {"image": "./imagesTr/pancreas_025.nii.gz", "label": "./labelsTr/pancreas_025.nii.gz"}, {"image": "./imagesTr/pancreas_392.nii.gz", "label": "./labelsTr/pancreas_392.nii.gz"}, {"image": "./imagesTr/pancreas_125.nii.gz", "label": "./labelsTr/pancreas_125.nii.gz"}, {"image": "./imagesTr/pancreas_046.nii.gz", "label": "./labelsTr/pancreas_046.nii.gz"}, {"image": "./imagesTr/pancreas_113.nii.gz", "label": "./labelsTr/pancreas_113.nii.gz"}, {"image": "./imagesTr/pancreas_070.nii.gz", "label": "./labelsTr/pancreas_070.nii.gz"}, {"image": "./imagesTr/pancreas_170.nii.gz", "label": "./labelsTr/pancreas_170.nii.gz"}, {"image": "./imagesTr/pancreas_101.nii.gz", "label": "./labelsTr/pancreas_101.nii.gz"}, {"image": "./imagesTr/pancreas_001.nii.gz", "label": "./labelsTr/pancreas_001.nii.gz"}, {"image": "./imagesTr/pancreas_187.nii.gz", "label": "./labelsTr/pancreas_187.nii.gz"}, {"image": "./imagesTr/pancreas_330.nii.gz", "label": "./labelsTr/pancreas_330.nii.gz"}, {"image": "./imagesTr/pancreas_087.nii.gz", "label": "./labelsTr/pancreas_087.nii.gz"}, {"image": "./imagesTr/pancreas_230.nii.gz", "label": "./labelsTr/pancreas_230.nii.gz"}, {"image": "./imagesTr/pancreas_199.nii.gz", "label": "./labelsTr/pancreas_199.nii.gz"}, {"image": "./imagesTr/pancreas_099.nii.gz", "label": "./labelsTr/pancreas_099.nii.gz"}, {"image": "./imagesTr/pancreas_402.nii.gz", "label": "./labelsTr/pancreas_402.nii.gz"}, {"image": "./imagesTr/pancreas_253.nii.gz", "label": "./labelsTr/pancreas_253.nii.gz"}, {"image": "./imagesTr/pancreas_222.nii.gz", "label": "./labelsTr/pancreas_222.nii.gz"}, {"image": "./imagesTr/pancreas_095.nii.gz", "label": "./labelsTr/pancreas_095.nii.gz"}, {"image": "./imagesTr/pancreas_241.nii.gz", "label": "./labelsTr/pancreas_241.nii.gz"}, {"image": "./imagesTr/pancreas_410.nii.gz", "label": "./labelsTr/pancreas_410.nii.gz"}, {"image": "./imagesTr/pancreas_214.nii.gz", "label": "./labelsTr/pancreas_214.nii.gz"}, {"image": "./imagesTr/pancreas_269.nii.gz", "label": "./labelsTr/pancreas_269.nii.gz"}, {"image": "./imagesTr/pancreas_369.nii.gz", "label": "./labelsTr/pancreas_369.nii.gz"}, {"image": "./imagesTr/pancreas_277.nii.gz", "label": "./labelsTr/pancreas_277.nii.gz"}, {"image": "./imagesTr/pancreas_377.nii.gz", "label": "./labelsTr/pancreas_377.nii.gz"}, {"image": "./imagesTr/pancreas_318.nii.gz", "label": "./labelsTr/pancreas_318.nii.gz"}, {"image": "./imagesTr/pancreas_218.nii.gz", "label": "./labelsTr/pancreas_218.nii.gz"}, {"image": "./imagesTr/pancreas_365.nii.gz", "label": "./labelsTr/pancreas_365.nii.gz"}, {"image": "./imagesTr/pancreas_265.nii.gz", "label": "./labelsTr/pancreas_265.nii.gz"}, {"image": "./imagesTr/pancreas_105.nii.gz", "label": "./labelsTr/pancreas_105.nii.gz"}, {"image": "./imagesTr/pancreas_005.nii.gz", "label": "./labelsTr/pancreas_005.nii.gz"}, {"image": "./imagesTr/pancreas_178.nii.gz", "label": "./labelsTr/pancreas_178.nii.gz"}, {"image": "./imagesTr/pancreas_078.nii.gz", "label": "./labelsTr/pancreas_078.nii.gz"}, {"image": "./imagesTr/pancreas_166.nii.gz", "label": "./labelsTr/pancreas_166.nii.gz"}, {"image": "./imagesTr/pancreas_066.nii.gz", "label": "./labelsTr/pancreas_066.nii.gz"}, {"image": "./imagesTr/pancreas_117.nii.gz", "label": "./labelsTr/pancreas_117.nii.gz"}, {"image": "./imagesTr/pancreas_109.nii.gz", "label": "./labelsTr/pancreas_109.nii.gz"}, {"image": "./imagesTr/pancreas_074.nii.gz", "label": "./labelsTr/pancreas_074.nii.gz"}, {"image": "./imagesTr/pancreas_296.nii.gz", "label": "./labelsTr/pancreas_296.nii.gz"}, {"image": "./imagesTr/pancreas_021.nii.gz", "label": "./labelsTr/pancreas_021.nii.gz"}, {"image": "./imagesTr/pancreas_388.nii.gz", "label": "./labelsTr/pancreas_388.nii.gz"}, {"image": "./imagesTr/pancreas_042.nii.gz", "label": "./labelsTr/pancreas_042.nii.gz"}, {"image": "./imagesTr/pancreas_284.nii.gz", "label": "./labelsTr/pancreas_284.nii.gz"}, {"image": "./imagesTr/pancreas_050.nii.gz", "label": "./labelsTr/pancreas_050.nii.gz"}, {"image": "./imagesTr/pancreas_015.nii.gz", "label": "./labelsTr/pancreas_015.nii.gz"}, {"image": "./imagesTr/pancreas_119.nii.gz", "label": "./labelsTr/pancreas_119.nii.gz"}, {"image": "./imagesTr/pancreas_019.nii.gz", "label": "./labelsTr/pancreas_019.nii.gz"}, {"image": "./imagesTr/pancreas_064.nii.gz", "label": "./labelsTr/pancreas_064.nii.gz"}, {"image": "./imagesTr/pancreas_107.nii.gz", "label": "./labelsTr/pancreas_107.nii.gz"}, {"image": "./imagesTr/pancreas_398.nii.gz", "label": "./labelsTr/pancreas_398.nii.gz"}, {"image": "./imagesTr/pancreas_298.nii.gz", "label": "./labelsTr/pancreas_298.nii.gz"}, {"image": "./imagesTr/pancreas_052.nii.gz", "label": "./labelsTr/pancreas_052.nii.gz"}, {"image": "./imagesTr/pancreas_131.nii.gz", "label": "./labelsTr/pancreas_131.nii.gz"}, {"image": "./imagesTr/pancreas_386.nii.gz", "label": "./labelsTr/pancreas_386.nii.gz"}, {"image": "./imagesTr/pancreas_286.nii.gz", "label": "./labelsTr/pancreas_286.nii.gz"}, {"image": "./imagesTr/pancreas_040.nii.gz", "label": "./labelsTr/pancreas_040.nii.gz"}, {"image": "./imagesTr/pancreas_140.nii.gz", "label": "./labelsTr/pancreas_140.nii.gz"}, {"image": "./imagesTr/pancreas_294.nii.gz", "label": "./labelsTr/pancreas_294.nii.gz"}, {"image": "./imagesTr/pancreas_089.nii.gz", "label": "./labelsTr/pancreas_089.nii.gz"}, {"image": "./imagesTr/pancreas_243.nii.gz", "label": "./labelsTr/pancreas_243.nii.gz"}, {"image": "./imagesTr/pancreas_343.nii.gz", "label": "./labelsTr/pancreas_343.nii.gz"}, {"image": "./imagesTr/pancreas_412.nii.gz", "label": "./labelsTr/pancreas_412.nii.gz"}, {"image": "./imagesTr/pancreas_320.nii.gz", "label": "./labelsTr/pancreas_320.nii.gz"}, {"image": "./imagesTr/pancreas_197.nii.gz", "label": "./labelsTr/pancreas_197.nii.gz"}, {"image": "./imagesTr/pancreas_400.nii.gz", "label": "./labelsTr/pancreas_400.nii.gz"}, {"image": "./imagesTr/pancreas_351.nii.gz", "label": "./labelsTr/pancreas_351.nii.gz"}, {"image": "./imagesTr/pancreas_367.nii.gz", "label": "./labelsTr/pancreas_367.nii.gz"}, {"image": "./imagesTr/pancreas_267.nii.gz", "label": "./labelsTr/pancreas_267.nii.gz"}, {"image": "./imagesTr/pancreas_304.nii.gz", "label": "./labelsTr/pancreas_304.nii.gz"}, {"image": "./imagesTr/pancreas_204.nii.gz", "label": "./labelsTr/pancreas_204.nii.gz"}, {"image": "./imagesTr/pancreas_379.nii.gz", "label": "./labelsTr/pancreas_379.nii.gz"}, {"image": "./imagesTr/pancreas_279.nii.gz", "label": "./labelsTr/pancreas_279.nii.gz"}, {"image": "./imagesTr/pancreas_308.nii.gz", "label": "./labelsTr/pancreas_308.nii.gz"}, {"image": "./imagesTr/pancreas_275.nii.gz", "label": "./labelsTr/pancreas_275.nii.gz"}, {"image": "./imagesTr/pancreas_375.nii.gz", "label": "./labelsTr/pancreas_375.nii.gz"}, {"image": "./imagesTr/pancreas_316.nii.gz", "label": "./labelsTr/pancreas_316.nii.gz"}, {"image": "./imagesTr/pancreas_080.nii.gz", "label": "./labelsTr/pancreas_080.nii.gz"}, {"image": "./imagesTr/pancreas_180.nii.gz", "label": "./labelsTr/pancreas_180.nii.gz"}, {"image": "./imagesTr/pancreas_229.nii.gz", "label": "./labelsTr/pancreas_229.nii.gz"}, {"image": "./imagesTr/pancreas_329.nii.gz", "label": "./labelsTr/pancreas_329.nii.gz"}, {"image": "./imagesTr/pancreas_254.nii.gz", "label": "./labelsTr/pancreas_254.nii.gz"}, {"image": "./imagesTr/pancreas_354.nii.gz", "label": "./labelsTr/pancreas_354.nii.gz"}, {"image": "./imagesTr/pancreas_405.nii.gz", "label": "./labelsTr/pancreas_405.nii.gz"}, {"image": "./imagesTr/pancreas_325.nii.gz", "label": "./labelsTr/pancreas_325.nii.gz"}, {"image": "./imagesTr/pancreas_225.nii.gz", "label": "./labelsTr/pancreas_225.nii.gz"}, {"image": "./imagesTr/pancreas_092.nii.gz", "label": "./labelsTr/pancreas_092.nii.gz"}, {"image": "./imagesTr/pancreas_409.nii.gz", "label": "./labelsTr/pancreas_409.nii.gz"}, {"image": "./imagesTr/pancreas_358.nii.gz", "label": "./labelsTr/pancreas_358.nii.gz"}, {"image": "./imagesTr/pancreas_258.nii.gz", "label": "./labelsTr/pancreas_258.nii.gz"}, {"image": "./imagesTr/pancreas_346.nii.gz", "label": "./labelsTr/pancreas_346.nii.gz"}, {"image": "./imagesTr/pancreas_246.nii.gz", "label": "./labelsTr/pancreas_246.nii.gz"}, {"image": "./imagesTr/pancreas_313.nii.gz", "label": "./labelsTr/pancreas_313.nii.gz"}, {"image": "./imagesTr/pancreas_213.nii.gz", "label": "./labelsTr/pancreas_213.nii.gz"}, {"image": "./imagesTr/pancreas_370.nii.gz", "label": "./labelsTr/pancreas_370.nii.gz"}, {"image": "./imagesTr/pancreas_421.nii.gz", "label": "./labelsTr/pancreas_421.nii.gz"}, {"image": "./imagesTr/pancreas_270.nii.gz", "label": "./labelsTr/pancreas_270.nii.gz"}, {"image": "./imagesTr/pancreas_201.nii.gz", "label": "./labelsTr/pancreas_201.nii.gz"}, {"image": "./imagesTr/pancreas_301.nii.gz", "label": "./labelsTr/pancreas_301.nii.gz"}, {"image": "./imagesTr/pancreas_262.nii.gz", "label": "./labelsTr/pancreas_262.nii.gz"}, {"image": "./imagesTr/pancreas_362.nii.gz", "label": "./labelsTr/pancreas_362.nii.gz"}, {"image": "./imagesTr/pancreas_102.nii.gz", "label": "./labelsTr/pancreas_102.nii.gz"}, {"image": "./imagesTr/pancreas_061.nii.gz", "label": "./labelsTr/pancreas_061.nii.gz"}, {"image": "./imagesTr/pancreas_110.nii.gz", "label": "./labelsTr/pancreas_110.nii.gz"}, {"image": "./imagesTr/pancreas_010.nii.gz", "label": "./labelsTr/pancreas_010.nii.gz"}, {"image": "./imagesTr/pancreas_173.nii.gz", "label": "./labelsTr/pancreas_173.nii.gz"}, {"image": "./imagesTr/pancreas_391.nii.gz", "label": "./labelsTr/pancreas_391.nii.gz"}, {"image": "./imagesTr/pancreas_126.nii.gz", "label": "./labelsTr/pancreas_126.nii.gz"}, {"image": "./imagesTr/pancreas_291.nii.gz", "label": "./labelsTr/pancreas_291.nii.gz"}, {"image": "./imagesTr/pancreas_138.nii.gz", "label": "./labelsTr/pancreas_138.nii.gz"}, {"image": "./imagesTr/pancreas_145.nii.gz", "label": "./labelsTr/pancreas_145.nii.gz"}, {"image": "./imagesTr/pancreas_045.nii.gz", "label": "./labelsTr/pancreas_045.nii.gz"}, {"image": "./imagesTr/pancreas_283.nii.gz", "label": "./labelsTr/pancreas_283.nii.gz"}, {"image": "./imagesTr/pancreas_049.nii.gz", "label": "./labelsTr/pancreas_049.nii.gz"}, {"image": "./imagesTr/pancreas_149.nii.gz", "label": "./labelsTr/pancreas_149.nii.gz"}, {"image": "./imagesTr/pancreas_157.nii.gz", "label": "./labelsTr/pancreas_157.nii.gz"}, {"image": "./imagesTr/pancreas_071.nii.gz", "label": "./labelsTr/pancreas_071.nii.gz"}, {"image": "./imagesTr/pancreas_012.nii.gz", "label": "./labelsTr/pancreas_012.nii.gz"}, {"image": "./imagesTr/pancreas_100.nii.gz", "label": "./labelsTr/pancreas_100.nii.gz"}, {"image": "./imagesTr/pancreas_028.nii.gz", "label": "./labelsTr/pancreas_028.nii.gz"}, {"image": "./imagesTr/pancreas_055.nii.gz", "label": "./labelsTr/pancreas_055.nii.gz"}, {"image": "./imagesTr/pancreas_155.nii.gz", "label": "./labelsTr/pancreas_155.nii.gz"}, {"image": "./imagesTr/pancreas_147.nii.gz", "label": "./labelsTr/pancreas_147.nii.gz"}, {"image": "./imagesTr/pancreas_393.nii.gz", "label": "./labelsTr/pancreas_393.nii.gz"}, {"image": "./imagesTr/pancreas_124.nii.gz", "label": "./labelsTr/pancreas_124.nii.gz"}, {"image": "./imagesTr/pancreas_293.nii.gz", "label": "./labelsTr/pancreas_293.nii.gz"}, {"image": "./imagesTr/pancreas_024.nii.gz", "label": "./labelsTr/pancreas_024.nii.gz"}, {"image": "./imagesTr/pancreas_159.nii.gz", "label": "./labelsTr/pancreas_159.nii.gz"}, {"image": "./imagesTr/pancreas_339.nii.gz", "label": "./labelsTr/pancreas_339.nii.gz"}, {"image": "./imagesTr/pancreas_239.nii.gz", "label": "./labelsTr/pancreas_239.nii.gz"}, {"image": "./imagesTr/pancreas_415.nii.gz", "label": "./labelsTr/pancreas_415.nii.gz"}, {"image": "./imagesTr/pancreas_344.nii.gz", "label": "./labelsTr/pancreas_344.nii.gz"}, {"image": "./imagesTr/pancreas_244.nii.gz", "label": "./labelsTr/pancreas_244.nii.gz"}, {"image": "./imagesTr/pancreas_327.nii.gz", "label": "./labelsTr/pancreas_327.nii.gz"}, {"image": "./imagesTr/pancreas_227.nii.gz", "label": "./labelsTr/pancreas_227.nii.gz"}, {"image": "./imagesTr/pancreas_256.nii.gz", "label": "./labelsTr/pancreas_256.nii.gz"}, {"image": "./imagesTr/pancreas_356.nii.gz", "label": "./labelsTr/pancreas_356.nii.gz"}, {"image": "./imagesTr/pancreas_235.nii.gz", "label": "./labelsTr/pancreas_235.nii.gz"}, {"image": "./imagesTr/pancreas_182.nii.gz", "label": "./labelsTr/pancreas_182.nii.gz"}, {"image": "./imagesTr/pancreas_348.nii.gz", "label": "./labelsTr/pancreas_348.nii.gz"}, {"image": "./imagesTr/pancreas_419.nii.gz", "label": "./labelsTr/pancreas_419.nii.gz"}, {"image": "./imagesTr/pancreas_360.nii.gz", "label": "./labelsTr/pancreas_360.nii.gz"}, {"image": "./imagesTr/pancreas_203.nii.gz", "label": "./labelsTr/pancreas_203.nii.gz"}, {"image": "./imagesTr/pancreas_303.nii.gz", "label": "./labelsTr/pancreas_303.nii.gz"}, {"image": "./imagesTr/pancreas_372.nii.gz", "label": "./labelsTr/pancreas_372.nii.gz"}, {"image": "./imagesTr/pancreas_311.nii.gz", "label": "./labelsTr/pancreas_311.nii.gz"}, {"image": "./imagesTr/pancreas_211.nii.gz", "label": "./labelsTr/pancreas_211.nii.gz"}, {"image": "./imagesTr/pancreas_043.nii.gz", "label": "./labelsTr/pancreas_043.nii.gz"}, {"image": "./imagesTr/pancreas_389.nii.gz", "label": "./labelsTr/pancreas_389.nii.gz"}, {"image": "./imagesTr/pancreas_289.nii.gz", "label": "./labelsTr/pancreas_289.nii.gz"}, {"image": "./imagesTr/pancreas_120.nii.gz", "label": "./labelsTr/pancreas_120.nii.gz"}, {"image": "./imagesTr/pancreas_297.nii.gz", "label": "./labelsTr/pancreas_297.nii.gz"}, {"image": "./imagesTr/pancreas_051.nii.gz", "label": "./labelsTr/pancreas_051.nii.gz"}, {"image": "./imagesTr/pancreas_032.nii.gz", "label": "./labelsTr/pancreas_032.nii.gz"}, {"image": "./imagesTr/pancreas_285.nii.gz", "label": "./labelsTr/pancreas_285.nii.gz"}, {"image": "./imagesTr/pancreas_385.nii.gz", "label": "./labelsTr/pancreas_385.nii.gz"}, {"image": "./imagesTr/pancreas_067.nii.gz", "label": "./labelsTr/pancreas_067.nii.gz"}, {"image": "./imagesTr/pancreas_167.nii.gz", "label": "./labelsTr/pancreas_167.nii.gz"}, {"image": "./imagesTr/pancreas_179.nii.gz", "label": "./labelsTr/pancreas_179.nii.gz"}, {"image": "./imagesTr/pancreas_004.nii.gz", "label": "./labelsTr/pancreas_004.nii.gz"}, {"image": "./imagesTr/pancreas_104.nii.gz", "label": "./labelsTr/pancreas_104.nii.gz"}, {"image": "./imagesTr/pancreas_175.nii.gz", "label": "./labelsTr/pancreas_175.nii.gz"}, {"image": "./imagesTr/pancreas_075.nii.gz", "label": "./labelsTr/pancreas_075.nii.gz"}, {"image": "./imagesTr/pancreas_016.nii.gz", "label": "./labelsTr/pancreas_016.nii.gz"}, {"image": "./imagesTr/pancreas_376.nii.gz", "label": "./labelsTr/pancreas_376.nii.gz"}, {"image": "./imagesTr/pancreas_276.nii.gz", "label": "./labelsTr/pancreas_276.nii.gz"}, {"image": "./imagesTr/pancreas_268.nii.gz", "label": "./labelsTr/pancreas_268.nii.gz"}, {"image": "./imagesTr/pancreas_315.nii.gz", "label": "./labelsTr/pancreas_315.nii.gz"}, {"image": "./imagesTr/pancreas_215.nii.gz", "label": "./labelsTr/pancreas_215.nii.gz"}, {"image": "./imagesTr/pancreas_264.nii.gz", "label": "./labelsTr/pancreas_264.nii.gz"}, {"image": "./imagesTr/pancreas_364.nii.gz", "label": "./labelsTr/pancreas_364.nii.gz"}, {"image": "./imagesTr/pancreas_219.nii.gz", "label": "./labelsTr/pancreas_219.nii.gz"}, {"image": "./imagesTr/pancreas_207.nii.gz", "label": "./labelsTr/pancreas_207.nii.gz"}, {"image": "./imagesTr/pancreas_098.nii.gz", "label": "./labelsTr/pancreas_098.nii.gz"}, {"image": "./imagesTr/pancreas_198.nii.gz", "label": "./labelsTr/pancreas_198.nii.gz"}, {"image": "./imagesTr/pancreas_086.nii.gz", "label": "./labelsTr/pancreas_086.nii.gz"}, {"image": "./imagesTr/pancreas_231.nii.gz", "label": "./labelsTr/pancreas_231.nii.gz"}, {"image": "./imagesTr/pancreas_186.nii.gz", "label": "./labelsTr/pancreas_186.nii.gz"}, {"image": "./imagesTr/pancreas_331.nii.gz", "label": "./labelsTr/pancreas_331.nii.gz"}, {"image": "./imagesTr/pancreas_411.nii.gz", "label": "./labelsTr/pancreas_411.nii.gz"}, {"image": "./imagesTr/pancreas_323.nii.gz", "label": "./labelsTr/pancreas_323.nii.gz"}, {"image": "./imagesTr/pancreas_194.nii.gz", "label": "./labelsTr/pancreas_194.nii.gz"}, {"image": "./imagesTr/pancreas_094.nii.gz", "label": "./labelsTr/pancreas_094.nii.gz"}, {"image": "./imagesTr/pancreas_278.nii.gz", "label": "./labelsTr/pancreas_278.nii.gz"}, {"image": "./imagesTr/pancreas_378.nii.gz", "label": "./labelsTr/pancreas_378.nii.gz"}, {"image": "./imagesTr/pancreas_305.nii.gz", "label": "./labelsTr/pancreas_305.nii.gz"}, {"image": "./imagesTr/pancreas_266.nii.gz", "label": "./labelsTr/pancreas_266.nii.gz"}, {"image": "./imagesTr/pancreas_366.nii.gz", "label": "./labelsTr/pancreas_366.nii.gz"}, {"image": "./imagesTr/pancreas_217.nii.gz", "label": "./labelsTr/pancreas_217.nii.gz"}, {"image": "./imagesTr/pancreas_374.nii.gz", "label": "./labelsTr/pancreas_374.nii.gz"}, {"image": "./imagesTr/pancreas_274.nii.gz", "label": "./labelsTr/pancreas_274.nii.gz"}, {"image": "./imagesTr/pancreas_309.nii.gz", "label": "./labelsTr/pancreas_309.nii.gz"}, {"image": "./imagesTr/pancreas_209.nii.gz", "label": "./labelsTr/pancreas_209.nii.gz"}, {"image": "./imagesTr/pancreas_321.nii.gz", "label": "./labelsTr/pancreas_321.nii.gz"}, {"image": "./imagesTr/pancreas_196.nii.gz", "label": "./labelsTr/pancreas_196.nii.gz"}, {"image": "./imagesTr/pancreas_096.nii.gz", "label": "./labelsTr/pancreas_096.nii.gz"}, {"image": "./imagesTr/pancreas_342.nii.gz", "label": "./labelsTr/pancreas_342.nii.gz"}, {"image": "./imagesTr/pancreas_413.nii.gz", "label": "./labelsTr/pancreas_413.nii.gz"}, {"image": "./imagesTr/pancreas_242.nii.gz", "label": "./labelsTr/pancreas_242.nii.gz"}, {"image": "./imagesTr/pancreas_088.nii.gz", "label": "./labelsTr/pancreas_088.nii.gz"}, {"image": "./imagesTr/pancreas_084.nii.gz", "label": "./labelsTr/pancreas_084.nii.gz"}, {"image": "./imagesTr/pancreas_333.nii.gz", "label": "./labelsTr/pancreas_333.nii.gz"}, {"image": "./imagesTr/pancreas_401.nii.gz", "label": "./labelsTr/pancreas_401.nii.gz"}, {"image": "./imagesTr/pancreas_350.nii.gz", "label": "./labelsTr/pancreas_350.nii.gz"}, {"image": "./imagesTr/pancreas_287.nii.gz", "label": "./labelsTr/pancreas_287.nii.gz"}, {"image": "./imagesTr/pancreas_130.nii.gz", "label": "./labelsTr/pancreas_130.nii.gz"}, {"image": "./imagesTr/pancreas_387.nii.gz", "label": "./labelsTr/pancreas_387.nii.gz"}, {"image": "./imagesTr/pancreas_299.nii.gz", "label": "./labelsTr/pancreas_299.nii.gz"}, {"image": "./imagesTr/pancreas_399.nii.gz", "label": "./labelsTr/pancreas_399.nii.gz"}, {"image": "./imagesTr/pancreas_395.nii.gz", "label": "./labelsTr/pancreas_395.nii.gz"}, {"image": "./imagesTr/pancreas_122.nii.gz", "label": "./labelsTr/pancreas_122.nii.gz"}, {"image": "./imagesTr/pancreas_295.nii.gz", "label": "./labelsTr/pancreas_295.nii.gz"}, {"image": "./imagesTr/pancreas_041.nii.gz", "label": "./labelsTr/pancreas_041.nii.gz"}, {"image": "./imagesTr/pancreas_169.nii.gz", "label": "./labelsTr/pancreas_169.nii.gz"}, {"image": "./imagesTr/pancreas_069.nii.gz", "label": "./labelsTr/pancreas_069.nii.gz"}, {"image": "./imagesTr/pancreas_114.nii.gz", "label": "./labelsTr/pancreas_114.nii.gz"}, {"image": "./imagesTr/pancreas_077.nii.gz", "label": "./labelsTr/pancreas_077.nii.gz"}, {"image": "./imagesTr/pancreas_006.nii.gz", "label": "./labelsTr/pancreas_006.nii.gz"}, {"image": "./imagesTr/pancreas_106.nii.gz", "label": "./labelsTr/pancreas_106.nii.gz"}, {"image": "./imagesTr/pancreas_165.nii.gz", "label": "./labelsTr/pancreas_165.nii.gz"}, {"image": "./imagesTr/pancreas_018.nii.gz", "label": "./labelsTr/pancreas_018.nii.gz"}], "test": ["./imagesTs/pancreas_044.nii.gz", "./imagesTs/pancreas_144.nii.gz", "./imagesTs/pancreas_039.nii.gz", "./imagesTs/pancreas_139.nii.gz", "./imagesTs/pancreas_027.nii.gz", "./imagesTs/pancreas_390.nii.gz", "./imagesTs/pancreas_156.nii.gz", "./imagesTs/pancreas_282.nii.gz", "./imagesTs/pancreas_060.nii.gz", "./imagesTs/pancreas_003.nii.gz", "./imagesTs/pancreas_072.nii.gz", "./imagesTs/pancreas_271.nii.gz", "./imagesTs/pancreas_371.nii.gz", "./imagesTs/pancreas_420.nii.gz", "./imagesTs/pancreas_363.nii.gz", "./imagesTs/pancreas_263.nii.gz", "./imagesTs/pancreas_408.nii.gz", "./imagesTs/pancreas_359.nii.gz", "./imagesTs/pancreas_324.nii.gz", "./imagesTs/pancreas_202.nii.gz", "./imagesTs/pancreas_273.nii.gz", "./imagesTs/pancreas_373.nii.gz", "./imagesTs/pancreas_245.nii.gz", "./imagesTs/pancreas_238.nii.gz", "./imagesTs/pancreas_338.nii.gz", "./imagesTs/pancreas_349.nii.gz", "./imagesTs/pancreas_257.nii.gz", "./imagesTs/pancreas_154.nii.gz", "./imagesTs/pancreas_054.nii.gz", "./imagesTs/pancreas_146.nii.gz", "./imagesTs/pancreas_013.nii.gz", "./imagesTs/pancreas_162.nii.gz", "./imagesTs/pancreas_062.nii.gz", "./imagesTs/pancreas_353.nii.gz", "./imagesTs/pancreas_322.nii.gz", "./imagesTs/pancreas_195.nii.gz", "./imagesTs/pancreas_341.nii.gz", "./imagesTs/pancreas_314.nii.gz", "./imagesTs/pancreas_306.nii.gz", "./imagesTs/pancreas_206.nii.gz", "./imagesTs/pancreas_017.nii.gz", "./imagesTs/pancreas_009.nii.gz", "./imagesTs/pancreas_174.nii.gz", "./imagesTs/pancreas_396.nii.gz", "./imagesTs/pancreas_121.nii.gz", "./imagesTs/pancreas_288.nii.gz", "./imagesTs/pancreas_142.nii.gz", "./imagesTs/pancreas_133.nii.gz", "./imagesTs/pancreas_384.nii.gz", "./imagesTs/pancreas_033.nii.gz", "./imagesTs/pancreas_150.nii.gz", "./imagesTs/pancreas_076.nii.gz", "./imagesTs/pancreas_176.nii.gz", "./imagesTs/pancreas_115.nii.gz", "./imagesTs/pancreas_068.nii.gz", "./imagesTs/pancreas_168.nii.gz", "./imagesTs/pancreas_164.nii.gz", "./imagesTs/pancreas_007.nii.gz", "./imagesTs/pancreas_152.nii.gz", "./imagesTs/pancreas_031.nii.gz", "./imagesTs/pancreas_023.nii.gz", "./imagesTs/pancreas_394.nii.gz", "./imagesTs/pancreas_123.nii.gz", "./imagesTs/pancreas_189.nii.gz", "./imagesTs/pancreas_220.nii.gz", "./imagesTs/pancreas_097.nii.gz", "./imagesTs/pancreas_251.nii.gz", "./imagesTs/pancreas_185.nii.gz", "./imagesTs/pancreas_332.nii.gz", "./imagesTs/pancreas_085.nii.gz", "./imagesTs/pancreas_232.nii.gz", "./imagesTs/pancreas_208.nii.gz", "./imagesTs/pancreas_216.nii.gz", "./imagesTs/pancreas_237.nii.gz", "./imagesTs/pancreas_337.nii.gz", "./imagesTs/pancreas_192.nii.gz", "./imagesTs/pancreas_417.nii.gz", "./imagesTs/pancreas_002.nii.gz", "./imagesTs/pancreas_161.nii.gz", "./imagesTs/pancreas_073.nii.gz", "./imagesTs/pancreas_026.nii.gz", "./imagesTs/pancreas_038.nii.gz", "./imagesTs/pancreas_034.nii.gz", "./imagesTs/pancreas_134.nii.gz", "./imagesTs/pancreas_383.nii.gz", "./imagesTs/pancreas_057.nii.gz", "./imagesTs/pancreas_171.nii.gz", "./imagesTs/pancreas_112.nii.gz", "./imagesTs/pancreas_063.nii.gz", "./imagesTs/pancreas_163.nii.gz", "./imagesTs/pancreas_128.nii.gz", "./imagesTs/pancreas_036.nii.gz", "./imagesTs/pancreas_281.nii.gz", "./imagesTs/pancreas_136.nii.gz", "./imagesTs/pancreas_381.nii.gz", "./imagesTs/pancreas_047.nii.gz", "./imagesTs/pancreas_059.nii.gz", "./imagesTs/pancreas_190.nii.gz", "./imagesTs/pancreas_090.nii.gz", "./imagesTs/pancreas_407.nii.gz", "./imagesTs/pancreas_082.nii.gz", "./imagesTs/pancreas_335.nii.gz", "./imagesTs/pancreas_248.nii.gz", "./imagesTs/pancreas_260.nii.gz", "./imagesTs/pancreas_272.nii.gz", "./imagesTs/pancreas_143.nii.gz", "./imagesTs/pancreas_397.nii.gz", "./imagesTs/pancreas_020.nii.gz", "./imagesTs/pancreas_151.nii.gz", "./imagesTs/pancreas_132.nii.gz", "./imagesTs/pancreas_079.nii.gz", "./imagesTs/pancreas_108.nii.gz", "./imagesTs/pancreas_008.nii.gz", "./imagesTs/pancreas_116.nii.gz", "./imagesTs/pancreas_368.nii.gz", "./imagesTs/pancreas_319.nii.gz", "./imagesTs/pancreas_307.nii.gz", "./imagesTs/pancreas_252.nii.gz", "./imagesTs/pancreas_403.nii.gz", "./imagesTs/pancreas_352.nii.gz", "./imagesTs/pancreas_340.nii.gz", "./imagesTs/pancreas_240.nii.gz", "./imagesTs/pancreas_223.nii.gz", "./imagesTs/pancreas_205.nii.gz", "./imagesTs/pancreas_317.nii.gz", "./imagesTs/pancreas_221.nii.gz", "./imagesTs/pancreas_188.nii.gz", "./imagesTs/pancreas_233.nii.gz", "./imagesTs/pancreas_184.nii.gz", "./imagesTs/pancreas_250.nii.gz", "./imagesTs/pancreas_030.nii.gz", "./imagesTs/pancreas_053.nii.gz", "./imagesTs/pancreas_153.nii.gz", "./imagesTs/pancreas_022.nii.gz", "./imagesTs/pancreas_141.nii.gz", "./imagesTs/pancreas_014.nii.gz", "./imagesTs/pancreas_177.nii.gz", "./imagesTs/pancreas_065.nii.gz", "./imagesTs/pancreas_118.nii.gz"], "validation_fold0": [{"image": "./imagesTr/pancreas_021.nii.gz", "label": "./labelsTr/pancreas_021.nii.gz"}, {"image": "./imagesTr/pancreas_024.nii.gz", "label": "./labelsTr/pancreas_024.nii.gz"}, {"image": "./imagesTr/pancreas_035.nii.gz", "label": "./labelsTr/pancreas_035.nii.gz"}, {"image": "./imagesTr/pancreas_040.nii.gz", "label": "./labelsTr/pancreas_040.nii.gz"}, {"image": "./imagesTr/pancreas_042.nii.gz", "label": "./labelsTr/pancreas_042.nii.gz"}, {"image": "./imagesTr/pancreas_056.nii.gz", "label": "./labelsTr/pancreas_056.nii.gz"}, {"image": "./imagesTr/pancreas_067.nii.gz", "label": "./labelsTr/pancreas_067.nii.gz"}, {"image": "./imagesTr/pancreas_075.nii.gz", "label": "./labelsTr/pancreas_075.nii.gz"}, {"image": "./imagesTr/pancreas_086.nii.gz", "label": "./labelsTr/pancreas_086.nii.gz"}, {"image": "./imagesTr/pancreas_089.nii.gz", "label": "./labelsTr/pancreas_089.nii.gz"}, {"image": "./imagesTr/pancreas_092.nii.gz", "label": "./labelsTr/pancreas_092.nii.gz"}, {"image": "./imagesTr/pancreas_094.nii.gz", "label": "./labelsTr/pancreas_094.nii.gz"}, {"image": "./imagesTr/pancreas_095.nii.gz", "label": "./labelsTr/pancreas_095.nii.gz"}, {"image": "./imagesTr/pancreas_098.nii.gz", "label": "./labelsTr/pancreas_098.nii.gz"}, {"image": "./imagesTr/pancreas_109.nii.gz", "label": "./labelsTr/pancreas_109.nii.gz"}, {"image": "./imagesTr/pancreas_110.nii.gz", "label": "./labelsTr/pancreas_110.nii.gz"}, {"image": "./imagesTr/pancreas_114.nii.gz", "label": "./labelsTr/pancreas_114.nii.gz"}, {"image": "./imagesTr/pancreas_119.nii.gz", "label": "./labelsTr/pancreas_119.nii.gz"}, {"image": "./imagesTr/pancreas_138.nii.gz", "label": "./labelsTr/pancreas_138.nii.gz"}, {"image": "./imagesTr/pancreas_145.nii.gz", "label": "./labelsTr/pancreas_145.nii.gz"}, {"image": "./imagesTr/pancreas_148.nii.gz", "label": "./labelsTr/pancreas_148.nii.gz"}, {"image": "./imagesTr/pancreas_169.nii.gz", "label": "./labelsTr/pancreas_169.nii.gz"}, {"image": "./imagesTr/pancreas_170.nii.gz", "label": "./labelsTr/pancreas_170.nii.gz"}, {"image": "./imagesTr/pancreas_172.nii.gz", "label": "./labelsTr/pancreas_172.nii.gz"}, {"image": "./imagesTr/pancreas_175.nii.gz", "label": "./labelsTr/pancreas_175.nii.gz"}, {"image": "./imagesTr/pancreas_180.nii.gz", "label": "./labelsTr/pancreas_180.nii.gz"}, {"image": "./imagesTr/pancreas_191.nii.gz", "label": "./labelsTr/pancreas_191.nii.gz"}, {"image": "./imagesTr/pancreas_193.nii.gz", "label": "./labelsTr/pancreas_193.nii.gz"}, {"image": "./imagesTr/pancreas_212.nii.gz", "label": "./labelsTr/pancreas_212.nii.gz"}, {"image": "./imagesTr/pancreas_215.nii.gz", "label": "./labelsTr/pancreas_215.nii.gz"}, {"image": "./imagesTr/pancreas_222.nii.gz", "label": "./labelsTr/pancreas_222.nii.gz"}, {"image": "./imagesTr/pancreas_235.nii.gz", "label": "./labelsTr/pancreas_235.nii.gz"}, {"image": "./imagesTr/pancreas_241.nii.gz", "label": "./labelsTr/pancreas_241.nii.gz"}, {"image": "./imagesTr/pancreas_242.nii.gz", "label": "./labelsTr/pancreas_242.nii.gz"}, {"image": "./imagesTr/pancreas_244.nii.gz", "label": "./labelsTr/pancreas_244.nii.gz"}, {"image": "./imagesTr/pancreas_246.nii.gz", "label": "./labelsTr/pancreas_246.nii.gz"}, {"image": "./imagesTr/pancreas_247.nii.gz", "label": "./labelsTr/pancreas_247.nii.gz"}, {"image": "./imagesTr/pancreas_264.nii.gz", "label": "./labelsTr/pancreas_264.nii.gz"}, {"image": "./imagesTr/pancreas_265.nii.gz", "label": "./labelsTr/pancreas_265.nii.gz"}, {"image": "./imagesTr/pancreas_266.nii.gz", "label": "./labelsTr/pancreas_266.nii.gz"}, {"image": "./imagesTr/pancreas_267.nii.gz", "label": "./labelsTr/pancreas_267.nii.gz"}, {"image": "./imagesTr/pancreas_275.nii.gz", "label": "./labelsTr/pancreas_275.nii.gz"}, {"image": "./imagesTr/pancreas_279.nii.gz", "label": "./labelsTr/pancreas_279.nii.gz"}, {"image": "./imagesTr/pancreas_287.nii.gz", "label": "./labelsTr/pancreas_287.nii.gz"}, {"image": "./imagesTr/pancreas_301.nii.gz", "label": "./labelsTr/pancreas_301.nii.gz"}, {"image": "./imagesTr/pancreas_323.nii.gz", "label": "./labelsTr/pancreas_323.nii.gz"}, {"image": "./imagesTr/pancreas_336.nii.gz", "label": "./labelsTr/pancreas_336.nii.gz"}, {"image": "./imagesTr/pancreas_344.nii.gz", "label": "./labelsTr/pancreas_344.nii.gz"}, {"image": "./imagesTr/pancreas_351.nii.gz", "label": "./labelsTr/pancreas_351.nii.gz"}, {"image": "./imagesTr/pancreas_354.nii.gz", "label": "./labelsTr/pancreas_354.nii.gz"}, {"image": "./imagesTr/pancreas_372.nii.gz", "label": "./labelsTr/pancreas_372.nii.gz"}, {"image": "./imagesTr/pancreas_377.nii.gz", "label": "./labelsTr/pancreas_377.nii.gz"}, {"image": "./imagesTr/pancreas_387.nii.gz", "label": "./labelsTr/pancreas_387.nii.gz"}, {"image": "./imagesTr/pancreas_391.nii.gz", "label": "./labelsTr/pancreas_391.nii.gz"}, {"image": "./imagesTr/pancreas_392.nii.gz", "label": "./labelsTr/pancreas_392.nii.gz"}, {"image": "./imagesTr/pancreas_410.nii.gz", "label": "./labelsTr/pancreas_410.nii.gz"}, {"image": "./imagesTr/pancreas_412.nii.gz", "label": "./labelsTr/pancreas_412.nii.gz"}], "train_fold0": [{"image": "./imagesTr/pancreas_001.nii.gz", "label": "./labelsTr/pancreas_001.nii.gz"}, {"image": "./imagesTr/pancreas_004.nii.gz", "label": "./labelsTr/pancreas_004.nii.gz"}, {"image": "./imagesTr/pancreas_005.nii.gz", "label": "./labelsTr/pancreas_005.nii.gz"}, {"image": "./imagesTr/pancreas_006.nii.gz", "label": "./labelsTr/pancreas_006.nii.gz"}, {"image": "./imagesTr/pancreas_010.nii.gz", "label": "./labelsTr/pancreas_010.nii.gz"}, {"image": "./imagesTr/pancreas_012.nii.gz", "label": "./labelsTr/pancreas_012.nii.gz"}, {"image": "./imagesTr/pancreas_015.nii.gz", "label": "./labelsTr/pancreas_015.nii.gz"}, {"image": "./imagesTr/pancreas_016.nii.gz", "label": "./labelsTr/pancreas_016.nii.gz"}, {"image": "./imagesTr/pancreas_018.nii.gz", "label": "./labelsTr/pancreas_018.nii.gz"}, {"image": "./imagesTr/pancreas_019.nii.gz", "label": "./labelsTr/pancreas_019.nii.gz"}, {"image": "./imagesTr/pancreas_025.nii.gz", "label": "./labelsTr/pancreas_025.nii.gz"}, {"image": "./imagesTr/pancreas_028.nii.gz", "label": "./labelsTr/pancreas_028.nii.gz"}, {"image": "./imagesTr/pancreas_029.nii.gz", "label": "./labelsTr/pancreas_029.nii.gz"}, {"image": "./imagesTr/pancreas_032.nii.gz", "label": "./labelsTr/pancreas_032.nii.gz"}, {"image": "./imagesTr/pancreas_037.nii.gz", "label": "./labelsTr/pancreas_037.nii.gz"}, {"image": "./imagesTr/pancreas_041.nii.gz", "label": "./labelsTr/pancreas_041.nii.gz"}, {"image": "./imagesTr/pancreas_043.nii.gz", "label": "./labelsTr/pancreas_043.nii.gz"}, {"image": "./imagesTr/pancreas_045.nii.gz", "label": "./labelsTr/pancreas_045.nii.gz"}, {"image": "./imagesTr/pancreas_046.nii.gz", "label": "./labelsTr/pancreas_046.nii.gz"}, {"image": "./imagesTr/pancreas_048.nii.gz", "label": "./labelsTr/pancreas_048.nii.gz"}, {"image": "./imagesTr/pancreas_049.nii.gz", "label": "./labelsTr/pancreas_049.nii.gz"}, {"image": "./imagesTr/pancreas_050.nii.gz", "label": "./labelsTr/pancreas_050.nii.gz"}, {"image": "./imagesTr/pancreas_051.nii.gz", "label": "./labelsTr/pancreas_051.nii.gz"}, {"image": "./imagesTr/pancreas_052.nii.gz", "label": "./labelsTr/pancreas_052.nii.gz"}, {"image": "./imagesTr/pancreas_055.nii.gz", "label": "./labelsTr/pancreas_055.nii.gz"}, {"image": "./imagesTr/pancreas_058.nii.gz", "label": "./labelsTr/pancreas_058.nii.gz"}, {"image": "./imagesTr/pancreas_061.nii.gz", "label": "./labelsTr/pancreas_061.nii.gz"}, {"image": "./imagesTr/pancreas_064.nii.gz", "label": "./labelsTr/pancreas_064.nii.gz"}, {"image": "./imagesTr/pancreas_066.nii.gz", "label": "./labelsTr/pancreas_066.nii.gz"}, {"image": "./imagesTr/pancreas_069.nii.gz", "label": "./labelsTr/pancreas_069.nii.gz"}, {"image": "./imagesTr/pancreas_070.nii.gz", "label": "./labelsTr/pancreas_070.nii.gz"}, {"image": "./imagesTr/pancreas_071.nii.gz", "label": "./labelsTr/pancreas_071.nii.gz"}, {"image": "./imagesTr/pancreas_074.nii.gz", "label": "./labelsTr/pancreas_074.nii.gz"}, {"image": "./imagesTr/pancreas_077.nii.gz", "label": "./labelsTr/pancreas_077.nii.gz"}, {"image": "./imagesTr/pancreas_078.nii.gz", "label": "./labelsTr/pancreas_078.nii.gz"}, {"image": "./imagesTr/pancreas_080.nii.gz", "label": "./labelsTr/pancreas_080.nii.gz"}, {"image": "./imagesTr/pancreas_081.nii.gz", "label": "./labelsTr/pancreas_081.nii.gz"}, {"image": "./imagesTr/pancreas_083.nii.gz", "label": "./labelsTr/pancreas_083.nii.gz"}, {"image": "./imagesTr/pancreas_084.nii.gz", "label": "./labelsTr/pancreas_084.nii.gz"}, {"image": "./imagesTr/pancreas_087.nii.gz", "label": "./labelsTr/pancreas_087.nii.gz"}, {"image": "./imagesTr/pancreas_088.nii.gz", "label": "./labelsTr/pancreas_088.nii.gz"}, {"image": "./imagesTr/pancreas_091.nii.gz", "label": "./labelsTr/pancreas_091.nii.gz"}, {"image": "./imagesTr/pancreas_093.nii.gz", "label": "./labelsTr/pancreas_093.nii.gz"}, {"image": "./imagesTr/pancreas_096.nii.gz", "label": "./labelsTr/pancreas_096.nii.gz"}, {"image": "./imagesTr/pancreas_099.nii.gz", "label": "./labelsTr/pancreas_099.nii.gz"}, {"image": "./imagesTr/pancreas_100.nii.gz", "label": "./labelsTr/pancreas_100.nii.gz"}, {"image": "./imagesTr/pancreas_101.nii.gz", "label": "./labelsTr/pancreas_101.nii.gz"}, {"image": "./imagesTr/pancreas_102.nii.gz", "label": "./labelsTr/pancreas_102.nii.gz"}, {"image": "./imagesTr/pancreas_103.nii.gz", "label": "./labelsTr/pancreas_103.nii.gz"}, {"image": "./imagesTr/pancreas_104.nii.gz", "label": "./labelsTr/pancreas_104.nii.gz"}, {"image": "./imagesTr/pancreas_105.nii.gz", "label": "./labelsTr/pancreas_105.nii.gz"}, {"image": "./imagesTr/pancreas_106.nii.gz", "label": "./labelsTr/pancreas_106.nii.gz"}, {"image": "./imagesTr/pancreas_107.nii.gz", "label": "./labelsTr/pancreas_107.nii.gz"}, {"image": "./imagesTr/pancreas_111.nii.gz", "label": "./labelsTr/pancreas_111.nii.gz"}, {"image": "./imagesTr/pancreas_113.nii.gz", "label": "./labelsTr/pancreas_113.nii.gz"}, {"image": "./imagesTr/pancreas_117.nii.gz", "label": "./labelsTr/pancreas_117.nii.gz"}, {"image": "./imagesTr/pancreas_120.nii.gz", "label": "./labelsTr/pancreas_120.nii.gz"}, {"image": "./imagesTr/pancreas_122.nii.gz", "label": "./labelsTr/pancreas_122.nii.gz"}, {"image": "./imagesTr/pancreas_124.nii.gz", "label": "./labelsTr/pancreas_124.nii.gz"}, {"image": "./imagesTr/pancreas_125.nii.gz", "label": "./labelsTr/pancreas_125.nii.gz"}, {"image": "./imagesTr/pancreas_126.nii.gz", "label": "./labelsTr/pancreas_126.nii.gz"}, {"image": "./imagesTr/pancreas_127.nii.gz", "label": "./labelsTr/pancreas_127.nii.gz"}, {"image": "./imagesTr/pancreas_129.nii.gz", "label": "./labelsTr/pancreas_129.nii.gz"}, {"image": "./imagesTr/pancreas_130.nii.gz", "label": "./labelsTr/pancreas_130.nii.gz"}, {"image": "./imagesTr/pancreas_131.nii.gz", "label": "./labelsTr/pancreas_131.nii.gz"}, {"image": "./imagesTr/pancreas_135.nii.gz", "label": "./labelsTr/pancreas_135.nii.gz"}, {"image": "./imagesTr/pancreas_137.nii.gz", "label": "./labelsTr/pancreas_137.nii.gz"}, {"image": "./imagesTr/pancreas_140.nii.gz", "label": "./labelsTr/pancreas_140.nii.gz"}, {"image": "./imagesTr/pancreas_147.nii.gz", "label": "./labelsTr/pancreas_147.nii.gz"}, {"image": "./imagesTr/pancreas_149.nii.gz", "label": "./labelsTr/pancreas_149.nii.gz"}, {"image": "./imagesTr/pancreas_155.nii.gz", "label": "./labelsTr/pancreas_155.nii.gz"}, {"image": "./imagesTr/pancreas_157.nii.gz", "label": "./labelsTr/pancreas_157.nii.gz"}, {"image": "./imagesTr/pancreas_158.nii.gz", "label": "./labelsTr/pancreas_158.nii.gz"}, {"image": "./imagesTr/pancreas_159.nii.gz", "label": "./labelsTr/pancreas_159.nii.gz"}, {"image": "./imagesTr/pancreas_160.nii.gz", "label": "./labelsTr/pancreas_160.nii.gz"}, {"image": "./imagesTr/pancreas_165.nii.gz", "label": "./labelsTr/pancreas_165.nii.gz"}, {"image": "./imagesTr/pancreas_166.nii.gz", "label": "./labelsTr/pancreas_166.nii.gz"}, {"image": "./imagesTr/pancreas_167.nii.gz", "label": "./labelsTr/pancreas_167.nii.gz"}, {"image": "./imagesTr/pancreas_173.nii.gz", "label": "./labelsTr/pancreas_173.nii.gz"}, {"image": "./imagesTr/pancreas_178.nii.gz", "label": "./labelsTr/pancreas_178.nii.gz"}, {"image": "./imagesTr/pancreas_179.nii.gz", "label": "./labelsTr/pancreas_179.nii.gz"}, {"image": "./imagesTr/pancreas_181.nii.gz", "label": "./labelsTr/pancreas_181.nii.gz"}, {"image": "./imagesTr/pancreas_182.nii.gz", "label": "./labelsTr/pancreas_182.nii.gz"}, {"image": "./imagesTr/pancreas_183.nii.gz", "label": "./labelsTr/pancreas_183.nii.gz"}, {"image": "./imagesTr/pancreas_186.nii.gz", "label": "./labelsTr/pancreas_186.nii.gz"}, {"image": "./imagesTr/pancreas_187.nii.gz", "label": "./labelsTr/pancreas_187.nii.gz"}, {"image": "./imagesTr/pancreas_194.nii.gz", "label": "./labelsTr/pancreas_194.nii.gz"}, {"image": "./imagesTr/pancreas_196.nii.gz", "label": "./labelsTr/pancreas_196.nii.gz"}, {"image": "./imagesTr/pancreas_197.nii.gz", "label": "./labelsTr/pancreas_197.nii.gz"}, {"image": "./imagesTr/pancreas_198.nii.gz", "label": "./labelsTr/pancreas_198.nii.gz"}, {"image": "./imagesTr/pancreas_199.nii.gz", "label": "./labelsTr/pancreas_199.nii.gz"}, {"image": "./imagesTr/pancreas_200.nii.gz", "label": "./labelsTr/pancreas_200.nii.gz"}, {"image": "./imagesTr/pancreas_201.nii.gz", "label": "./labelsTr/pancreas_201.nii.gz"}, {"image": "./imagesTr/pancreas_203.nii.gz", "label": "./labelsTr/pancreas_203.nii.gz"}, {"image": "./imagesTr/pancreas_204.nii.gz", "label": "./labelsTr/pancreas_204.nii.gz"}, {"image": "./imagesTr/pancreas_207.nii.gz", "label": "./labelsTr/pancreas_207.nii.gz"}, {"image": "./imagesTr/pancreas_209.nii.gz", "label": "./labelsTr/pancreas_209.nii.gz"}, {"image": "./imagesTr/pancreas_210.nii.gz", "label": "./labelsTr/pancreas_210.nii.gz"}, {"image": "./imagesTr/pancreas_211.nii.gz", "label": "./labelsTr/pancreas_211.nii.gz"}, {"image": "./imagesTr/pancreas_213.nii.gz", "label": "./labelsTr/pancreas_213.nii.gz"}, {"image": "./imagesTr/pancreas_214.nii.gz", "label": "./labelsTr/pancreas_214.nii.gz"}, {"image": "./imagesTr/pancreas_217.nii.gz", "label": "./labelsTr/pancreas_217.nii.gz"}, {"image": "./imagesTr/pancreas_218.nii.gz", "label": "./labelsTr/pancreas_218.nii.gz"}, {"image": "./imagesTr/pancreas_219.nii.gz", "label": "./labelsTr/pancreas_219.nii.gz"}, {"image": "./imagesTr/pancreas_224.nii.gz", "label": "./labelsTr/pancreas_224.nii.gz"}, {"image": "./imagesTr/pancreas_225.nii.gz", "label": "./labelsTr/pancreas_225.nii.gz"}, {"image": "./imagesTr/pancreas_226.nii.gz", "label": "./labelsTr/pancreas_226.nii.gz"}, {"image": "./imagesTr/pancreas_227.nii.gz", "label": "./labelsTr/pancreas_227.nii.gz"}, {"image": "./imagesTr/pancreas_228.nii.gz", "label": "./labelsTr/pancreas_228.nii.gz"}, {"image": "./imagesTr/pancreas_229.nii.gz", "label": "./labelsTr/pancreas_229.nii.gz"}, {"image": "./imagesTr/pancreas_230.nii.gz", "label": "./labelsTr/pancreas_230.nii.gz"}, {"image": "./imagesTr/pancreas_231.nii.gz", "label": "./labelsTr/pancreas_231.nii.gz"}, {"image": "./imagesTr/pancreas_234.nii.gz", "label": "./labelsTr/pancreas_234.nii.gz"}, {"image": "./imagesTr/pancreas_236.nii.gz", "label": "./labelsTr/pancreas_236.nii.gz"}, {"image": "./imagesTr/pancreas_239.nii.gz", "label": "./labelsTr/pancreas_239.nii.gz"}, {"image": "./imagesTr/pancreas_243.nii.gz", "label": "./labelsTr/pancreas_243.nii.gz"}, {"image": "./imagesTr/pancreas_249.nii.gz", "label": "./labelsTr/pancreas_249.nii.gz"}, {"image": "./imagesTr/pancreas_253.nii.gz", "label": "./labelsTr/pancreas_253.nii.gz"}, {"image": "./imagesTr/pancreas_254.nii.gz", "label": "./labelsTr/pancreas_254.nii.gz"}, {"image": "./imagesTr/pancreas_255.nii.gz", "label": "./labelsTr/pancreas_255.nii.gz"}, {"image": "./imagesTr/pancreas_256.nii.gz", "label": "./labelsTr/pancreas_256.nii.gz"}, {"image": "./imagesTr/pancreas_258.nii.gz", "label": "./labelsTr/pancreas_258.nii.gz"}, {"image": "./imagesTr/pancreas_259.nii.gz", "label": "./labelsTr/pancreas_259.nii.gz"}, {"image": "./imagesTr/pancreas_261.nii.gz", "label": "./labelsTr/pancreas_261.nii.gz"}, {"image": "./imagesTr/pancreas_262.nii.gz", "label": "./labelsTr/pancreas_262.nii.gz"}, {"image": "./imagesTr/pancreas_268.nii.gz", "label": "./labelsTr/pancreas_268.nii.gz"}, {"image": "./imagesTr/pancreas_269.nii.gz", "label": "./labelsTr/pancreas_269.nii.gz"}, {"image": "./imagesTr/pancreas_270.nii.gz", "label": "./labelsTr/pancreas_270.nii.gz"}, {"image": "./imagesTr/pancreas_274.nii.gz", "label": "./labelsTr/pancreas_274.nii.gz"}, {"image": "./imagesTr/pancreas_276.nii.gz", "label": "./labelsTr/pancreas_276.nii.gz"}, {"image": "./imagesTr/pancreas_277.nii.gz", "label": "./labelsTr/pancreas_277.nii.gz"}, {"image": "./imagesTr/pancreas_278.nii.gz", "label": "./labelsTr/pancreas_278.nii.gz"}, {"image": "./imagesTr/pancreas_280.nii.gz", "label": "./labelsTr/pancreas_280.nii.gz"}, {"image": "./imagesTr/pancreas_283.nii.gz", "label": "./labelsTr/pancreas_283.nii.gz"}, {"image": "./imagesTr/pancreas_284.nii.gz", "label": "./labelsTr/pancreas_284.nii.gz"}, {"image": "./imagesTr/pancreas_285.nii.gz", "label": "./labelsTr/pancreas_285.nii.gz"}, {"image": "./imagesTr/pancreas_286.nii.gz", "label": "./labelsTr/pancreas_286.nii.gz"}, {"image": "./imagesTr/pancreas_289.nii.gz", "label": "./labelsTr/pancreas_289.nii.gz"}, {"image": "./imagesTr/pancreas_290.nii.gz", "label": "./labelsTr/pancreas_290.nii.gz"}, {"image": "./imagesTr/pancreas_291.nii.gz", "label": "./labelsTr/pancreas_291.nii.gz"}, {"image": "./imagesTr/pancreas_292.nii.gz", "label": "./labelsTr/pancreas_292.nii.gz"}, {"image": "./imagesTr/pancreas_293.nii.gz", "label": "./labelsTr/pancreas_293.nii.gz"}, {"image": "./imagesTr/pancreas_294.nii.gz", "label": "./labelsTr/pancreas_294.nii.gz"}, {"image": "./imagesTr/pancreas_295.nii.gz", "label": "./labelsTr/pancreas_295.nii.gz"}, {"image": "./imagesTr/pancreas_296.nii.gz", "label": "./labelsTr/pancreas_296.nii.gz"}, {"image": "./imagesTr/pancreas_297.nii.gz", "label": "./labelsTr/pancreas_297.nii.gz"}, {"image": "./imagesTr/pancreas_298.nii.gz", "label": "./labelsTr/pancreas_298.nii.gz"}, {"image": "./imagesTr/pancreas_299.nii.gz", "label": "./labelsTr/pancreas_299.nii.gz"}, {"image": "./imagesTr/pancreas_300.nii.gz", "label": "./labelsTr/pancreas_300.nii.gz"}, {"image": "./imagesTr/pancreas_302.nii.gz", "label": "./labelsTr/pancreas_302.nii.gz"}, {"image": "./imagesTr/pancreas_303.nii.gz", "label": "./labelsTr/pancreas_303.nii.gz"}, {"image": "./imagesTr/pancreas_304.nii.gz", "label": "./labelsTr/pancreas_304.nii.gz"}, {"image": "./imagesTr/pancreas_305.nii.gz", "label": "./labelsTr/pancreas_305.nii.gz"}, {"image": "./imagesTr/pancreas_308.nii.gz", "label": "./labelsTr/pancreas_308.nii.gz"}, {"image": "./imagesTr/pancreas_309.nii.gz", "label": "./labelsTr/pancreas_309.nii.gz"}, {"image": "./imagesTr/pancreas_310.nii.gz", "label": "./labelsTr/pancreas_310.nii.gz"}, {"image": "./imagesTr/pancreas_311.nii.gz", "label": "./labelsTr/pancreas_311.nii.gz"}, {"image": "./imagesTr/pancreas_312.nii.gz", "label": "./labelsTr/pancreas_312.nii.gz"}, {"image": "./imagesTr/pancreas_313.nii.gz", "label": "./labelsTr/pancreas_313.nii.gz"}, {"image": "./imagesTr/pancreas_315.nii.gz", "label": "./labelsTr/pancreas_315.nii.gz"}, {"image": "./imagesTr/pancreas_316.nii.gz", "label": "./labelsTr/pancreas_316.nii.gz"}, {"image": "./imagesTr/pancreas_318.nii.gz", "label": "./labelsTr/pancreas_318.nii.gz"}, {"image": "./imagesTr/pancreas_320.nii.gz", "label": "./labelsTr/pancreas_320.nii.gz"}, {"image": "./imagesTr/pancreas_321.nii.gz", "label": "./labelsTr/pancreas_321.nii.gz"}, {"image": "./imagesTr/pancreas_325.nii.gz", "label": "./labelsTr/pancreas_325.nii.gz"}, {"image": "./imagesTr/pancreas_326.nii.gz", "label": "./labelsTr/pancreas_326.nii.gz"}, {"image": "./imagesTr/pancreas_327.nii.gz", "label": "./labelsTr/pancreas_327.nii.gz"}, {"image": "./imagesTr/pancreas_328.nii.gz", "label": "./labelsTr/pancreas_328.nii.gz"}, {"image": "./imagesTr/pancreas_329.nii.gz", "label": "./labelsTr/pancreas_329.nii.gz"}, {"image": "./imagesTr/pancreas_330.nii.gz", "label": "./labelsTr/pancreas_330.nii.gz"}, {"image": "./imagesTr/pancreas_331.nii.gz", "label": "./labelsTr/pancreas_331.nii.gz"}, {"image": "./imagesTr/pancreas_333.nii.gz", "label": "./labelsTr/pancreas_333.nii.gz"}, {"image": "./imagesTr/pancreas_334.nii.gz", "label": "./labelsTr/pancreas_334.nii.gz"}, {"image": "./imagesTr/pancreas_339.nii.gz", "label": "./labelsTr/pancreas_339.nii.gz"}, {"image": "./imagesTr/pancreas_342.nii.gz", "label": "./labelsTr/pancreas_342.nii.gz"}, {"image": "./imagesTr/pancreas_343.nii.gz", "label": "./labelsTr/pancreas_343.nii.gz"}, {"image": "./imagesTr/pancreas_345.nii.gz", "label": "./labelsTr/pancreas_345.nii.gz"}, {"image": "./imagesTr/pancreas_346.nii.gz", "label": "./labelsTr/pancreas_346.nii.gz"}, {"image": "./imagesTr/pancreas_347.nii.gz", "label": "./labelsTr/pancreas_347.nii.gz"}, {"image": "./imagesTr/pancreas_348.nii.gz", "label": "./labelsTr/pancreas_348.nii.gz"}, {"image": "./imagesTr/pancreas_350.nii.gz", "label": "./labelsTr/pancreas_350.nii.gz"}, {"image": "./imagesTr/pancreas_355.nii.gz", "label": "./labelsTr/pancreas_355.nii.gz"}, {"image": "./imagesTr/pancreas_356.nii.gz", "label": "./labelsTr/pancreas_356.nii.gz"}, {"image": "./imagesTr/pancreas_357.nii.gz", "label": "./labelsTr/pancreas_357.nii.gz"}, {"image": "./imagesTr/pancreas_358.nii.gz", "label": "./labelsTr/pancreas_358.nii.gz"}, {"image": "./imagesTr/pancreas_360.nii.gz", "label": "./labelsTr/pancreas_360.nii.gz"}, {"image": "./imagesTr/pancreas_361.nii.gz", "label": "./labelsTr/pancreas_361.nii.gz"}, {"image": "./imagesTr/pancreas_362.nii.gz", "label": "./labelsTr/pancreas_362.nii.gz"}, {"image": "./imagesTr/pancreas_364.nii.gz", "label": "./labelsTr/pancreas_364.nii.gz"}, {"image": "./imagesTr/pancreas_365.nii.gz", "label": "./labelsTr/pancreas_365.nii.gz"}, {"image": "./imagesTr/pancreas_366.nii.gz", "label": "./labelsTr/pancreas_366.nii.gz"}, {"image": "./imagesTr/pancreas_367.nii.gz", "label": "./labelsTr/pancreas_367.nii.gz"}, {"image": "./imagesTr/pancreas_369.nii.gz", "label": "./labelsTr/pancreas_369.nii.gz"}, {"image": "./imagesTr/pancreas_370.nii.gz", "label": "./labelsTr/pancreas_370.nii.gz"}, {"image": "./imagesTr/pancreas_374.nii.gz", "label": "./labelsTr/pancreas_374.nii.gz"}, {"image": "./imagesTr/pancreas_375.nii.gz", "label": "./labelsTr/pancreas_375.nii.gz"}, {"image": "./imagesTr/pancreas_376.nii.gz", "label": "./labelsTr/pancreas_376.nii.gz"}, {"image": "./imagesTr/pancreas_378.nii.gz", "label": "./labelsTr/pancreas_378.nii.gz"}, {"image": "./imagesTr/pancreas_379.nii.gz", "label": "./labelsTr/pancreas_379.nii.gz"}, {"image": "./imagesTr/pancreas_380.nii.gz", "label": "./labelsTr/pancreas_380.nii.gz"}, {"image": "./imagesTr/pancreas_382.nii.gz", "label": "./labelsTr/pancreas_382.nii.gz"}, {"image": "./imagesTr/pancreas_385.nii.gz", "label": "./labelsTr/pancreas_385.nii.gz"}, {"image": "./imagesTr/pancreas_386.nii.gz", "label": "./labelsTr/pancreas_386.nii.gz"}, {"image": "./imagesTr/pancreas_388.nii.gz", "label": "./labelsTr/pancreas_388.nii.gz"}, {"image": "./imagesTr/pancreas_389.nii.gz", "label": "./labelsTr/pancreas_389.nii.gz"}, {"image": "./imagesTr/pancreas_393.nii.gz", "label": "./labelsTr/pancreas_393.nii.gz"}, {"image": "./imagesTr/pancreas_395.nii.gz", "label": "./labelsTr/pancreas_395.nii.gz"}, {"image": "./imagesTr/pancreas_398.nii.gz", "label": "./labelsTr/pancreas_398.nii.gz"}, {"image": "./imagesTr/pancreas_399.nii.gz", "label": "./labelsTr/pancreas_399.nii.gz"}, {"image": "./imagesTr/pancreas_400.nii.gz", "label": "./labelsTr/pancreas_400.nii.gz"}, {"image": "./imagesTr/pancreas_401.nii.gz", "label": "./labelsTr/pancreas_401.nii.gz"}, {"image": "./imagesTr/pancreas_402.nii.gz", "label": "./labelsTr/pancreas_402.nii.gz"}, {"image": "./imagesTr/pancreas_404.nii.gz", "label": "./labelsTr/pancreas_404.nii.gz"}, {"image": "./imagesTr/pancreas_405.nii.gz", "label": "./labelsTr/pancreas_405.nii.gz"}, {"image": "./imagesTr/pancreas_406.nii.gz", "label": "./labelsTr/pancreas_406.nii.gz"}, {"image": "./imagesTr/pancreas_409.nii.gz", "label": "./labelsTr/pancreas_409.nii.gz"}, {"image": "./imagesTr/pancreas_411.nii.gz", "label": "./labelsTr/pancreas_411.nii.gz"}, {"image": "./imagesTr/pancreas_413.nii.gz", "label": "./labelsTr/pancreas_413.nii.gz"}, {"image": "./imagesTr/pancreas_414.nii.gz", "label": "./labelsTr/pancreas_414.nii.gz"}, {"image": "./imagesTr/pancreas_415.nii.gz", "label": "./labelsTr/pancreas_415.nii.gz"}, {"image": "./imagesTr/pancreas_416.nii.gz", "label": "./labelsTr/pancreas_416.nii.gz"}, {"image": "./imagesTr/pancreas_418.nii.gz", "label": "./labelsTr/pancreas_418.nii.gz"}, {"image": "./imagesTr/pancreas_419.nii.gz", "label": "./labelsTr/pancreas_419.nii.gz"}, {"image": "./imagesTr/pancreas_421.nii.gz", "label": "./labelsTr/pancreas_421.nii.gz"}], "validation_fold1": [{"image": "./imagesTr/pancreas_004.nii.gz", "label": "./labelsTr/pancreas_004.nii.gz"}, {"image": "./imagesTr/pancreas_019.nii.gz", "label": "./labelsTr/pancreas_019.nii.gz"}, {"image": "./imagesTr/pancreas_029.nii.gz", "label": "./labelsTr/pancreas_029.nii.gz"}, {"image": "./imagesTr/pancreas_032.nii.gz", "label": "./labelsTr/pancreas_032.nii.gz"}, {"image": "./imagesTr/pancreas_037.nii.gz", "label": "./labelsTr/pancreas_037.nii.gz"}, {"image": "./imagesTr/pancreas_041.nii.gz", "label": "./labelsTr/pancreas_041.nii.gz"}, {"image": "./imagesTr/pancreas_050.nii.gz", "label": "./labelsTr/pancreas_050.nii.gz"}, {"image": "./imagesTr/pancreas_051.nii.gz", "label": "./labelsTr/pancreas_051.nii.gz"}, {"image": "./imagesTr/pancreas_058.nii.gz", "label": "./labelsTr/pancreas_058.nii.gz"}, {"image": "./imagesTr/pancreas_064.nii.gz", "label": "./labelsTr/pancreas_064.nii.gz"}, {"image": "./imagesTr/pancreas_074.nii.gz", "label": "./labelsTr/pancreas_074.nii.gz"}, {"image": "./imagesTr/pancreas_078.nii.gz", "label": "./labelsTr/pancreas_078.nii.gz"}, {"image": "./imagesTr/pancreas_081.nii.gz", "label": "./labelsTr/pancreas_081.nii.gz"}, {"image": "./imagesTr/pancreas_087.nii.gz", "label": "./labelsTr/pancreas_087.nii.gz"}, {"image": "./imagesTr/pancreas_088.nii.gz", "label": "./labelsTr/pancreas_088.nii.gz"}, {"image": "./imagesTr/pancreas_096.nii.gz", "label": "./labelsTr/pancreas_096.nii.gz"}, {"image": "./imagesTr/pancreas_107.nii.gz", "label": "./labelsTr/pancreas_107.nii.gz"}, {"image": "./imagesTr/pancreas_158.nii.gz", "label": "./labelsTr/pancreas_158.nii.gz"}, {"image": "./imagesTr/pancreas_160.nii.gz", "label": "./labelsTr/pancreas_160.nii.gz"}, {"image": "./imagesTr/pancreas_186.nii.gz", "label": "./labelsTr/pancreas_186.nii.gz"}, {"image": "./imagesTr/pancreas_198.nii.gz", "label": "./labelsTr/pancreas_198.nii.gz"}, {"image": "./imagesTr/pancreas_201.nii.gz", "label": "./labelsTr/pancreas_201.nii.gz"}, {"image": "./imagesTr/pancreas_204.nii.gz", "label": "./labelsTr/pancreas_204.nii.gz"}, {"image": "./imagesTr/pancreas_229.nii.gz", "label": "./labelsTr/pancreas_229.nii.gz"}, {"image": "./imagesTr/pancreas_230.nii.gz", "label": "./labelsTr/pancreas_230.nii.gz"}, {"image": "./imagesTr/pancreas_255.nii.gz", "label": "./labelsTr/pancreas_255.nii.gz"}, {"image": "./imagesTr/pancreas_262.nii.gz", "label": "./labelsTr/pancreas_262.nii.gz"}, {"image": "./imagesTr/pancreas_270.nii.gz", "label": "./labelsTr/pancreas_270.nii.gz"}, {"image": "./imagesTr/pancreas_274.nii.gz", "label": "./labelsTr/pancreas_274.nii.gz"}, {"image": "./imagesTr/pancreas_290.nii.gz", "label": "./labelsTr/pancreas_290.nii.gz"}, {"image": "./imagesTr/pancreas_299.nii.gz", "label": "./labelsTr/pancreas_299.nii.gz"}, {"image": "./imagesTr/pancreas_303.nii.gz", "label": "./labelsTr/pancreas_303.nii.gz"}, {"image": "./imagesTr/pancreas_304.nii.gz", "label": "./labelsTr/pancreas_304.nii.gz"}, {"image": "./imagesTr/pancreas_308.nii.gz", "label": "./labelsTr/pancreas_308.nii.gz"}, {"image": "./imagesTr/pancreas_312.nii.gz", "label": "./labelsTr/pancreas_312.nii.gz"}, {"image": "./imagesTr/pancreas_316.nii.gz", "label": "./labelsTr/pancreas_316.nii.gz"}, {"image": "./imagesTr/pancreas_318.nii.gz", "label": "./labelsTr/pancreas_318.nii.gz"}, {"image": "./imagesTr/pancreas_320.nii.gz", "label": "./labelsTr/pancreas_320.nii.gz"}, {"image": "./imagesTr/pancreas_326.nii.gz", "label": "./labelsTr/pancreas_326.nii.gz"}, {"image": "./imagesTr/pancreas_328.nii.gz", "label": "./labelsTr/pancreas_328.nii.gz"}, {"image": "./imagesTr/pancreas_333.nii.gz", "label": "./labelsTr/pancreas_333.nii.gz"}, {"image": "./imagesTr/pancreas_343.nii.gz", "label": "./labelsTr/pancreas_343.nii.gz"}, {"image": "./imagesTr/pancreas_348.nii.gz", "label": "./labelsTr/pancreas_348.nii.gz"}, {"image": "./imagesTr/pancreas_350.nii.gz", "label": "./labelsTr/pancreas_350.nii.gz"}, {"image": "./imagesTr/pancreas_362.nii.gz", "label": "./labelsTr/pancreas_362.nii.gz"}, {"image": "./imagesTr/pancreas_366.nii.gz", "label": "./labelsTr/pancreas_366.nii.gz"}, {"image": "./imagesTr/pancreas_369.nii.gz", "label": "./labelsTr/pancreas_369.nii.gz"}, {"image": "./imagesTr/pancreas_378.nii.gz", "label": "./labelsTr/pancreas_378.nii.gz"}, {"image": "./imagesTr/pancreas_388.nii.gz", "label": "./labelsTr/pancreas_388.nii.gz"}, {"image": "./imagesTr/pancreas_400.nii.gz", "label": "./labelsTr/pancreas_400.nii.gz"}, {"image": "./imagesTr/pancreas_401.nii.gz", "label": "./labelsTr/pancreas_401.nii.gz"}, {"image": "./imagesTr/pancreas_406.nii.gz", "label": "./labelsTr/pancreas_406.nii.gz"}, {"image": "./imagesTr/pancreas_409.nii.gz", "label": "./labelsTr/pancreas_409.nii.gz"}, {"image": "./imagesTr/pancreas_413.nii.gz", "label": "./labelsTr/pancreas_413.nii.gz"}, {"image": "./imagesTr/pancreas_416.nii.gz", "label": "./labelsTr/pancreas_416.nii.gz"}, {"image": "./imagesTr/pancreas_421.nii.gz", "label": "./labelsTr/pancreas_421.nii.gz"}], "train_fold1": [{"image": "./imagesTr/pancreas_001.nii.gz", "label": "./labelsTr/pancreas_001.nii.gz"}, {"image": "./imagesTr/pancreas_005.nii.gz", "label": "./labelsTr/pancreas_005.nii.gz"}, {"image": "./imagesTr/pancreas_006.nii.gz", "label": "./labelsTr/pancreas_006.nii.gz"}, {"image": "./imagesTr/pancreas_010.nii.gz", "label": "./labelsTr/pancreas_010.nii.gz"}, {"image": "./imagesTr/pancreas_012.nii.gz", "label": "./labelsTr/pancreas_012.nii.gz"}, {"image": "./imagesTr/pancreas_015.nii.gz", "label": "./labelsTr/pancreas_015.nii.gz"}, {"image": "./imagesTr/pancreas_016.nii.gz", "label": "./labelsTr/pancreas_016.nii.gz"}, {"image": "./imagesTr/pancreas_018.nii.gz", "label": "./labelsTr/pancreas_018.nii.gz"}, {"image": "./imagesTr/pancreas_021.nii.gz", "label": "./labelsTr/pancreas_021.nii.gz"}, {"image": "./imagesTr/pancreas_024.nii.gz", "label": "./labelsTr/pancreas_024.nii.gz"}, {"image": "./imagesTr/pancreas_025.nii.gz", "label": "./labelsTr/pancreas_025.nii.gz"}, {"image": "./imagesTr/pancreas_028.nii.gz", "label": "./labelsTr/pancreas_028.nii.gz"}, {"image": "./imagesTr/pancreas_035.nii.gz", "label": "./labelsTr/pancreas_035.nii.gz"}, {"image": "./imagesTr/pancreas_040.nii.gz", "label": "./labelsTr/pancreas_040.nii.gz"}, {"image": "./imagesTr/pancreas_042.nii.gz", "label": "./labelsTr/pancreas_042.nii.gz"}, {"image": "./imagesTr/pancreas_043.nii.gz", "label": "./labelsTr/pancreas_043.nii.gz"}, {"image": "./imagesTr/pancreas_045.nii.gz", "label": "./labelsTr/pancreas_045.nii.gz"}, {"image": "./imagesTr/pancreas_046.nii.gz", "label": "./labelsTr/pancreas_046.nii.gz"}, {"image": "./imagesTr/pancreas_048.nii.gz", "label": "./labelsTr/pancreas_048.nii.gz"}, {"image": "./imagesTr/pancreas_049.nii.gz", "label": "./labelsTr/pancreas_049.nii.gz"}, {"image": "./imagesTr/pancreas_052.nii.gz", "label": "./labelsTr/pancreas_052.nii.gz"}, {"image": "./imagesTr/pancreas_055.nii.gz", "label": "./labelsTr/pancreas_055.nii.gz"}, {"image": "./imagesTr/pancreas_056.nii.gz", "label": "./labelsTr/pancreas_056.nii.gz"}, {"image": "./imagesTr/pancreas_061.nii.gz", "label": "./labelsTr/pancreas_061.nii.gz"}, {"image": "./imagesTr/pancreas_066.nii.gz", "label": "./labelsTr/pancreas_066.nii.gz"}, {"image": "./imagesTr/pancreas_067.nii.gz", "label": "./labelsTr/pancreas_067.nii.gz"}, {"image": "./imagesTr/pancreas_069.nii.gz", "label": "./labelsTr/pancreas_069.nii.gz"}, {"image": "./imagesTr/pancreas_070.nii.gz", "label": "./labelsTr/pancreas_070.nii.gz"}, {"image": "./imagesTr/pancreas_071.nii.gz", "label": "./labelsTr/pancreas_071.nii.gz"}, {"image": "./imagesTr/pancreas_075.nii.gz", "label": "./labelsTr/pancreas_075.nii.gz"}, {"image": "./imagesTr/pancreas_077.nii.gz", "label": "./labelsTr/pancreas_077.nii.gz"}, {"image": "./imagesTr/pancreas_080.nii.gz", "label": "./labelsTr/pancreas_080.nii.gz"}, {"image": "./imagesTr/pancreas_083.nii.gz", "label": "./labelsTr/pancreas_083.nii.gz"}, {"image": "./imagesTr/pancreas_084.nii.gz", "label": "./labelsTr/pancreas_084.nii.gz"}, {"image": "./imagesTr/pancreas_086.nii.gz", "label": "./labelsTr/pancreas_086.nii.gz"}, {"image": "./imagesTr/pancreas_089.nii.gz", "label": "./labelsTr/pancreas_089.nii.gz"}, {"image": "./imagesTr/pancreas_091.nii.gz", "label": "./labelsTr/pancreas_091.nii.gz"}, {"image": "./imagesTr/pancreas_092.nii.gz", "label": "./labelsTr/pancreas_092.nii.gz"}, {"image": "./imagesTr/pancreas_093.nii.gz", "label": "./labelsTr/pancreas_093.nii.gz"}, {"image": "./imagesTr/pancreas_094.nii.gz", "label": "./labelsTr/pancreas_094.nii.gz"}, {"image": "./imagesTr/pancreas_095.nii.gz", "label": "./labelsTr/pancreas_095.nii.gz"}, {"image": "./imagesTr/pancreas_098.nii.gz", "label": "./labelsTr/pancreas_098.nii.gz"}, {"image": "./imagesTr/pancreas_099.nii.gz", "label": "./labelsTr/pancreas_099.nii.gz"}, {"image": "./imagesTr/pancreas_100.nii.gz", "label": "./labelsTr/pancreas_100.nii.gz"}, {"image": "./imagesTr/pancreas_101.nii.gz", "label": "./labelsTr/pancreas_101.nii.gz"}, {"image": "./imagesTr/pancreas_102.nii.gz", "label": "./labelsTr/pancreas_102.nii.gz"}, {"image": "./imagesTr/pancreas_103.nii.gz", "label": "./labelsTr/pancreas_103.nii.gz"}, {"image": "./imagesTr/pancreas_104.nii.gz", "label": "./labelsTr/pancreas_104.nii.gz"}, {"image": "./imagesTr/pancreas_105.nii.gz", "label": "./labelsTr/pancreas_105.nii.gz"}, {"image": "./imagesTr/pancreas_106.nii.gz", "label": "./labelsTr/pancreas_106.nii.gz"}, {"image": "./imagesTr/pancreas_109.nii.gz", "label": "./labelsTr/pancreas_109.nii.gz"}, {"image": "./imagesTr/pancreas_110.nii.gz", "label": "./labelsTr/pancreas_110.nii.gz"}, {"image": "./imagesTr/pancreas_111.nii.gz", "label": "./labelsTr/pancreas_111.nii.gz"}, {"image": "./imagesTr/pancreas_113.nii.gz", "label": "./labelsTr/pancreas_113.nii.gz"}, {"image": "./imagesTr/pancreas_114.nii.gz", "label": "./labelsTr/pancreas_114.nii.gz"}, {"image": "./imagesTr/pancreas_117.nii.gz", "label": "./labelsTr/pancreas_117.nii.gz"}, {"image": "./imagesTr/pancreas_119.nii.gz", "label": "./labelsTr/pancreas_119.nii.gz"}, {"image": "./imagesTr/pancreas_120.nii.gz", "label": "./labelsTr/pancreas_120.nii.gz"}, {"image": "./imagesTr/pancreas_122.nii.gz", "label": "./labelsTr/pancreas_122.nii.gz"}, {"image": "./imagesTr/pancreas_124.nii.gz", "label": "./labelsTr/pancreas_124.nii.gz"}, {"image": "./imagesTr/pancreas_125.nii.gz", "label": "./labelsTr/pancreas_125.nii.gz"}, {"image": "./imagesTr/pancreas_126.nii.gz", "label": "./labelsTr/pancreas_126.nii.gz"}, {"image": "./imagesTr/pancreas_127.nii.gz", "label": "./labelsTr/pancreas_127.nii.gz"}, {"image": "./imagesTr/pancreas_129.nii.gz", "label": "./labelsTr/pancreas_129.nii.gz"}, {"image": "./imagesTr/pancreas_130.nii.gz", "label": "./labelsTr/pancreas_130.nii.gz"}, {"image": "./imagesTr/pancreas_131.nii.gz", "label": "./labelsTr/pancreas_131.nii.gz"}, {"image": "./imagesTr/pancreas_135.nii.gz", "label": "./labelsTr/pancreas_135.nii.gz"}, {"image": "./imagesTr/pancreas_137.nii.gz", "label": "./labelsTr/pancreas_137.nii.gz"}, {"image": "./imagesTr/pancreas_138.nii.gz", "label": "./labelsTr/pancreas_138.nii.gz"}, {"image": "./imagesTr/pancreas_140.nii.gz", "label": "./labelsTr/pancreas_140.nii.gz"}, {"image": "./imagesTr/pancreas_145.nii.gz", "label": "./labelsTr/pancreas_145.nii.gz"}, {"image": "./imagesTr/pancreas_147.nii.gz", "label": "./labelsTr/pancreas_147.nii.gz"}, {"image": "./imagesTr/pancreas_148.nii.gz", "label": "./labelsTr/pancreas_148.nii.gz"}, {"image": "./imagesTr/pancreas_149.nii.gz", "label": "./labelsTr/pancreas_149.nii.gz"}, {"image": "./imagesTr/pancreas_155.nii.gz", "label": "./labelsTr/pancreas_155.nii.gz"}, {"image": "./imagesTr/pancreas_157.nii.gz", "label": "./labelsTr/pancreas_157.nii.gz"}, {"image": "./imagesTr/pancreas_159.nii.gz", "label": "./labelsTr/pancreas_159.nii.gz"}, {"image": "./imagesTr/pancreas_165.nii.gz", "label": "./labelsTr/pancreas_165.nii.gz"}, {"image": "./imagesTr/pancreas_166.nii.gz", "label": "./labelsTr/pancreas_166.nii.gz"}, {"image": "./imagesTr/pancreas_167.nii.gz", "label": "./labelsTr/pancreas_167.nii.gz"}, {"image": "./imagesTr/pancreas_169.nii.gz", "label": "./labelsTr/pancreas_169.nii.gz"}, {"image": "./imagesTr/pancreas_170.nii.gz", "label": "./labelsTr/pancreas_170.nii.gz"}, {"image": "./imagesTr/pancreas_172.nii.gz", "label": "./labelsTr/pancreas_172.nii.gz"}, {"image": "./imagesTr/pancreas_173.nii.gz", "label": "./labelsTr/pancreas_173.nii.gz"}, {"image": "./imagesTr/pancreas_175.nii.gz", "label": "./labelsTr/pancreas_175.nii.gz"}, {"image": "./imagesTr/pancreas_178.nii.gz", "label": "./labelsTr/pancreas_178.nii.gz"}, {"image": "./imagesTr/pancreas_179.nii.gz", "label": "./labelsTr/pancreas_179.nii.gz"}, {"image": "./imagesTr/pancreas_180.nii.gz", "label": "./labelsTr/pancreas_180.nii.gz"}, {"image": "./imagesTr/pancreas_181.nii.gz", "label": "./labelsTr/pancreas_181.nii.gz"}, {"image": "./imagesTr/pancreas_182.nii.gz", "label": "./labelsTr/pancreas_182.nii.gz"}, {"image": "./imagesTr/pancreas_183.nii.gz", "label": "./labelsTr/pancreas_183.nii.gz"}, {"image": "./imagesTr/pancreas_187.nii.gz", "label": "./labelsTr/pancreas_187.nii.gz"}, {"image": "./imagesTr/pancreas_191.nii.gz", "label": "./labelsTr/pancreas_191.nii.gz"}, {"image": "./imagesTr/pancreas_193.nii.gz", "label": "./labelsTr/pancreas_193.nii.gz"}, {"image": "./imagesTr/pancreas_194.nii.gz", "label": "./labelsTr/pancreas_194.nii.gz"}, {"image": "./imagesTr/pancreas_196.nii.gz", "label": "./labelsTr/pancreas_196.nii.gz"}, {"image": "./imagesTr/pancreas_197.nii.gz", "label": "./labelsTr/pancreas_197.nii.gz"}, {"image": "./imagesTr/pancreas_199.nii.gz", "label": "./labelsTr/pancreas_199.nii.gz"}, {"image": "./imagesTr/pancreas_200.nii.gz", "label": "./labelsTr/pancreas_200.nii.gz"}, {"image": "./imagesTr/pancreas_203.nii.gz", "label": "./labelsTr/pancreas_203.nii.gz"}, {"image": "./imagesTr/pancreas_207.nii.gz", "label": "./labelsTr/pancreas_207.nii.gz"}, {"image": "./imagesTr/pancreas_209.nii.gz", "label": "./labelsTr/pancreas_209.nii.gz"}, {"image": "./imagesTr/pancreas_210.nii.gz", "label": "./labelsTr/pancreas_210.nii.gz"}, {"image": "./imagesTr/pancreas_211.nii.gz", "label": "./labelsTr/pancreas_211.nii.gz"}, {"image": "./imagesTr/pancreas_212.nii.gz", "label": "./labelsTr/pancreas_212.nii.gz"}, {"image": "./imagesTr/pancreas_213.nii.gz", "label": "./labelsTr/pancreas_213.nii.gz"}, {"image": "./imagesTr/pancreas_214.nii.gz", "label": "./labelsTr/pancreas_214.nii.gz"}, {"image": "./imagesTr/pancreas_215.nii.gz", "label": "./labelsTr/pancreas_215.nii.gz"}, {"image": "./imagesTr/pancreas_217.nii.gz", "label": "./labelsTr/pancreas_217.nii.gz"}, {"image": "./imagesTr/pancreas_218.nii.gz", "label": "./labelsTr/pancreas_218.nii.gz"}, {"image": "./imagesTr/pancreas_219.nii.gz", "label": "./labelsTr/pancreas_219.nii.gz"}, {"image": "./imagesTr/pancreas_222.nii.gz", "label": "./labelsTr/pancreas_222.nii.gz"}, {"image": "./imagesTr/pancreas_224.nii.gz", "label": "./labelsTr/pancreas_224.nii.gz"}, {"image": "./imagesTr/pancreas_225.nii.gz", "label": "./labelsTr/pancreas_225.nii.gz"}, {"image": "./imagesTr/pancreas_226.nii.gz", "label": "./labelsTr/pancreas_226.nii.gz"}, {"image": "./imagesTr/pancreas_227.nii.gz", "label": "./labelsTr/pancreas_227.nii.gz"}, {"image": "./imagesTr/pancreas_228.nii.gz", "label": "./labelsTr/pancreas_228.nii.gz"}, {"image": "./imagesTr/pancreas_231.nii.gz", "label": "./labelsTr/pancreas_231.nii.gz"}, {"image": "./imagesTr/pancreas_234.nii.gz", "label": "./labelsTr/pancreas_234.nii.gz"}, {"image": "./imagesTr/pancreas_235.nii.gz", "label": "./labelsTr/pancreas_235.nii.gz"}, {"image": "./imagesTr/pancreas_236.nii.gz", "label": "./labelsTr/pancreas_236.nii.gz"}, {"image": "./imagesTr/pancreas_239.nii.gz", "label": "./labelsTr/pancreas_239.nii.gz"}, {"image": "./imagesTr/pancreas_241.nii.gz", "label": "./labelsTr/pancreas_241.nii.gz"}, {"image": "./imagesTr/pancreas_242.nii.gz", "label": "./labelsTr/pancreas_242.nii.gz"}, {"image": "./imagesTr/pancreas_243.nii.gz", "label": "./labelsTr/pancreas_243.nii.gz"}, {"image": "./imagesTr/pancreas_244.nii.gz", "label": "./labelsTr/pancreas_244.nii.gz"}, {"image": "./imagesTr/pancreas_246.nii.gz", "label": "./labelsTr/pancreas_246.nii.gz"}, {"image": "./imagesTr/pancreas_247.nii.gz", "label": "./labelsTr/pancreas_247.nii.gz"}, {"image": "./imagesTr/pancreas_249.nii.gz", "label": "./labelsTr/pancreas_249.nii.gz"}, {"image": "./imagesTr/pancreas_253.nii.gz", "label": "./labelsTr/pancreas_253.nii.gz"}, {"image": "./imagesTr/pancreas_254.nii.gz", "label": "./labelsTr/pancreas_254.nii.gz"}, {"image": "./imagesTr/pancreas_256.nii.gz", "label": "./labelsTr/pancreas_256.nii.gz"}, {"image": "./imagesTr/pancreas_258.nii.gz", "label": "./labelsTr/pancreas_258.nii.gz"}, {"image": "./imagesTr/pancreas_259.nii.gz", "label": "./labelsTr/pancreas_259.nii.gz"}, {"image": "./imagesTr/pancreas_261.nii.gz", "label": "./labelsTr/pancreas_261.nii.gz"}, {"image": "./imagesTr/pancreas_264.nii.gz", "label": "./labelsTr/pancreas_264.nii.gz"}, {"image": "./imagesTr/pancreas_265.nii.gz", "label": "./labelsTr/pancreas_265.nii.gz"}, {"image": "./imagesTr/pancreas_266.nii.gz", "label": "./labelsTr/pancreas_266.nii.gz"}, {"image": "./imagesTr/pancreas_267.nii.gz", "label": "./labelsTr/pancreas_267.nii.gz"}, {"image": "./imagesTr/pancreas_268.nii.gz", "label": "./labelsTr/pancreas_268.nii.gz"}, {"image": "./imagesTr/pancreas_269.nii.gz", "label": "./labelsTr/pancreas_269.nii.gz"}, {"image": "./imagesTr/pancreas_275.nii.gz", "label": "./labelsTr/pancreas_275.nii.gz"}, {"image": "./imagesTr/pancreas_276.nii.gz", "label": "./labelsTr/pancreas_276.nii.gz"}, {"image": "./imagesTr/pancreas_277.nii.gz", "label": "./labelsTr/pancreas_277.nii.gz"}, {"image": "./imagesTr/pancreas_278.nii.gz", "label": "./labelsTr/pancreas_278.nii.gz"}, {"image": "./imagesTr/pancreas_279.nii.gz", "label": "./labelsTr/pancreas_279.nii.gz"}, {"image": "./imagesTr/pancreas_280.nii.gz", "label": "./labelsTr/pancreas_280.nii.gz"}, {"image": "./imagesTr/pancreas_283.nii.gz", "label": "./labelsTr/pancreas_283.nii.gz"}, {"image": "./imagesTr/pancreas_284.nii.gz", "label": "./labelsTr/pancreas_284.nii.gz"}, {"image": "./imagesTr/pancreas_285.nii.gz", "label": "./labelsTr/pancreas_285.nii.gz"}, {"image": "./imagesTr/pancreas_286.nii.gz", "label": "./labelsTr/pancreas_286.nii.gz"}, {"image": "./imagesTr/pancreas_287.nii.gz", "label": "./labelsTr/pancreas_287.nii.gz"}, {"image": "./imagesTr/pancreas_289.nii.gz", "label": "./labelsTr/pancreas_289.nii.gz"}, {"image": "./imagesTr/pancreas_291.nii.gz", "label": "./labelsTr/pancreas_291.nii.gz"}, {"image": "./imagesTr/pancreas_292.nii.gz", "label": "./labelsTr/pancreas_292.nii.gz"}, {"image": "./imagesTr/pancreas_293.nii.gz", "label": "./labelsTr/pancreas_293.nii.gz"}, {"image": "./imagesTr/pancreas_294.nii.gz", "label": "./labelsTr/pancreas_294.nii.gz"}, {"image": "./imagesTr/pancreas_295.nii.gz", "label": "./labelsTr/pancreas_295.nii.gz"}, {"image": "./imagesTr/pancreas_296.nii.gz", "label": "./labelsTr/pancreas_296.nii.gz"}, {"image": "./imagesTr/pancreas_297.nii.gz", "label": "./labelsTr/pancreas_297.nii.gz"}, {"image": "./imagesTr/pancreas_298.nii.gz", "label": "./labelsTr/pancreas_298.nii.gz"}, {"image": "./imagesTr/pancreas_300.nii.gz", "label": "./labelsTr/pancreas_300.nii.gz"}, {"image": "./imagesTr/pancreas_301.nii.gz", "label": "./labelsTr/pancreas_301.nii.gz"}, {"image": "./imagesTr/pancreas_302.nii.gz", "label": "./labelsTr/pancreas_302.nii.gz"}, {"image": "./imagesTr/pancreas_305.nii.gz", "label": "./labelsTr/pancreas_305.nii.gz"}, {"image": "./imagesTr/pancreas_309.nii.gz", "label": "./labelsTr/pancreas_309.nii.gz"}, {"image": "./imagesTr/pancreas_310.nii.gz", "label": "./labelsTr/pancreas_310.nii.gz"}, {"image": "./imagesTr/pancreas_311.nii.gz", "label": "./labelsTr/pancreas_311.nii.gz"}, {"image": "./imagesTr/pancreas_313.nii.gz", "label": "./labelsTr/pancreas_313.nii.gz"}, {"image": "./imagesTr/pancreas_315.nii.gz", "label": "./labelsTr/pancreas_315.nii.gz"}, {"image": "./imagesTr/pancreas_321.nii.gz", "label": "./labelsTr/pancreas_321.nii.gz"}, {"image": "./imagesTr/pancreas_323.nii.gz", "label": "./labelsTr/pancreas_323.nii.gz"}, {"image": "./imagesTr/pancreas_325.nii.gz", "label": "./labelsTr/pancreas_325.nii.gz"}, {"image": "./imagesTr/pancreas_327.nii.gz", "label": "./labelsTr/pancreas_327.nii.gz"}, {"image": "./imagesTr/pancreas_329.nii.gz", "label": "./labelsTr/pancreas_329.nii.gz"}, {"image": "./imagesTr/pancreas_330.nii.gz", "label": "./labelsTr/pancreas_330.nii.gz"}, {"image": "./imagesTr/pancreas_331.nii.gz", "label": "./labelsTr/pancreas_331.nii.gz"}, {"image": "./imagesTr/pancreas_334.nii.gz", "label": "./labelsTr/pancreas_334.nii.gz"}, {"image": "./imagesTr/pancreas_336.nii.gz", "label": "./labelsTr/pancreas_336.nii.gz"}, {"image": "./imagesTr/pancreas_339.nii.gz", "label": "./labelsTr/pancreas_339.nii.gz"}, {"image": "./imagesTr/pancreas_342.nii.gz", "label": "./labelsTr/pancreas_342.nii.gz"}, {"image": "./imagesTr/pancreas_344.nii.gz", "label": "./labelsTr/pancreas_344.nii.gz"}, {"image": "./imagesTr/pancreas_345.nii.gz", "label": "./labelsTr/pancreas_345.nii.gz"}, {"image": "./imagesTr/pancreas_346.nii.gz", "label": "./labelsTr/pancreas_346.nii.gz"}, {"image": "./imagesTr/pancreas_347.nii.gz", "label": "./labelsTr/pancreas_347.nii.gz"}, {"image": "./imagesTr/pancreas_351.nii.gz", "label": "./labelsTr/pancreas_351.nii.gz"}, {"image": "./imagesTr/pancreas_354.nii.gz", "label": "./labelsTr/pancreas_354.nii.gz"}, {"image": "./imagesTr/pancreas_355.nii.gz", "label": "./labelsTr/pancreas_355.nii.gz"}, {"image": "./imagesTr/pancreas_356.nii.gz", "label": "./labelsTr/pancreas_356.nii.gz"}, {"image": "./imagesTr/pancreas_357.nii.gz", "label": "./labelsTr/pancreas_357.nii.gz"}, {"image": "./imagesTr/pancreas_358.nii.gz", "label": "./labelsTr/pancreas_358.nii.gz"}, {"image": "./imagesTr/pancreas_360.nii.gz", "label": "./labelsTr/pancreas_360.nii.gz"}, {"image": "./imagesTr/pancreas_361.nii.gz", "label": "./labelsTr/pancreas_361.nii.gz"}, {"image": "./imagesTr/pancreas_364.nii.gz", "label": "./labelsTr/pancreas_364.nii.gz"}, {"image": "./imagesTr/pancreas_365.nii.gz", "label": "./labelsTr/pancreas_365.nii.gz"}, {"image": "./imagesTr/pancreas_367.nii.gz", "label": "./labelsTr/pancreas_367.nii.gz"}, {"image": "./imagesTr/pancreas_370.nii.gz", "label": "./labelsTr/pancreas_370.nii.gz"}, {"image": "./imagesTr/pancreas_372.nii.gz", "label": "./labelsTr/pancreas_372.nii.gz"}, {"image": "./imagesTr/pancreas_374.nii.gz", "label": "./labelsTr/pancreas_374.nii.gz"}, {"image": "./imagesTr/pancreas_375.nii.gz", "label": "./labelsTr/pancreas_375.nii.gz"}, {"image": "./imagesTr/pancreas_376.nii.gz", "label": "./labelsTr/pancreas_376.nii.gz"}, {"image": "./imagesTr/pancreas_377.nii.gz", "label": "./labelsTr/pancreas_377.nii.gz"}, {"image": "./imagesTr/pancreas_379.nii.gz", "label": "./labelsTr/pancreas_379.nii.gz"}, {"image": "./imagesTr/pancreas_380.nii.gz", "label": "./labelsTr/pancreas_380.nii.gz"}, {"image": "./imagesTr/pancreas_382.nii.gz", "label": "./labelsTr/pancreas_382.nii.gz"}, {"image": "./imagesTr/pancreas_385.nii.gz", "label": "./labelsTr/pancreas_385.nii.gz"}, {"image": "./imagesTr/pancreas_386.nii.gz", "label": "./labelsTr/pancreas_386.nii.gz"}, {"image": "./imagesTr/pancreas_387.nii.gz", "label": "./labelsTr/pancreas_387.nii.gz"}, {"image": "./imagesTr/pancreas_389.nii.gz", "label": "./labelsTr/pancreas_389.nii.gz"}, {"image": "./imagesTr/pancreas_391.nii.gz", "label": "./labelsTr/pancreas_391.nii.gz"}, {"image": "./imagesTr/pancreas_392.nii.gz", "label": "./labelsTr/pancreas_392.nii.gz"}, {"image": "./imagesTr/pancreas_393.nii.gz", "label": "./labelsTr/pancreas_393.nii.gz"}, {"image": "./imagesTr/pancreas_395.nii.gz", "label": "./labelsTr/pancreas_395.nii.gz"}, {"image": "./imagesTr/pancreas_398.nii.gz", "label": "./labelsTr/pancreas_398.nii.gz"}, {"image": "./imagesTr/pancreas_399.nii.gz", "label": "./labelsTr/pancreas_399.nii.gz"}, {"image": "./imagesTr/pancreas_402.nii.gz", "label": "./labelsTr/pancreas_402.nii.gz"}, {"image": "./imagesTr/pancreas_404.nii.gz", "label": "./labelsTr/pancreas_404.nii.gz"}, {"image": "./imagesTr/pancreas_405.nii.gz", "label": "./labelsTr/pancreas_405.nii.gz"}, {"image": "./imagesTr/pancreas_410.nii.gz", "label": "./labelsTr/pancreas_410.nii.gz"}, {"image": "./imagesTr/pancreas_411.nii.gz", "label": "./labelsTr/pancreas_411.nii.gz"}, {"image": "./imagesTr/pancreas_412.nii.gz", "label": "./labelsTr/pancreas_412.nii.gz"}, {"image": "./imagesTr/pancreas_414.nii.gz", "label": "./labelsTr/pancreas_414.nii.gz"}, {"image": "./imagesTr/pancreas_415.nii.gz", "label": "./labelsTr/pancreas_415.nii.gz"}, {"image": "./imagesTr/pancreas_418.nii.gz", "label": "./labelsTr/pancreas_418.nii.gz"}, {"image": "./imagesTr/pancreas_419.nii.gz", "label": "./labelsTr/pancreas_419.nii.gz"}], "validation_fold2": [{"image": "./imagesTr/pancreas_005.nii.gz", "label": "./labelsTr/pancreas_005.nii.gz"}, {"image": "./imagesTr/pancreas_010.nii.gz", "label": "./labelsTr/pancreas_010.nii.gz"}, {"image": "./imagesTr/pancreas_018.nii.gz", "label": "./labelsTr/pancreas_018.nii.gz"}, {"image": "./imagesTr/pancreas_028.nii.gz", "label": "./labelsTr/pancreas_028.nii.gz"}, {"image": "./imagesTr/pancreas_048.nii.gz", "label": "./labelsTr/pancreas_048.nii.gz"}, {"image": "./imagesTr/pancreas_049.nii.gz", "label": "./labelsTr/pancreas_049.nii.gz"}, {"image": "./imagesTr/pancreas_052.nii.gz", "label": "./labelsTr/pancreas_052.nii.gz"}, {"image": "./imagesTr/pancreas_091.nii.gz", "label": "./labelsTr/pancreas_091.nii.gz"}, {"image": "./imagesTr/pancreas_102.nii.gz", "label": "./labelsTr/pancreas_102.nii.gz"}, {"image": "./imagesTr/pancreas_113.nii.gz", "label": "./labelsTr/pancreas_113.nii.gz"}, {"image": "./imagesTr/pancreas_126.nii.gz", "label": "./labelsTr/pancreas_126.nii.gz"}, {"image": "./imagesTr/pancreas_127.nii.gz", "label": "./labelsTr/pancreas_127.nii.gz"}, {"image": "./imagesTr/pancreas_137.nii.gz", "label": "./labelsTr/pancreas_137.nii.gz"}, {"image": "./imagesTr/pancreas_140.nii.gz", "label": "./labelsTr/pancreas_140.nii.gz"}, {"image": "./imagesTr/pancreas_149.nii.gz", "label": "./labelsTr/pancreas_149.nii.gz"}, {"image": "./imagesTr/pancreas_157.nii.gz", "label": "./labelsTr/pancreas_157.nii.gz"}, {"image": "./imagesTr/pancreas_159.nii.gz", "label": "./labelsTr/pancreas_159.nii.gz"}, {"image": "./imagesTr/pancreas_165.nii.gz", "label": "./labelsTr/pancreas_165.nii.gz"}, {"image": "./imagesTr/pancreas_166.nii.gz", "label": "./labelsTr/pancreas_166.nii.gz"}, {"image": "./imagesTr/pancreas_167.nii.gz", "label": "./labelsTr/pancreas_167.nii.gz"}, {"image": "./imagesTr/pancreas_178.nii.gz", "label": "./labelsTr/pancreas_178.nii.gz"}, {"image": "./imagesTr/pancreas_183.nii.gz", "label": "./labelsTr/pancreas_183.nii.gz"}, {"image": "./imagesTr/pancreas_187.nii.gz", "label": "./labelsTr/pancreas_187.nii.gz"}, {"image": "./imagesTr/pancreas_211.nii.gz", "label": "./labelsTr/pancreas_211.nii.gz"}, {"image": "./imagesTr/pancreas_213.nii.gz", "label": "./labelsTr/pancreas_213.nii.gz"}, {"image": "./imagesTr/pancreas_218.nii.gz", "label": "./labelsTr/pancreas_218.nii.gz"}, {"image": "./imagesTr/pancreas_224.nii.gz", "label": "./labelsTr/pancreas_224.nii.gz"}, {"image": "./imagesTr/pancreas_225.nii.gz", "label": "./labelsTr/pancreas_225.nii.gz"}, {"image": "./imagesTr/pancreas_228.nii.gz", "label": "./labelsTr/pancreas_228.nii.gz"}, {"image": "./imagesTr/pancreas_236.nii.gz", "label": "./labelsTr/pancreas_236.nii.gz"}, {"image": "./imagesTr/pancreas_249.nii.gz", "label": "./labelsTr/pancreas_249.nii.gz"}, {"image": "./imagesTr/pancreas_256.nii.gz", "label": "./labelsTr/pancreas_256.nii.gz"}, {"image": "./imagesTr/pancreas_259.nii.gz", "label": "./labelsTr/pancreas_259.nii.gz"}, {"image": "./imagesTr/pancreas_261.nii.gz", "label": "./labelsTr/pancreas_261.nii.gz"}, {"image": "./imagesTr/pancreas_269.nii.gz", "label": "./labelsTr/pancreas_269.nii.gz"}, {"image": "./imagesTr/pancreas_278.nii.gz", "label": "./labelsTr/pancreas_278.nii.gz"}, {"image": "./imagesTr/pancreas_280.nii.gz", "label": "./labelsTr/pancreas_280.nii.gz"}, {"image": "./imagesTr/pancreas_283.nii.gz", "label": "./labelsTr/pancreas_283.nii.gz"}, {"image": "./imagesTr/pancreas_286.nii.gz", "label": "./labelsTr/pancreas_286.nii.gz"}, {"image": "./imagesTr/pancreas_291.nii.gz", "label": "./labelsTr/pancreas_291.nii.gz"}, {"image": "./imagesTr/pancreas_292.nii.gz", "label": "./labelsTr/pancreas_292.nii.gz"}, {"image": "./imagesTr/pancreas_294.nii.gz", "label": "./labelsTr/pancreas_294.nii.gz"}, {"image": "./imagesTr/pancreas_295.nii.gz", "label": "./labelsTr/pancreas_295.nii.gz"}, {"image": "./imagesTr/pancreas_298.nii.gz", "label": "./labelsTr/pancreas_298.nii.gz"}, {"image": "./imagesTr/pancreas_309.nii.gz", "label": "./labelsTr/pancreas_309.nii.gz"}, {"image": "./imagesTr/pancreas_310.nii.gz", "label": "./labelsTr/pancreas_310.nii.gz"}, {"image": "./imagesTr/pancreas_313.nii.gz", "label": "./labelsTr/pancreas_313.nii.gz"}, {"image": "./imagesTr/pancreas_327.nii.gz", "label": "./labelsTr/pancreas_327.nii.gz"}, {"image": "./imagesTr/pancreas_331.nii.gz", "label": "./labelsTr/pancreas_331.nii.gz"}, {"image": "./imagesTr/pancreas_342.nii.gz", "label": "./labelsTr/pancreas_342.nii.gz"}, {"image": "./imagesTr/pancreas_357.nii.gz", "label": "./labelsTr/pancreas_357.nii.gz"}, {"image": "./imagesTr/pancreas_358.nii.gz", "label": "./labelsTr/pancreas_358.nii.gz"}, {"image": "./imagesTr/pancreas_367.nii.gz", "label": "./labelsTr/pancreas_367.nii.gz"}, {"image": "./imagesTr/pancreas_379.nii.gz", "label": "./labelsTr/pancreas_379.nii.gz"}, {"image": "./imagesTr/pancreas_386.nii.gz", "label": "./labelsTr/pancreas_386.nii.gz"}, {"image": "./imagesTr/pancreas_405.nii.gz", "label": "./labelsTr/pancreas_405.nii.gz"}], "train_fold2": [{"image": "./imagesTr/pancreas_001.nii.gz", "label": "./labelsTr/pancreas_001.nii.gz"}, {"image": "./imagesTr/pancreas_004.nii.gz", "label": "./labelsTr/pancreas_004.nii.gz"}, {"image": "./imagesTr/pancreas_006.nii.gz", "label": "./labelsTr/pancreas_006.nii.gz"}, {"image": "./imagesTr/pancreas_012.nii.gz", "label": "./labelsTr/pancreas_012.nii.gz"}, {"image": "./imagesTr/pancreas_015.nii.gz", "label": "./labelsTr/pancreas_015.nii.gz"}, {"image": "./imagesTr/pancreas_016.nii.gz", "label": "./labelsTr/pancreas_016.nii.gz"}, {"image": "./imagesTr/pancreas_019.nii.gz", "label": "./labelsTr/pancreas_019.nii.gz"}, {"image": "./imagesTr/pancreas_021.nii.gz", "label": "./labelsTr/pancreas_021.nii.gz"}, {"image": "./imagesTr/pancreas_024.nii.gz", "label": "./labelsTr/pancreas_024.nii.gz"}, {"image": "./imagesTr/pancreas_025.nii.gz", "label": "./labelsTr/pancreas_025.nii.gz"}, {"image": "./imagesTr/pancreas_029.nii.gz", "label": "./labelsTr/pancreas_029.nii.gz"}, {"image": "./imagesTr/pancreas_032.nii.gz", "label": "./labelsTr/pancreas_032.nii.gz"}, {"image": "./imagesTr/pancreas_035.nii.gz", "label": "./labelsTr/pancreas_035.nii.gz"}, {"image": "./imagesTr/pancreas_037.nii.gz", "label": "./labelsTr/pancreas_037.nii.gz"}, {"image": "./imagesTr/pancreas_040.nii.gz", "label": "./labelsTr/pancreas_040.nii.gz"}, {"image": "./imagesTr/pancreas_041.nii.gz", "label": "./labelsTr/pancreas_041.nii.gz"}, {"image": "./imagesTr/pancreas_042.nii.gz", "label": "./labelsTr/pancreas_042.nii.gz"}, {"image": "./imagesTr/pancreas_043.nii.gz", "label": "./labelsTr/pancreas_043.nii.gz"}, {"image": "./imagesTr/pancreas_045.nii.gz", "label": "./labelsTr/pancreas_045.nii.gz"}, {"image": "./imagesTr/pancreas_046.nii.gz", "label": "./labelsTr/pancreas_046.nii.gz"}, {"image": "./imagesTr/pancreas_050.nii.gz", "label": "./labelsTr/pancreas_050.nii.gz"}, {"image": "./imagesTr/pancreas_051.nii.gz", "label": "./labelsTr/pancreas_051.nii.gz"}, {"image": "./imagesTr/pancreas_055.nii.gz", "label": "./labelsTr/pancreas_055.nii.gz"}, {"image": "./imagesTr/pancreas_056.nii.gz", "label": "./labelsTr/pancreas_056.nii.gz"}, {"image": "./imagesTr/pancreas_058.nii.gz", "label": "./labelsTr/pancreas_058.nii.gz"}, {"image": "./imagesTr/pancreas_061.nii.gz", "label": "./labelsTr/pancreas_061.nii.gz"}, {"image": "./imagesTr/pancreas_064.nii.gz", "label": "./labelsTr/pancreas_064.nii.gz"}, {"image": "./imagesTr/pancreas_066.nii.gz", "label": "./labelsTr/pancreas_066.nii.gz"}, {"image": "./imagesTr/pancreas_067.nii.gz", "label": "./labelsTr/pancreas_067.nii.gz"}, {"image": "./imagesTr/pancreas_069.nii.gz", "label": "./labelsTr/pancreas_069.nii.gz"}, {"image": "./imagesTr/pancreas_070.nii.gz", "label": "./labelsTr/pancreas_070.nii.gz"}, {"image": "./imagesTr/pancreas_071.nii.gz", "label": "./labelsTr/pancreas_071.nii.gz"}, {"image": "./imagesTr/pancreas_074.nii.gz", "label": "./labelsTr/pancreas_074.nii.gz"}, {"image": "./imagesTr/pancreas_075.nii.gz", "label": "./labelsTr/pancreas_075.nii.gz"}, {"image": "./imagesTr/pancreas_077.nii.gz", "label": "./labelsTr/pancreas_077.nii.gz"}, {"image": "./imagesTr/pancreas_078.nii.gz", "label": "./labelsTr/pancreas_078.nii.gz"}, {"image": "./imagesTr/pancreas_080.nii.gz", "label": "./labelsTr/pancreas_080.nii.gz"}, {"image": "./imagesTr/pancreas_081.nii.gz", "label": "./labelsTr/pancreas_081.nii.gz"}, {"image": "./imagesTr/pancreas_083.nii.gz", "label": "./labelsTr/pancreas_083.nii.gz"}, {"image": "./imagesTr/pancreas_084.nii.gz", "label": "./labelsTr/pancreas_084.nii.gz"}, {"image": "./imagesTr/pancreas_086.nii.gz", "label": "./labelsTr/pancreas_086.nii.gz"}, {"image": "./imagesTr/pancreas_087.nii.gz", "label": "./labelsTr/pancreas_087.nii.gz"}, {"image": "./imagesTr/pancreas_088.nii.gz", "label": "./labelsTr/pancreas_088.nii.gz"}, {"image": "./imagesTr/pancreas_089.nii.gz", "label": "./labelsTr/pancreas_089.nii.gz"}, {"image": "./imagesTr/pancreas_092.nii.gz", "label": "./labelsTr/pancreas_092.nii.gz"}, {"image": "./imagesTr/pancreas_093.nii.gz", "label": "./labelsTr/pancreas_093.nii.gz"}, {"image": "./imagesTr/pancreas_094.nii.gz", "label": "./labelsTr/pancreas_094.nii.gz"}, {"image": "./imagesTr/pancreas_095.nii.gz", "label": "./labelsTr/pancreas_095.nii.gz"}, {"image": "./imagesTr/pancreas_096.nii.gz", "label": "./labelsTr/pancreas_096.nii.gz"}, {"image": "./imagesTr/pancreas_098.nii.gz", "label": "./labelsTr/pancreas_098.nii.gz"}, {"image": "./imagesTr/pancreas_099.nii.gz", "label": "./labelsTr/pancreas_099.nii.gz"}, {"image": "./imagesTr/pancreas_100.nii.gz", "label": "./labelsTr/pancreas_100.nii.gz"}, {"image": "./imagesTr/pancreas_101.nii.gz", "label": "./labelsTr/pancreas_101.nii.gz"}, {"image": "./imagesTr/pancreas_103.nii.gz", "label": "./labelsTr/pancreas_103.nii.gz"}, {"image": "./imagesTr/pancreas_104.nii.gz", "label": "./labelsTr/pancreas_104.nii.gz"}, {"image": "./imagesTr/pancreas_105.nii.gz", "label": "./labelsTr/pancreas_105.nii.gz"}, {"image": "./imagesTr/pancreas_106.nii.gz", "label": "./labelsTr/pancreas_106.nii.gz"}, {"image": "./imagesTr/pancreas_107.nii.gz", "label": "./labelsTr/pancreas_107.nii.gz"}, {"image": "./imagesTr/pancreas_109.nii.gz", "label": "./labelsTr/pancreas_109.nii.gz"}, {"image": "./imagesTr/pancreas_110.nii.gz", "label": "./labelsTr/pancreas_110.nii.gz"}, {"image": "./imagesTr/pancreas_111.nii.gz", "label": "./labelsTr/pancreas_111.nii.gz"}, {"image": "./imagesTr/pancreas_114.nii.gz", "label": "./labelsTr/pancreas_114.nii.gz"}, {"image": "./imagesTr/pancreas_117.nii.gz", "label": "./labelsTr/pancreas_117.nii.gz"}, {"image": "./imagesTr/pancreas_119.nii.gz", "label": "./labelsTr/pancreas_119.nii.gz"}, {"image": "./imagesTr/pancreas_120.nii.gz", "label": "./labelsTr/pancreas_120.nii.gz"}, {"image": "./imagesTr/pancreas_122.nii.gz", "label": "./labelsTr/pancreas_122.nii.gz"}, {"image": "./imagesTr/pancreas_124.nii.gz", "label": "./labelsTr/pancreas_124.nii.gz"}, {"image": "./imagesTr/pancreas_125.nii.gz", "label": "./labelsTr/pancreas_125.nii.gz"}, {"image": "./imagesTr/pancreas_129.nii.gz", "label": "./labelsTr/pancreas_129.nii.gz"}, {"image": "./imagesTr/pancreas_130.nii.gz", "label": "./labelsTr/pancreas_130.nii.gz"}, {"image": "./imagesTr/pancreas_131.nii.gz", "label": "./labelsTr/pancreas_131.nii.gz"}, {"image": "./imagesTr/pancreas_135.nii.gz", "label": "./labelsTr/pancreas_135.nii.gz"}, {"image": "./imagesTr/pancreas_138.nii.gz", "label": "./labelsTr/pancreas_138.nii.gz"}, {"image": "./imagesTr/pancreas_145.nii.gz", "label": "./labelsTr/pancreas_145.nii.gz"}, {"image": "./imagesTr/pancreas_147.nii.gz", "label": "./labelsTr/pancreas_147.nii.gz"}, {"image": "./imagesTr/pancreas_148.nii.gz", "label": "./labelsTr/pancreas_148.nii.gz"}, {"image": "./imagesTr/pancreas_155.nii.gz", "label": "./labelsTr/pancreas_155.nii.gz"}, {"image": "./imagesTr/pancreas_158.nii.gz", "label": "./labelsTr/pancreas_158.nii.gz"}, {"image": "./imagesTr/pancreas_160.nii.gz", "label": "./labelsTr/pancreas_160.nii.gz"}, {"image": "./imagesTr/pancreas_169.nii.gz", "label": "./labelsTr/pancreas_169.nii.gz"}, {"image": "./imagesTr/pancreas_170.nii.gz", "label": "./labelsTr/pancreas_170.nii.gz"}, {"image": "./imagesTr/pancreas_172.nii.gz", "label": "./labelsTr/pancreas_172.nii.gz"}, {"image": "./imagesTr/pancreas_173.nii.gz", "label": "./labelsTr/pancreas_173.nii.gz"}, {"image": "./imagesTr/pancreas_175.nii.gz", "label": "./labelsTr/pancreas_175.nii.gz"}, {"image": "./imagesTr/pancreas_179.nii.gz", "label": "./labelsTr/pancreas_179.nii.gz"}, {"image": "./imagesTr/pancreas_180.nii.gz", "label": "./labelsTr/pancreas_180.nii.gz"}, {"image": "./imagesTr/pancreas_181.nii.gz", "label": "./labelsTr/pancreas_181.nii.gz"}, {"image": "./imagesTr/pancreas_182.nii.gz", "label": "./labelsTr/pancreas_182.nii.gz"}, {"image": "./imagesTr/pancreas_186.nii.gz", "label": "./labelsTr/pancreas_186.nii.gz"}, {"image": "./imagesTr/pancreas_191.nii.gz", "label": "./labelsTr/pancreas_191.nii.gz"}, {"image": "./imagesTr/pancreas_193.nii.gz", "label": "./labelsTr/pancreas_193.nii.gz"}, {"image": "./imagesTr/pancreas_194.nii.gz", "label": "./labelsTr/pancreas_194.nii.gz"}, {"image": "./imagesTr/pancreas_196.nii.gz", "label": "./labelsTr/pancreas_196.nii.gz"}, {"image": "./imagesTr/pancreas_197.nii.gz", "label": "./labelsTr/pancreas_197.nii.gz"}, {"image": "./imagesTr/pancreas_198.nii.gz", "label": "./labelsTr/pancreas_198.nii.gz"}, {"image": "./imagesTr/pancreas_199.nii.gz", "label": "./labelsTr/pancreas_199.nii.gz"}, {"image": "./imagesTr/pancreas_200.nii.gz", "label": "./labelsTr/pancreas_200.nii.gz"}, {"image": "./imagesTr/pancreas_201.nii.gz", "label": "./labelsTr/pancreas_201.nii.gz"}, {"image": "./imagesTr/pancreas_203.nii.gz", "label": "./labelsTr/pancreas_203.nii.gz"}, {"image": "./imagesTr/pancreas_204.nii.gz", "label": "./labelsTr/pancreas_204.nii.gz"}, {"image": "./imagesTr/pancreas_207.nii.gz", "label": "./labelsTr/pancreas_207.nii.gz"}, {"image": "./imagesTr/pancreas_209.nii.gz", "label": "./labelsTr/pancreas_209.nii.gz"}, {"image": "./imagesTr/pancreas_210.nii.gz", "label": "./labelsTr/pancreas_210.nii.gz"}, {"image": "./imagesTr/pancreas_212.nii.gz", "label": "./labelsTr/pancreas_212.nii.gz"}, {"image": "./imagesTr/pancreas_214.nii.gz", "label": "./labelsTr/pancreas_214.nii.gz"}, {"image": "./imagesTr/pancreas_215.nii.gz", "label": "./labelsTr/pancreas_215.nii.gz"}, {"image": "./imagesTr/pancreas_217.nii.gz", "label": "./labelsTr/pancreas_217.nii.gz"}, {"image": "./imagesTr/pancreas_219.nii.gz", "label": "./labelsTr/pancreas_219.nii.gz"}, {"image": "./imagesTr/pancreas_222.nii.gz", "label": "./labelsTr/pancreas_222.nii.gz"}, {"image": "./imagesTr/pancreas_226.nii.gz", "label": "./labelsTr/pancreas_226.nii.gz"}, {"image": "./imagesTr/pancreas_227.nii.gz", "label": "./labelsTr/pancreas_227.nii.gz"}, {"image": "./imagesTr/pancreas_229.nii.gz", "label": "./labelsTr/pancreas_229.nii.gz"}, {"image": "./imagesTr/pancreas_230.nii.gz", "label": "./labelsTr/pancreas_230.nii.gz"}, {"image": "./imagesTr/pancreas_231.nii.gz", "label": "./labelsTr/pancreas_231.nii.gz"}, {"image": "./imagesTr/pancreas_234.nii.gz", "label": "./labelsTr/pancreas_234.nii.gz"}, {"image": "./imagesTr/pancreas_235.nii.gz", "label": "./labelsTr/pancreas_235.nii.gz"}, {"image": "./imagesTr/pancreas_239.nii.gz", "label": "./labelsTr/pancreas_239.nii.gz"}, {"image": "./imagesTr/pancreas_241.nii.gz", "label": "./labelsTr/pancreas_241.nii.gz"}, {"image": "./imagesTr/pancreas_242.nii.gz", "label": "./labelsTr/pancreas_242.nii.gz"}, {"image": "./imagesTr/pancreas_243.nii.gz", "label": "./labelsTr/pancreas_243.nii.gz"}, {"image": "./imagesTr/pancreas_244.nii.gz", "label": "./labelsTr/pancreas_244.nii.gz"}, {"image": "./imagesTr/pancreas_246.nii.gz", "label": "./labelsTr/pancreas_246.nii.gz"}, {"image": "./imagesTr/pancreas_247.nii.gz", "label": "./labelsTr/pancreas_247.nii.gz"}, {"image": "./imagesTr/pancreas_253.nii.gz", "label": "./labelsTr/pancreas_253.nii.gz"}, {"image": "./imagesTr/pancreas_254.nii.gz", "label": "./labelsTr/pancreas_254.nii.gz"}, {"image": "./imagesTr/pancreas_255.nii.gz", "label": "./labelsTr/pancreas_255.nii.gz"}, {"image": "./imagesTr/pancreas_258.nii.gz", "label": "./labelsTr/pancreas_258.nii.gz"}, {"image": "./imagesTr/pancreas_262.nii.gz", "label": "./labelsTr/pancreas_262.nii.gz"}, {"image": "./imagesTr/pancreas_264.nii.gz", "label": "./labelsTr/pancreas_264.nii.gz"}, {"image": "./imagesTr/pancreas_265.nii.gz", "label": "./labelsTr/pancreas_265.nii.gz"}, {"image": "./imagesTr/pancreas_266.nii.gz", "label": "./labelsTr/pancreas_266.nii.gz"}, {"image": "./imagesTr/pancreas_267.nii.gz", "label": "./labelsTr/pancreas_267.nii.gz"}, {"image": "./imagesTr/pancreas_268.nii.gz", "label": "./labelsTr/pancreas_268.nii.gz"}, {"image": "./imagesTr/pancreas_270.nii.gz", "label": "./labelsTr/pancreas_270.nii.gz"}, {"image": "./imagesTr/pancreas_274.nii.gz", "label": "./labelsTr/pancreas_274.nii.gz"}, {"image": "./imagesTr/pancreas_275.nii.gz", "label": "./labelsTr/pancreas_275.nii.gz"}, {"image": "./imagesTr/pancreas_276.nii.gz", "label": "./labelsTr/pancreas_276.nii.gz"}, {"image": "./imagesTr/pancreas_277.nii.gz", "label": "./labelsTr/pancreas_277.nii.gz"}, {"image": "./imagesTr/pancreas_279.nii.gz", "label": "./labelsTr/pancreas_279.nii.gz"}, {"image": "./imagesTr/pancreas_284.nii.gz", "label": "./labelsTr/pancreas_284.nii.gz"}, {"image": "./imagesTr/pancreas_285.nii.gz", "label": "./labelsTr/pancreas_285.nii.gz"}, {"image": "./imagesTr/pancreas_287.nii.gz", "label": "./labelsTr/pancreas_287.nii.gz"}, {"image": "./imagesTr/pancreas_289.nii.gz", "label": "./labelsTr/pancreas_289.nii.gz"}, {"image": "./imagesTr/pancreas_290.nii.gz", "label": "./labelsTr/pancreas_290.nii.gz"}, {"image": "./imagesTr/pancreas_293.nii.gz", "label": "./labelsTr/pancreas_293.nii.gz"}, {"image": "./imagesTr/pancreas_296.nii.gz", "label": "./labelsTr/pancreas_296.nii.gz"}, {"image": "./imagesTr/pancreas_297.nii.gz", "label": "./labelsTr/pancreas_297.nii.gz"}, {"image": "./imagesTr/pancreas_299.nii.gz", "label": "./labelsTr/pancreas_299.nii.gz"}, {"image": "./imagesTr/pancreas_300.nii.gz", "label": "./labelsTr/pancreas_300.nii.gz"}, {"image": "./imagesTr/pancreas_301.nii.gz", "label": "./labelsTr/pancreas_301.nii.gz"}, {"image": "./imagesTr/pancreas_302.nii.gz", "label": "./labelsTr/pancreas_302.nii.gz"}, {"image": "./imagesTr/pancreas_303.nii.gz", "label": "./labelsTr/pancreas_303.nii.gz"}, {"image": "./imagesTr/pancreas_304.nii.gz", "label": "./labelsTr/pancreas_304.nii.gz"}, {"image": "./imagesTr/pancreas_305.nii.gz", "label": "./labelsTr/pancreas_305.nii.gz"}, {"image": "./imagesTr/pancreas_308.nii.gz", "label": "./labelsTr/pancreas_308.nii.gz"}, {"image": "./imagesTr/pancreas_311.nii.gz", "label": "./labelsTr/pancreas_311.nii.gz"}, {"image": "./imagesTr/pancreas_312.nii.gz", "label": "./labelsTr/pancreas_312.nii.gz"}, {"image": "./imagesTr/pancreas_315.nii.gz", "label": "./labelsTr/pancreas_315.nii.gz"}, {"image": "./imagesTr/pancreas_316.nii.gz", "label": "./labelsTr/pancreas_316.nii.gz"}, {"image": "./imagesTr/pancreas_318.nii.gz", "label": "./labelsTr/pancreas_318.nii.gz"}, {"image": "./imagesTr/pancreas_320.nii.gz", "label": "./labelsTr/pancreas_320.nii.gz"}, {"image": "./imagesTr/pancreas_321.nii.gz", "label": "./labelsTr/pancreas_321.nii.gz"}, {"image": "./imagesTr/pancreas_323.nii.gz", "label": "./labelsTr/pancreas_323.nii.gz"}, {"image": "./imagesTr/pancreas_325.nii.gz", "label": "./labelsTr/pancreas_325.nii.gz"}, {"image": "./imagesTr/pancreas_326.nii.gz", "label": "./labelsTr/pancreas_326.nii.gz"}, {"image": "./imagesTr/pancreas_328.nii.gz", "label": "./labelsTr/pancreas_328.nii.gz"}, {"image": "./imagesTr/pancreas_329.nii.gz", "label": "./labelsTr/pancreas_329.nii.gz"}, {"image": "./imagesTr/pancreas_330.nii.gz", "label": "./labelsTr/pancreas_330.nii.gz"}, {"image": "./imagesTr/pancreas_333.nii.gz", "label": "./labelsTr/pancreas_333.nii.gz"}, {"image": "./imagesTr/pancreas_334.nii.gz", "label": "./labelsTr/pancreas_334.nii.gz"}, {"image": "./imagesTr/pancreas_336.nii.gz", "label": "./labelsTr/pancreas_336.nii.gz"}, {"image": "./imagesTr/pancreas_339.nii.gz", "label": "./labelsTr/pancreas_339.nii.gz"}, {"image": "./imagesTr/pancreas_343.nii.gz", "label": "./labelsTr/pancreas_343.nii.gz"}, {"image": "./imagesTr/pancreas_344.nii.gz", "label": "./labelsTr/pancreas_344.nii.gz"}, {"image": "./imagesTr/pancreas_345.nii.gz", "label": "./labelsTr/pancreas_345.nii.gz"}, {"image": "./imagesTr/pancreas_346.nii.gz", "label": "./labelsTr/pancreas_346.nii.gz"}, {"image": "./imagesTr/pancreas_347.nii.gz", "label": "./labelsTr/pancreas_347.nii.gz"}, {"image": "./imagesTr/pancreas_348.nii.gz", "label": "./labelsTr/pancreas_348.nii.gz"}, {"image": "./imagesTr/pancreas_350.nii.gz", "label": "./labelsTr/pancreas_350.nii.gz"}, {"image": "./imagesTr/pancreas_351.nii.gz", "label": "./labelsTr/pancreas_351.nii.gz"}, {"image": "./imagesTr/pancreas_354.nii.gz", "label": "./labelsTr/pancreas_354.nii.gz"}, {"image": "./imagesTr/pancreas_355.nii.gz", "label": "./labelsTr/pancreas_355.nii.gz"}, {"image": "./imagesTr/pancreas_356.nii.gz", "label": "./labelsTr/pancreas_356.nii.gz"}, {"image": "./imagesTr/pancreas_360.nii.gz", "label": "./labelsTr/pancreas_360.nii.gz"}, {"image": "./imagesTr/pancreas_361.nii.gz", "label": "./labelsTr/pancreas_361.nii.gz"}, {"image": "./imagesTr/pancreas_362.nii.gz", "label": "./labelsTr/pancreas_362.nii.gz"}, {"image": "./imagesTr/pancreas_364.nii.gz", "label": "./labelsTr/pancreas_364.nii.gz"}, {"image": "./imagesTr/pancreas_365.nii.gz", "label": "./labelsTr/pancreas_365.nii.gz"}, {"image": "./imagesTr/pancreas_366.nii.gz", "label": "./labelsTr/pancreas_366.nii.gz"}, {"image": "./imagesTr/pancreas_369.nii.gz", "label": "./labelsTr/pancreas_369.nii.gz"}, {"image": "./imagesTr/pancreas_370.nii.gz", "label": "./labelsTr/pancreas_370.nii.gz"}, {"image": "./imagesTr/pancreas_372.nii.gz", "label": "./labelsTr/pancreas_372.nii.gz"}, {"image": "./imagesTr/pancreas_374.nii.gz", "label": "./labelsTr/pancreas_374.nii.gz"}, {"image": "./imagesTr/pancreas_375.nii.gz", "label": "./labelsTr/pancreas_375.nii.gz"}, {"image": "./imagesTr/pancreas_376.nii.gz", "label": "./labelsTr/pancreas_376.nii.gz"}, {"image": "./imagesTr/pancreas_377.nii.gz", "label": "./labelsTr/pancreas_377.nii.gz"}, {"image": "./imagesTr/pancreas_378.nii.gz", "label": "./labelsTr/pancreas_378.nii.gz"}, {"image": "./imagesTr/pancreas_380.nii.gz", "label": "./labelsTr/pancreas_380.nii.gz"}, {"image": "./imagesTr/pancreas_382.nii.gz", "label": "./labelsTr/pancreas_382.nii.gz"}, {"image": "./imagesTr/pancreas_385.nii.gz", "label": "./labelsTr/pancreas_385.nii.gz"}, {"image": "./imagesTr/pancreas_387.nii.gz", "label": "./labelsTr/pancreas_387.nii.gz"}, {"image": "./imagesTr/pancreas_388.nii.gz", "label": "./labelsTr/pancreas_388.nii.gz"}, {"image": "./imagesTr/pancreas_389.nii.gz", "label": "./labelsTr/pancreas_389.nii.gz"}, {"image": "./imagesTr/pancreas_391.nii.gz", "label": "./labelsTr/pancreas_391.nii.gz"}, {"image": "./imagesTr/pancreas_392.nii.gz", "label": "./labelsTr/pancreas_392.nii.gz"}, {"image": "./imagesTr/pancreas_393.nii.gz", "label": "./labelsTr/pancreas_393.nii.gz"}, {"image": "./imagesTr/pancreas_395.nii.gz", "label": "./labelsTr/pancreas_395.nii.gz"}, {"image": "./imagesTr/pancreas_398.nii.gz", "label": "./labelsTr/pancreas_398.nii.gz"}, {"image": "./imagesTr/pancreas_399.nii.gz", "label": "./labelsTr/pancreas_399.nii.gz"}, {"image": "./imagesTr/pancreas_400.nii.gz", "label": "./labelsTr/pancreas_400.nii.gz"}, {"image": "./imagesTr/pancreas_401.nii.gz", "label": "./labelsTr/pancreas_401.nii.gz"}, {"image": "./imagesTr/pancreas_402.nii.gz", "label": "./labelsTr/pancreas_402.nii.gz"}, {"image": "./imagesTr/pancreas_404.nii.gz", "label": "./labelsTr/pancreas_404.nii.gz"}, {"image": "./imagesTr/pancreas_406.nii.gz", "label": "./labelsTr/pancreas_406.nii.gz"}, {"image": "./imagesTr/pancreas_409.nii.gz", "label": "./labelsTr/pancreas_409.nii.gz"}, {"image": "./imagesTr/pancreas_410.nii.gz", "label": "./labelsTr/pancreas_410.nii.gz"}, {"image": "./imagesTr/pancreas_411.nii.gz", "label": "./labelsTr/pancreas_411.nii.gz"}, {"image": "./imagesTr/pancreas_412.nii.gz", "label": "./labelsTr/pancreas_412.nii.gz"}, {"image": "./imagesTr/pancreas_413.nii.gz", "label": "./labelsTr/pancreas_413.nii.gz"}, {"image": "./imagesTr/pancreas_414.nii.gz", "label": "./labelsTr/pancreas_414.nii.gz"}, {"image": "./imagesTr/pancreas_415.nii.gz", "label": "./labelsTr/pancreas_415.nii.gz"}, {"image": "./imagesTr/pancreas_416.nii.gz", "label": "./labelsTr/pancreas_416.nii.gz"}, {"image": "./imagesTr/pancreas_418.nii.gz", "label": "./labelsTr/pancreas_418.nii.gz"}, {"image": "./imagesTr/pancreas_419.nii.gz", "label": "./labelsTr/pancreas_419.nii.gz"}, {"image": "./imagesTr/pancreas_421.nii.gz", "label": "./labelsTr/pancreas_421.nii.gz"}], "validation_fold3": [{"image": "./imagesTr/pancreas_001.nii.gz", "label": "./labelsTr/pancreas_001.nii.gz"}, {"image": "./imagesTr/pancreas_006.nii.gz", "label": "./labelsTr/pancreas_006.nii.gz"}, {"image": "./imagesTr/pancreas_015.nii.gz", "label": "./labelsTr/pancreas_015.nii.gz"}, {"image": "./imagesTr/pancreas_016.nii.gz", "label": "./labelsTr/pancreas_016.nii.gz"}, {"image": "./imagesTr/pancreas_043.nii.gz", "label": "./labelsTr/pancreas_043.nii.gz"}, {"image": "./imagesTr/pancreas_045.nii.gz", "label": "./labelsTr/pancreas_045.nii.gz"}, {"image": "./imagesTr/pancreas_061.nii.gz", "label": "./labelsTr/pancreas_061.nii.gz"}, {"image": "./imagesTr/pancreas_070.nii.gz", "label": "./labelsTr/pancreas_070.nii.gz"}, {"image": "./imagesTr/pancreas_077.nii.gz", "label": "./labelsTr/pancreas_077.nii.gz"}, {"image": "./imagesTr/pancreas_083.nii.gz", "label": "./labelsTr/pancreas_083.nii.gz"}, {"image": "./imagesTr/pancreas_084.nii.gz", "label": "./labelsTr/pancreas_084.nii.gz"}, {"image": "./imagesTr/pancreas_099.nii.gz", "label": "./labelsTr/pancreas_099.nii.gz"}, {"image": "./imagesTr/pancreas_101.nii.gz", "label": "./labelsTr/pancreas_101.nii.gz"}, {"image": "./imagesTr/pancreas_103.nii.gz", "label": "./labelsTr/pancreas_103.nii.gz"}, {"image": "./imagesTr/pancreas_104.nii.gz", "label": "./labelsTr/pancreas_104.nii.gz"}, {"image": "./imagesTr/pancreas_106.nii.gz", "label": "./labelsTr/pancreas_106.nii.gz"}, {"image": "./imagesTr/pancreas_111.nii.gz", "label": "./labelsTr/pancreas_111.nii.gz"}, {"image": "./imagesTr/pancreas_120.nii.gz", "label": "./labelsTr/pancreas_120.nii.gz"}, {"image": "./imagesTr/pancreas_124.nii.gz", "label": "./labelsTr/pancreas_124.nii.gz"}, {"image": "./imagesTr/pancreas_131.nii.gz", "label": "./labelsTr/pancreas_131.nii.gz"}, {"image": "./imagesTr/pancreas_173.nii.gz", "label": "./labelsTr/pancreas_173.nii.gz"}, {"image": "./imagesTr/pancreas_194.nii.gz", "label": "./labelsTr/pancreas_194.nii.gz"}, {"image": "./imagesTr/pancreas_197.nii.gz", "label": "./labelsTr/pancreas_197.nii.gz"}, {"image": "./imagesTr/pancreas_203.nii.gz", "label": "./labelsTr/pancreas_203.nii.gz"}, {"image": "./imagesTr/pancreas_207.nii.gz", "label": "./labelsTr/pancreas_207.nii.gz"}, {"image": "./imagesTr/pancreas_210.nii.gz", "label": "./labelsTr/pancreas_210.nii.gz"}, {"image": "./imagesTr/pancreas_226.nii.gz", "label": "./labelsTr/pancreas_226.nii.gz"}, {"image": "./imagesTr/pancreas_239.nii.gz", "label": "./labelsTr/pancreas_239.nii.gz"}, {"image": "./imagesTr/pancreas_243.nii.gz", "label": "./labelsTr/pancreas_243.nii.gz"}, {"image": "./imagesTr/pancreas_253.nii.gz", "label": "./labelsTr/pancreas_253.nii.gz"}, {"image": "./imagesTr/pancreas_258.nii.gz", "label": "./labelsTr/pancreas_258.nii.gz"}, {"image": "./imagesTr/pancreas_276.nii.gz", "label": "./labelsTr/pancreas_276.nii.gz"}, {"image": "./imagesTr/pancreas_277.nii.gz", "label": "./labelsTr/pancreas_277.nii.gz"}, {"image": "./imagesTr/pancreas_284.nii.gz", "label": "./labelsTr/pancreas_284.nii.gz"}, {"image": "./imagesTr/pancreas_285.nii.gz", "label": "./labelsTr/pancreas_285.nii.gz"}, {"image": "./imagesTr/pancreas_289.nii.gz", "label": "./labelsTr/pancreas_289.nii.gz"}, {"image": "./imagesTr/pancreas_293.nii.gz", "label": "./labelsTr/pancreas_293.nii.gz"}, {"image": "./imagesTr/pancreas_296.nii.gz", "label": "./labelsTr/pancreas_296.nii.gz"}, {"image": "./imagesTr/pancreas_300.nii.gz", "label": "./labelsTr/pancreas_300.nii.gz"}, {"image": "./imagesTr/pancreas_302.nii.gz", "label": "./labelsTr/pancreas_302.nii.gz"}, {"image": "./imagesTr/pancreas_305.nii.gz", "label": "./labelsTr/pancreas_305.nii.gz"}, {"image": "./imagesTr/pancreas_315.nii.gz", "label": "./labelsTr/pancreas_315.nii.gz"}, {"image": "./imagesTr/pancreas_329.nii.gz", "label": "./labelsTr/pancreas_329.nii.gz"}, {"image": "./imagesTr/pancreas_330.nii.gz", "label": "./labelsTr/pancreas_330.nii.gz"}, {"image": "./imagesTr/pancreas_334.nii.gz", "label": "./labelsTr/pancreas_334.nii.gz"}, {"image": "./imagesTr/pancreas_339.nii.gz", "label": "./labelsTr/pancreas_339.nii.gz"}, {"image": "./imagesTr/pancreas_346.nii.gz", "label": "./labelsTr/pancreas_346.nii.gz"}, {"image": "./imagesTr/pancreas_356.nii.gz", "label": "./labelsTr/pancreas_356.nii.gz"}, {"image": "./imagesTr/pancreas_361.nii.gz", "label": "./labelsTr/pancreas_361.nii.gz"}, {"image": "./imagesTr/pancreas_370.nii.gz", "label": "./labelsTr/pancreas_370.nii.gz"}, {"image": "./imagesTr/pancreas_374.nii.gz", "label": "./labelsTr/pancreas_374.nii.gz"}, {"image": "./imagesTr/pancreas_385.nii.gz", "label": "./labelsTr/pancreas_385.nii.gz"}, {"image": "./imagesTr/pancreas_393.nii.gz", "label": "./labelsTr/pancreas_393.nii.gz"}, {"image": "./imagesTr/pancreas_395.nii.gz", "label": "./labelsTr/pancreas_395.nii.gz"}, {"image": "./imagesTr/pancreas_398.nii.gz", "label": "./labelsTr/pancreas_398.nii.gz"}, {"image": "./imagesTr/pancreas_415.nii.gz", "label": "./labelsTr/pancreas_415.nii.gz"}], "train_fold3": [{"image": "./imagesTr/pancreas_004.nii.gz", "label": "./labelsTr/pancreas_004.nii.gz"}, {"image": "./imagesTr/pancreas_005.nii.gz", "label": "./labelsTr/pancreas_005.nii.gz"}, {"image": "./imagesTr/pancreas_010.nii.gz", "label": "./labelsTr/pancreas_010.nii.gz"}, {"image": "./imagesTr/pancreas_012.nii.gz", "label": "./labelsTr/pancreas_012.nii.gz"}, {"image": "./imagesTr/pancreas_018.nii.gz", "label": "./labelsTr/pancreas_018.nii.gz"}, {"image": "./imagesTr/pancreas_019.nii.gz", "label": "./labelsTr/pancreas_019.nii.gz"}, {"image": "./imagesTr/pancreas_021.nii.gz", "label": "./labelsTr/pancreas_021.nii.gz"}, {"image": "./imagesTr/pancreas_024.nii.gz", "label": "./labelsTr/pancreas_024.nii.gz"}, {"image": "./imagesTr/pancreas_025.nii.gz", "label": "./labelsTr/pancreas_025.nii.gz"}, {"image": "./imagesTr/pancreas_028.nii.gz", "label": "./labelsTr/pancreas_028.nii.gz"}, {"image": "./imagesTr/pancreas_029.nii.gz", "label": "./labelsTr/pancreas_029.nii.gz"}, {"image": "./imagesTr/pancreas_032.nii.gz", "label": "./labelsTr/pancreas_032.nii.gz"}, {"image": "./imagesTr/pancreas_035.nii.gz", "label": "./labelsTr/pancreas_035.nii.gz"}, {"image": "./imagesTr/pancreas_037.nii.gz", "label": "./labelsTr/pancreas_037.nii.gz"}, {"image": "./imagesTr/pancreas_040.nii.gz", "label": "./labelsTr/pancreas_040.nii.gz"}, {"image": "./imagesTr/pancreas_041.nii.gz", "label": "./labelsTr/pancreas_041.nii.gz"}, {"image": "./imagesTr/pancreas_042.nii.gz", "label": "./labelsTr/pancreas_042.nii.gz"}, {"image": "./imagesTr/pancreas_046.nii.gz", "label": "./labelsTr/pancreas_046.nii.gz"}, {"image": "./imagesTr/pancreas_048.nii.gz", "label": "./labelsTr/pancreas_048.nii.gz"}, {"image": "./imagesTr/pancreas_049.nii.gz", "label": "./labelsTr/pancreas_049.nii.gz"}, {"image": "./imagesTr/pancreas_050.nii.gz", "label": "./labelsTr/pancreas_050.nii.gz"}, {"image": "./imagesTr/pancreas_051.nii.gz", "label": "./labelsTr/pancreas_051.nii.gz"}, {"image": "./imagesTr/pancreas_052.nii.gz", "label": "./labelsTr/pancreas_052.nii.gz"}, {"image": "./imagesTr/pancreas_055.nii.gz", "label": "./labelsTr/pancreas_055.nii.gz"}, {"image": "./imagesTr/pancreas_056.nii.gz", "label": "./labelsTr/pancreas_056.nii.gz"}, {"image": "./imagesTr/pancreas_058.nii.gz", "label": "./labelsTr/pancreas_058.nii.gz"}, {"image": "./imagesTr/pancreas_064.nii.gz", "label": "./labelsTr/pancreas_064.nii.gz"}, {"image": "./imagesTr/pancreas_066.nii.gz", "label": "./labelsTr/pancreas_066.nii.gz"}, {"image": "./imagesTr/pancreas_067.nii.gz", "label": "./labelsTr/pancreas_067.nii.gz"}, {"image": "./imagesTr/pancreas_069.nii.gz", "label": "./labelsTr/pancreas_069.nii.gz"}, {"image": "./imagesTr/pancreas_071.nii.gz", "label": "./labelsTr/pancreas_071.nii.gz"}, {"image": "./imagesTr/pancreas_074.nii.gz", "label": "./labelsTr/pancreas_074.nii.gz"}, {"image": "./imagesTr/pancreas_075.nii.gz", "label": "./labelsTr/pancreas_075.nii.gz"}, {"image": "./imagesTr/pancreas_078.nii.gz", "label": "./labelsTr/pancreas_078.nii.gz"}, {"image": "./imagesTr/pancreas_080.nii.gz", "label": "./labelsTr/pancreas_080.nii.gz"}, {"image": "./imagesTr/pancreas_081.nii.gz", "label": "./labelsTr/pancreas_081.nii.gz"}, {"image": "./imagesTr/pancreas_086.nii.gz", "label": "./labelsTr/pancreas_086.nii.gz"}, {"image": "./imagesTr/pancreas_087.nii.gz", "label": "./labelsTr/pancreas_087.nii.gz"}, {"image": "./imagesTr/pancreas_088.nii.gz", "label": "./labelsTr/pancreas_088.nii.gz"}, {"image": "./imagesTr/pancreas_089.nii.gz", "label": "./labelsTr/pancreas_089.nii.gz"}, {"image": "./imagesTr/pancreas_091.nii.gz", "label": "./labelsTr/pancreas_091.nii.gz"}, {"image": "./imagesTr/pancreas_092.nii.gz", "label": "./labelsTr/pancreas_092.nii.gz"}, {"image": "./imagesTr/pancreas_093.nii.gz", "label": "./labelsTr/pancreas_093.nii.gz"}, {"image": "./imagesTr/pancreas_094.nii.gz", "label": "./labelsTr/pancreas_094.nii.gz"}, {"image": "./imagesTr/pancreas_095.nii.gz", "label": "./labelsTr/pancreas_095.nii.gz"}, {"image": "./imagesTr/pancreas_096.nii.gz", "label": "./labelsTr/pancreas_096.nii.gz"}, {"image": "./imagesTr/pancreas_098.nii.gz", "label": "./labelsTr/pancreas_098.nii.gz"}, {"image": "./imagesTr/pancreas_100.nii.gz", "label": "./labelsTr/pancreas_100.nii.gz"}, {"image": "./imagesTr/pancreas_102.nii.gz", "label": "./labelsTr/pancreas_102.nii.gz"}, {"image": "./imagesTr/pancreas_105.nii.gz", "label": "./labelsTr/pancreas_105.nii.gz"}, {"image": "./imagesTr/pancreas_107.nii.gz", "label": "./labelsTr/pancreas_107.nii.gz"}, {"image": "./imagesTr/pancreas_109.nii.gz", "label": "./labelsTr/pancreas_109.nii.gz"}, {"image": "./imagesTr/pancreas_110.nii.gz", "label": "./labelsTr/pancreas_110.nii.gz"}, {"image": "./imagesTr/pancreas_113.nii.gz", "label": "./labelsTr/pancreas_113.nii.gz"}, {"image": "./imagesTr/pancreas_114.nii.gz", "label": "./labelsTr/pancreas_114.nii.gz"}, {"image": "./imagesTr/pancreas_117.nii.gz", "label": "./labelsTr/pancreas_117.nii.gz"}, {"image": "./imagesTr/pancreas_119.nii.gz", "label": "./labelsTr/pancreas_119.nii.gz"}, {"image": "./imagesTr/pancreas_122.nii.gz", "label": "./labelsTr/pancreas_122.nii.gz"}, {"image": "./imagesTr/pancreas_125.nii.gz", "label": "./labelsTr/pancreas_125.nii.gz"}, {"image": "./imagesTr/pancreas_126.nii.gz", "label": "./labelsTr/pancreas_126.nii.gz"}, {"image": "./imagesTr/pancreas_127.nii.gz", "label": "./labelsTr/pancreas_127.nii.gz"}, {"image": "./imagesTr/pancreas_129.nii.gz", "label": "./labelsTr/pancreas_129.nii.gz"}, {"image": "./imagesTr/pancreas_130.nii.gz", "label": "./labelsTr/pancreas_130.nii.gz"}, {"image": "./imagesTr/pancreas_135.nii.gz", "label": "./labelsTr/pancreas_135.nii.gz"}, {"image": "./imagesTr/pancreas_137.nii.gz", "label": "./labelsTr/pancreas_137.nii.gz"}, {"image": "./imagesTr/pancreas_138.nii.gz", "label": "./labelsTr/pancreas_138.nii.gz"}, {"image": "./imagesTr/pancreas_140.nii.gz", "label": "./labelsTr/pancreas_140.nii.gz"}, {"image": "./imagesTr/pancreas_145.nii.gz", "label": "./labelsTr/pancreas_145.nii.gz"}, {"image": "./imagesTr/pancreas_147.nii.gz", "label": "./labelsTr/pancreas_147.nii.gz"}, {"image": "./imagesTr/pancreas_148.nii.gz", "label": "./labelsTr/pancreas_148.nii.gz"}, {"image": "./imagesTr/pancreas_149.nii.gz", "label": "./labelsTr/pancreas_149.nii.gz"}, {"image": "./imagesTr/pancreas_155.nii.gz", "label": "./labelsTr/pancreas_155.nii.gz"}, {"image": "./imagesTr/pancreas_157.nii.gz", "label": "./labelsTr/pancreas_157.nii.gz"}, {"image": "./imagesTr/pancreas_158.nii.gz", "label": "./labelsTr/pancreas_158.nii.gz"}, {"image": "./imagesTr/pancreas_159.nii.gz", "label": "./labelsTr/pancreas_159.nii.gz"}, {"image": "./imagesTr/pancreas_160.nii.gz", "label": "./labelsTr/pancreas_160.nii.gz"}, {"image": "./imagesTr/pancreas_165.nii.gz", "label": "./labelsTr/pancreas_165.nii.gz"}, {"image": "./imagesTr/pancreas_166.nii.gz", "label": "./labelsTr/pancreas_166.nii.gz"}, {"image": "./imagesTr/pancreas_167.nii.gz", "label": "./labelsTr/pancreas_167.nii.gz"}, {"image": "./imagesTr/pancreas_169.nii.gz", "label": "./labelsTr/pancreas_169.nii.gz"}, {"image": "./imagesTr/pancreas_170.nii.gz", "label": "./labelsTr/pancreas_170.nii.gz"}, {"image": "./imagesTr/pancreas_172.nii.gz", "label": "./labelsTr/pancreas_172.nii.gz"}, {"image": "./imagesTr/pancreas_175.nii.gz", "label": "./labelsTr/pancreas_175.nii.gz"}, {"image": "./imagesTr/pancreas_178.nii.gz", "label": "./labelsTr/pancreas_178.nii.gz"}, {"image": "./imagesTr/pancreas_179.nii.gz", "label": "./labelsTr/pancreas_179.nii.gz"}, {"image": "./imagesTr/pancreas_180.nii.gz", "label": "./labelsTr/pancreas_180.nii.gz"}, {"image": "./imagesTr/pancreas_181.nii.gz", "label": "./labelsTr/pancreas_181.nii.gz"}, {"image": "./imagesTr/pancreas_182.nii.gz", "label": "./labelsTr/pancreas_182.nii.gz"}, {"image": "./imagesTr/pancreas_183.nii.gz", "label": "./labelsTr/pancreas_183.nii.gz"}, {"image": "./imagesTr/pancreas_186.nii.gz", "label": "./labelsTr/pancreas_186.nii.gz"}, {"image": "./imagesTr/pancreas_187.nii.gz", "label": "./labelsTr/pancreas_187.nii.gz"}, {"image": "./imagesTr/pancreas_191.nii.gz", "label": "./labelsTr/pancreas_191.nii.gz"}, {"image": "./imagesTr/pancreas_193.nii.gz", "label": "./labelsTr/pancreas_193.nii.gz"}, {"image": "./imagesTr/pancreas_196.nii.gz", "label": "./labelsTr/pancreas_196.nii.gz"}, {"image": "./imagesTr/pancreas_198.nii.gz", "label": "./labelsTr/pancreas_198.nii.gz"}, {"image": "./imagesTr/pancreas_199.nii.gz", "label": "./labelsTr/pancreas_199.nii.gz"}, {"image": "./imagesTr/pancreas_200.nii.gz", "label": "./labelsTr/pancreas_200.nii.gz"}, {"image": "./imagesTr/pancreas_201.nii.gz", "label": "./labelsTr/pancreas_201.nii.gz"}, {"image": "./imagesTr/pancreas_204.nii.gz", "label": "./labelsTr/pancreas_204.nii.gz"}, {"image": "./imagesTr/pancreas_209.nii.gz", "label": "./labelsTr/pancreas_209.nii.gz"}, {"image": "./imagesTr/pancreas_211.nii.gz", "label": "./labelsTr/pancreas_211.nii.gz"}, {"image": "./imagesTr/pancreas_212.nii.gz", "label": "./labelsTr/pancreas_212.nii.gz"}, {"image": "./imagesTr/pancreas_213.nii.gz", "label": "./labelsTr/pancreas_213.nii.gz"}, {"image": "./imagesTr/pancreas_214.nii.gz", "label": "./labelsTr/pancreas_214.nii.gz"}, {"image": "./imagesTr/pancreas_215.nii.gz", "label": "./labelsTr/pancreas_215.nii.gz"}, {"image": "./imagesTr/pancreas_217.nii.gz", "label": "./labelsTr/pancreas_217.nii.gz"}, {"image": "./imagesTr/pancreas_218.nii.gz", "label": "./labelsTr/pancreas_218.nii.gz"}, {"image": "./imagesTr/pancreas_219.nii.gz", "label": "./labelsTr/pancreas_219.nii.gz"}, {"image": "./imagesTr/pancreas_222.nii.gz", "label": "./labelsTr/pancreas_222.nii.gz"}, {"image": "./imagesTr/pancreas_224.nii.gz", "label": "./labelsTr/pancreas_224.nii.gz"}, {"image": "./imagesTr/pancreas_225.nii.gz", "label": "./labelsTr/pancreas_225.nii.gz"}, {"image": "./imagesTr/pancreas_227.nii.gz", "label": "./labelsTr/pancreas_227.nii.gz"}, {"image": "./imagesTr/pancreas_228.nii.gz", "label": "./labelsTr/pancreas_228.nii.gz"}, {"image": "./imagesTr/pancreas_229.nii.gz", "label": "./labelsTr/pancreas_229.nii.gz"}, {"image": "./imagesTr/pancreas_230.nii.gz", "label": "./labelsTr/pancreas_230.nii.gz"}, {"image": "./imagesTr/pancreas_231.nii.gz", "label": "./labelsTr/pancreas_231.nii.gz"}, {"image": "./imagesTr/pancreas_234.nii.gz", "label": "./labelsTr/pancreas_234.nii.gz"}, {"image": "./imagesTr/pancreas_235.nii.gz", "label": "./labelsTr/pancreas_235.nii.gz"}, {"image": "./imagesTr/pancreas_236.nii.gz", "label": "./labelsTr/pancreas_236.nii.gz"}, {"image": "./imagesTr/pancreas_241.nii.gz", "label": "./labelsTr/pancreas_241.nii.gz"}, {"image": "./imagesTr/pancreas_242.nii.gz", "label": "./labelsTr/pancreas_242.nii.gz"}, {"image": "./imagesTr/pancreas_244.nii.gz", "label": "./labelsTr/pancreas_244.nii.gz"}, {"image": "./imagesTr/pancreas_246.nii.gz", "label": "./labelsTr/pancreas_246.nii.gz"}, {"image": "./imagesTr/pancreas_247.nii.gz", "label": "./labelsTr/pancreas_247.nii.gz"}, {"image": "./imagesTr/pancreas_249.nii.gz", "label": "./labelsTr/pancreas_249.nii.gz"}, {"image": "./imagesTr/pancreas_254.nii.gz", "label": "./labelsTr/pancreas_254.nii.gz"}, {"image": "./imagesTr/pancreas_255.nii.gz", "label": "./labelsTr/pancreas_255.nii.gz"}, {"image": "./imagesTr/pancreas_256.nii.gz", "label": "./labelsTr/pancreas_256.nii.gz"}, {"image": "./imagesTr/pancreas_259.nii.gz", "label": "./labelsTr/pancreas_259.nii.gz"}, {"image": "./imagesTr/pancreas_261.nii.gz", "label": "./labelsTr/pancreas_261.nii.gz"}, {"image": "./imagesTr/pancreas_262.nii.gz", "label": "./labelsTr/pancreas_262.nii.gz"}, {"image": "./imagesTr/pancreas_264.nii.gz", "label": "./labelsTr/pancreas_264.nii.gz"}, {"image": "./imagesTr/pancreas_265.nii.gz", "label": "./labelsTr/pancreas_265.nii.gz"}, {"image": "./imagesTr/pancreas_266.nii.gz", "label": "./labelsTr/pancreas_266.nii.gz"}, {"image": "./imagesTr/pancreas_267.nii.gz", "label": "./labelsTr/pancreas_267.nii.gz"}, {"image": "./imagesTr/pancreas_268.nii.gz", "label": "./labelsTr/pancreas_268.nii.gz"}, {"image": "./imagesTr/pancreas_269.nii.gz", "label": "./labelsTr/pancreas_269.nii.gz"}, {"image": "./imagesTr/pancreas_270.nii.gz", "label": "./labelsTr/pancreas_270.nii.gz"}, {"image": "./imagesTr/pancreas_274.nii.gz", "label": "./labelsTr/pancreas_274.nii.gz"}, {"image": "./imagesTr/pancreas_275.nii.gz", "label": "./labelsTr/pancreas_275.nii.gz"}, {"image": "./imagesTr/pancreas_278.nii.gz", "label": "./labelsTr/pancreas_278.nii.gz"}, {"image": "./imagesTr/pancreas_279.nii.gz", "label": "./labelsTr/pancreas_279.nii.gz"}, {"image": "./imagesTr/pancreas_280.nii.gz", "label": "./labelsTr/pancreas_280.nii.gz"}, {"image": "./imagesTr/pancreas_283.nii.gz", "label": "./labelsTr/pancreas_283.nii.gz"}, {"image": "./imagesTr/pancreas_286.nii.gz", "label": "./labelsTr/pancreas_286.nii.gz"}, {"image": "./imagesTr/pancreas_287.nii.gz", "label": "./labelsTr/pancreas_287.nii.gz"}, {"image": "./imagesTr/pancreas_290.nii.gz", "label": "./labelsTr/pancreas_290.nii.gz"}, {"image": "./imagesTr/pancreas_291.nii.gz", "label": "./labelsTr/pancreas_291.nii.gz"}, {"image": "./imagesTr/pancreas_292.nii.gz", "label": "./labelsTr/pancreas_292.nii.gz"}, {"image": "./imagesTr/pancreas_294.nii.gz", "label": "./labelsTr/pancreas_294.nii.gz"}, {"image": "./imagesTr/pancreas_295.nii.gz", "label": "./labelsTr/pancreas_295.nii.gz"}, {"image": "./imagesTr/pancreas_297.nii.gz", "label": "./labelsTr/pancreas_297.nii.gz"}, {"image": "./imagesTr/pancreas_298.nii.gz", "label": "./labelsTr/pancreas_298.nii.gz"}, {"image": "./imagesTr/pancreas_299.nii.gz", "label": "./labelsTr/pancreas_299.nii.gz"}, {"image": "./imagesTr/pancreas_301.nii.gz", "label": "./labelsTr/pancreas_301.nii.gz"}, {"image": "./imagesTr/pancreas_303.nii.gz", "label": "./labelsTr/pancreas_303.nii.gz"}, {"image": "./imagesTr/pancreas_304.nii.gz", "label": "./labelsTr/pancreas_304.nii.gz"}, {"image": "./imagesTr/pancreas_308.nii.gz", "label": "./labelsTr/pancreas_308.nii.gz"}, {"image": "./imagesTr/pancreas_309.nii.gz", "label": "./labelsTr/pancreas_309.nii.gz"}, {"image": "./imagesTr/pancreas_310.nii.gz", "label": "./labelsTr/pancreas_310.nii.gz"}, {"image": "./imagesTr/pancreas_311.nii.gz", "label": "./labelsTr/pancreas_311.nii.gz"}, {"image": "./imagesTr/pancreas_312.nii.gz", "label": "./labelsTr/pancreas_312.nii.gz"}, {"image": "./imagesTr/pancreas_313.nii.gz", "label": "./labelsTr/pancreas_313.nii.gz"}, {"image": "./imagesTr/pancreas_316.nii.gz", "label": "./labelsTr/pancreas_316.nii.gz"}, {"image": "./imagesTr/pancreas_318.nii.gz", "label": "./labelsTr/pancreas_318.nii.gz"}, {"image": "./imagesTr/pancreas_320.nii.gz", "label": "./labelsTr/pancreas_320.nii.gz"}, {"image": "./imagesTr/pancreas_321.nii.gz", "label": "./labelsTr/pancreas_321.nii.gz"}, {"image": "./imagesTr/pancreas_323.nii.gz", "label": "./labelsTr/pancreas_323.nii.gz"}, {"image": "./imagesTr/pancreas_325.nii.gz", "label": "./labelsTr/pancreas_325.nii.gz"}, {"image": "./imagesTr/pancreas_326.nii.gz", "label": "./labelsTr/pancreas_326.nii.gz"}, {"image": "./imagesTr/pancreas_327.nii.gz", "label": "./labelsTr/pancreas_327.nii.gz"}, {"image": "./imagesTr/pancreas_328.nii.gz", "label": "./labelsTr/pancreas_328.nii.gz"}, {"image": "./imagesTr/pancreas_331.nii.gz", "label": "./labelsTr/pancreas_331.nii.gz"}, {"image": "./imagesTr/pancreas_333.nii.gz", "label": "./labelsTr/pancreas_333.nii.gz"}, {"image": "./imagesTr/pancreas_336.nii.gz", "label": "./labelsTr/pancreas_336.nii.gz"}, {"image": "./imagesTr/pancreas_342.nii.gz", "label": "./labelsTr/pancreas_342.nii.gz"}, {"image": "./imagesTr/pancreas_343.nii.gz", "label": "./labelsTr/pancreas_343.nii.gz"}, {"image": "./imagesTr/pancreas_344.nii.gz", "label": "./labelsTr/pancreas_344.nii.gz"}, {"image": "./imagesTr/pancreas_345.nii.gz", "label": "./labelsTr/pancreas_345.nii.gz"}, {"image": "./imagesTr/pancreas_347.nii.gz", "label": "./labelsTr/pancreas_347.nii.gz"}, {"image": "./imagesTr/pancreas_348.nii.gz", "label": "./labelsTr/pancreas_348.nii.gz"}, {"image": "./imagesTr/pancreas_350.nii.gz", "label": "./labelsTr/pancreas_350.nii.gz"}, {"image": "./imagesTr/pancreas_351.nii.gz", "label": "./labelsTr/pancreas_351.nii.gz"}, {"image": "./imagesTr/pancreas_354.nii.gz", "label": "./labelsTr/pancreas_354.nii.gz"}, {"image": "./imagesTr/pancreas_355.nii.gz", "label": "./labelsTr/pancreas_355.nii.gz"}, {"image": "./imagesTr/pancreas_357.nii.gz", "label": "./labelsTr/pancreas_357.nii.gz"}, {"image": "./imagesTr/pancreas_358.nii.gz", "label": "./labelsTr/pancreas_358.nii.gz"}, {"image": "./imagesTr/pancreas_360.nii.gz", "label": "./labelsTr/pancreas_360.nii.gz"}, {"image": "./imagesTr/pancreas_362.nii.gz", "label": "./labelsTr/pancreas_362.nii.gz"}, {"image": "./imagesTr/pancreas_364.nii.gz", "label": "./labelsTr/pancreas_364.nii.gz"}, {"image": "./imagesTr/pancreas_365.nii.gz", "label": "./labelsTr/pancreas_365.nii.gz"}, {"image": "./imagesTr/pancreas_366.nii.gz", "label": "./labelsTr/pancreas_366.nii.gz"}, {"image": "./imagesTr/pancreas_367.nii.gz", "label": "./labelsTr/pancreas_367.nii.gz"}, {"image": "./imagesTr/pancreas_369.nii.gz", "label": "./labelsTr/pancreas_369.nii.gz"}, {"image": "./imagesTr/pancreas_372.nii.gz", "label": "./labelsTr/pancreas_372.nii.gz"}, {"image": "./imagesTr/pancreas_375.nii.gz", "label": "./labelsTr/pancreas_375.nii.gz"}, {"image": "./imagesTr/pancreas_376.nii.gz", "label": "./labelsTr/pancreas_376.nii.gz"}, {"image": "./imagesTr/pancreas_377.nii.gz", "label": "./labelsTr/pancreas_377.nii.gz"}, {"image": "./imagesTr/pancreas_378.nii.gz", "label": "./labelsTr/pancreas_378.nii.gz"}, {"image": "./imagesTr/pancreas_379.nii.gz", "label": "./labelsTr/pancreas_379.nii.gz"}, {"image": "./imagesTr/pancreas_380.nii.gz", "label": "./labelsTr/pancreas_380.nii.gz"}, {"image": "./imagesTr/pancreas_382.nii.gz", "label": "./labelsTr/pancreas_382.nii.gz"}, {"image": "./imagesTr/pancreas_386.nii.gz", "label": "./labelsTr/pancreas_386.nii.gz"}, {"image": "./imagesTr/pancreas_387.nii.gz", "label": "./labelsTr/pancreas_387.nii.gz"}, {"image": "./imagesTr/pancreas_388.nii.gz", "label": "./labelsTr/pancreas_388.nii.gz"}, {"image": "./imagesTr/pancreas_389.nii.gz", "label": "./labelsTr/pancreas_389.nii.gz"}, {"image": "./imagesTr/pancreas_391.nii.gz", "label": "./labelsTr/pancreas_391.nii.gz"}, {"image": "./imagesTr/pancreas_392.nii.gz", "label": "./labelsTr/pancreas_392.nii.gz"}, {"image": "./imagesTr/pancreas_399.nii.gz", "label": "./labelsTr/pancreas_399.nii.gz"}, {"image": "./imagesTr/pancreas_400.nii.gz", "label": "./labelsTr/pancreas_400.nii.gz"}, {"image": "./imagesTr/pancreas_401.nii.gz", "label": "./labelsTr/pancreas_401.nii.gz"}, {"image": "./imagesTr/pancreas_402.nii.gz", "label": "./labelsTr/pancreas_402.nii.gz"}, {"image": "./imagesTr/pancreas_404.nii.gz", "label": "./labelsTr/pancreas_404.nii.gz"}, {"image": "./imagesTr/pancreas_405.nii.gz", "label": "./labelsTr/pancreas_405.nii.gz"}, {"image": "./imagesTr/pancreas_406.nii.gz", "label": "./labelsTr/pancreas_406.nii.gz"}, {"image": "./imagesTr/pancreas_409.nii.gz", "label": "./labelsTr/pancreas_409.nii.gz"}, {"image": "./imagesTr/pancreas_410.nii.gz", "label": "./labelsTr/pancreas_410.nii.gz"}, {"image": "./imagesTr/pancreas_411.nii.gz", "label": "./labelsTr/pancreas_411.nii.gz"}, {"image": "./imagesTr/pancreas_412.nii.gz", "label": "./labelsTr/pancreas_412.nii.gz"}, {"image": "./imagesTr/pancreas_413.nii.gz", "label": "./labelsTr/pancreas_413.nii.gz"}, {"image": "./imagesTr/pancreas_414.nii.gz", "label": "./labelsTr/pancreas_414.nii.gz"}, {"image": "./imagesTr/pancreas_416.nii.gz", "label": "./labelsTr/pancreas_416.nii.gz"}, {"image": "./imagesTr/pancreas_418.nii.gz", "label": "./labelsTr/pancreas_418.nii.gz"}, {"image": "./imagesTr/pancreas_419.nii.gz", "label": "./labelsTr/pancreas_419.nii.gz"}, {"image": "./imagesTr/pancreas_421.nii.gz", "label": "./labelsTr/pancreas_421.nii.gz"}], "validation_fold4": [{"image": "./imagesTr/pancreas_012.nii.gz", "label": "./labelsTr/pancreas_012.nii.gz"}, {"image": "./imagesTr/pancreas_025.nii.gz", "label": "./labelsTr/pancreas_025.nii.gz"}, {"image": "./imagesTr/pancreas_046.nii.gz", "label": "./labelsTr/pancreas_046.nii.gz"}, {"image": "./imagesTr/pancreas_055.nii.gz", "label": "./labelsTr/pancreas_055.nii.gz"}, {"image": "./imagesTr/pancreas_066.nii.gz", "label": "./labelsTr/pancreas_066.nii.gz"}, {"image": "./imagesTr/pancreas_069.nii.gz", "label": "./labelsTr/pancreas_069.nii.gz"}, {"image": "./imagesTr/pancreas_071.nii.gz", "label": "./labelsTr/pancreas_071.nii.gz"}, {"image": "./imagesTr/pancreas_080.nii.gz", "label": "./labelsTr/pancreas_080.nii.gz"}, {"image": "./imagesTr/pancreas_093.nii.gz", "label": "./labelsTr/pancreas_093.nii.gz"}, {"image": "./imagesTr/pancreas_100.nii.gz", "label": "./labelsTr/pancreas_100.nii.gz"}, {"image": "./imagesTr/pancreas_105.nii.gz", "label": "./labelsTr/pancreas_105.nii.gz"}, {"image": "./imagesTr/pancreas_117.nii.gz", "label": "./labelsTr/pancreas_117.nii.gz"}, {"image": "./imagesTr/pancreas_122.nii.gz", "label": "./labelsTr/pancreas_122.nii.gz"}, {"image": "./imagesTr/pancreas_125.nii.gz", "label": "./labelsTr/pancreas_125.nii.gz"}, {"image": "./imagesTr/pancreas_129.nii.gz", "label": "./labelsTr/pancreas_129.nii.gz"}, {"image": "./imagesTr/pancreas_130.nii.gz", "label": "./labelsTr/pancreas_130.nii.gz"}, {"image": "./imagesTr/pancreas_135.nii.gz", "label": "./labelsTr/pancreas_135.nii.gz"}, {"image": "./imagesTr/pancreas_147.nii.gz", "label": "./labelsTr/pancreas_147.nii.gz"}, {"image": "./imagesTr/pancreas_155.nii.gz", "label": "./labelsTr/pancreas_155.nii.gz"}, {"image": "./imagesTr/pancreas_179.nii.gz", "label": "./labelsTr/pancreas_179.nii.gz"}, {"image": "./imagesTr/pancreas_181.nii.gz", "label": "./labelsTr/pancreas_181.nii.gz"}, {"image": "./imagesTr/pancreas_182.nii.gz", "label": "./labelsTr/pancreas_182.nii.gz"}, {"image": "./imagesTr/pancreas_196.nii.gz", "label": "./labelsTr/pancreas_196.nii.gz"}, {"image": "./imagesTr/pancreas_199.nii.gz", "label": "./labelsTr/pancreas_199.nii.gz"}, {"image": "./imagesTr/pancreas_200.nii.gz", "label": "./labelsTr/pancreas_200.nii.gz"}, {"image": "./imagesTr/pancreas_209.nii.gz", "label": "./labelsTr/pancreas_209.nii.gz"}, {"image": "./imagesTr/pancreas_214.nii.gz", "label": "./labelsTr/pancreas_214.nii.gz"}, {"image": "./imagesTr/pancreas_217.nii.gz", "label": "./labelsTr/pancreas_217.nii.gz"}, {"image": "./imagesTr/pancreas_219.nii.gz", "label": "./labelsTr/pancreas_219.nii.gz"}, {"image": "./imagesTr/pancreas_227.nii.gz", "label": "./labelsTr/pancreas_227.nii.gz"}, {"image": "./imagesTr/pancreas_231.nii.gz", "label": "./labelsTr/pancreas_231.nii.gz"}, {"image": "./imagesTr/pancreas_234.nii.gz", "label": "./labelsTr/pancreas_234.nii.gz"}, {"image": "./imagesTr/pancreas_254.nii.gz", "label": "./labelsTr/pancreas_254.nii.gz"}, {"image": "./imagesTr/pancreas_268.nii.gz", "label": "./labelsTr/pancreas_268.nii.gz"}, {"image": "./imagesTr/pancreas_297.nii.gz", "label": "./labelsTr/pancreas_297.nii.gz"}, {"image": "./imagesTr/pancreas_311.nii.gz", "label": "./labelsTr/pancreas_311.nii.gz"}, {"image": "./imagesTr/pancreas_321.nii.gz", "label": "./labelsTr/pancreas_321.nii.gz"}, {"image": "./imagesTr/pancreas_325.nii.gz", "label": "./labelsTr/pancreas_325.nii.gz"}, {"image": "./imagesTr/pancreas_345.nii.gz", "label": "./labelsTr/pancreas_345.nii.gz"}, {"image": "./imagesTr/pancreas_347.nii.gz", "label": "./labelsTr/pancreas_347.nii.gz"}, {"image": "./imagesTr/pancreas_355.nii.gz", "label": "./labelsTr/pancreas_355.nii.gz"}, {"image": "./imagesTr/pancreas_360.nii.gz", "label": "./labelsTr/pancreas_360.nii.gz"}, {"image": "./imagesTr/pancreas_364.nii.gz", "label": "./labelsTr/pancreas_364.nii.gz"}, {"image": "./imagesTr/pancreas_365.nii.gz", "label": "./labelsTr/pancreas_365.nii.gz"}, {"image": "./imagesTr/pancreas_375.nii.gz", "label": "./labelsTr/pancreas_375.nii.gz"}, {"image": "./imagesTr/pancreas_376.nii.gz", "label": "./labelsTr/pancreas_376.nii.gz"}, {"image": "./imagesTr/pancreas_380.nii.gz", "label": "./labelsTr/pancreas_380.nii.gz"}, {"image": "./imagesTr/pancreas_382.nii.gz", "label": "./labelsTr/pancreas_382.nii.gz"}, {"image": "./imagesTr/pancreas_389.nii.gz", "label": "./labelsTr/pancreas_389.nii.gz"}, {"image": "./imagesTr/pancreas_399.nii.gz", "label": "./labelsTr/pancreas_399.nii.gz"}, {"image": "./imagesTr/pancreas_402.nii.gz", "label": "./labelsTr/pancreas_402.nii.gz"}, {"image": "./imagesTr/pancreas_404.nii.gz", "label": "./labelsTr/pancreas_404.nii.gz"}, {"image": "./imagesTr/pancreas_411.nii.gz", "label": "./labelsTr/pancreas_411.nii.gz"}, {"image": "./imagesTr/pancreas_414.nii.gz", "label": "./labelsTr/pancreas_414.nii.gz"}, {"image": "./imagesTr/pancreas_418.nii.gz", "label": "./labelsTr/pancreas_418.nii.gz"}, {"image": "./imagesTr/pancreas_419.nii.gz", "label": "./labelsTr/pancreas_419.nii.gz"}], "train_fold4": [{"image": "./imagesTr/pancreas_001.nii.gz", "label": "./labelsTr/pancreas_001.nii.gz"}, {"image": "./imagesTr/pancreas_004.nii.gz", "label": "./labelsTr/pancreas_004.nii.gz"}, {"image": "./imagesTr/pancreas_005.nii.gz", "label": "./labelsTr/pancreas_005.nii.gz"}, {"image": "./imagesTr/pancreas_006.nii.gz", "label": "./labelsTr/pancreas_006.nii.gz"}, {"image": "./imagesTr/pancreas_010.nii.gz", "label": "./labelsTr/pancreas_010.nii.gz"}, {"image": "./imagesTr/pancreas_015.nii.gz", "label": "./labelsTr/pancreas_015.nii.gz"}, {"image": "./imagesTr/pancreas_016.nii.gz", "label": "./labelsTr/pancreas_016.nii.gz"}, {"image": "./imagesTr/pancreas_018.nii.gz", "label": "./labelsTr/pancreas_018.nii.gz"}, {"image": "./imagesTr/pancreas_019.nii.gz", "label": "./labelsTr/pancreas_019.nii.gz"}, {"image": "./imagesTr/pancreas_021.nii.gz", "label": "./labelsTr/pancreas_021.nii.gz"}, {"image": "./imagesTr/pancreas_024.nii.gz", "label": "./labelsTr/pancreas_024.nii.gz"}, {"image": "./imagesTr/pancreas_028.nii.gz", "label": "./labelsTr/pancreas_028.nii.gz"}, {"image": "./imagesTr/pancreas_029.nii.gz", "label": "./labelsTr/pancreas_029.nii.gz"}, {"image": "./imagesTr/pancreas_032.nii.gz", "label": "./labelsTr/pancreas_032.nii.gz"}, {"image": "./imagesTr/pancreas_035.nii.gz", "label": "./labelsTr/pancreas_035.nii.gz"}, {"image": "./imagesTr/pancreas_037.nii.gz", "label": "./labelsTr/pancreas_037.nii.gz"}, {"image": "./imagesTr/pancreas_040.nii.gz", "label": "./labelsTr/pancreas_040.nii.gz"}, {"image": "./imagesTr/pancreas_041.nii.gz", "label": "./labelsTr/pancreas_041.nii.gz"}, {"image": "./imagesTr/pancreas_042.nii.gz", "label": "./labelsTr/pancreas_042.nii.gz"}, {"image": "./imagesTr/pancreas_043.nii.gz", "label": "./labelsTr/pancreas_043.nii.gz"}, {"image": "./imagesTr/pancreas_045.nii.gz", "label": "./labelsTr/pancreas_045.nii.gz"}, {"image": "./imagesTr/pancreas_048.nii.gz", "label": "./labelsTr/pancreas_048.nii.gz"}, {"image": "./imagesTr/pancreas_049.nii.gz", "label": "./labelsTr/pancreas_049.nii.gz"}, {"image": "./imagesTr/pancreas_050.nii.gz", "label": "./labelsTr/pancreas_050.nii.gz"}, {"image": "./imagesTr/pancreas_051.nii.gz", "label": "./labelsTr/pancreas_051.nii.gz"}, {"image": "./imagesTr/pancreas_052.nii.gz", "label": "./labelsTr/pancreas_052.nii.gz"}, {"image": "./imagesTr/pancreas_056.nii.gz", "label": "./labelsTr/pancreas_056.nii.gz"}, {"image": "./imagesTr/pancreas_058.nii.gz", "label": "./labelsTr/pancreas_058.nii.gz"}, {"image": "./imagesTr/pancreas_061.nii.gz", "label": "./labelsTr/pancreas_061.nii.gz"}, {"image": "./imagesTr/pancreas_064.nii.gz", "label": "./labelsTr/pancreas_064.nii.gz"}, {"image": "./imagesTr/pancreas_067.nii.gz", "label": "./labelsTr/pancreas_067.nii.gz"}, {"image": "./imagesTr/pancreas_070.nii.gz", "label": "./labelsTr/pancreas_070.nii.gz"}, {"image": "./imagesTr/pancreas_074.nii.gz", "label": "./labelsTr/pancreas_074.nii.gz"}, {"image": "./imagesTr/pancreas_075.nii.gz", "label": "./labelsTr/pancreas_075.nii.gz"}, {"image": "./imagesTr/pancreas_077.nii.gz", "label": "./labelsTr/pancreas_077.nii.gz"}, {"image": "./imagesTr/pancreas_078.nii.gz", "label": "./labelsTr/pancreas_078.nii.gz"}, {"image": "./imagesTr/pancreas_081.nii.gz", "label": "./labelsTr/pancreas_081.nii.gz"}, {"image": "./imagesTr/pancreas_083.nii.gz", "label": "./labelsTr/pancreas_083.nii.gz"}, {"image": "./imagesTr/pancreas_084.nii.gz", "label": "./labelsTr/pancreas_084.nii.gz"}, {"image": "./imagesTr/pancreas_086.nii.gz", "label": "./labelsTr/pancreas_086.nii.gz"}, {"image": "./imagesTr/pancreas_087.nii.gz", "label": "./labelsTr/pancreas_087.nii.gz"}, {"image": "./imagesTr/pancreas_088.nii.gz", "label": "./labelsTr/pancreas_088.nii.gz"}, {"image": "./imagesTr/pancreas_089.nii.gz", "label": "./labelsTr/pancreas_089.nii.gz"}, {"image": "./imagesTr/pancreas_091.nii.gz", "label": "./labelsTr/pancreas_091.nii.gz"}, {"image": "./imagesTr/pancreas_092.nii.gz", "label": "./labelsTr/pancreas_092.nii.gz"}, {"image": "./imagesTr/pancreas_094.nii.gz", "label": "./labelsTr/pancreas_094.nii.gz"}, {"image": "./imagesTr/pancreas_095.nii.gz", "label": "./labelsTr/pancreas_095.nii.gz"}, {"image": "./imagesTr/pancreas_096.nii.gz", "label": "./labelsTr/pancreas_096.nii.gz"}, {"image": "./imagesTr/pancreas_098.nii.gz", "label": "./labelsTr/pancreas_098.nii.gz"}, {"image": "./imagesTr/pancreas_099.nii.gz", "label": "./labelsTr/pancreas_099.nii.gz"}, {"image": "./imagesTr/pancreas_101.nii.gz", "label": "./labelsTr/pancreas_101.nii.gz"}, {"image": "./imagesTr/pancreas_102.nii.gz", "label": "./labelsTr/pancreas_102.nii.gz"}, {"image": "./imagesTr/pancreas_103.nii.gz", "label": "./labelsTr/pancreas_103.nii.gz"}, {"image": "./imagesTr/pancreas_104.nii.gz", "label": "./labelsTr/pancreas_104.nii.gz"}, {"image": "./imagesTr/pancreas_106.nii.gz", "label": "./labelsTr/pancreas_106.nii.gz"}, {"image": "./imagesTr/pancreas_107.nii.gz", "label": "./labelsTr/pancreas_107.nii.gz"}, {"image": "./imagesTr/pancreas_109.nii.gz", "label": "./labelsTr/pancreas_109.nii.gz"}, {"image": "./imagesTr/pancreas_110.nii.gz", "label": "./labelsTr/pancreas_110.nii.gz"}, {"image": "./imagesTr/pancreas_111.nii.gz", "label": "./labelsTr/pancreas_111.nii.gz"}, {"image": "./imagesTr/pancreas_113.nii.gz", "label": "./labelsTr/pancreas_113.nii.gz"}, {"image": "./imagesTr/pancreas_114.nii.gz", "label": "./labelsTr/pancreas_114.nii.gz"}, {"image": "./imagesTr/pancreas_119.nii.gz", "label": "./labelsTr/pancreas_119.nii.gz"}, {"image": "./imagesTr/pancreas_120.nii.gz", "label": "./labelsTr/pancreas_120.nii.gz"}, {"image": "./imagesTr/pancreas_124.nii.gz", "label": "./labelsTr/pancreas_124.nii.gz"}, {"image": "./imagesTr/pancreas_126.nii.gz", "label": "./labelsTr/pancreas_126.nii.gz"}, {"image": "./imagesTr/pancreas_127.nii.gz", "label": "./labelsTr/pancreas_127.nii.gz"}, {"image": "./imagesTr/pancreas_131.nii.gz", "label": "./labelsTr/pancreas_131.nii.gz"}, {"image": "./imagesTr/pancreas_137.nii.gz", "label": "./labelsTr/pancreas_137.nii.gz"}, {"image": "./imagesTr/pancreas_138.nii.gz", "label": "./labelsTr/pancreas_138.nii.gz"}, {"image": "./imagesTr/pancreas_140.nii.gz", "label": "./labelsTr/pancreas_140.nii.gz"}, {"image": "./imagesTr/pancreas_145.nii.gz", "label": "./labelsTr/pancreas_145.nii.gz"}, {"image": "./imagesTr/pancreas_148.nii.gz", "label": "./labelsTr/pancreas_148.nii.gz"}, {"image": "./imagesTr/pancreas_149.nii.gz", "label": "./labelsTr/pancreas_149.nii.gz"}, {"image": "./imagesTr/pancreas_157.nii.gz", "label": "./labelsTr/pancreas_157.nii.gz"}, {"image": "./imagesTr/pancreas_158.nii.gz", "label": "./labelsTr/pancreas_158.nii.gz"}, {"image": "./imagesTr/pancreas_159.nii.gz", "label": "./labelsTr/pancreas_159.nii.gz"}, {"image": "./imagesTr/pancreas_160.nii.gz", "label": "./labelsTr/pancreas_160.nii.gz"}, {"image": "./imagesTr/pancreas_165.nii.gz", "label": "./labelsTr/pancreas_165.nii.gz"}, {"image": "./imagesTr/pancreas_166.nii.gz", "label": "./labelsTr/pancreas_166.nii.gz"}, {"image": "./imagesTr/pancreas_167.nii.gz", "label": "./labelsTr/pancreas_167.nii.gz"}, {"image": "./imagesTr/pancreas_169.nii.gz", "label": "./labelsTr/pancreas_169.nii.gz"}, {"image": "./imagesTr/pancreas_170.nii.gz", "label": "./labelsTr/pancreas_170.nii.gz"}, {"image": "./imagesTr/pancreas_172.nii.gz", "label": "./labelsTr/pancreas_172.nii.gz"}, {"image": "./imagesTr/pancreas_173.nii.gz", "label": "./labelsTr/pancreas_173.nii.gz"}, {"image": "./imagesTr/pancreas_175.nii.gz", "label": "./labelsTr/pancreas_175.nii.gz"}, {"image": "./imagesTr/pancreas_178.nii.gz", "label": "./labelsTr/pancreas_178.nii.gz"}, {"image": "./imagesTr/pancreas_180.nii.gz", "label": "./labelsTr/pancreas_180.nii.gz"}, {"image": "./imagesTr/pancreas_183.nii.gz", "label": "./labelsTr/pancreas_183.nii.gz"}, {"image": "./imagesTr/pancreas_186.nii.gz", "label": "./labelsTr/pancreas_186.nii.gz"}, {"image": "./imagesTr/pancreas_187.nii.gz", "label": "./labelsTr/pancreas_187.nii.gz"}, {"image": "./imagesTr/pancreas_191.nii.gz", "label": "./labelsTr/pancreas_191.nii.gz"}, {"image": "./imagesTr/pancreas_193.nii.gz", "label": "./labelsTr/pancreas_193.nii.gz"}, {"image": "./imagesTr/pancreas_194.nii.gz", "label": "./labelsTr/pancreas_194.nii.gz"}, {"image": "./imagesTr/pancreas_197.nii.gz", "label": "./labelsTr/pancreas_197.nii.gz"}, {"image": "./imagesTr/pancreas_198.nii.gz", "label": "./labelsTr/pancreas_198.nii.gz"}, {"image": "./imagesTr/pancreas_201.nii.gz", "label": "./labelsTr/pancreas_201.nii.gz"}, {"image": "./imagesTr/pancreas_203.nii.gz", "label": "./labelsTr/pancreas_203.nii.gz"}, {"image": "./imagesTr/pancreas_204.nii.gz", "label": "./labelsTr/pancreas_204.nii.gz"}, {"image": "./imagesTr/pancreas_207.nii.gz", "label": "./labelsTr/pancreas_207.nii.gz"}, {"image": "./imagesTr/pancreas_210.nii.gz", "label": "./labelsTr/pancreas_210.nii.gz"}, {"image": "./imagesTr/pancreas_211.nii.gz", "label": "./labelsTr/pancreas_211.nii.gz"}, {"image": "./imagesTr/pancreas_212.nii.gz", "label": "./labelsTr/pancreas_212.nii.gz"}, {"image": "./imagesTr/pancreas_213.nii.gz", "label": "./labelsTr/pancreas_213.nii.gz"}, {"image": "./imagesTr/pancreas_215.nii.gz", "label": "./labelsTr/pancreas_215.nii.gz"}, {"image": "./imagesTr/pancreas_218.nii.gz", "label": "./labelsTr/pancreas_218.nii.gz"}, {"image": "./imagesTr/pancreas_222.nii.gz", "label": "./labelsTr/pancreas_222.nii.gz"}, {"image": "./imagesTr/pancreas_224.nii.gz", "label": "./labelsTr/pancreas_224.nii.gz"}, {"image": "./imagesTr/pancreas_225.nii.gz", "label": "./labelsTr/pancreas_225.nii.gz"}, {"image": "./imagesTr/pancreas_226.nii.gz", "label": "./labelsTr/pancreas_226.nii.gz"}, {"image": "./imagesTr/pancreas_228.nii.gz", "label": "./labelsTr/pancreas_228.nii.gz"}, {"image": "./imagesTr/pancreas_229.nii.gz", "label": "./labelsTr/pancreas_229.nii.gz"}, {"image": "./imagesTr/pancreas_230.nii.gz", "label": "./labelsTr/pancreas_230.nii.gz"}, {"image": "./imagesTr/pancreas_235.nii.gz", "label": "./labelsTr/pancreas_235.nii.gz"}, {"image": "./imagesTr/pancreas_236.nii.gz", "label": "./labelsTr/pancreas_236.nii.gz"}, {"image": "./imagesTr/pancreas_239.nii.gz", "label": "./labelsTr/pancreas_239.nii.gz"}, {"image": "./imagesTr/pancreas_241.nii.gz", "label": "./labelsTr/pancreas_241.nii.gz"}, {"image": "./imagesTr/pancreas_242.nii.gz", "label": "./labelsTr/pancreas_242.nii.gz"}, {"image": "./imagesTr/pancreas_243.nii.gz", "label": "./labelsTr/pancreas_243.nii.gz"}, {"image": "./imagesTr/pancreas_244.nii.gz", "label": "./labelsTr/pancreas_244.nii.gz"}, {"image": "./imagesTr/pancreas_246.nii.gz", "label": "./labelsTr/pancreas_246.nii.gz"}, {"image": "./imagesTr/pancreas_247.nii.gz", "label": "./labelsTr/pancreas_247.nii.gz"}, {"image": "./imagesTr/pancreas_249.nii.gz", "label": "./labelsTr/pancreas_249.nii.gz"}, {"image": "./imagesTr/pancreas_253.nii.gz", "label": "./labelsTr/pancreas_253.nii.gz"}, {"image": "./imagesTr/pancreas_255.nii.gz", "label": "./labelsTr/pancreas_255.nii.gz"}, {"image": "./imagesTr/pancreas_256.nii.gz", "label": "./labelsTr/pancreas_256.nii.gz"}, {"image": "./imagesTr/pancreas_258.nii.gz", "label": "./labelsTr/pancreas_258.nii.gz"}, {"image": "./imagesTr/pancreas_259.nii.gz", "label": "./labelsTr/pancreas_259.nii.gz"}, {"image": "./imagesTr/pancreas_261.nii.gz", "label": "./labelsTr/pancreas_261.nii.gz"}, {"image": "./imagesTr/pancreas_262.nii.gz", "label": "./labelsTr/pancreas_262.nii.gz"}, {"image": "./imagesTr/pancreas_264.nii.gz", "label": "./labelsTr/pancreas_264.nii.gz"}, {"image": "./imagesTr/pancreas_265.nii.gz", "label": "./labelsTr/pancreas_265.nii.gz"}, {"image": "./imagesTr/pancreas_266.nii.gz", "label": "./labelsTr/pancreas_266.nii.gz"}, {"image": "./imagesTr/pancreas_267.nii.gz", "label": "./labelsTr/pancreas_267.nii.gz"}, {"image": "./imagesTr/pancreas_269.nii.gz", "label": "./labelsTr/pancreas_269.nii.gz"}, {"image": "./imagesTr/pancreas_270.nii.gz", "label": "./labelsTr/pancreas_270.nii.gz"}, {"image": "./imagesTr/pancreas_274.nii.gz", "label": "./labelsTr/pancreas_274.nii.gz"}, {"image": "./imagesTr/pancreas_275.nii.gz", "label": "./labelsTr/pancreas_275.nii.gz"}, {"image": "./imagesTr/pancreas_276.nii.gz", "label": "./labelsTr/pancreas_276.nii.gz"}, {"image": "./imagesTr/pancreas_277.nii.gz", "label": "./labelsTr/pancreas_277.nii.gz"}, {"image": "./imagesTr/pancreas_278.nii.gz", "label": "./labelsTr/pancreas_278.nii.gz"}, {"image": "./imagesTr/pancreas_279.nii.gz", "label": "./labelsTr/pancreas_279.nii.gz"}, {"image": "./imagesTr/pancreas_280.nii.gz", "label": "./labelsTr/pancreas_280.nii.gz"}, {"image": "./imagesTr/pancreas_283.nii.gz", "label": "./labelsTr/pancreas_283.nii.gz"}, {"image": "./imagesTr/pancreas_284.nii.gz", "label": "./labelsTr/pancreas_284.nii.gz"}, {"image": "./imagesTr/pancreas_285.nii.gz", "label": "./labelsTr/pancreas_285.nii.gz"}, {"image": "./imagesTr/pancreas_286.nii.gz", "label": "./labelsTr/pancreas_286.nii.gz"}, {"image": "./imagesTr/pancreas_287.nii.gz", "label": "./labelsTr/pancreas_287.nii.gz"}, {"image": "./imagesTr/pancreas_289.nii.gz", "label": "./labelsTr/pancreas_289.nii.gz"}, {"image": "./imagesTr/pancreas_290.nii.gz", "label": "./labelsTr/pancreas_290.nii.gz"}, {"image": "./imagesTr/pancreas_291.nii.gz", "label": "./labelsTr/pancreas_291.nii.gz"}, {"image": "./imagesTr/pancreas_292.nii.gz", "label": "./labelsTr/pancreas_292.nii.gz"}, {"image": "./imagesTr/pancreas_293.nii.gz", "label": "./labelsTr/pancreas_293.nii.gz"}, {"image": "./imagesTr/pancreas_294.nii.gz", "label": "./labelsTr/pancreas_294.nii.gz"}, {"image": "./imagesTr/pancreas_295.nii.gz", "label": "./labelsTr/pancreas_295.nii.gz"}, {"image": "./imagesTr/pancreas_296.nii.gz", "label": "./labelsTr/pancreas_296.nii.gz"}, {"image": "./imagesTr/pancreas_298.nii.gz", "label": "./labelsTr/pancreas_298.nii.gz"}, {"image": "./imagesTr/pancreas_299.nii.gz", "label": "./labelsTr/pancreas_299.nii.gz"}, {"image": "./imagesTr/pancreas_300.nii.gz", "label": "./labelsTr/pancreas_300.nii.gz"}, {"image": "./imagesTr/pancreas_301.nii.gz", "label": "./labelsTr/pancreas_301.nii.gz"}, {"image": "./imagesTr/pancreas_302.nii.gz", "label": "./labelsTr/pancreas_302.nii.gz"}, {"image": "./imagesTr/pancreas_303.nii.gz", "label": "./labelsTr/pancreas_303.nii.gz"}, {"image": "./imagesTr/pancreas_304.nii.gz", "label": "./labelsTr/pancreas_304.nii.gz"}, {"image": "./imagesTr/pancreas_305.nii.gz", "label": "./labelsTr/pancreas_305.nii.gz"}, {"image": "./imagesTr/pancreas_308.nii.gz", "label": "./labelsTr/pancreas_308.nii.gz"}, {"image": "./imagesTr/pancreas_309.nii.gz", "label": "./labelsTr/pancreas_309.nii.gz"}, {"image": "./imagesTr/pancreas_310.nii.gz", "label": "./labelsTr/pancreas_310.nii.gz"}, {"image": "./imagesTr/pancreas_312.nii.gz", "label": "./labelsTr/pancreas_312.nii.gz"}, {"image": "./imagesTr/pancreas_313.nii.gz", "label": "./labelsTr/pancreas_313.nii.gz"}, {"image": "./imagesTr/pancreas_315.nii.gz", "label": "./labelsTr/pancreas_315.nii.gz"}, {"image": "./imagesTr/pancreas_316.nii.gz", "label": "./labelsTr/pancreas_316.nii.gz"}, {"image": "./imagesTr/pancreas_318.nii.gz", "label": "./labelsTr/pancreas_318.nii.gz"}, {"image": "./imagesTr/pancreas_320.nii.gz", "label": "./labelsTr/pancreas_320.nii.gz"}, {"image": "./imagesTr/pancreas_323.nii.gz", "label": "./labelsTr/pancreas_323.nii.gz"}, {"image": "./imagesTr/pancreas_326.nii.gz", "label": "./labelsTr/pancreas_326.nii.gz"}, {"image": "./imagesTr/pancreas_327.nii.gz", "label": "./labelsTr/pancreas_327.nii.gz"}, {"image": "./imagesTr/pancreas_328.nii.gz", "label": "./labelsTr/pancreas_328.nii.gz"}, {"image": "./imagesTr/pancreas_329.nii.gz", "label": "./labelsTr/pancreas_329.nii.gz"}, {"image": "./imagesTr/pancreas_330.nii.gz", "label": "./labelsTr/pancreas_330.nii.gz"}, {"image": "./imagesTr/pancreas_331.nii.gz", "label": "./labelsTr/pancreas_331.nii.gz"}, {"image": "./imagesTr/pancreas_333.nii.gz", "label": "./labelsTr/pancreas_333.nii.gz"}, {"image": "./imagesTr/pancreas_334.nii.gz", "label": "./labelsTr/pancreas_334.nii.gz"}, {"image": "./imagesTr/pancreas_336.nii.gz", "label": "./labelsTr/pancreas_336.nii.gz"}, {"image": "./imagesTr/pancreas_339.nii.gz", "label": "./labelsTr/pancreas_339.nii.gz"}, {"image": "./imagesTr/pancreas_342.nii.gz", "label": "./labelsTr/pancreas_342.nii.gz"}, {"image": "./imagesTr/pancreas_343.nii.gz", "label": "./labelsTr/pancreas_343.nii.gz"}, {"image": "./imagesTr/pancreas_344.nii.gz", "label": "./labelsTr/pancreas_344.nii.gz"}, {"image": "./imagesTr/pancreas_346.nii.gz", "label": "./labelsTr/pancreas_346.nii.gz"}, {"image": "./imagesTr/pancreas_348.nii.gz", "label": "./labelsTr/pancreas_348.nii.gz"}, {"image": "./imagesTr/pancreas_350.nii.gz", "label": "./labelsTr/pancreas_350.nii.gz"}, {"image": "./imagesTr/pancreas_351.nii.gz", "label": "./labelsTr/pancreas_351.nii.gz"}, {"image": "./imagesTr/pancreas_354.nii.gz", "label": "./labelsTr/pancreas_354.nii.gz"}, {"image": "./imagesTr/pancreas_356.nii.gz", "label": "./labelsTr/pancreas_356.nii.gz"}, {"image": "./imagesTr/pancreas_357.nii.gz", "label": "./labelsTr/pancreas_357.nii.gz"}, {"image": "./imagesTr/pancreas_358.nii.gz", "label": "./labelsTr/pancreas_358.nii.gz"}, {"image": "./imagesTr/pancreas_361.nii.gz", "label": "./labelsTr/pancreas_361.nii.gz"}, {"image": "./imagesTr/pancreas_362.nii.gz", "label": "./labelsTr/pancreas_362.nii.gz"}, {"image": "./imagesTr/pancreas_366.nii.gz", "label": "./labelsTr/pancreas_366.nii.gz"}, {"image": "./imagesTr/pancreas_367.nii.gz", "label": "./labelsTr/pancreas_367.nii.gz"}, {"image": "./imagesTr/pancreas_369.nii.gz", "label": "./labelsTr/pancreas_369.nii.gz"}, {"image": "./imagesTr/pancreas_370.nii.gz", "label": "./labelsTr/pancreas_370.nii.gz"}, {"image": "./imagesTr/pancreas_372.nii.gz", "label": "./labelsTr/pancreas_372.nii.gz"}, {"image": "./imagesTr/pancreas_374.nii.gz", "label": "./labelsTr/pancreas_374.nii.gz"}, {"image": "./imagesTr/pancreas_377.nii.gz", "label": "./labelsTr/pancreas_377.nii.gz"}, {"image": "./imagesTr/pancreas_378.nii.gz", "label": "./labelsTr/pancreas_378.nii.gz"}, {"image": "./imagesTr/pancreas_379.nii.gz", "label": "./labelsTr/pancreas_379.nii.gz"}, {"image": "./imagesTr/pancreas_385.nii.gz", "label": "./labelsTr/pancreas_385.nii.gz"}, {"image": "./imagesTr/pancreas_386.nii.gz", "label": "./labelsTr/pancreas_386.nii.gz"}, {"image": "./imagesTr/pancreas_387.nii.gz", "label": "./labelsTr/pancreas_387.nii.gz"}, {"image": "./imagesTr/pancreas_388.nii.gz", "label": "./labelsTr/pancreas_388.nii.gz"}, {"image": "./imagesTr/pancreas_391.nii.gz", "label": "./labelsTr/pancreas_391.nii.gz"}, {"image": "./imagesTr/pancreas_392.nii.gz", "label": "./labelsTr/pancreas_392.nii.gz"}, {"image": "./imagesTr/pancreas_393.nii.gz", "label": "./labelsTr/pancreas_393.nii.gz"}, {"image": "./imagesTr/pancreas_395.nii.gz", "label": "./labelsTr/pancreas_395.nii.gz"}, {"image": "./imagesTr/pancreas_398.nii.gz", "label": "./labelsTr/pancreas_398.nii.gz"}, {"image": "./imagesTr/pancreas_400.nii.gz", "label": "./labelsTr/pancreas_400.nii.gz"}, {"image": "./imagesTr/pancreas_401.nii.gz", "label": "./labelsTr/pancreas_401.nii.gz"}, {"image": "./imagesTr/pancreas_405.nii.gz", "label": "./labelsTr/pancreas_405.nii.gz"}, {"image": "./imagesTr/pancreas_406.nii.gz", "label": "./labelsTr/pancreas_406.nii.gz"}, {"image": "./imagesTr/pancreas_409.nii.gz", "label": "./labelsTr/pancreas_409.nii.gz"}, {"image": "./imagesTr/pancreas_410.nii.gz", "label": "./labelsTr/pancreas_410.nii.gz"}, {"image": "./imagesTr/pancreas_412.nii.gz", "label": "./labelsTr/pancreas_412.nii.gz"}, {"image": "./imagesTr/pancreas_413.nii.gz", "label": "./labelsTr/pancreas_413.nii.gz"}, {"image": "./imagesTr/pancreas_415.nii.gz", "label": "./labelsTr/pancreas_415.nii.gz"}, {"image": "./imagesTr/pancreas_416.nii.gz", "label": "./labelsTr/pancreas_416.nii.gz"}, {"image": "./imagesTr/pancreas_421.nii.gz", "label": "./labelsTr/pancreas_421.nii.gz"}]} diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/create_dataset.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/create_dataset.py new file mode 100644 index 0000000000000000000000000000000000000000..9426067f92e20992f3bab8867a5572b537b2d25c --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/create_dataset.py @@ -0,0 +1,99 @@ +# Copyright (c) MONAI Consortium +# 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. + +import os + +import torch.distributed as dist +from monai.data import CacheDataset, DataLoader, load_decathlon_datalist, load_decathlon_properties, partition_dataset + +from task_params import task_name +from transforms import get_task_transforms + + +def get_data(args, batch_size=1, mode="train"): + # get necessary parameters: + fold = args.fold + task_id = args.task_id + root_dir = args.root_dir + datalist_path = args.datalist_path + dataset_path = os.path.join(root_dir, task_name[task_id]) + transform_params = (args.pos_sample_num, args.neg_sample_num, args.num_samples) + multi_gpu_flag = args.multi_gpu + + transform = get_task_transforms(mode, task_id, *transform_params) + if mode == "test": + list_key = "test" + else: + list_key = "{}_fold{}".format(mode, fold) + datalist_name = "dataset_task{}.json".format(task_id) + + property_keys = [ + "name", + "description", + "reference", + "licence", + "tensorImageSize", + "modality", + "labels", + "numTraining", + "numTest", + ] + + datalist = load_decathlon_datalist(os.path.join(datalist_path, datalist_name), True, list_key, dataset_path) + + properties = load_decathlon_properties(os.path.join(datalist_path, datalist_name), property_keys) + if mode in ["validation", "test"]: + if multi_gpu_flag: + datalist = partition_dataset( + data=datalist, + shuffle=False, + num_partitions=dist.get_world_size(), + even_divisible=False, + )[dist.get_rank()] + + val_ds = CacheDataset( + data=datalist, + transform=transform, + num_workers=4, + ) + + data_loader = DataLoader( + val_ds, + batch_size=batch_size, + shuffle=False, + num_workers=args.val_num_workers, + ) + elif mode == "train": + if multi_gpu_flag: + datalist = partition_dataset( + data=datalist, + shuffle=True, + num_partitions=dist.get_world_size(), + even_divisible=True, + )[dist.get_rank()] + + train_ds = CacheDataset( + data=datalist, + transform=transform, + num_workers=8, + cache_rate=args.cache_rate, + ) + data_loader = DataLoader( + train_ds, + batch_size=batch_size, + shuffle=True, + num_workers=args.train_num_workers, + drop_last=True, + ) + else: + raise ValueError(f"mode should be train, validation or test.") + + return properties, data_loader diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/create_network.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/create_network.py new file mode 100644 index 0000000000000000000000000000000000000000..5c4edad26dfd12bf0e6a3cd2ad7ccac492e47549 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/create_network.py @@ -0,0 +1,76 @@ +# Copyright (c) MONAI Consortium +# 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. + +import os + +import torch +from monai.networks.nets import DynUNet +from .task_params import deep_supr_num, patch_size, spacing + + +def get_kernels_strides(task_id): + """ + This function is only used for decathlon datasets with the provided patch sizes. + When refering this method for other tasks, please ensure that the patch size for each spatial dimension should + be divisible by the product of all strides in the corresponding dimension. + In addition, the minimal spatial size should have at least one dimension that has twice the size of + the product of all strides. For patch sizes that cannot find suitable strides, an error will be raised. + + """ + sizes, spacings = patch_size[task_id], spacing[task_id] + input_size = sizes + strides, kernels = [], [] + while True: + spacing_ratio = [sp / min(spacings) for sp in spacings] + stride = [2 if ratio <= 2 and size >= 8 else 1 for (ratio, size) in zip(spacing_ratio, sizes)] + kernel = [3 if ratio <= 2 else 1 for ratio in spacing_ratio] + if all(s == 1 for s in stride): + break + for idx, (i, j) in enumerate(zip(sizes, stride)): + if i % j != 0: + raise ValueError( + f"Patch size is not supported, please try to modify the size {input_size[idx]} in the spatial dimension {idx}." + ) + sizes = [i / j for i, j in zip(sizes, stride)] + spacings = [i * j for i, j in zip(spacings, stride)] + kernels.append(kernel) + strides.append(stride) + + strides.insert(0, len(spacings) * [1]) + kernels.append(len(spacings) * [3]) + return kernels, strides + + +def get_network(properties, task_id, pretrain_path, checkpoint=None): + n_class = len(properties["labels"]) + in_channels = len(properties["modality"]) + kernels, strides = get_kernels_strides(task_id) + + net = DynUNet( + spatial_dims=3, + in_channels=in_channels, + out_channels=n_class, + kernel_size=kernels, + strides=strides, + upsample_kernel_size=strides[1:], + norm_name="instance", + deep_supervision=True, + deep_supr_num=deep_supr_num[task_id], + ) + + if checkpoint is not None: + pretrain_path = os.path.join(pretrain_path, checkpoint) + if os.path.exists(pretrain_path): + net.load_state_dict(torch.load(pretrain_path)) + print("pretrained checkpoint: {} loaded".format(pretrain_path)) + else: + print("no pretrained checkpoint") + return net diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/inference.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/inference.py new file mode 100644 index 0000000000000000000000000000000000000000..ff0e5c2852419a018576d461d6ac195224330e53 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/inference.py @@ -0,0 +1,204 @@ +# Copyright (c) MONAI Consortium +# 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. + +import os +from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser + +import torch +import torch.distributed as dist +from monai.inferers import SlidingWindowInferer +from torch.nn.parallel import DistributedDataParallel + +from create_dataset import get_data +from create_network import get_network +from inferrer import DynUNetInferrer +from task_params import patch_size, task_name + + +def inference(args): + # load hyper parameters + task_id = args.task_id + checkpoint = args.checkpoint + val_output_dir = "./runs_{}_fold{}_{}/".format(args.task_id, args.fold, args.expr_name) + sw_batch_size = args.sw_batch_size + infer_output_dir = os.path.join(val_output_dir, task_name[task_id]) + window_mode = args.window_mode + eval_overlap = args.eval_overlap + amp = args.amp + tta_val = args.tta_val + multi_gpu_flag = args.multi_gpu + local_rank = args.local_rank + + if not os.path.exists(infer_output_dir): + os.makedirs(infer_output_dir) + + if multi_gpu_flag: + dist.init_process_group(backend="nccl", init_method="env://") + device = torch.device(f"cuda:{local_rank}") + torch.cuda.set_device(device) + else: + device = torch.device("cuda") + + properties, test_loader = get_data(args, mode="test") + + net = get_network(properties, task_id, val_output_dir, checkpoint) + net = net.to(device) + + if multi_gpu_flag: + net = DistributedDataParallel(module=net, device_ids=[device], find_unused_parameters=True) + + net.eval() + + inferrer = DynUNetInferrer( + device=device, + val_data_loader=test_loader, + network=net, + output_dir=infer_output_dir, + num_classes=len(properties["labels"]), + inferer=SlidingWindowInferer( + roi_size=patch_size[task_id], + sw_batch_size=sw_batch_size, + overlap=eval_overlap, + mode=window_mode, + ), + amp=amp, + tta_val=tta_val, + ) + + inferrer.run() + + +if __name__ == "__main__": + parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) + parser.add_argument("-fold", "--fold", type=int, default=0, help="0-5") + parser.add_argument("-task_id", "--task_id", type=str, default="02", help="task 01 to 10") + parser.add_argument( + "-root_dir", + "--root_dir", + type=str, + default="/workspace/data/medical/", + help="dataset path", + ) + parser.add_argument( + "-expr_name", + "--expr_name", + type=str, + default="expr", + help="the suffix of the experiment's folder", + ) + parser.add_argument( + "-datalist_path", + "--datalist_path", + type=str, + default="config/", + ) + parser.add_argument( + "-train_num_workers", + "--train_num_workers", + type=int, + default=4, + help="the num_workers parameter of training dataloader.", + ) + parser.add_argument( + "-val_num_workers", + "--val_num_workers", + type=int, + default=1, + help="the num_workers parameter of validation dataloader.", + ) + parser.add_argument( + "-interval", + "--interval", + type=int, + default=5, + help="the validation interval under epoch level.", + ) + parser.add_argument( + "-eval_overlap", + "--eval_overlap", + type=float, + default=0.5, + help="the overlap parameter of SlidingWindowInferer.", + ) + parser.add_argument( + "-sw_batch_size", + "--sw_batch_size", + type=int, + default=4, + help="the sw_batch_size parameter of SlidingWindowInferer.", + ) + parser.add_argument( + "-window_mode", + "--window_mode", + type=str, + default="gaussian", + choices=["constant", "gaussian"], + help="the mode parameter for SlidingWindowInferer.", + ) + parser.add_argument( + "-num_samples", + "--num_samples", + type=int, + default=3, + help="the num_samples parameter of RandCropByPosNegLabeld.", + ) + parser.add_argument( + "-pos_sample_num", + "--pos_sample_num", + type=int, + default=1, + help="the pos parameter of RandCropByPosNegLabeld.", + ) + parser.add_argument( + "-neg_sample_num", + "--neg_sample_num", + type=int, + default=1, + help="the neg parameter of RandCropByPosNegLabeld.", + ) + parser.add_argument( + "-cache_rate", + "--cache_rate", + type=float, + default=1.0, + help="the cache_rate parameter of CacheDataset.", + ) + parser.add_argument( + "-checkpoint", + "--checkpoint", + type=str, + default=None, + help="the filename of weights.", + ) + parser.add_argument( + "-amp", + "--amp", + type=bool, + default=False, + help="whether to use automatic mixed precision.", + ) + parser.add_argument( + "-tta_val", + "--tta_val", + type=bool, + default=False, + help="whether to use test time augmentation.", + ) + parser.add_argument( + "-multi_gpu", + "--multi_gpu", + type=bool, + default=False, + help="whether to use multiple GPUs for training.", + ) + parser.add_argument("-local_rank", "--local_rank", type=int, default=0) + args = parser.parse_args() + inference(args) diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/inferrer.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/inferrer.py new file mode 100644 index 0000000000000000000000000000000000000000..f56693deee97414ce7d3036ac9fa884c4e2ac879 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/inferrer.py @@ -0,0 +1,165 @@ +# Copyright (c) MONAI Consortium +# 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. + +import os +from typing import Any, Dict, Optional, Tuple, Union + +import numpy as np +import torch +import torch.nn as nn +from ignite.engine import Engine +from monai.data import decollate_batch +from monai.data.nifti_writer import write_nifti +from monai.engines import SupervisedEvaluator +from monai.engines.utils import IterationEvents +from monai.inferers import Inferer +from monai.networks.utils import eval_mode +from monai.transforms import AsDiscrete +from torch.utils.data import DataLoader + +from transforms import recovery_prediction + + +class DynUNetInferrer(SupervisedEvaluator): + """ + This class inherits from SupervisedEvaluator in MONAI, and is used with DynUNet + on Decathlon datasets. As a customized inferrer, some of the arguments from + SupervisedEvaluator are not supported. For example, the actual + post processing method used is hard coded in the `_iteration` function, thus the + argument `postprocessing` from SupervisedEvaluator is not exist. If you need + to change the post processing way, please modify the `_iteration` function directly. + + Args: + device: an object representing the device on which to run. + val_data_loader: Ignite engine use data_loader to run, must be + torch.DataLoader. + network: use the network to run model forward. + output_dir: the path to save inferred outputs. + num_classes: the number of classes (output channels) for the task. + inferer: inference method that execute model forward on input data, like: SlidingWindow, etc. + amp: whether to enable auto-mixed-precision evaluation, default is False. + tta_val: whether to do the 8 flips (8 = 2 ** 3, where 3 represents the three dimensions) + test time augmentation, default is False. + + """ + + def __init__( + self, + device: torch.device, + val_data_loader: DataLoader, + network: torch.nn.Module, + output_dir: str, + num_classes: Union[str, int], + inferer: Optional[Inferer] = None, + amp: bool = False, + tta_val: bool = False, + ) -> None: + super().__init__( + device=device, + val_data_loader=val_data_loader, + network=network, + inferer=inferer, + amp=amp, + ) + + if not isinstance(num_classes, int): + num_classes = int(num_classes) + self.post_pred = AsDiscrete(argmax=True, to_onehot=num_classes) + self.output_dir = output_dir + self.tta_val = tta_val + self.num_classes = num_classes + + def _iteration(self, engine: Engine, batchdata: Dict[str, Any]) -> Dict[str, torch.Tensor]: + """ + callback function for the Supervised Evaluation processing logic of 1 iteration in Ignite Engine. + Return below item in a dictionary: + - PRED: prediction result of model. + + Args: + engine: Ignite Engine, it can be a trainer, validator or evaluator. + batchdata: input data for this iteration, usually can be dictionary or tuple of Tensor data. + + Raises: + ValueError: When ``batchdata`` is None. + + """ + if batchdata is None: + raise ValueError("Must provide batch data for current iteration.") + batch = self.prepare_batch(batchdata, engine.state.device, engine.non_blocking) + if len(batch) == 2: + inputs, _ = batch + args: Tuple = () + kwargs: Dict = {} + else: + inputs, _, args, kwargs = batch + + def _compute_pred(): + ct = 1.0 + pred = self.inferer(inputs, self.network, *args, **kwargs).cpu() + pred = nn.functional.softmax(pred, dim=1) + if not self.tta_val: + return pred + else: + for dims in [[2], [3], [4], (2, 3), (2, 4), (3, 4), (2, 3, 4)]: + flip_inputs = torch.flip(inputs, dims=dims) + flip_pred = torch.flip(self.inferer(flip_inputs, self.network).cpu(), dims=dims) + flip_pred = nn.functional.softmax(flip_pred, dim=1) + del flip_inputs + pred += flip_pred + del flip_pred + ct += 1 + return pred / ct + + # execute forward computation + with eval_mode(self.network): + if self.amp: + with torch.cuda.amp.autocast(): + predictions = _compute_pred() + else: + predictions = _compute_pred() + + inputs = inputs.cpu() + predictions = self.post_pred(decollate_batch(predictions)[0]) + + affine = batchdata["image_meta_dict"]["affine"].numpy()[0] + resample_flag = batchdata["resample_flag"] + anisotrophy_flag = batchdata["anisotrophy_flag"] + crop_shape = batchdata["crop_shape"][0].tolist() + original_shape = batchdata["original_shape"][0].tolist() + + if resample_flag: + # convert the prediction back to the original (after cropped) shape + predictions = recovery_prediction(predictions.numpy(), [self.num_classes, *crop_shape], anisotrophy_flag) + else: + predictions = predictions.numpy() + + predictions = np.argmax(predictions, axis=0) + + # pad the prediction back to the original shape + predictions_org = np.zeros([*original_shape]) + box_start, box_end = batchdata["bbox"][0] + h_start, w_start, d_start = box_start + h_end, w_end, d_end = box_end + predictions_org[h_start:h_end, w_start:w_end, d_start:d_end] = predictions + del predictions + + filename = batchdata["image_meta_dict"]["filename_or_obj"][0].split("/")[-1] + + print("save {} with shape: {}, mean values: {}".format(filename, predictions_org.shape, predictions_org.mean())) + write_nifti( + data=predictions_org, + file_name=os.path.join(self.output_dir, filename), + affine=affine, + resample=False, + output_dtype=np.uint8, + ) + engine.fire_event(IterationEvents.FORWARD_COMPLETED) + return {"pred": predictions_org} diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/task_params.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/task_params.py new file mode 100644 index 0000000000000000000000000000000000000000..e44103c645ab679862187ed0f755e9039a031111 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/task_params.py @@ -0,0 +1,105 @@ +# Copyright (c) MONAI Consortium +# 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. + +task_name = { + "01": "Task01_BrainTumour", + "02": "Task02_Heart", + "03": "Task03_Liver", + "04": "Task04_Hippocampus", + "05": "Task05_Prostate", + "06": "Task06_Lung", + "07": "Task07_Pancreas", + "08": "Task08_HepaticVessel", + "09": "Task09_Spleen", + "10": "Task10_Colon", +} + +patch_size = { + "01": [128, 128, 128], + "02": [160, 192, 80], + "03": [128, 128, 128], + "custom": [96, 96, 96], + "04": [40, 56, 40], + "05": [320, 256, 20], + "06": [192, 160, 80], + # "07": [224, 224, 40], + "07": [96, 96, 96], + "08": [192, 192, 64], + "09": [192, 160, 64], + "10": [192, 160, 56], +} + +spacing = { + "01": [1.0, 1.0, 1.0], + "02": [1.25, 1.25, 1.37], + "03": [0.77, 0.77, 1], + "04": [1.0, 1.0, 1.0], + "05": [0.62, 0.62, 3.6], + "06": [0.79, 0.79, 1.24], + "07": [0.8, 0.8, 2.5], + "08": [0.8, 0.8, 1.5], + "09": [0.79, 0.79, 1.6], + "10": [0.78, 0.78, 3], + "custom": [0.77, 0.77, 1], +} + +clip_values = { + "01": [0, 0], + "02": [0, 0], + "03": [-17, 201], + "04": [0, 0], + "05": [0, 0], + "06": [-1024, 325], + "07": [-96, 215], + "08": [-3, 243], + "09": [-41, 176], + "10": [-30, 165.82], +} + +normalize_values = { + "01": [0, 0], + "02": [0, 0], + "03": [99.40, 39.36], + "04": [0, 0], + "05": [0, 0], + "06": [-158.58, 324.7], + "07": [77.99, 75.4], + "08": [104.37, 52.62], + "09": [99.29, 39.47], + "10": [62.18, 32.65], +} + +data_loader_params = { + "01": {"batch_size": 8}, + "02": {"batch_size": 2}, + "03": {"batch_size": 8}, + "04": {"batch_size": 9}, + "05": {"batch_size": 2}, + "06": {"batch_size": 2}, + "07": {"batch_size": 2}, + "08": {"batch_size": 2}, + "09": {"batch_size": 2}, + "10": {"batch_size": 2}, +} + +deep_supr_num = { + "01": 3, + "02": 3, + "03": 3, + "04": 1, + "05": 4, + "06": 3, + "07": 3, + "08": 3, + "09": 3, + "10": 3, + "custom": 3, +} diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/train.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/train.py new file mode 100644 index 0000000000000000000000000000000000000000..a3f1de8224f50a6da9c62c6b3de1a05f1d2b7b87 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/train.py @@ -0,0 +1,387 @@ +# Copyright (c) MONAI Consortium +# 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. + +import logging +import os +from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser + +import ignite.distributed as idist +import torch +import torch.distributed as dist +from monai.config import print_config +from monai.handlers import CheckpointSaver, LrScheduleHandler, MeanDice, StatsHandler, ValidationHandler, from_engine +from monai.inferers import SimpleInferer, SlidingWindowInferer +from monai.losses import DiceCELoss +from monai.utils import set_determinism +from torch.nn.parallel import DistributedDataParallel + +from create_dataset import get_data +from create_network import get_network +from evaluator import DynUNetEvaluator +from task_params import data_loader_params, patch_size +from trainer import DynUNetTrainer + + +def validation(args): + # load hyper parameters + task_id = args.task_id + sw_batch_size = args.sw_batch_size + tta_val = args.tta_val + window_mode = args.window_mode + eval_overlap = args.eval_overlap + multi_gpu_flag = args.multi_gpu + local_rank = args.local_rank + amp = args.amp + + # produce the network + checkpoint = args.checkpoint + val_output_dir = "./runs_{}_fold{}_{}/".format(task_id, args.fold, args.expr_name) + + if multi_gpu_flag: + dist.init_process_group(backend="nccl", init_method="env://") + device = torch.device(f"cuda:{local_rank}") + torch.cuda.set_device(device) + else: + device = torch.device("cuda") + + properties, val_loader = get_data(args, mode="validation") + net = get_network(properties, task_id, val_output_dir, checkpoint) + net = net.to(device) + + if multi_gpu_flag: + net = DistributedDataParallel(module=net, device_ids=[device]) + + num_classes = len(properties["labels"]) + + net.eval() + + evaluator = DynUNetEvaluator( + device=device, + val_data_loader=val_loader, + network=net, + num_classes=num_classes, + inferer=SlidingWindowInferer( + roi_size=patch_size[task_id], + sw_batch_size=sw_batch_size, + overlap=eval_overlap, + mode=window_mode, + ), + postprocessing=None, + key_val_metric={ + "val_mean_dice": MeanDice( + include_background=False, + output_transform=from_engine(["pred", "label"]), + ) + }, + additional_metrics=None, + amp=amp, + tta_val=tta_val, + ) + + evaluator.run() + if local_rank == 0: + print(evaluator.state.metrics) + results = evaluator.state.metric_details["val_mean_dice"] + if num_classes > 2: + for i in range(num_classes - 1): + print("mean dice for label {} is {}".format(i + 1, results[:, i].mean())) + + if multi_gpu_flag: + dist.destroy_process_group() + + +def train(args): + # load hyper parameters + task_id = args.task_id + fold = args.fold + val_output_dir = "./runs_{}_fold{}_{}/".format(task_id, fold, args.expr_name) + log_filename = "nnunet_task{}_fold{}.log".format(task_id, fold) + log_filename = os.path.join(val_output_dir, log_filename) + interval = args.interval + learning_rate = args.learning_rate + max_epochs = args.max_epochs + multi_gpu_flag = args.multi_gpu + amp_flag = args.amp + lr_decay_flag = args.lr_decay + sw_batch_size = args.sw_batch_size + tta_val = args.tta_val + batch_dice = args.batch_dice + window_mode = args.window_mode + eval_overlap = args.eval_overlap + local_rank = args.local_rank + determinism_flag = args.determinism_flag + determinism_seed = args.determinism_seed + if determinism_flag: + set_determinism(seed=determinism_seed) + if local_rank == 0: + print("Using deterministic training.") + + # transforms + train_batch_size = data_loader_params[task_id]["batch_size"] + if multi_gpu_flag: + dist.init_process_group(backend="nccl", init_method="env://") + + device = torch.device(f"cuda:{local_rank}") + torch.cuda.set_device(device) + else: + device = torch.device("cuda") + + properties, val_loader = get_data(args, mode="validation") + _, train_loader = get_data(args, batch_size=train_batch_size, mode="train") + + # produce the network + checkpoint = args.checkpoint + net = get_network(properties, task_id, val_output_dir, checkpoint) + net = net.to(device) + + if multi_gpu_flag: + net = DistributedDataParallel(module=net, device_ids=[device]) + + optimizer = torch.optim.SGD( + net.parameters(), + lr=learning_rate, + momentum=0.99, + weight_decay=3e-5, + nesterov=True, + ) + + scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda epoch: (1 - epoch / max_epochs) ** 0.9) + # produce evaluator + val_handlers = ( + [ + StatsHandler(output_transform=lambda x: None), + CheckpointSaver(save_dir=val_output_dir, save_dict={"net": net}, save_key_metric=True), + ] + if idist.get_rank() == 0 + else None + ) + + evaluator = DynUNetEvaluator( + device=device, + val_data_loader=val_loader, + network=net, + num_classes=len(properties["labels"]), + inferer=SlidingWindowInferer( + roi_size=patch_size[task_id], + sw_batch_size=sw_batch_size, + overlap=eval_overlap, + mode=window_mode, + ), + postprocessing=None, + key_val_metric={ + "val_mean_dice": MeanDice( + include_background=False, + output_transform=from_engine(["pred", "label"]), + ) + }, + val_handlers=val_handlers, + amp=amp_flag, + tta_val=tta_val, + ) + + # produce trainer + loss = DiceCELoss(to_onehot_y=True, softmax=True, batch=batch_dice) + train_handlers = [ValidationHandler(validator=evaluator, interval=interval, epoch_level=True)] + if lr_decay_flag: + train_handlers += [LrScheduleHandler(lr_scheduler=scheduler, print_lr=True)] + if idist.get_rank() == 0: + train_handlers += [ + StatsHandler( + tag_name="train_loss", + output_transform=from_engine(["loss"], first=True), + ) + ] + + trainer = DynUNetTrainer( + device=device, + max_epochs=max_epochs, + train_data_loader=train_loader, + network=net, + optimizer=optimizer, + loss_function=loss, + inferer=SimpleInferer(), + postprocessing=None, + key_train_metric=None, + train_handlers=train_handlers, + amp=amp_flag, + ) + + if local_rank > 0: + evaluator.logger.setLevel(logging.WARNING) + trainer.logger.setLevel(logging.WARNING) + + trainer.run() + if multi_gpu_flag: + dist.destroy_process_group() + + +if __name__ == "__main__": + parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) + parser.add_argument("-fold", "--fold", type=int, default=0, help="0-5") + parser.add_argument("-task_id", "--task_id", type=str, default="04", help="task 01 to 10") + parser.add_argument( + "-root_dir", + "--root_dir", + type=str, + default="/workspace/data/medical/", + help="dataset path", + ) + parser.add_argument( + "-expr_name", + "--expr_name", + type=str, + default="expr", + help="the suffix of the experiment's folder", + ) + parser.add_argument( + "-datalist_path", + "--datalist_path", + type=str, + default="config/", + ) + parser.add_argument( + "-train_num_workers", + "--train_num_workers", + type=int, + default=4, + help="the num_workers parameter of training dataloader.", + ) + parser.add_argument( + "-val_num_workers", + "--val_num_workers", + type=int, + default=1, + help="the num_workers parameter of validation dataloader.", + ) + parser.add_argument( + "-interval", + "--interval", + type=int, + default=5, + help="the validation interval under epoch level.", + ) + parser.add_argument( + "-eval_overlap", + "--eval_overlap", + type=float, + default=0.5, + help="the overlap parameter of SlidingWindowInferer.", + ) + parser.add_argument( + "-sw_batch_size", + "--sw_batch_size", + type=int, + default=4, + help="the sw_batch_size parameter of SlidingWindowInferer.", + ) + parser.add_argument( + "-window_mode", + "--window_mode", + type=str, + default="gaussian", + choices=["constant", "gaussian"], + help="the mode parameter for SlidingWindowInferer.", + ) + parser.add_argument( + "-num_samples", + "--num_samples", + type=int, + default=3, + help="the num_samples parameter of RandCropByPosNegLabeld.", + ) + parser.add_argument( + "-pos_sample_num", + "--pos_sample_num", + type=int, + default=1, + help="the pos parameter of RandCropByPosNegLabeld.", + ) + parser.add_argument( + "-neg_sample_num", + "--neg_sample_num", + type=int, + default=1, + help="the neg parameter of RandCropByPosNegLabeld.", + ) + parser.add_argument( + "-cache_rate", + "--cache_rate", + type=float, + default=1.0, + help="the cache_rate parameter of CacheDataset.", + ) + parser.add_argument("-learning_rate", "--learning_rate", type=float, default=1e-2) + parser.add_argument( + "-max_epochs", + "--max_epochs", + type=int, + default=1000, + help="number of epochs of training.", + ) + parser.add_argument("-mode", "--mode", type=str, default="train", choices=["train", "val"]) + parser.add_argument( + "-checkpoint", + "--checkpoint", + type=str, + default=None, + help="the filename of weights.", + ) + parser.add_argument( + "-amp", + "--amp", + type=bool, + default=False, + help="whether to use automatic mixed precision.", + ) + parser.add_argument( + "-lr_decay", + "--lr_decay", + type=bool, + default=False, + help="whether to use learning rate decay.", + ) + parser.add_argument( + "-tta_val", + "--tta_val", + type=bool, + default=False, + help="whether to use test time augmentation.", + ) + parser.add_argument( + "-batch_dice", + "--batch_dice", + type=bool, + default=False, + help="the batch parameter of DiceCELoss.", + ) + parser.add_argument("-determinism_flag", "--determinism_flag", type=bool, default=False) + parser.add_argument( + "-determinism_seed", + "--determinism_seed", + type=int, + default=0, + help="the seed used in deterministic training", + ) + parser.add_argument( + "-multi_gpu", + "--multi_gpu", + type=bool, + default=False, + help="whether to use multiple GPUs for training.", + ) + parser.add_argument("-local_rank", "--local_rank", type=int, default=0) + args = parser.parse_args() + if args.local_rank == 0: + print_config() + if args.mode == "train": + train(args) + elif args.mode == "val": + validation(args) diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/transforms.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/transforms.py new file mode 100644 index 0000000000000000000000000000000000000000..acb86396ca7c379bbcd0de47cc2b33bd24c94627 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/dynunet_pipeline/transforms.py @@ -0,0 +1,347 @@ +# Copyright (c) MONAI Consortium +# 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. + +import numpy as np +from monai.transforms import ( + CastToTyped, + Compose, + CropForegroundd, + EnsureChannelFirstd, + LoadImaged, + NormalizeIntensity, + RandCropByPosNegLabeld, + RandFlipd, + RandGaussianNoised, + RandGaussianSmoothd, + RandScaleIntensityd, + RandZoomd, + SpatialCrop, + SpatialPadd, + ToTensord, + EnsureTyped, +) +from monai.transforms.compose import MapTransform +from monai.transforms.utils import generate_spatial_bounding_box +from skimage.transform import resize + +from task_params import clip_values, normalize_values, patch_size, spacing + + +def get_task_transforms(mode, task_id, pos_sample_num, neg_sample_num, num_samples): + if mode != "test": + keys = ["image", "label"] + else: + keys = ["image"] + + load_transforms = [ + LoadImaged(keys=keys), + EnsureChannelFirstd(keys=keys), + ] + # 2. sampling + sample_transforms = [ + PreprocessAnisotropic( + keys=keys, + clip_values=clip_values[task_id], + pixdim=spacing[task_id], + normalize_values=normalize_values[task_id], + model_mode=mode, + ), + ToTensord(keys="image"), + ] + # 3. spatial transforms + if mode == "train": + other_transforms = [ + SpatialPadd(keys=["image", "label"], spatial_size=patch_size[task_id]), + RandCropByPosNegLabeld( + keys=["image", "label"], + label_key="label", + spatial_size=patch_size[task_id], + pos=pos_sample_num, + neg=neg_sample_num, + num_samples=num_samples, + image_key="image", + image_threshold=0, + ), + RandZoomd( + keys=["image", "label"], + min_zoom=0.9, + max_zoom=1.2, + mode=("trilinear", "nearest"), + align_corners=(True, None), + prob=0.15, + ), + RandGaussianNoised(keys=["image"], std=0.01, prob=0.15), + RandGaussianSmoothd( + keys=["image"], + sigma_x=(0.5, 1.15), + sigma_y=(0.5, 1.15), + sigma_z=(0.5, 1.15), + prob=0.15, + ), + RandScaleIntensityd(keys=["image"], factors=0.3, prob=0.15), + RandFlipd(["image", "label"], spatial_axis=[0], prob=0.5), + RandFlipd(["image", "label"], spatial_axis=[1], prob=0.5), + RandFlipd(["image", "label"], spatial_axis=[2], prob=0.5), + CastToTyped(keys=["image", "label"], dtype=(np.float32, np.uint8)), + EnsureTyped(keys=["image", "label"]), + ] + elif mode == "validation": + other_transforms = [ + CastToTyped(keys=["image", "label"], dtype=(np.float32, np.uint8)), + EnsureTyped(keys=["image", "label"]), + ] + else: + other_transforms = [ + CastToTyped(keys=["image"], dtype=(np.float32)), + EnsureTyped(keys=["image"]), + ] + + all_transforms = load_transforms + sample_transforms + other_transforms + return Compose(all_transforms) + + +def resample_image(image, shape, anisotrophy_flag): + resized_channels = [] + if anisotrophy_flag: + for image_c in image: + resized_slices = [] + for i in range(image_c.shape[-1]): + image_c_2d_slice = image_c[:, :, i] + image_c_2d_slice = resize( + image_c_2d_slice, + shape[:-1], + order=3, + mode="edge", + cval=0, + clip=True, + anti_aliasing=False, + ) + resized_slices.append(image_c_2d_slice) + resized = np.stack(resized_slices, axis=-1) + resized = resize( + resized, + shape, + order=0, + mode="constant", + cval=0, + clip=True, + anti_aliasing=False, + ) + resized_channels.append(resized) + else: + for image_c in image: + resized = resize( + image_c, + shape, + order=3, + mode="edge", + cval=0, + clip=True, + anti_aliasing=False, + ) + resized_channels.append(resized) + resized = np.stack(resized_channels, axis=0) + return resized + + +def resample_label(label, shape, anisotrophy_flag): + reshaped = np.zeros(shape, dtype=np.uint8) + n_class = np.max(label) + if anisotrophy_flag: + shape_2d = shape[:-1] + depth = label.shape[-1] + reshaped_2d = np.zeros((*shape_2d, depth), dtype=np.uint8) + + for class_ in range(1, int(n_class) + 1): + for depth_ in range(depth): + mask = label[0, :, :, depth_] == class_ + resized_2d = resize( + mask.astype(float), + shape_2d, + order=1, + mode="edge", + cval=0, + clip=True, + anti_aliasing=False, + ) + reshaped_2d[:, :, depth_][resized_2d >= 0.5] = class_ + for class_ in range(1, int(n_class) + 1): + mask = reshaped_2d == class_ + resized = resize( + mask.astype(float), + shape, + order=0, + mode="constant", + cval=0, + clip=True, + anti_aliasing=False, + ) + reshaped[resized >= 0.5] = class_ + else: + for class_ in range(1, int(n_class) + 1): + mask = label[0] == class_ + resized = resize( + mask.astype(float), + shape, + order=1, + mode="edge", + cval=0, + clip=True, + anti_aliasing=False, + ) + reshaped[resized >= 0.5] = class_ + + reshaped = np.expand_dims(reshaped, 0) + return reshaped + + +def recovery_prediction(prediction, shape, anisotrophy_flag): + reshaped = np.zeros(shape, dtype=np.uint8) + n_class = shape[0] + if anisotrophy_flag: + c, h, w = prediction.shape[:-1] + d = shape[-1] + reshaped_d = np.zeros((c, h, w, d), dtype=np.uint8) + for class_ in range(1, n_class): + mask = prediction[class_] == 1 + resized_d = resize( + mask.astype(float), + (h, w, d), + order=0, + mode="constant", + cval=0, + clip=True, + anti_aliasing=False, + ) + reshaped_d[class_][resized_d >= 0.5] = 1 + + for class_ in range(1, n_class): + for depth_ in range(d): + mask = reshaped_d[class_, :, :, depth_] == 1 + resized_hw = resize( + mask.astype(float), + shape[1:-1], + order=1, + mode="edge", + cval=0, + clip=True, + anti_aliasing=False, + ) + reshaped[class_, :, :, depth_][resized_hw >= 0.5] = 1 + else: + for class_ in range(1, n_class): + mask = prediction[class_] == 1 + resized = resize( + mask.astype(float), + shape[1:], + order=1, + mode="edge", + cval=0, + clip=True, + anti_aliasing=False, + ) + reshaped[class_][resized >= 0.5] = 1 + + return reshaped + + +class PreprocessAnisotropic(MapTransform): + """ + This transform class takes NNUNet's preprocessing method for reference. + That code is in: + https://github.com/MIC-DKFZ/nnUNet/blob/master/nnunet/preprocessing/preprocessing.py + + """ + + def __init__( + self, + keys, + clip_values, + pixdim, + normalize_values, + model_mode, + ) -> None: + super().__init__(keys) + self.keys = keys + self.low = clip_values[0] + self.high = clip_values[1] + self.target_spacing = pixdim + self.mean = normalize_values[0] + self.std = normalize_values[1] + self.training = False + self.crop_foreg = CropForegroundd(keys=["image", "label"], source_key="image") + self.normalize_intensity = NormalizeIntensity(nonzero=True, channel_wise=True) + if model_mode in ["train"]: + self.training = True + + def calculate_new_shape(self, spacing, shape): + spacing_ratio = np.array(spacing) / np.array(self.target_spacing) + new_shape = (spacing_ratio * np.array(shape)).astype(int).tolist() + return new_shape + + def check_anisotrophy(self, spacing): + def check(spacing): + return np.max(spacing) / np.min(spacing) >= 3 + + return check(spacing) or check(self.target_spacing) + + def __call__(self, data): + # load data + d = dict(data) + image = d["image"] + + image_spacings = d["image_meta_dict"]["pixdim"][1:4].tolist() + + if "label" in self.keys: + label = d["label"] + label[label < 0] = 0 + + if self.training: + # only task 04 does not be impacted + cropped_data = self.crop_foreg({"image": image, "label": label}) + image, label = cropped_data["image"], cropped_data["label"] + else: + d["original_shape"] = np.array(image.shape[1:]) + box_start, box_end = generate_spatial_bounding_box(image) + image = SpatialCrop(roi_start=box_start, roi_end=box_end)(image) + d["bbox"] = np.vstack([box_start, box_end]) + d["crop_shape"] = np.array(image.shape[1:]) + + original_shape = image.shape[1:] + # calculate shape + resample_flag = False + anisotrophy_flag = False + + image = image.numpy() + if self.target_spacing != image_spacings: + # resample + resample_flag = True + resample_shape = self.calculate_new_shape(image_spacings, original_shape) + anisotrophy_flag = self.check_anisotrophy(image_spacings) + image = resample_image(image, resample_shape, anisotrophy_flag) + if self.training: + label = resample_label(label, resample_shape, anisotrophy_flag) + + d["resample_flag"] = resample_flag + d["anisotrophy_flag"] = anisotrophy_flag + # clip image for CT dataset + if self.low != 0 or self.high != 0: + image = np.clip(image, self.low, self.high) + image = (image - self.mean) / self.std + else: + image = self.normalize_intensity(image.copy()) + + d["image"] = image + + if "label" in self.keys: + d["label"] = label + + return d diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/LICENSE b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d645695673349e3947e8e5ae42332d0ac3164cd7 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/LICENSE @@ -0,0 +1,202 @@ + + 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 [yyyy] [name of copyright owner] + + 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. diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/README.md b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0d11d7d60f001be2fa9813a3c4c4dce4d45634b3 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/README.md @@ -0,0 +1,27 @@ +# Surface distance metrics + +## Summary +When comparing multiple image segmentations, performance metrics that assess how closely the surfaces align can be a useful difference measure. This group of surface distance based measures computes the closest distances from all surface points on one segmentation to the points on another surface, and returns performance metrics between the two. This distance can be used alongside other metrics to compare segmented regions against a ground truth. + +Surfaces are represented using surface elements with corresponding area, allowing for more consistent approximation of surface measures. + +## Metrics included +This library computes the following performance metrics for segmentation: + +- Average surface distance (see `compute_average_surface_distance`) +- Hausdorff distance (see `compute_robust_hausdorff`) +- Surface overlap (see `compute_surface_overlap_at_tolerance`) +- Surface dice (see `compute_surface_dice_at_tolerance`) +- Volumetric dice (see `compute_dice_coefficient`) + +## Installation +First clone the repo, then install the dependencies and `surface-distance` +package via pip: + +```shell +$ git clone https://github.com/deepmind/surface-distance.git +$ pip install surface-distance/ +``` + +## Usage +For simple usage examples, see `surface_distance_test.py`. diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/surface_distance/metrics.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/surface_distance/metrics.py new file mode 100644 index 0000000000000000000000000000000000000000..427812abbfbbe7e31965a9d1086c8cf38d03fe9c --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/surface_distance/metrics.py @@ -0,0 +1,443 @@ +# Copyright 2018 Google Inc. All Rights Reserved. +# +# 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. +"""Module exposing surface distance based measures.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from . import lookup_tables # pylint: disable=relative-beyond-top-level +import numpy as np +from scipy import ndimage + + +def _assert_is_numpy_array(name, array): + """Raises an exception if `array` is not a numpy array.""" + if not isinstance(array, np.ndarray): + raise ValueError("The argument {!r} should be a numpy array, not a " + "{}".format(name, type(array))) + + +def _check_nd_numpy_array(name, array, num_dims): + """Raises an exception if `array` is not a `num_dims`-D numpy array.""" + if len(array.shape) != num_dims: + raise ValueError("The argument {!r} should be a {}D array, not of " + "shape {}".format(name, num_dims, array.shape)) + + +def _check_2d_numpy_array(name, array): + _check_nd_numpy_array(name, array, num_dims=2) + + +def _check_3d_numpy_array(name, array): + _check_nd_numpy_array(name, array, num_dims=3) + + +def _assert_is_bool_numpy_array(name, array): + _assert_is_numpy_array(name, array) + if array.dtype != np.bool: + raise ValueError("The argument {!r} should be a numpy array of type bool, " + "not {}".format(name, array.dtype)) + + +def _compute_bounding_box(mask): + """Computes the bounding box of the masks. + + This function generalizes to arbitrary number of dimensions great or equal + to 1. + + Args: + mask: The 2D or 3D numpy mask, where '0' means background and non-zero means + foreground. + + Returns: + A tuple: + - The coordinates of the first point of the bounding box (smallest on all + axes), or `None` if the mask contains only zeros. + - The coordinates of the second point of the bounding box (greatest on all + axes), or `None` if the mask contains only zeros. + """ + num_dims = len(mask.shape) + bbox_min = np.zeros(num_dims, np.int64) + bbox_max = np.zeros(num_dims, np.int64) + + # max projection to the x0-axis + proj_0 = np.amax(mask, axis=tuple(range(num_dims))[1:]) + idx_nonzero_0 = np.nonzero(proj_0)[0] + if len(idx_nonzero_0) == 0: # pylint: disable=g-explicit-length-test + return None, None + + bbox_min[0] = np.min(idx_nonzero_0) + bbox_max[0] = np.max(idx_nonzero_0) + + # max projection to the i-th-axis for i in {1, ..., num_dims - 1} + for axis in range(1, num_dims): + max_over_axes = list(range(num_dims)) # Python 3 compatible + max_over_axes.pop(axis) # Remove the i-th dimension from the max + max_over_axes = tuple(max_over_axes) # numpy expects a tuple of ints + proj = np.amax(mask, axis=max_over_axes) + idx_nonzero = np.nonzero(proj)[0] + bbox_min[axis] = np.min(idx_nonzero) + bbox_max[axis] = np.max(idx_nonzero) + + return bbox_min, bbox_max + + +def _crop_to_bounding_box(mask, bbox_min, bbox_max): + """Crops a 2D or 3D mask to the bounding box specified by `bbox_{min,max}`.""" + # we need to zeropad the cropped region with 1 voxel at the lower, + # the right (and the back on 3D) sides. This is required to obtain the + # "full" convolution result with the 2x2 (or 2x2x2 in 3D) kernel. + # TODO: This is correct only if the object is interior to the + # bounding box. + cropmask = np.zeros((bbox_max - bbox_min) + 2, np.uint8) + + num_dims = len(mask.shape) + # pyformat: disable + if num_dims == 2: + cropmask[0:-1, 0:-1] = mask[bbox_min[0]:bbox_max[0] + 1, + bbox_min[1]:bbox_max[1] + 1] + elif num_dims == 3: + cropmask[0:-1, 0:-1, 0:-1] = mask[bbox_min[0]:bbox_max[0] + 1, + bbox_min[1]:bbox_max[1] + 1, + bbox_min[2]:bbox_max[2] + 1] + # pyformat: enable + else: + assert False + + return cropmask + + +def _sort_distances_surfels(distances, surfel_areas): + """Sorts the two list with respect to the tuple of (distance, surfel_area). + + Args: + distances: The distances from A to B (e.g. `distances_gt_to_pred`). + surfel_areas: The surfel areas for A (e.g. `surfel_areas_gt`). + + Returns: + A tuple of the sorted (distances, surfel_areas). + """ + sorted_surfels = np.array(sorted(zip(distances, surfel_areas))) + return sorted_surfels[:, 0], sorted_surfels[:, 1] + + +def compute_surface_distances(mask_gt, + mask_pred, + spacing_mm): + """Computes closest distances from all surface points to the other surface. + + This function can be applied to 2D or 3D tensors. For 2D, both masks must be + 2D and `spacing_mm` must be a 2-element list. For 3D, both masks must be 3D + and `spacing_mm` must be a 3-element list. The description is done for the 2D + case, and the formulation for the 3D case is present is parenthesis, + introduced by "resp.". + + Finds all contour elements (resp surface elements "surfels" in 3D) in the + ground truth mask `mask_gt` and the predicted mask `mask_pred`, computes their + length in mm (resp. area in mm^2) and the distance to the closest point on the + other contour (resp. surface). It returns two sorted lists of distances + together with the corresponding contour lengths (resp. surfel areas). If one + of the masks is empty, the corresponding lists are empty and all distances in + the other list are `inf`. + + Args: + mask_gt: 2-dim (resp. 3-dim) bool Numpy array. The ground truth mask. + mask_pred: 2-dim (resp. 3-dim) bool Numpy array. The predicted mask. + spacing_mm: 2-element (resp. 3-element) list-like structure. Voxel spacing + in x0 anx x1 (resp. x0, x1 and x2) directions. + + Returns: + A dict with: + "distances_gt_to_pred": 1-dim numpy array of type float. The distances in mm + from all ground truth surface elements to the predicted surface, + sorted from smallest to largest. + "distances_pred_to_gt": 1-dim numpy array of type float. The distances in mm + from all predicted surface elements to the ground truth surface, + sorted from smallest to largest. + "surfel_areas_gt": 1-dim numpy array of type float. The length of the + of the ground truth contours in mm (resp. the surface elements area in + mm^2) in the same order as distances_gt_to_pred. + "surfel_areas_pred": 1-dim numpy array of type float. The length of the + of the predicted contours in mm (resp. the surface elements area in + mm^2) in the same order as distances_gt_to_pred. + + Raises: + ValueError: If the masks and the `spacing_mm` arguments are of incompatible + shape or type. Or if the masks are not 2D or 3D. + """ + # The terms used in this function are for the 3D case. In particular, surface + # in 2D stands for contours in 3D. The surface elements in 3D correspond to + # the line elements in 2D. + + _assert_is_bool_numpy_array("mask_gt", mask_gt) + _assert_is_bool_numpy_array("mask_pred", mask_pred) + + if not len(mask_gt.shape) == len(mask_pred.shape) == len(spacing_mm): + raise ValueError("The arguments must be of compatible shape. Got mask_gt " + "with {} dimensions ({}) and mask_pred with {} dimensions " + "({}), while the spacing_mm was {} elements.".format( + len(mask_gt.shape), + mask_gt.shape, len(mask_pred.shape), mask_pred.shape, + len(spacing_mm))) + + num_dims = len(spacing_mm) + if num_dims == 2: + _check_2d_numpy_array("mask_gt", mask_gt) + _check_2d_numpy_array("mask_pred", mask_pred) + + # compute the area for all 16 possible surface elements + # (given a 2x2 neighbourhood) according to the spacing_mm + neighbour_code_to_surface_area = ( + lookup_tables.create_table_neighbour_code_to_contour_length(spacing_mm)) + kernel = lookup_tables.ENCODE_NEIGHBOURHOOD_2D_KERNEL + full_true_neighbours = 0b1111 + elif num_dims == 3: + _check_3d_numpy_array("mask_gt", mask_gt) + _check_3d_numpy_array("mask_pred", mask_pred) + + # compute the area for all 256 possible surface elements + # (given a 2x2x2 neighbourhood) according to the spacing_mm + neighbour_code_to_surface_area = ( + lookup_tables.create_table_neighbour_code_to_surface_area(spacing_mm)) + kernel = lookup_tables.ENCODE_NEIGHBOURHOOD_3D_KERNEL + full_true_neighbours = 0b11111111 + else: + raise ValueError("Only 2D and 3D masks are supported, not " + "{}D.".format(num_dims)) + + # compute the bounding box of the masks to trim the volume to the smallest + # possible processing subvolume + bbox_min, bbox_max = _compute_bounding_box(mask_gt | mask_pred) + # Both the min/max bbox are None at the same time, so we only check one. + if bbox_min is None: + return { + "distances_gt_to_pred": np.array([]), + "distances_pred_to_gt": np.array([]), + "surfel_areas_gt": np.array([]), + "surfel_areas_pred": np.array([]), + } + + # crop the processing subvolume. + cropmask_gt = _crop_to_bounding_box(mask_gt, bbox_min, bbox_max) + cropmask_pred = _crop_to_bounding_box(mask_pred, bbox_min, bbox_max) + + # compute the neighbour code (local binary pattern) for each voxel + # the resulting arrays are spacially shifted by minus half a voxel in each + # axis. + # i.e. the points are located at the corners of the original voxels + neighbour_code_map_gt = ndimage.filters.correlate( + cropmask_gt.astype(np.uint8), kernel, mode="constant", cval=0) + neighbour_code_map_pred = ndimage.filters.correlate( + cropmask_pred.astype(np.uint8), kernel, mode="constant", cval=0) + + # create masks with the surface voxels + borders_gt = ((neighbour_code_map_gt != 0) & + (neighbour_code_map_gt != full_true_neighbours)) + borders_pred = ((neighbour_code_map_pred != 0) & + (neighbour_code_map_pred != full_true_neighbours)) + + # compute the distance transform (closest distance of each voxel to the + # surface voxels) + if borders_gt.any(): + distmap_gt = ndimage.morphology.distance_transform_edt( + ~borders_gt, sampling=spacing_mm) + else: + distmap_gt = np.Inf * np.ones(borders_gt.shape) + + if borders_pred.any(): + distmap_pred = ndimage.morphology.distance_transform_edt( + ~borders_pred, sampling=spacing_mm) + else: + distmap_pred = np.Inf * np.ones(borders_pred.shape) + + # compute the area of each surface element + surface_area_map_gt = neighbour_code_to_surface_area[neighbour_code_map_gt] + surface_area_map_pred = neighbour_code_to_surface_area[ + neighbour_code_map_pred] + + # create a list of all surface elements with distance and area + distances_gt_to_pred = distmap_pred[borders_gt] + distances_pred_to_gt = distmap_gt[borders_pred] + surfel_areas_gt = surface_area_map_gt[borders_gt] + surfel_areas_pred = surface_area_map_pred[borders_pred] + + # sort them by distance + if distances_gt_to_pred.shape != (0,): + distances_gt_to_pred, surfel_areas_gt = _sort_distances_surfels( + distances_gt_to_pred, surfel_areas_gt) + + if distances_pred_to_gt.shape != (0,): + distances_pred_to_gt, surfel_areas_pred = _sort_distances_surfels( + distances_pred_to_gt, surfel_areas_pred) + + return { + "distances_gt_to_pred": distances_gt_to_pred, + "distances_pred_to_gt": distances_pred_to_gt, + "surfel_areas_gt": surfel_areas_gt, + "surfel_areas_pred": surfel_areas_pred, + } + + +def compute_average_surface_distance(surface_distances): + """Returns the average surface distance. + + Computes the average surface distances by correctly taking the area of each + surface element into account. Call compute_surface_distances(...) before, to + obtain the `surface_distances` dict. + + Args: + surface_distances: dict with "distances_gt_to_pred", "distances_pred_to_gt" + "surfel_areas_gt", "surfel_areas_pred" created by + compute_surface_distances() + + Returns: + A tuple with two float values: + - the average distance (in mm) from the ground truth surface to the + predicted surface + - the average distance from the predicted surface to the ground truth + surface. + """ + distances_gt_to_pred = surface_distances["distances_gt_to_pred"] + distances_pred_to_gt = surface_distances["distances_pred_to_gt"] + surfel_areas_gt = surface_distances["surfel_areas_gt"] + surfel_areas_pred = surface_distances["surfel_areas_pred"] + average_distance_gt_to_pred = ( + np.sum(distances_gt_to_pred * surfel_areas_gt) / np.sum(surfel_areas_gt)) + average_distance_pred_to_gt = ( + np.sum(distances_pred_to_gt * surfel_areas_pred) / + np.sum(surfel_areas_pred)) + return (average_distance_gt_to_pred, average_distance_pred_to_gt) + + +def compute_robust_hausdorff(surface_distances, percent): + """Computes the robust Hausdorff distance. + + Computes the robust Hausdorff distance. "Robust", because it uses the + `percent` percentile of the distances instead of the maximum distance. The + percentage is computed by correctly taking the area of each surface element + into account. + + Args: + surface_distances: dict with "distances_gt_to_pred", "distances_pred_to_gt" + "surfel_areas_gt", "surfel_areas_pred" created by + compute_surface_distances() + percent: a float value between 0 and 100. + + Returns: + a float value. The robust Hausdorff distance in mm. + """ + distances_gt_to_pred = surface_distances["distances_gt_to_pred"] + distances_pred_to_gt = surface_distances["distances_pred_to_gt"] + surfel_areas_gt = surface_distances["surfel_areas_gt"] + surfel_areas_pred = surface_distances["surfel_areas_pred"] + if len(distances_gt_to_pred) > 0: # pylint: disable=g-explicit-length-test + surfel_areas_cum_gt = np.cumsum(surfel_areas_gt) / np.sum(surfel_areas_gt) + idx = np.searchsorted(surfel_areas_cum_gt, percent/100.0) + perc_distance_gt_to_pred = distances_gt_to_pred[ + min(idx, len(distances_gt_to_pred)-1)] + else: + perc_distance_gt_to_pred = np.Inf + + if len(distances_pred_to_gt) > 0: # pylint: disable=g-explicit-length-test + surfel_areas_cum_pred = (np.cumsum(surfel_areas_pred) / + np.sum(surfel_areas_pred)) + idx = np.searchsorted(surfel_areas_cum_pred, percent/100.0) + perc_distance_pred_to_gt = distances_pred_to_gt[ + min(idx, len(distances_pred_to_gt)-1)] + else: + perc_distance_pred_to_gt = np.Inf + + return max(perc_distance_gt_to_pred, perc_distance_pred_to_gt) + + +def compute_surface_overlap_at_tolerance(surface_distances, tolerance_mm): + """Computes the overlap of the surfaces at a specified tolerance. + + Computes the overlap of the ground truth surface with the predicted surface + and vice versa allowing a specified tolerance (maximum surface-to-surface + distance that is regarded as overlapping). The overlapping fraction is + computed by correctly taking the area of each surface element into account. + + Args: + surface_distances: dict with "distances_gt_to_pred", "distances_pred_to_gt" + "surfel_areas_gt", "surfel_areas_pred" created by + compute_surface_distances() + tolerance_mm: a float value. The tolerance in mm + + Returns: + A tuple of two float values. The overlap fraction in [0.0, 1.0] of the + ground truth surface with the predicted surface and vice versa. + """ + distances_gt_to_pred = surface_distances["distances_gt_to_pred"] + distances_pred_to_gt = surface_distances["distances_pred_to_gt"] + surfel_areas_gt = surface_distances["surfel_areas_gt"] + surfel_areas_pred = surface_distances["surfel_areas_pred"] + rel_overlap_gt = ( + np.sum(surfel_areas_gt[distances_gt_to_pred <= tolerance_mm]) / + np.sum(surfel_areas_gt)) + rel_overlap_pred = ( + np.sum(surfel_areas_pred[distances_pred_to_gt <= tolerance_mm]) / + np.sum(surfel_areas_pred)) + return (rel_overlap_gt, rel_overlap_pred) + + +def compute_surface_dice_at_tolerance(surface_distances, tolerance_mm): + """Computes the _surface_ DICE coefficient at a specified tolerance. + + Computes the _surface_ DICE coefficient at a specified tolerance. Not to be + confused with the standard _volumetric_ DICE coefficient. The surface DICE + measures the overlap of two surfaces instead of two volumes. A surface + element is counted as overlapping (or touching), when the closest distance to + the other surface is less or equal to the specified tolerance. The DICE + coefficient is in the range between 0.0 (no overlap) to 1.0 (perfect overlap). + + Args: + surface_distances: dict with "distances_gt_to_pred", "distances_pred_to_gt" + "surfel_areas_gt", "surfel_areas_pred" created by + compute_surface_distances() + tolerance_mm: a float value. The tolerance in mm + + Returns: + A float value. The surface DICE coefficient in [0.0, 1.0]. + """ + distances_gt_to_pred = surface_distances["distances_gt_to_pred"] + distances_pred_to_gt = surface_distances["distances_pred_to_gt"] + surfel_areas_gt = surface_distances["surfel_areas_gt"] + surfel_areas_pred = surface_distances["surfel_areas_pred"] + overlap_gt = np.sum(surfel_areas_gt[distances_gt_to_pred <= tolerance_mm]) + overlap_pred = np.sum(surfel_areas_pred[distances_pred_to_gt <= tolerance_mm]) + surface_dice = (overlap_gt + overlap_pred) / ( + np.sum(surfel_areas_gt) + np.sum(surfel_areas_pred)) + return surface_dice + + +def compute_dice_coefficient(mask_gt, mask_pred): + """Computes soerensen-dice coefficient. + + compute the soerensen-dice coefficient between the ground truth mask `mask_gt` + and the predicted mask `mask_pred`. + + Args: + mask_gt: 3-dim Numpy array of type bool. The ground truth mask. + mask_pred: 3-dim Numpy array of type bool. The predicted mask. + + Returns: + the dice coeffcient as float. If both masks are empty, the result is NaN. + """ + volume_sum = mask_gt.sum() + mask_pred.sum() + if volume_sum == 0: + return np.NaN + volume_intersect = (mask_gt & mask_pred).sum() + return 2*volume_intersect / volume_sum diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/surface_distance_test.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/surface_distance_test.py new file mode 100644 index 0000000000000000000000000000000000000000..5966722b6d4d1a813b380a6a9657486d93c38282 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/external/surface-distance/surface_distance_test.py @@ -0,0 +1,369 @@ +# Copyright 2018 Google Inc. All Rights Reserved. +# +# 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. +"""Simple tests for surface metric computations.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import math +import google3 +from absl.testing import absltest +from absl.testing import parameterized +import numpy as np +import surface_distance +from surface_distance.surface_distance import metrics + + +class SurfaceDistanceTest(parameterized.TestCase, absltest.TestCase): + + def _assert_almost_equal(self, expected, actual, places): + """Assertion wrapper correctly handling NaN equality.""" + if np.isnan(expected) and np.isnan(actual): + return + self.assertAlmostEqual(expected, actual, places) + + def _assert_metrics(self, + surface_distances, mask_gt, mask_pred, + expected_average_surface_distance, + expected_hausdorff_100, + expected_hausdorff_95, + expected_surface_overlap_at_1mm, + expected_surface_dice_at_1mm, + expected_volumetric_dice, + places=3): + actual_average_surface_distance = ( + surface_distance.compute_average_surface_distance(surface_distances)) + for i in range(2): + self._assert_almost_equal( + expected_average_surface_distance[i], + actual_average_surface_distance[i], + places=places) + + self._assert_almost_equal( + expected_hausdorff_100, + surface_distance.compute_robust_hausdorff(surface_distances, 100), + places=places) + + self._assert_almost_equal( + expected_hausdorff_95, + surface_distance.compute_robust_hausdorff(surface_distances, 95), + places=places) + + actual_surface_overlap_at_1mm = ( + surface_distance.compute_surface_overlap_at_tolerance( + surface_distances, tolerance_mm=1)) + for i in range(2): + self._assert_almost_equal( + expected_surface_overlap_at_1mm[i], + actual_surface_overlap_at_1mm[i], + places=places) + + self._assert_almost_equal( + expected_surface_dice_at_1mm, + surface_distance.compute_surface_dice_at_tolerance( + surface_distances, tolerance_mm=1), + places=places) + + self._assert_almost_equal( + expected_volumetric_dice, + surface_distance.compute_dice_coefficient(mask_gt, mask_pred), + places=places) + + @parameterized.parameters(( + np.zeros([2, 2, 2], dtype=np.bool), + np.zeros([2, 2], dtype=np.bool), + [1, 1], + ), ( + np.zeros([2, 2], dtype=np.bool), + np.zeros([2, 2, 2], dtype=np.bool), + [1, 1], + ), ( + np.zeros([2, 2], dtype=np.bool), + np.zeros([2, 2], dtype=np.bool), + [1, 1, 1], + )) + def test_compute_surface_distances_raises_on_incompatible_shapes( + self, mask_gt, mask_pred, spacing_mm): + with self.assertRaisesRegex(ValueError, + 'The arguments must be of compatible shape'): + surface_distance.compute_surface_distances(mask_gt, mask_pred, spacing_mm) + + @parameterized.parameters(( + np.zeros([2], dtype=np.bool), + np.zeros([2], dtype=np.bool), + [1], + ), ( + np.zeros([2, 2, 2, 2], dtype=np.bool), + np.zeros([2, 2, 2, 2], dtype=np.bool), + [1, 1, 1, 1], + )) + def test_compute_surface_distances_raises_on_invalid_shapes( + self, mask_gt, mask_pred, spacing_mm): + with self.assertRaisesRegex(ValueError, + 'Only 2D and 3D masks are supported'): + surface_distance.compute_surface_distances(mask_gt, mask_pred, spacing_mm) + + +class SurfaceDistance2DTest(SurfaceDistanceTest, parameterized.TestCase): + + def test_on_2_pixels_2mm_away(self): + mask_gt = np.zeros((128, 128), np.bool) + mask_pred = np.zeros((128, 128), np.bool) + mask_gt[50, 70] = 1 + mask_pred[50, 72] = 1 + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(2, 1)) + + diag = 0.5 * math.sqrt(2**2 + 1**2) + expected_distances = { + 'surfel_areas_gt': np.asarray([diag, diag, diag, diag]), + 'surfel_areas_pred': np.asarray([diag, diag, diag, diag]), + 'distances_gt_to_pred': np.asarray([1., 1., 2., 2.]), + 'distances_pred_to_gt': np.asarray([1., 1., 2., 2.]), + } + self.assertEqual(len(expected_distances), len(surface_distances)) + for key, expected_value in expected_distances.items(): + np.testing.assert_array_equal(expected_value, surface_distances[key]) + + self._assert_metrics( + surface_distances, + mask_gt, + mask_pred, + expected_average_surface_distance=(1.5, 1.5), + expected_hausdorff_100=2.0, + expected_hausdorff_95=2.0, + expected_surface_overlap_at_1mm=(0.5, 0.5), + expected_surface_dice_at_1mm=0.5, + expected_volumetric_dice=0.0) + + def test_two_squares_shifted_by_one_pixel(self): + # We make sure we do not have active pixels on the border of the image, + # because this will add additional 2D surfaces on the border of the image + # because the image is padded with background. + mask_gt = np.asarray( + [ + [0, 0, 0, 0, 0, 0], + [0, 1, 1, 0, 0, 0], + [0, 1, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0], + ], + dtype=np.bool) + + mask_pred = np.asarray( + [ + [0, 0, 0, 0, 0, 0], + [0, 1, 1, 0, 0, 0], + [0, 1, 1, 0, 0, 0], + [0, 1, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0], + ], + dtype=np.bool) + + vertical = 2 + horizontal = 1 + diag = 0.5 * math.sqrt(horizontal**2 + vertical**2) + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(vertical, horizontal)) + + # We go from top left corner, clockwise to describe the surfaces and + # distances. The 2 surfaces are: + # + # /-\ /-\ + # | | | | + # \-/ | | + # \-/ + expected_surfel_areas_gt = np.asarray( + [diag, horizontal, diag, vertical, diag, horizontal, diag, vertical]) + expected_surfel_areas_pred = np.asarray([ + diag, horizontal, diag, vertical, vertical, diag, horizontal, diag, + vertical, vertical + ]) + expected_distances_gt_to_pred = np.asarray([0] * 5 + [horizontal] + [0] * 2) + expected_distances_pred_to_gt = np.asarray([0] * 5 + [vertical] * 3 + + [0] * 2) + + # We sort these using the same sorting algorithm + (expected_distances_gt_to_pred, expected_surfel_areas_gt) = ( + metrics._sort_distances_surfels(expected_distances_gt_to_pred, + expected_surfel_areas_gt)) + (expected_distances_pred_to_gt, expected_surfel_areas_pred) = ( + metrics._sort_distances_surfels(expected_distances_pred_to_gt, + expected_surfel_areas_pred)) + + expected_distances = { + 'surfel_areas_gt': expected_surfel_areas_gt, + 'surfel_areas_pred': expected_surfel_areas_pred, + 'distances_gt_to_pred': expected_distances_gt_to_pred, + 'distances_pred_to_gt': expected_distances_pred_to_gt, + } + + self.assertEqual(len(expected_distances), len(surface_distances)) + for key, expected_value in expected_distances.items(): + np.testing.assert_array_equal(expected_value, surface_distances[key]) + + self._assert_metrics( + surface_distances, + mask_gt, + mask_pred, + expected_average_surface_distance=( + surface_distance.compute_average_surface_distance( + expected_distances)), + expected_hausdorff_100=(surface_distance.compute_robust_hausdorff( + expected_distances, 100)), + expected_hausdorff_95=surface_distance.compute_robust_hausdorff( + expected_distances, 95), + expected_surface_overlap_at_1mm=( + surface_distance.compute_surface_overlap_at_tolerance( + expected_distances, tolerance_mm=1)), + expected_surface_dice_at_1mm=( + surface_distance.compute_surface_dice_at_tolerance( + surface_distances, tolerance_mm=1)), + expected_volumetric_dice=(surface_distance.compute_dice_coefficient( + mask_gt, mask_pred))) + + def test_empty_prediction_mask(self): + mask_gt = np.zeros((128, 128), np.bool) + mask_pred = np.zeros((128, 128), np.bool) + mask_gt[50, 60] = 1 + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(3, 2)) + self._assert_metrics( + surface_distances, + mask_gt, + mask_pred, + expected_average_surface_distance=(np.inf, np.nan), + expected_hausdorff_100=np.inf, + expected_hausdorff_95=np.inf, + expected_surface_overlap_at_1mm=(0.0, np.nan), + expected_surface_dice_at_1mm=0.0, + expected_volumetric_dice=0.0) + + def test_empty_ground_truth_mask(self): + mask_gt = np.zeros((128, 128), np.bool) + mask_pred = np.zeros((128, 128), np.bool) + mask_pred[50, 60] = 1 + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(3, 2)) + self._assert_metrics( + surface_distances, + mask_gt, + mask_pred, + expected_average_surface_distance=(np.nan, np.inf), + expected_hausdorff_100=np.inf, + expected_hausdorff_95=np.inf, + expected_surface_overlap_at_1mm=(np.nan, 0.0), + expected_surface_dice_at_1mm=0.0, + expected_volumetric_dice=0.0) + + def test_both_empty_masks(self): + mask_gt = np.zeros((128, 128), np.bool) + mask_pred = np.zeros((128, 128), np.bool) + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(3, 2)) + self._assert_metrics( + surface_distances, + mask_gt, + mask_pred, + expected_average_surface_distance=(np.nan, np.nan), + expected_hausdorff_100=np.inf, + expected_hausdorff_95=np.inf, + expected_surface_overlap_at_1mm=(np.nan, np.nan), + expected_surface_dice_at_1mm=np.nan, + expected_volumetric_dice=np.nan) + + +class SurfaceDistance3DTest(SurfaceDistanceTest): + + def test_on_2_pixels_2mm_away(self): + mask_gt = np.zeros((128, 128, 128), np.bool) + mask_pred = np.zeros((128, 128, 128), np.bool) + mask_gt[50, 60, 70] = 1 + mask_pred[50, 60, 72] = 1 + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(3, 2, 1)) + self._assert_metrics(surface_distances, mask_gt, mask_pred, + expected_average_surface_distance=(1.5, 1.5), + expected_hausdorff_100=2.0, + expected_hausdorff_95=2.0, + expected_surface_overlap_at_1mm=(0.5, 0.5), + expected_surface_dice_at_1mm=0.5, + expected_volumetric_dice=0.0) + + def test_two_cubes_shifted_by_one_pixel(self): + mask_gt = np.zeros((100, 100, 100), np.bool) + mask_pred = np.zeros((100, 100, 100), np.bool) + mask_gt[0:50, :, :] = 1 + mask_pred[0:51, :, :] = 1 + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(2, 1, 1)) + self._assert_metrics( + surface_distances, mask_gt, mask_pred, + expected_average_surface_distance=(0.322, 0.339), + expected_hausdorff_100=2.0, + expected_hausdorff_95=2.0, + expected_surface_overlap_at_1mm=(0.842, 0.830), + expected_surface_dice_at_1mm=0.836, + expected_volumetric_dice=0.990) + + def test_empty_prediction_mask(self): + mask_gt = np.zeros((128, 128, 128), np.bool) + mask_pred = np.zeros((128, 128, 128), np.bool) + mask_gt[50, 60, 70] = 1 + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(3, 2, 1)) + self._assert_metrics( + surface_distances, mask_gt, mask_pred, + expected_average_surface_distance=(np.inf, np.nan), + expected_hausdorff_100=np.inf, + expected_hausdorff_95=np.inf, + expected_surface_overlap_at_1mm=(0.0, np.nan), + expected_surface_dice_at_1mm=0.0, + expected_volumetric_dice=0.0) + + def test_empty_ground_truth_mask(self): + mask_gt = np.zeros((128, 128, 128), np.bool) + mask_pred = np.zeros((128, 128, 128), np.bool) + mask_pred[50, 60, 72] = 1 + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(3, 2, 1)) + self._assert_metrics( + surface_distances, mask_gt, mask_pred, + expected_average_surface_distance=(np.nan, np.inf), + expected_hausdorff_100=np.inf, + expected_hausdorff_95=np.inf, + expected_surface_overlap_at_1mm=(np.nan, 0.0), + expected_surface_dice_at_1mm=0.0, + expected_volumetric_dice=0.0) + + def test_both_empty_masks(self): + mask_gt = np.zeros((128, 128, 128), np.bool) + mask_pred = np.zeros((128, 128, 128), np.bool) + surface_distances = surface_distance.compute_surface_distances( + mask_gt, mask_pred, spacing_mm=(3, 2, 1)) + self._assert_metrics( + surface_distances, mask_gt, mask_pred, + expected_average_surface_distance=(np.nan, np.nan), + expected_hausdorff_100=np.inf, + expected_hausdorff_95=np.inf, + expected_surface_overlap_at_1mm=(np.nan, np.nan), + expected_surface_dice_at_1mm=np.nan, + expected_volumetric_dice=np.nan) + + +if __name__ == '__main__': + absltest.main() diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/kidney_tumor.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/kidney_tumor.py new file mode 100644 index 0000000000000000000000000000000000000000..9f18b5de50d2676d069f1fa49503ee59bb72866a --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/kidney_tumor.py @@ -0,0 +1,249 @@ +import os, time, csv +import numpy as np +import torch +from sklearn.metrics import confusion_matrix +from scipy import ndimage +from scipy.ndimage import label +from functools import partial +import monai +from monai.inferers import sliding_window_inference +from monai.data import load_decathlon_datalist +from monai.transforms import AsDiscrete,AsDiscreted,Compose,Invertd,SaveImaged +from monai import transforms, data +from networks.swin3d_unetrv2 import SwinUNETR as SwinUNETR_v2 +import nibabel as nib + +import warnings +warnings.filterwarnings("ignore") + +import argparse +parser = argparse.ArgumentParser(description='kidney tumor validation') + +# file dir +parser.add_argument('--data_root', default='/workspace/inputs', type=str) +parser.add_argument('--organ_type', default='kidney', type=str) +parser.add_argument('--fold', default=0, type=int) +parser.add_argument('--save_dir', default='/workspace/outputs', type=str) +parser.add_argument('--feature_size', default=16, type=int) +parser.add_argument('--val_overlap', default=0.75, type=float) +parser.add_argument('--num_classes', default=3, type=int) +parser.add_argument('--model', default='unet', type=str) +parser.add_argument('--swin_type', default='base', type=str) + +def organ_region_filter_out(organ_mask, tumor_mask): + ## dialtion + organ_mask = ndimage.binary_closing(organ_mask, structure=np.ones((5,5,5))) + organ_mask = ndimage.binary_dilation(organ_mask, structure=np.ones((5,5,5))) + ## filter out + tumor_mask = organ_mask * tumor_mask + + return tumor_mask + +def denoise_pred(pred: np.ndarray): + """ + # 0: background, 1: kidney, 2: tumor. + pred.shape: (3, H, W, D) + """ + denoise_pred = np.zeros_like(pred) + + + denoise_pred[1, ...] = pred[1, ...] + + denoise_pred[2, ...] = pred[1, ...] * pred[2,...] + + denoise_pred[0,...] = 1 - np.logical_or(denoise_pred[1,...], denoise_pred[2,...]) + + return denoise_pred + +def cal_dice(pred, true): + intersection = np.sum(pred[true==1]) * 2.0 + dice = intersection / (np.sum(pred) + np.sum(true)) + return dice + +def cal_dice_nsd(pred, truth, spacing_mm=(1,1,1), tolerance=2): + dice = cal_dice(pred, truth) + # cal nsd + surface_distances = compute_surface_distances(truth.astype(bool), pred.astype(bool), spacing_mm=spacing_mm) + nsd = compute_surface_dice_at_tolerance(surface_distances, tolerance) + + return (dice, nsd) + + +def _get_model(args): + inf_size = [96, 96, 96] + print(args.model) + if args.model == 'swinunetr': + if args.swin_type == 'tiny': + feature_size=12 + elif args.swin_type == 'small': + feature_size=24 + elif args.swin_type == 'base': + feature_size=48 + + model = SwinUNETR_v2(in_channels=1, + out_channels=3, + img_size=(96, 96, 96), + feature_size=feature_size, + patch_size=2, + depths=[2, 2, 2, 2], + num_heads=[3, 6, 12, 24], + window_size=[7, 7, 7]) + + elif args.model == 'unet': + from monai.networks.nets import UNet + model = UNet( + spatial_dims=3, + in_channels=1, + out_channels=3, + channels=(16, 32, 64, 128, 256), + strides=(2, 2, 2, 2), + num_res_units=2, + ) + elif args.model == 'nnunet': + from monai.networks.nets import DynUNet + from dynunet_pipeline.create_network import get_kernels_strides + from dynunet_pipeline.task_params import deep_supr_num + task_id = '03' + kernels, strides = get_kernels_strides(task_id) + model = DynUNet( + spatial_dims=3, + in_channels=1, + out_channels=3, + kernel_size=kernels, + strides=strides, + upsample_kernel_size=strides[1:], + norm_name="instance", + deep_supervision=False, + deep_supr_num=deep_supr_num[task_id], + ) + + else: + raise ValueError('Unsupported model ' + str(args.model)) + + + + checkpoint = torch.load('tumor_mask_access/unet_synt_kidney_tumors.pt', map_location='cpu') + + from collections import OrderedDict + new_state_dict = OrderedDict() + for k, v in checkpoint['state_dict'].items(): + new_state_dict[k.replace('backbone.','')] = v + # load params + model.load_state_dict(new_state_dict, strict=False) + print('Use logdir weights') + + + model = model.cuda() + model_inferer = partial(sliding_window_inference, roi_size=inf_size, sw_batch_size=1, predictor=model, overlap=args.val_overlap, mode='gaussian') + pytorch_total_params = sum(p.numel() for p in model.parameters() if p.requires_grad) + print('Total parameters count', pytorch_total_params) + + return model, model_inferer + +def _get_loader(args): + val_org_transform = transforms.Compose( + [ + transforms.LoadImaged(keys=["image", "organ_pseudo"]), + transforms.AddChanneld(keys=["image", "organ_pseudo"]), + transforms.Orientationd(keys=["image"], axcodes="RAS"), + transforms.Spacingd(keys=["image"], pixdim=(1.0, 1.0, 1.0), mode=("bilinear")), + transforms.ScaleIntensityRanged(keys=["image"], a_min=-175, a_max=250, b_min=0.0, b_max=1.0, clip=True), + transforms.SpatialPadd(keys=["image"], mode="minimum", spatial_size=[96, 96, 96]), + transforms.ToTensord(keys=["image", "organ_pseudo"]), + ] + ) + + test_data_list = os.listdir(args.data_root) + test_data_list.sort() + + test_img=[] + test_name=[] + test_pseudo_organ = [] + for data_name in test_data_list: + name = data_name.split('.nii')[0] + test_img.append(os.path.join(args.data_root, data_name)) + test_name.append(name) + test_pseudo_organ.append(os.path.join(args.save_dir, name, 'predictions', 'kidney.nii.gz')) + + data_dicts_val = [{'image': image,'organ_pseudo': organ_pseudo, 'name': name} + for image, organ_pseudo, name in zip(test_img, test_pseudo_organ, test_name)] + print('val len {}'.format(len(data_dicts_val))) + + val_org_ds = data.Dataset(data_dicts_val, transform=val_org_transform) + val_org_loader = data.DataLoader(val_org_ds, batch_size=1, shuffle=False, num_workers=4, sampler=None, pin_memory=True) + + post_transforms = Compose([ + Invertd( + keys="pred", + transform=val_org_transform, + orig_keys="image", + meta_keys="pred_meta_dict", + orig_meta_keys="image_meta_dict", + meta_key_postfix="meta_dict", + nearest_interp=False, + to_tensor=True, + ), + # Invertd( + # keys="pred", + # transform=val_org_transform, + # orig_keys="image", + # nearest_interp=True, + # to_tensor=True, + # ), + AsDiscreted(keys="pred", argmax=True, to_onehot=3), + AsDiscreted(keys="organ_pseudo", to_onehot=3) + ]) + + return val_org_loader, post_transforms + +def main(): + args = parser.parse_args() + print("MAIN Argument values:") + for k, v in vars(args).items(): + print(k, '=>', v) + print('-----------------') + + torch.cuda.set_device(0) #use this default device (same as args.device if not distributed) + torch.backends.cudnn.benchmark = True + + ## loader and post_transform + val_loader, post_transforms = _get_loader(args) + + ## NETWORK + model, model_inferer = _get_model(args) + + model.eval() + start_time = time.time() + with torch.no_grad(): + for idx, val_data in enumerate(val_loader): + val_inputs = val_data["image"].cuda() + name = val_data['image_meta_dict']['filename_or_obj'][0].split('/')[-1].split('.')[0] + # breakpoint() + original_affine = val_data["image_meta_dict"]["original_affine"][0].numpy() + pixdim = val_data['image_meta_dict']['pixdim'].cpu().numpy() + spacing_mm = tuple(pixdim[0][1:4]) + # breakpoint() + print('case_name', name) + val_data["pred"] = model_inferer(val_inputs) + val_data = [post_transforms(i) for i in data.decollate_batch(val_data)] + val_outputs, val_organ_pseudo = val_data[0]['pred'], val_data[0]['organ_pseudo'] + + # val_outpus.shape == val_labels.shape (3, H, W, Z) + val_outputs = val_outputs.detach().cpu().numpy() + val_organ_pseudo = val_organ_pseudo.detach().cpu().numpy() + val_outputs[1, ...] = val_organ_pseudo[1, ...] + + val_outputs = denoise_pred(val_outputs) + # breakpoint() + # save the prediction + output_path = os.path.join(args.save_dir, name, 'predictions', 'kidney_tumor.nii.gz') + # val_outputs = np.argmax(val_outputs, axis=0) + val_outputs_ = np.zeros_like(val_outputs[0]) + # val_outputs_[val_outputs[1]==1] = 1 + val_outputs_[val_outputs[2]==1] = 1 + + nib.save(nib.Nifti1Image(val_outputs_.astype(np.uint8), original_affine), output_path) + + +if __name__ == "__main__": + main() diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/basicunetplusplus.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/basicunetplusplus.py new file mode 100644 index 0000000000000000000000000000000000000000..a9b1011924c42227f8f2b01de9d1cee8680f0f6f --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/basicunetplusplus.py @@ -0,0 +1,162 @@ +from typing import Sequence, Union + +import torch +import torch.nn as nn + +from monai.networks.layers.factories import Conv +from monai.networks.nets.basic_unet import Down, TwoConv, UpCat +from monai.utils import ensure_tuple_rep + +__all__ = ["BasicUnetPlusPlus", "BasicunetPlusPlus", "basicunetplusplus", "BasicUNetPlusPlus"] + + +class BasicUNetPlusPlus(nn.Module): + def __init__( + self, + spatial_dims: int = 3, + in_channels: int = 1, + out_channels: int = 2, + features: Sequence[int] = (32, 32, 64, 128, 256, 32), + deep_supervision: bool = False, + act: Union[str, tuple] = ("LeakyReLU", {"negative_slope": 0.1, "inplace": True}), + norm: Union[str, tuple] = ("instance", {"affine": True}), + bias: bool = True, + dropout: Union[float, tuple] = 0.0, + upsample: str = "deconv", + ): + """ + A UNet++ implementation with 1D/2D/3D supports. + + Based on: + + Zhou et al. "UNet++: A Nested U-Net Architecture for Medical Image + Segmentation". 4th Deep Learning in Medical Image Analysis (DLMIA) + Workshop, DOI: https://doi.org/10.48550/arXiv.1807.10165 + + + Args: + spatial_dims: number of spatial dimensions. Defaults to 3 for spatial 3D inputs. + in_channels: number of input channels. Defaults to 1. + out_channels: number of output channels. Defaults to 2. + features: six integers as numbers of features. + Defaults to ``(32, 32, 64, 128, 256, 32)``, + + - the first five values correspond to the five-level encoder feature sizes. + - the last value corresponds to the feature size after the last upsampling. + + deep_supervision: whether to prune the network at inference time. Defaults to False. If true, returns a list, + whose elements correspond to outputs at different nodes. + act: activation type and arguments. Defaults to LeakyReLU. + norm: feature normalization type and arguments. Defaults to instance norm. + bias: whether to have a bias term in convolution blocks. Defaults to True. + According to `Performance Tuning Guide `_, + if a conv layer is directly followed by a batch norm layer, bias should be False. + dropout: dropout ratio. Defaults to no dropout. + upsample: upsampling mode, available options are + ``"deconv"``, ``"pixelshuffle"``, ``"nontrainable"``. + + Examples:: + + # for spatial 2D + >>> net = BasicUNetPlusPlus(spatial_dims=2, features=(64, 128, 256, 512, 1024, 128)) + + # for spatial 2D, with deep supervision enabled + >>> net = BasicUNetPlusPlus(spatial_dims=2, features=(64, 128, 256, 512, 1024, 128), deep_supervision=True) + + # for spatial 2D, with group norm + >>> net = BasicUNetPlusPlus(spatial_dims=2, features=(64, 128, 256, 512, 1024, 128), norm=("group", {"num_groups": 4})) + + # for spatial 3D + >>> net = BasicUNetPlusPlus(spatial_dims=3, features=(32, 32, 64, 128, 256, 32)) + + See Also + - :py:class:`monai.networks.nets.BasicUNet` + - :py:class:`monai.networks.nets.DynUNet` + - :py:class:`monai.networks.nets.UNet` + + """ + super().__init__() + + self.deep_supervision = deep_supervision + + fea = ensure_tuple_rep(features, 6) + print(f"BasicUNetPlusPlus features: {fea}.") + + self.conv_0_0 = TwoConv(spatial_dims, in_channels, fea[0], act, norm, bias, dropout) + self.conv_1_0 = Down(spatial_dims, fea[0], fea[1], act, norm, bias, dropout) + self.conv_2_0 = Down(spatial_dims, fea[1], fea[2], act, norm, bias, dropout) + self.conv_3_0 = Down(spatial_dims, fea[2], fea[3], act, norm, bias, dropout) + self.conv_4_0 = Down(spatial_dims, fea[3], fea[4], act, norm, bias, dropout) + + self.upcat_0_1 = UpCat(spatial_dims, fea[1], fea[0], fea[0], act, norm, bias, dropout, upsample, halves=False) + self.upcat_1_1 = UpCat(spatial_dims, fea[2], fea[1], fea[1], act, norm, bias, dropout, upsample) + self.upcat_2_1 = UpCat(spatial_dims, fea[3], fea[2], fea[2], act, norm, bias, dropout, upsample) + self.upcat_3_1 = UpCat(spatial_dims, fea[4], fea[3], fea[3], act, norm, bias, dropout, upsample) + + self.upcat_0_2 = UpCat( + spatial_dims, fea[1], fea[0] * 2, fea[0], act, norm, bias, dropout, upsample, halves=False + ) + self.upcat_1_2 = UpCat(spatial_dims, fea[2], fea[1] * 2, fea[1], act, norm, bias, dropout, upsample) + self.upcat_2_2 = UpCat(spatial_dims, fea[3], fea[2] * 2, fea[2], act, norm, bias, dropout, upsample) + + self.upcat_0_3 = UpCat( + spatial_dims, fea[1], fea[0] * 3, fea[0], act, norm, bias, dropout, upsample, halves=False + ) + self.upcat_1_3 = UpCat(spatial_dims, fea[2], fea[1] * 3, fea[1], act, norm, bias, dropout, upsample) + + self.upcat_0_4 = UpCat( + spatial_dims, fea[1], fea[0] * 4, fea[5], act, norm, bias, dropout, upsample, halves=False + ) + + self.final_conv_0_1 = Conv["conv", spatial_dims](fea[0], out_channels, kernel_size=1) + self.final_conv_0_2 = Conv["conv", spatial_dims](fea[0], out_channels, kernel_size=1) + self.final_conv_0_3 = Conv["conv", spatial_dims](fea[0], out_channels, kernel_size=1) + self.final_conv_0_4 = Conv["conv", spatial_dims](fea[5], out_channels, kernel_size=1) + + + def forward(self, x: torch.Tensor): + """ + Args: + x: input should have spatially N dimensions + ``(Batch, in_channels, dim_0[, dim_1, ..., dim_N-1])``, N is defined by `dimensions`. + It is recommended to have ``dim_n % 16 == 0`` to ensure all maxpooling inputs have + even edge lengths. + + Returns: + A torch Tensor of "raw" predictions in shape + ``(Batch, out_channels, dim_0[, dim_1, ..., dim_N-1])``. + """ + x_0_0 = self.conv_0_0(x) + x_1_0 = self.conv_1_0(x_0_0) + x_0_1 = self.upcat_0_1(x_1_0, x_0_0) + + x_2_0 = self.conv_2_0(x_1_0) + x_1_1 = self.upcat_1_1(x_2_0, x_1_0) + x_0_2 = self.upcat_0_2(x_1_1, torch.cat([x_0_0, x_0_1], dim=1)) + + x_3_0 = self.conv_3_0(x_2_0) + x_2_1 = self.upcat_2_1(x_3_0, x_2_0) + x_1_2 = self.upcat_1_2(x_2_1, torch.cat([x_1_0, x_1_1], dim=1)) + x_0_3 = self.upcat_0_3(x_1_2, torch.cat([x_0_0, x_0_1, x_0_2], dim=1)) + + x_4_0 = self.conv_4_0(x_3_0) + x_3_1 = self.upcat_3_1(x_4_0, x_3_0) + x_2_2 = self.upcat_2_2(x_3_1, torch.cat([x_2_0, x_2_1], dim=1)) + x_1_3 = self.upcat_1_3(x_2_2, torch.cat([x_1_0, x_1_1, x_1_2], dim=1)) + x_0_4 = self.upcat_0_4(x_1_3, torch.cat([x_0_0, x_0_1, x_0_2, x_0_3], dim=1)) + + output_0_1 = self.final_conv_0_1(x_0_1) + output_0_2 = self.final_conv_0_2(x_0_2) + output_0_3 = self.final_conv_0_3(x_0_3) + output_0_4 = self.final_conv_0_4(x_0_4) + + if self.deep_supervision: + output = [output_0_1, output_0_2, output_0_3, output_0_4] + else: + output = output_0_4 + + return output + + + +BasicUnetPlusPlus = BasicunetPlusPlus = basicunetplusplus = BasicUNetPlusPlus \ No newline at end of file diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/patchembedding.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/patchembedding.py new file mode 100644 index 0000000000000000000000000000000000000000..1f312e91267fc3312615cf145c02725f79e110ab --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/patchembedding.py @@ -0,0 +1,132 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + + +import math +from typing import Tuple, Union + +import torch +import torch.nn as nn + +from monai.utils import optional_import + +Rearrange, _ = optional_import("einops.layers.torch", name="Rearrange") + + +class PatchEmbeddingBlock(nn.Module): + """ + A patch embedding block, based on: "Dosovitskiy et al., + An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale " + """ + + def __init__( + self, + in_channels: int, + img_size: Tuple[int, int, int], + patch_size: Tuple[int, int, int], + hidden_size: int, + num_heads: int, + pos_embed: str, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + in_channels: dimension of input channels. + img_size: dimension of input image. + patch_size: dimension of patch size. + hidden_size: dimension of hidden layer. + num_heads: number of attention heads. + pos_embed: position embedding layer type. + dropout_rate: faction of the input units to drop. + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + if hidden_size % num_heads != 0: + raise AssertionError("hidden size should be divisible by num_heads.") + + for m, p in zip(img_size, patch_size): + if m < p: + raise AssertionError("patch_size should be smaller than img_size.") + + if pos_embed not in ["conv", "perceptron"]: + raise KeyError(f"Position embedding layer of type {pos_embed} is not supported.") + + if pos_embed == "perceptron": + if img_size[0] % patch_size[0] != 0: + raise AssertionError("img_size should be divisible by patch_size for perceptron patch embedding.") + + self.n_patches = ( + (img_size[0] // patch_size[0]) * (img_size[1] // patch_size[1]) * (img_size[2] // patch_size[2]) + ) + self.patch_dim = in_channels * patch_size[0] * patch_size[1] * patch_size[2] + + self.pos_embed = pos_embed + self.patch_embeddings: Union[nn.Conv3d, nn.Sequential] + if self.pos_embed == "conv": + self.patch_embeddings = nn.Conv3d( + in_channels=in_channels, out_channels=hidden_size, kernel_size=patch_size, stride=patch_size + ) + elif self.pos_embed == "perceptron": + self.patch_embeddings = nn.Sequential( + Rearrange( + "b c (h p1) (w p2) (d p3)-> b (h w d) (p1 p2 p3 c)", + p1=patch_size[0], + p2=patch_size[1], + p3=patch_size[2], + ), + nn.Linear(self.patch_dim, hidden_size), + ) + self.position_embeddings = nn.Parameter(torch.zeros(1, self.n_patches, hidden_size)) + self.cls_token = nn.Parameter(torch.zeros(1, 1, hidden_size)) + self.dropout = nn.Dropout(dropout_rate) + self.trunc_normal_(self.position_embeddings, mean=0.0, std=0.02, a=-2.0, b=2.0) + self.apply(self._init_weights) + + def _init_weights(self, m): + if isinstance(m, nn.Linear): + self.trunc_normal_(m.weight, mean=0.0, std=0.02, a=-2.0, b=2.0) + if isinstance(m, nn.Linear) and m.bias is not None: + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.LayerNorm): + nn.init.constant_(m.bias, 0) + nn.init.constant_(m.weight, 1.0) + + def trunc_normal_(self, tensor, mean, std, a, b): + # From PyTorch official master until it's in a few official releases - RW + # Method based on https://people.sc.fsu.edu/~jburkardt/presentations/truncated_normal.pdf + def norm_cdf(x): + return (1.0 + math.erf(x / math.sqrt(2.0))) / 2.0 + + with torch.no_grad(): + l = norm_cdf((a - mean) / std) + u = norm_cdf((b - mean) / std) + tensor.uniform_(2 * l - 1, 2 * u - 1) + tensor.erfinv_() + tensor.mul_(std * math.sqrt(2.0)) + tensor.add_(mean) + tensor.clamp_(min=a, max=b) + return tensor + + def forward(self, x): + if self.pos_embed == "conv": + x = self.patch_embeddings(x) + x = x.flatten(2) + x = x.transpose(-1, -2) + elif self.pos_embed == "perceptron": + x = self.patch_embeddings(x) + embeddings = x + self.position_embeddings + embeddings = self.dropout(embeddings) + return embeddings diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/swin3d_unetr.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/swin3d_unetr.py new file mode 100644 index 0000000000000000000000000000000000000000..36abd3b24bfe2a31e2e677090990cb334ae74886 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/swin3d_unetr.py @@ -0,0 +1,189 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + +from typing import Tuple, Union + +import torch.nn as nn + +from monai.networks.blocks.dynunet_block import UnetOutBlock +from networks.unetr_block import UnetrBasicBlock, UnetrPrUpBlock, UnetrUpBlock +from networks.swin_transformer_3d import SwinTransformer3D +import pdb + +class SwinUNETR(nn.Module): + """ + UNETR based on: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + img_size: Tuple[int, int, int], + feature_size: int = 48, + patch_size: int = 2, + depths: Tuple[int, int, int, int] = [2, 2, 2, 2], + num_heads: Tuple[int, int, int, int] = [3, 6, 12, 24], + window_size: Tuple[int, int, int] = [7, 7, 7], + norm_name: Union[Tuple, str] = "instance", + conv_block: bool = False, + res_block: bool = True, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + in_channels: dimension of input channels. + out_channels: dimension of output channels. + img_size: dimension of input image. + feature_size: dimension of network feature size. + hidden_size: dimension of hidden layer. + mlp_dim: dimension of feedforward layer. + num_heads: number of attention heads. + pos_embed: position embedding layer type. + norm_name: feature normalization type and arguments. + conv_block: bool argument to determine if convolutional block is used. + res_block: bool argument to determine if residual block is used. + dropout_rate: faction of the input units to drop. + + Examples:: + + # for single channel input 4-channel output with patch size of (96,96,96), feature size of 32 and batch norm + >>> net = UNETR(in_channels=1, out_channels=4, img_size=(96,96,96), feature_size=32, norm_name='batch') + + # for 4-channel input 3-channel output with patch size of (128,128,128), conv position embedding and instance norm + >>> net = UNETR(in_channels=4, out_channels=3, img_size=(128,128,128), pos_embed='conv', norm_name='instance') + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + self.swinViT = SwinTransformer3D( + pretrained=None, + pretrained2d=False, + patch_size=(patch_size, patch_size, patch_size), + in_chans=in_channels, + embed_dim=feature_size, + depths = depths, + num_heads=num_heads, + window_size=window_size, + mlp_ratio=4., + qkv_bias=True, + qk_scale=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.0, + norm_layer=nn.LayerNorm, + ) + self.encoder1 = UnetrBasicBlock( + spatial_dims=3, + in_channels=in_channels, + out_channels=feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block, + ) + + self.encoder10 = UnetrBasicBlock( + spatial_dims=3, + in_channels=16*feature_size, + out_channels=16*feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block) + + self.decoder5 = UnetrUpBlock( + spatial_dims=3, + in_channels=16*feature_size, + out_channels=8*feature_size, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.decoder4 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 8, + out_channels=feature_size * 4, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.decoder3 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 4, + out_channels=feature_size * 2, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + self.decoder2 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 2, + out_channels=feature_size, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.decoder1 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size, + out_channels=feature_size, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.out = UnetOutBlock(spatial_dims=3, in_channels=feature_size, out_channels=out_channels) # type: ignore + + + def proj_feat(self, x, hidden_size, feat_size): + x = x.view(x.size(0), feat_size[0], feat_size[1], feat_size[2], hidden_size) + x = x.permute(0, 4, 1, 2, 3).contiguous() + return x + + def forward(self, x_in): + hidden_states_out = self.swinViT(x_in) + enc0 = self.encoder1(x_in) + x1 = hidden_states_out[0] + enc1 = x1 + x2 = hidden_states_out[1] + enc2 = x2 + x3 = hidden_states_out[2] + enc3 = x3 + x4 = hidden_states_out[3] + enc4 = x4 + dec4 = hidden_states_out[4] + dec4 = self.encoder10(dec4) + dec3 = self.decoder5(dec4, enc4) + dec2 = self.decoder4(dec3, enc3) + dec1 = self.decoder3(dec2, enc2) + dec0 = self.decoder2(dec1, enc1) + out = self.decoder1(dec0, enc0) + logits = self.out(out) + return logits diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/swin3d_unetrv2.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/swin3d_unetrv2.py new file mode 100644 index 0000000000000000000000000000000000000000..082b503392bd0703300865553ff20c81be1555e2 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/swin3d_unetrv2.py @@ -0,0 +1,258 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + +from typing import Tuple, Union +import torch +import torch.nn as nn + +from monai.networks.blocks.dynunet_block import UnetOutBlock +from networks.unetr_block import UnetrBasicBlock, UnetrPrUpBlock, UnetrUpBlock +from networks.swin_transformer_3d import SwinTransformer3D +import pdb + +class SwinUNETR(nn.Module): + """ + UNETR based on: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + img_size: Tuple[int, int, int], + feature_size: int = 48, + patch_size: int = 2, + depths: Tuple[int, int, int, int] = [2, 2, 2, 2], + num_heads: Tuple[int, int, int, int] = [3, 6, 12, 24], + window_size: Tuple[int, int, int] = [7, 7, 7], + norm_name: Union[Tuple, str] = "instance", + conv_block: bool = False, + res_block: bool = True, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + in_channels: dimension of input channels. + out_channels: dimension of output channels. + img_size: dimension of input image. + feature_size: dimension of network feature size. + hidden_size: dimension of hidden layer. + mlp_dim: dimension of feedforward layer. + num_heads: number of attention heads. + pos_embed: position embedding layer type. + norm_name: feature normalization type and arguments. + conv_block: bool argument to determine if convolutional block is used. + res_block: bool argument to determine if residual block is used. + dropout_rate: faction of the input units to drop. + + Examples:: + + # for single channel input 4-channel output with patch size of (96,96,96), feature size of 32 and batch norm + >>> net = UNETR(in_channels=1, out_channels=4, img_size=(96,96,96), feature_size=32, norm_name='batch') + + # for 4-channel input 3-channel output with patch size of (128,128,128), conv position embedding and instance norm + >>> net = UNETR(in_channels=4, out_channels=3, img_size=(128,128,128), pos_embed='conv', norm_name='instance') + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + self.swinViT = SwinTransformer3D( + pretrained=None, + pretrained2d=False, + patch_size=(patch_size, patch_size, patch_size), + in_chans=in_channels, + embed_dim=feature_size, + depths = depths, + num_heads=num_heads, + window_size=window_size, + mlp_ratio=4., + qkv_bias=True, + qk_scale=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.0, + norm_layer=nn.LayerNorm, + ) + self.encoder1 = UnetrBasicBlock( + spatial_dims=3, + in_channels=in_channels, + out_channels=feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block, + ) + + self.encoder2 = UnetrBasicBlock( + spatial_dims=3, + in_channels=feature_size, + out_channels=feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block, + ) + + self.encoder3 = UnetrBasicBlock( + spatial_dims=3, + in_channels=2 * feature_size, + out_channels=2 * feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block, + ) + + self.encoder4 = UnetrBasicBlock( + spatial_dims=3, + in_channels=4 * feature_size, + out_channels=4 * feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block, + ) + + self.encoder10 = UnetrBasicBlock( + spatial_dims=3, + in_channels=16*feature_size, + out_channels=16*feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block) + + self.decoder5 = UnetrUpBlock( + spatial_dims=3, + in_channels=16*feature_size, + out_channels=8*feature_size, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.decoder4 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 8, + out_channels=feature_size * 4, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.decoder3 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 4, + out_channels=feature_size * 2, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + self.decoder2 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 2, + out_channels=feature_size, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.decoder1 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size, + out_channels=feature_size, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + + self.out = UnetOutBlock(spatial_dims=3, in_channels=feature_size, out_channels=out_channels) # type: ignore + + + def proj_feat(self, x, hidden_size, feat_size): + x = x.view(x.size(0), feat_size[0], feat_size[1], feat_size[2], hidden_size) + x = x.permute(0, 4, 1, 2, 3).contiguous() + return x + + def load_from(self, weights): + with torch.no_grad(): + res_weight = weights + # copy weights from patch embedding + for i in weights['state_dict']: + print(i) + self.swinViT.patch_embed.proj.weight.copy_(weights['state_dict']['module.patch_embed.proj.weight']) + self.swinViT.patch_embed.proj.bias.copy_(weights['state_dict']['module.patch_embed.proj.bias']) + + # layer1 + for bname, block in self.swinViT.layers1[0].blocks.named_children(): + block.loadFrom(weights, n_block=bname, layer='layers1') + self.swinViT.layers1[0].downsample.reduction.weight.copy_(weights['state_dict']['module.layers1.0.downsample.reduction.weight']) + self.swinViT.layers1[0].downsample.norm.weight.copy_(weights['state_dict']['module.layers1.0.downsample.norm.weight']) + self.swinViT.layers1[0].downsample.norm.bias.copy_(weights['state_dict']['module.layers1.0.downsample.norm.bias']) + # layer2 + for bname, block in self.swinViT.layers2[0].blocks.named_children(): + block.loadFrom(weights, n_block=bname, layer='layers2') + self.swinViT.layers2[0].downsample.reduction.weight.copy_(weights['state_dict']['module.layers2.0.downsample.reduction.weight']) + self.swinViT.layers2[0].downsample.norm.weight.copy_(weights['state_dict']['module.layers2.0.downsample.norm.weight']) + self.swinViT.layers2[0].downsample.norm.bias.copy_(weights['state_dict']['module.layers2.0.downsample.norm.bias']) + # layer3 + for bname, block in self.swinViT.layers3[0].blocks.named_children(): + block.loadFrom(weights, n_block=bname, layer='layers3') + self.swinViT.layers3[0].downsample.reduction.weight.copy_(weights['state_dict']['module.layers3.0.downsample.reduction.weight']) + self.swinViT.layers3[0].downsample.norm.weight.copy_(weights['state_dict']['module.layers3.0.downsample.norm.weight']) + self.swinViT.layers3[0].downsample.norm.bias.copy_(weights['state_dict']['module.layers3.0.downsample.norm.bias']) + # layer4 + for bname, block in self.swinViT.layers4[0].blocks.named_children(): + block.loadFrom(weights, n_block=bname, layer='layers4') + self.swinViT.layers4[0].downsample.reduction.weight.copy_(weights['state_dict']['module.layers4.0.downsample.reduction.weight']) + self.swinViT.layers4[0].downsample.norm.weight.copy_(weights['state_dict']['module.layers4.0.downsample.norm.weight']) + self.swinViT.layers4[0].downsample.norm.bias.copy_(weights['state_dict']['module.layers4.0.downsample.norm.bias']) + + + # last norm layer of transformer + self.swinViT.norm.weight.copy_(weights['state_dict']['module.norm.weight']) + self.swinViT.norm.bias.copy_(weights['state_dict']['module.norm.bias']) + + def forward(self, x_in): + hidden_states_out = self.swinViT(x_in) + enc0 = self.encoder1(x_in) + x1 = hidden_states_out[0] + enc1 = self.encoder2(x1) + x2 = hidden_states_out[1] + enc2 = self.encoder3(x2) + x3 = hidden_states_out[2] + enc3 = self.encoder4(x3) + x4 = hidden_states_out[3] + enc4 = x4 + dec4 = hidden_states_out[4] + dec4 = self.encoder10(dec4) + dec3 = self.decoder5(dec4, enc4) + dec2 = self.decoder4(dec3, enc3) + dec1 = self.decoder3(dec2, enc2) + dec0 = self.decoder2(dec1, enc1) + out = self.decoder1(dec0, enc0) + logits = self.out(out) + return logits diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/transformerblock.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/transformerblock.py new file mode 100644 index 0000000000000000000000000000000000000000..db2bd34efd971cd283acb988446628b24f314cbf --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/transformerblock.py @@ -0,0 +1,76 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + +import torch +import torch.nn as nn + +from networks.mlp import MLPBlock +from networks.selfattention import SABlock + + +class TransformerBlock(nn.Module): + """ + A transformer block, based on: "Dosovitskiy et al., + An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale " + """ + + def __init__( + self, + hidden_size: int, + mlp_dim: int, + num_heads: int, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + hidden_size: dimension of hidden layer. + mlp_dim: dimension of feedforward layer. + num_heads: number of attention heads. + dropout_rate: faction of the input units to drop. + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + if hidden_size % num_heads != 0: + raise AssertionError("hidden size should be divisible by num_heads.") + + self.mlp = MLPBlock(hidden_size, mlp_dim, dropout_rate) + self.norm1 = nn.LayerNorm(hidden_size) + self.attn = SABlock(hidden_size, num_heads, dropout_rate) + self.norm2 = nn.LayerNorm(hidden_size) + + def loadFrom(self, weights, n_block): + ROOT = f"module.transformer.blocks.{n_block}." + block_names = ['mlp.linear1.weight', 'mlp.linear1.bias', 'mlp.linear2.weight', 'mlp.linear2.bias', 'norm1.weight',\ + 'norm1.bias', 'attn.out_proj.weight', 'attn.out_proj.bias', 'attn.qkv.weight', 'norm2.weight',\ + 'norm2.bias'] + with torch.no_grad(): + self.mlp.linear1.weight.copy_(weights['state_dict'][ROOT+block_names[0]]) + self.mlp.linear1.bias.copy_(weights['state_dict'][ROOT+block_names[1]]) + self.mlp.linear2.weight.copy_(weights['state_dict'][ROOT+block_names[2]]) + self.mlp.linear2.bias.copy_(weights['state_dict'][ROOT+block_names[3]]) + self.norm1.weight.copy_(weights['state_dict'][ROOT+block_names[4]]) + self.norm1.bias.copy_(weights['state_dict'][ROOT+block_names[5]]) + self.attn.out_proj.weight.copy_(weights['state_dict'][ROOT+block_names[6]]) + self.attn.out_proj.bias.copy_(weights['state_dict'][ROOT+block_names[7]]) + self.attn.qkv.weight.copy_(weights['state_dict'][ROOT+block_names[8]]) + self.norm2.weight.copy_(weights['state_dict'][ROOT+block_names[9]]) + self.norm2.bias.copy_(weights['state_dict'][ROOT+block_names[10]]) + + + def forward(self, x): + x = x + self.attn(self.norm1(x)) + x = x + self.mlp(self.norm2(x)) + return x diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/unetr_block.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/unetr_block.py new file mode 100644 index 0000000000000000000000000000000000000000..20c39f62404adfc69ddd619806c500b7735c9459 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/unetr_block.py @@ -0,0 +1,261 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + + +from typing import Sequence, Tuple, Union + +import torch +import torch.nn as nn + +from monai.networks.blocks.dynunet_block import UnetBasicBlock, UnetResBlock, get_conv_layer + + +class UnetrUpBlock(nn.Module): + """ + An upsampling module that can be used for UNETR: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + spatial_dims: int, + in_channels: int, + out_channels: int, # type: ignore + kernel_size: Union[Sequence[int], int], + stride: Union[Sequence[int], int], + upsample_kernel_size: Union[Sequence[int], int], + norm_name: Union[Tuple, str], + res_block: bool = False, + ) -> None: + """ + Args: + spatial_dims: number of spatial dimensions. + in_channels: number of input channels. + out_channels: number of output channels. + kernel_size: convolution kernel size. + stride: convolution stride. + upsample_kernel_size: convolution kernel size for transposed convolution layers. + norm_name: feature normalization type and arguments. + res_block: bool argument to determine if residual block is used. + + """ + + super(UnetrUpBlock, self).__init__() + upsample_stride = upsample_kernel_size + self.transp_conv = get_conv_layer( + spatial_dims, + in_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ) + + if res_block: + self.conv_block = UnetResBlock( + spatial_dims, + out_channels + out_channels, + out_channels, + kernel_size=kernel_size, + stride=1, + norm_name=norm_name, + ) + else: + self.conv_block = UnetBasicBlock( # type: ignore + spatial_dims, + out_channels + out_channels, + out_channels, + kernel_size=kernel_size, + stride=1, + norm_name=norm_name, + ) + + def forward(self, inp, skip): + # number of channels for skip should equals to out_channels + out = self.transp_conv(inp) + out = torch.cat((out, skip), dim=1) + out = self.conv_block(out) + return out + + +class UnetrPrUpBlock(nn.Module): + """ + A projection upsampling module that can be used for UNETR: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + spatial_dims: int, + in_channels: int, + out_channels: int, + num_layer: int, + kernel_size: Union[Sequence[int], int], + stride: Union[Sequence[int], int], + upsample_kernel_size: Union[Sequence[int], int], + norm_name: Union[Tuple, str], + conv_block: bool = False, + res_block: bool = False, + ) -> None: + """ + Args: + spatial_dims: number of spatial dimensions. + in_channels: number of input channels. + out_channels: number of output channels. + num_layer: number of upsampling blocks. + kernel_size: convolution kernel size. + stride: convolution stride. + upsample_kernel_size: convolution kernel size for transposed convolution layers. + norm_name: feature normalization type and arguments. + conv_block: bool argument to determine if convolutional block is used. + res_block: bool argument to determine if residual block is used. + + """ + + super().__init__() + + upsample_stride = upsample_kernel_size + self.transp_conv_init = get_conv_layer( + spatial_dims, + in_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ) + if conv_block: + if res_block: + self.blocks = nn.ModuleList( + [ + nn.Sequential( + get_conv_layer( + spatial_dims, + out_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ), + UnetResBlock( + spatial_dims=3, + in_channels=out_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ), + ) + for i in range(num_layer) + ] + ) + else: + self.blocks = nn.ModuleList( + [ + nn.Sequential( + get_conv_layer( + spatial_dims, + out_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ), + UnetBasicBlock( + spatial_dims=3, + in_channels=out_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ), + ) + for i in range(num_layer) + ] + ) + else: + self.blocks = nn.ModuleList( + [ + get_conv_layer( + spatial_dims, + out_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ) + for i in range(num_layer) + ] + ) + + def forward(self, x): + x = self.transp_conv_init(x) + for blk in self.blocks: + x = blk(x) + return x + + +class UnetrBasicBlock(nn.Module): + """ + A CNN module that can be used for UNETR, based on: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + spatial_dims: int, + in_channels: int, + out_channels: int, + kernel_size: Union[Sequence[int], int], + stride: Union[Sequence[int], int], + norm_name: Union[Tuple, str], + res_block: bool = False, + ) -> None: + """ + Args: + spatial_dims: number of spatial dimensions. + in_channels: number of input channels. + out_channels: number of output channels. + kernel_size: convolution kernel size. + stride: convolution stride. + norm_name: feature normalization type and arguments. + res_block: bool argument to determine if residual block is used. + + """ + + super().__init__() + + if res_block: + self.layer = UnetResBlock( + spatial_dims=spatial_dims, + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ) + else: + self.layer = UnetBasicBlock( # type: ignore + spatial_dims=spatial_dims, + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ) + + def forward(self, inp): + out = self.layer(inp) + return out diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/vit.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/vit.py new file mode 100644 index 0000000000000000000000000000000000000000..3f329f50b1349b3f0c476538a96cfab49271ee31 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks/vit.py @@ -0,0 +1,96 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + + +from typing import Tuple + +import torch.nn as nn + +from networks.patchembedding import PatchEmbeddingBlock +from networks.transformerblock import TransformerBlock + + +class ViT(nn.Module): + """ + Vision Transformer (ViT), based on: "Dosovitskiy et al., + An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale " + """ + + def __init__( + self, + in_channels: int, + img_size: Tuple[int, int, int], + patch_size: Tuple[int, int, int], + hidden_size: int = 768, + mlp_dim: int = 3072, + num_layers: int = 12, + num_heads: int = 12, + pos_embed: str = "perceptron", + classification: bool = False, + num_classes: int = 2, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + in_channels: dimension of input channels. + img_size: dimension of input image. + patch_size: dimension of patch size. + hidden_size: dimension of hidden layer. + mlp_dim: dimension of feedforward layer. + num_layers: number of transformer blocks. + num_heads: number of attention heads. + pos_embed: position embedding layer type. + classification: bool argument to determine if classification is used. + num_classes: number of classes if classification is used. + dropout_rate: faction of the input units to drop. + + Examples:: + + # for single channel input with patch size of (96,96,96), conv position embedding and segmentation backbone + >>> net = ViT(in_channels=1, img_size=(96,96,96), pos_embed='conv') + + # for 3-channel with patch size of (128,128,128), 24 layers and classification backbone + >>> net = ViT(in_channels=3, img_size=(128,128,128), pos_embed='conv', classification= True) + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + if hidden_size % num_heads != 0: + raise AssertionError("hidden size should be divisible by num_heads.") + + if pos_embed not in ["conv", "perceptron"]: + raise KeyError(f"Position embedding layer of type {pos_embed} is not supported.") + + self.classification = classification + self.patch_embedding = PatchEmbeddingBlock( + in_channels, img_size, patch_size, hidden_size, num_heads, pos_embed, dropout_rate + ) + self.blocks = nn.ModuleList( + [TransformerBlock(hidden_size, mlp_dim, num_heads, dropout_rate) for i in range(num_layers)] + ) + self.norm = nn.LayerNorm(hidden_size) + if self.classification: + self.classification_head = nn.Linear(hidden_size, num_classes) + + def forward(self, x): + x = self.patch_embedding(x) + hidden_states_out = [] + for blk in self.blocks: + x = blk(x) + hidden_states_out.append(x) + x = self.norm(x) + if self.classification: + x = self.classification_head(x[:, 0]) + return x, hidden_states_out diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/__init__.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/selfattention.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/selfattention.py new file mode 100644 index 0000000000000000000000000000000000000000..bd5bbfa0720fd2c40d5514ee4eee613115b6eb56 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/selfattention.py @@ -0,0 +1,68 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + +import torch +import torch.nn as nn + +from monai.utils import optional_import + +einops, has_einops = optional_import("einops") + + +class SABlock(nn.Module): + """ + A self-attention block, based on: "Dosovitskiy et al., + An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale " + """ + + def __init__( + self, + hidden_size: int, + num_heads: int, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + hidden_size: dimension of hidden layer. + num_heads: number of attention heads. + dropout_rate: faction of the input units to drop. + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + if hidden_size % num_heads != 0: + raise AssertionError("hidden size should be divisible by num_heads.") + + self.num_heads = num_heads + self.out_proj = nn.Linear(hidden_size, hidden_size) + self.qkv = nn.Linear(hidden_size, hidden_size * 3, bias=False) + self.drop_output = nn.Dropout(dropout_rate) + self.drop_weights = nn.Dropout(dropout_rate) + self.head_dim = hidden_size // num_heads + self.scale = self.head_dim ** -0.5 + if has_einops: + self.rearrange = einops.rearrange + else: + raise ValueError('"Requires einops.') + + def forward(self, x): + q, k, v = self.rearrange(self.qkv(x), "b h (qkv l d) -> qkv b l h d", qkv=3, l=self.num_heads) + att_mat = (torch.einsum("blxd,blyd->blxy", q, k) * self.scale).softmax(dim=-1) + att_mat = self.drop_weights(att_mat) + x = torch.einsum("bhxy,bhyd->bhxd", att_mat, v) + x = self.rearrange(x, "b h l d -> b l (h d)") + x = self.out_proj(x) + x = self.drop_output(x) + return x diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/unetr.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/unetr.py new file mode 100644 index 0000000000000000000000000000000000000000..1ac9c9ee49feec33d03f9c73dd917fa65edd5930 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/unetr.py @@ -0,0 +1,206 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + +from typing import Tuple, Union + +import torch.nn as nn + +from monai.networks.blocks.dynunet_block import UnetOutBlock +from monai.networks.blocks.unetr_block import UnetrBasicBlock, UnetrPrUpBlock, UnetrUpBlock +from monai.networks.nets.vit import ViT + + +class UNETR(nn.Module): + """ + UNETR based on: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + img_size: Tuple[int, int, int], + feature_size: int = 16, + hidden_size: int = 768, + mlp_dim: int = 3072, + num_heads: int = 12, + pos_embed: str = "perceptron", + norm_name: Union[Tuple, str] = "instance", + conv_block: bool = False, + res_block: bool = True, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + in_channels: dimension of input channels. + out_channels: dimension of output channels. + img_size: dimension of input image. + feature_size: dimension of network feature size. + hidden_size: dimension of hidden layer. + mlp_dim: dimension of feedforward layer. + num_heads: number of attention heads. + pos_embed: position embedding layer type. + norm_name: feature normalization type and arguments. + conv_block: bool argument to determine if convolutional block is used. + res_block: bool argument to determine if residual block is used. + dropout_rate: faction of the input units to drop. + + Examples:: + + # for single channel input 4-channel output with patch size of (96,96,96), feature size of 32 and batch norm + >>> net = UNETR(in_channels=1, out_channels=4, img_size=(96,96,96), feature_size=32, norm_name='batch') + + # for 4-channel input 3-channel output with patch size of (128,128,128), conv position embedding and instance norm + >>> net = UNETR(in_channels=4, out_channels=3, img_size=(128,128,128), pos_embed='conv', norm_name='instance') + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + if hidden_size % num_heads != 0: + raise AssertionError("hidden size should be divisible by num_heads.") + + if pos_embed not in ["conv", "perceptron"]: + raise KeyError(f"Position embedding layer of type {pos_embed} is not supported.") + + self.num_layers = 12 + self.patch_size = (16, 16, 16) + self.feat_size = ( + img_size[0] // self.patch_size[0], + img_size[1] // self.patch_size[1], + img_size[2] // self.patch_size[2], + ) + self.hidden_size = hidden_size + self.classification = False + self.vit = ViT( + in_channels=in_channels, + img_size=img_size, + patch_size=self.patch_size, + hidden_size=hidden_size, + mlp_dim=mlp_dim, + num_layers=self.num_layers, + num_heads=num_heads, + pos_embed=pos_embed, + classification=self.classification, + dropout_rate=dropout_rate, + ) + self.encoder1 = UnetrBasicBlock( + spatial_dims=3, + in_channels=in_channels, + out_channels=feature_size, + kernel_size=3, + stride=1, + norm_name=norm_name, + res_block=res_block, + ) + self.encoder2 = UnetrPrUpBlock( + spatial_dims=3, + in_channels=hidden_size, + out_channels=feature_size * 2, + num_layer=2, + kernel_size=3, + stride=1, + upsample_kernel_size=2, + norm_name=norm_name, + conv_block=conv_block, + res_block=res_block, + ) + self.encoder3 = UnetrPrUpBlock( + spatial_dims=3, + in_channels=hidden_size, + out_channels=feature_size * 4, + num_layer=1, + kernel_size=3, + stride=1, + upsample_kernel_size=2, + norm_name=norm_name, + conv_block=conv_block, + res_block=res_block, + ) + self.encoder4 = UnetrPrUpBlock( + spatial_dims=3, + in_channels=hidden_size, + out_channels=feature_size * 8, + num_layer=0, + kernel_size=3, + stride=1, + upsample_kernel_size=2, + norm_name=norm_name, + conv_block=conv_block, + res_block=res_block, + ) + self.decoder5 = UnetrUpBlock( + spatial_dims=3, + in_channels=hidden_size, + out_channels=feature_size * 8, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + self.decoder4 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 8, + out_channels=feature_size * 4, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + self.decoder3 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 4, + out_channels=feature_size * 2, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + self.decoder2 = UnetrUpBlock( + spatial_dims=3, + in_channels=feature_size * 2, + out_channels=feature_size, + stride=1, + kernel_size=3, + upsample_kernel_size=2, + norm_name=norm_name, + res_block=res_block, + ) + self.out = UnetOutBlock(spatial_dims=3, in_channels=feature_size, out_channels=out_channels) # type: ignore + + def proj_feat(self, x, hidden_size, feat_size): + x = x.view(x.size(0), feat_size[0], feat_size[1], feat_size[2], hidden_size) + x = x.permute(0, 4, 1, 2, 3).contiguous() + return x + + def forward(self, x_in): + x, hidden_states_out = self.vit(x_in) + enc1 = self.encoder1(x_in) + x2 = hidden_states_out[3] + enc2 = self.encoder2(self.proj_feat(x2, self.hidden_size, self.feat_size)) + x3 = hidden_states_out[6] + enc3 = self.encoder3(self.proj_feat(x3, self.hidden_size, self.feat_size)) + x4 = hidden_states_out[9] + enc4 = self.encoder4(self.proj_feat(x4, self.hidden_size, self.feat_size)) + dec4 = self.proj_feat(x, self.hidden_size, self.feat_size) + dec3 = self.decoder5(dec4, enc4) + dec2 = self.decoder4(dec3, enc3) + dec1 = self.decoder3(dec2, enc2) + out = self.decoder2(dec1, enc1) + logits = self.out(out) + return logits diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/unetr_block.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/unetr_block.py new file mode 100644 index 0000000000000000000000000000000000000000..20c39f62404adfc69ddd619806c500b7735c9459 --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/unetr_block.py @@ -0,0 +1,261 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + + +from typing import Sequence, Tuple, Union + +import torch +import torch.nn as nn + +from monai.networks.blocks.dynunet_block import UnetBasicBlock, UnetResBlock, get_conv_layer + + +class UnetrUpBlock(nn.Module): + """ + An upsampling module that can be used for UNETR: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + spatial_dims: int, + in_channels: int, + out_channels: int, # type: ignore + kernel_size: Union[Sequence[int], int], + stride: Union[Sequence[int], int], + upsample_kernel_size: Union[Sequence[int], int], + norm_name: Union[Tuple, str], + res_block: bool = False, + ) -> None: + """ + Args: + spatial_dims: number of spatial dimensions. + in_channels: number of input channels. + out_channels: number of output channels. + kernel_size: convolution kernel size. + stride: convolution stride. + upsample_kernel_size: convolution kernel size for transposed convolution layers. + norm_name: feature normalization type and arguments. + res_block: bool argument to determine if residual block is used. + + """ + + super(UnetrUpBlock, self).__init__() + upsample_stride = upsample_kernel_size + self.transp_conv = get_conv_layer( + spatial_dims, + in_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ) + + if res_block: + self.conv_block = UnetResBlock( + spatial_dims, + out_channels + out_channels, + out_channels, + kernel_size=kernel_size, + stride=1, + norm_name=norm_name, + ) + else: + self.conv_block = UnetBasicBlock( # type: ignore + spatial_dims, + out_channels + out_channels, + out_channels, + kernel_size=kernel_size, + stride=1, + norm_name=norm_name, + ) + + def forward(self, inp, skip): + # number of channels for skip should equals to out_channels + out = self.transp_conv(inp) + out = torch.cat((out, skip), dim=1) + out = self.conv_block(out) + return out + + +class UnetrPrUpBlock(nn.Module): + """ + A projection upsampling module that can be used for UNETR: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + spatial_dims: int, + in_channels: int, + out_channels: int, + num_layer: int, + kernel_size: Union[Sequence[int], int], + stride: Union[Sequence[int], int], + upsample_kernel_size: Union[Sequence[int], int], + norm_name: Union[Tuple, str], + conv_block: bool = False, + res_block: bool = False, + ) -> None: + """ + Args: + spatial_dims: number of spatial dimensions. + in_channels: number of input channels. + out_channels: number of output channels. + num_layer: number of upsampling blocks. + kernel_size: convolution kernel size. + stride: convolution stride. + upsample_kernel_size: convolution kernel size for transposed convolution layers. + norm_name: feature normalization type and arguments. + conv_block: bool argument to determine if convolutional block is used. + res_block: bool argument to determine if residual block is used. + + """ + + super().__init__() + + upsample_stride = upsample_kernel_size + self.transp_conv_init = get_conv_layer( + spatial_dims, + in_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ) + if conv_block: + if res_block: + self.blocks = nn.ModuleList( + [ + nn.Sequential( + get_conv_layer( + spatial_dims, + out_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ), + UnetResBlock( + spatial_dims=3, + in_channels=out_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ), + ) + for i in range(num_layer) + ] + ) + else: + self.blocks = nn.ModuleList( + [ + nn.Sequential( + get_conv_layer( + spatial_dims, + out_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ), + UnetBasicBlock( + spatial_dims=3, + in_channels=out_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ), + ) + for i in range(num_layer) + ] + ) + else: + self.blocks = nn.ModuleList( + [ + get_conv_layer( + spatial_dims, + out_channels, + out_channels, + kernel_size=upsample_kernel_size, + stride=upsample_stride, + conv_only=True, + is_transposed=True, + ) + for i in range(num_layer) + ] + ) + + def forward(self, x): + x = self.transp_conv_init(x) + for blk in self.blocks: + x = blk(x) + return x + + +class UnetrBasicBlock(nn.Module): + """ + A CNN module that can be used for UNETR, based on: "Hatamizadeh et al., + UNETR: Transformers for 3D Medical Image Segmentation " + """ + + def __init__( + self, + spatial_dims: int, + in_channels: int, + out_channels: int, + kernel_size: Union[Sequence[int], int], + stride: Union[Sequence[int], int], + norm_name: Union[Tuple, str], + res_block: bool = False, + ) -> None: + """ + Args: + spatial_dims: number of spatial dimensions. + in_channels: number of input channels. + out_channels: number of output channels. + kernel_size: convolution kernel size. + stride: convolution stride. + norm_name: feature normalization type and arguments. + res_block: bool argument to determine if residual block is used. + + """ + + super().__init__() + + if res_block: + self.layer = UnetResBlock( + spatial_dims=spatial_dims, + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ) + else: + self.layer = UnetBasicBlock( # type: ignore + spatial_dims=spatial_dims, + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + norm_name=norm_name, + ) + + def forward(self, inp): + out = self.layer(inp) + return out diff --git a/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/vit.py b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/vit.py new file mode 100644 index 0000000000000000000000000000000000000000..3e90a36757208442f067bef3cac4f61df18eb11c --- /dev/null +++ b/my_container_sandbox/workspace/difftumor/tumor_mask_access/networks2/vit.py @@ -0,0 +1,96 @@ +# Copyright 2020 - 2021 MONAI Consortium +# 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. + + +from typing import Tuple + +import torch.nn as nn + +from monai.networks.blocks.patchembedding import PatchEmbeddingBlock +from monai.networks.blocks.transformerblock import TransformerBlock + + +class ViT(nn.Module): + """ + Vision Transformer (ViT), based on: "Dosovitskiy et al., + An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale " + """ + + def __init__( + self, + in_channels: int, + img_size: Tuple[int, int, int], + patch_size: Tuple[int, int, int], + hidden_size: int = 768, + mlp_dim: int = 3072, + num_layers: int = 12, + num_heads: int = 12, + pos_embed: str = "perceptron", + classification: bool = False, + num_classes: int = 2, + dropout_rate: float = 0.0, + ) -> None: + """ + Args: + in_channels: dimension of input channels. + img_size: dimension of input image. + patch_size: dimension of patch size. + hidden_size: dimension of hidden layer. + mlp_dim: dimension of feedforward layer. + num_layers: number of transformer blocks. + num_heads: number of attention heads. + pos_embed: position embedding layer type. + classification: bool argument to determine if classification is used. + num_classes: number of classes if classification is used. + dropout_rate: faction of the input units to drop. + + Examples:: + + # for single channel input with patch size of (96,96,96), conv position embedding and segmentation backbone + >>> net = ViT(in_channels=1, img_size=(96,96,96), pos_embed='conv') + + # for 3-channel with patch size of (128,128,128), 24 layers and classification backbone + >>> net = ViT(in_channels=3, img_size=(128,128,128), pos_embed='conv', classification= True) + + """ + + super().__init__() + + if not (0 <= dropout_rate <= 1): + raise AssertionError("dropout_rate should be between 0 and 1.") + + if hidden_size % num_heads != 0: + raise AssertionError("hidden size should be divisible by num_heads.") + + if pos_embed not in ["conv", "perceptron"]: + raise KeyError(f"Position embedding layer of type {pos_embed} is not supported.") + + self.classification = classification + self.patch_embedding = PatchEmbeddingBlock( + in_channels, img_size, patch_size, hidden_size, num_heads, pos_embed, dropout_rate + ) + self.blocks = nn.ModuleList( + [TransformerBlock(hidden_size, mlp_dim, num_heads, dropout_rate) for i in range(num_layers)] + ) + self.norm = nn.LayerNorm(hidden_size) + if self.classification: + self.classification_head = nn.Linear(hidden_size, num_classes) + + def forward(self, x): + x = self.patch_embedding(x) + hidden_states_out = [] + for blk in self.blocks: + x = blk(x) + hidden_states_out.append(x) + x = self.norm(x) + if self.classification: + x = self.classification_head(x[:, 0]) + return x, hidden_states_out diff --git a/tmp_inputs_1_0/case00003.nii.gz b/tmp_inputs_1_0/case00003.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..aa3c5875042eb5bf7c6ad43817e0bde13cab4d58 --- /dev/null +++ b/tmp_inputs_1_0/case00003.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:847bb49e4ab873fc09c5b816732667f8baadf15d1b5f7eef98aed4e8990e69f6 +size 15803903 diff --git a/tmp_inputs_32_8/case00003.nii.gz b/tmp_inputs_32_8/case00003.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..8fa92362d4806200c7aaf1e4cb4b3f139c8d88d9 --- /dev/null +++ b/tmp_inputs_32_8/case00003.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0009930a802ce3768307fce61b7698605c5b97c7e84daa8ffc777bc79751d9f +size 15463295