This notebook shows how to use 3DeeCellTracker to train a 3D U-Net.
The basic procedures:
Please run folloing codes according to the instructions
%load_ext autoreload
%autoreload 2
import os
import warnings
warnings.filterwarnings('ignore')
from CellTracker.unet3d import TrainingUNet3D, unet3_a
%matplotlib inline
Using TensorFlow backend.
trainer = TrainingUNet3D(noise_level=100, folder_path=os.path.abspath("./unet_01"), model=unet3_a())
WARNING:tensorflow:From /home/wen/anaconda3/envs/3DCT-2/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead. WARNING:tensorflow:From /home/wen/anaconda3/envs/3DCT-2/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead. WARNING:tensorflow:From /home/wen/anaconda3/envs/3DCT-2/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead. WARNING:tensorflow:From /home/wen/anaconda3/envs/3DCT-2/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead. Made folders under: /home/wen/PycharmProjects/3DeeCellTracker Following folders were made: unet_01/train_image unet_01/train_label unet_01/valid_image unet_01/valid_label unet_01/models WARNING:tensorflow:From /home/wen/anaconda3/envs/3DCT-2/lib/python3.7/site-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead. WARNING:tensorflow:From /home/wen/anaconda3/envs/3DCT-2/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3376: The name tf.log is deprecated. Please use tf.math.log instead. WARNING:tensorflow:From /home/wen/anaconda3/envs/3DCT-2/lib/python3.7/site-packages/tensorflow/python/ops/nn_impl.py:180: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version. Instructions for updating: Use tf.where in 2.0, which has the same broadcast rule as np.where
trainer.load_dataset()
trainer.draw_dataset()
Load images with shape: (512, 1024, 21) Load images with shape: (512, 1024, 21) Load images with shape: (512, 1024, 21) Load images with shape: (512, 1024, 21)
Show the normalized images (max projection)
trainer.preprocess()
trainer.draw_norm_dataset()
Images were normalized Images were divided Data for training 3D U-Net were prepared
Show the divided images (part)
trainer.draw_divided_train_data()
trainer.train()
Epoch 1/1 60/60 [==============================] - 71s 1s/step - loss: 0.6372 - val_loss: 0.5454 val_loss at step 1: [0.5454385181268057]
Epoch 1/1 60/60 [==============================] - 66s 1s/step - loss: 0.5096 - val_loss: 0.2965 val_loss updated from [0.5454385181268057] to [0.2964828709761302]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.3913 - val_loss: 0.0987 val_loss updated from [0.2964828709761302] to [0.09871951821777555]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.2943 - val_loss: 0.0506 val_loss updated from [0.09871951821777555] to [0.05056578257224626]
Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.2072 - val_loss: 0.1424 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.1534 - val_loss: 0.1246 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.1167 - val_loss: 0.0894 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0931 - val_loss: 0.0683 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0754 - val_loss: 0.0518 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0633 - val_loss: 0.0592 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0572 - val_loss: 0.0426 val_loss updated from [0.05056578257224626] to [0.042568310991757445]
Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0460 - val_loss: 0.0368 val_loss updated from [0.042568310991757445] to [0.036796290427446365]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0493 - val_loss: 0.0312 val_loss updated from [0.036796290427446365] to [0.03124926374908278]
Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0369 - val_loss: 0.0242 val_loss updated from [0.03124926374908278] to [0.02417003047756023]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0415 - val_loss: 0.0252 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0351 - val_loss: 0.0284 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0399 - val_loss: 0.0133 val_loss updated from [0.02417003047756023] to [0.013253781310696568]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0317 - val_loss: 0.0192 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0291 - val_loss: 0.0246 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0293 - val_loss: 0.0171 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0293 - val_loss: 0.0101 val_loss updated from [0.013253781310696568] to [0.010059238670186864]
Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0282 - val_loss: 0.0149 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0233 - val_loss: 0.0112 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0289 - val_loss: 0.0124 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0266 - val_loss: 0.0149 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0247 - val_loss: 0.0155 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0234 - val_loss: 0.0100 val_loss updated from [0.010059238670186864] to [0.01002130686214918]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0235 - val_loss: 0.0110 Epoch 1/1 60/60 [==============================] - 69s 1s/step - loss: 0.0270 - val_loss: 0.0169 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0234 - val_loss: 0.0129 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0232 - val_loss: 0.0152 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0284 - val_loss: 0.0114 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0226 - val_loss: 0.0124 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0237 - val_loss: 0.0135 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0175 - val_loss: 0.0119 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0240 - val_loss: 0.0102 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0185 - val_loss: 0.0112 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0201 - val_loss: 0.0118 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0214 - val_loss: 0.0104 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0232 - val_loss: 0.0106 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0212 - val_loss: 0.0118 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0164 - val_loss: 0.0109 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0196 - val_loss: 0.0110 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0193 - val_loss: 0.0087 val_loss updated from [0.01002130686214918] to [0.008695621020807367]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0201 - val_loss: 0.0110 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0172 - val_loss: 0.0112 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0188 - val_loss: 0.0099 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0209 - val_loss: 0.0164 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0193 - val_loss: 0.0097 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0171 - val_loss: 0.0079 val_loss updated from [0.008695621020807367] to [0.007899154718163319]
Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0171 - val_loss: 0.0102 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0223 - val_loss: 0.0114 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0188 - val_loss: 0.0107 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0155 - val_loss: 0.0097 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0192 - val_loss: 0.0109 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0159 - val_loss: 0.0094 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0181 - val_loss: 0.0092 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0143 - val_loss: 0.0100 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0176 - val_loss: 0.0108 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0158 - val_loss: 0.0108 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0162 - val_loss: 0.0132 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0181 - val_loss: 0.0095 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0182 - val_loss: 0.0091 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0183 - val_loss: 0.0094 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0133 - val_loss: 0.0107 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0154 - val_loss: 0.0106 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0155 - val_loss: 0.0092 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0159 - val_loss: 0.0094 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0123 - val_loss: 0.0099 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0147 - val_loss: 0.0092 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0154 - val_loss: 0.0103 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0148 - val_loss: 0.0093 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0155 - val_loss: 0.0080 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0141 - val_loss: 0.0135 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0203 - val_loss: 0.0095 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0169 - val_loss: 0.0083 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0119 - val_loss: 0.0088 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0150 - val_loss: 0.0096 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0118 - val_loss: 0.0092 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0154 - val_loss: 0.0088 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0144 - val_loss: 0.0098 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0145 - val_loss: 0.0083 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0117 - val_loss: 0.0101 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0134 - val_loss: 0.0121 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0143 - val_loss: 0.0089 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0142 - val_loss: 0.0104 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0136 - val_loss: 0.0100 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0108 - val_loss: 0.0091 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0129 - val_loss: 0.0094 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0127 - val_loss: 0.0091 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0127 - val_loss: 0.0091 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0112 - val_loss: 0.0116 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0156 - val_loss: 0.0080 Epoch 1/1 60/60 [==============================] - 67s 1s/step - loss: 0.0136 - val_loss: 0.0076 val_loss updated from [0.007899154718163319] to [0.007634244074223615]
Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0134 - val_loss: 0.0105 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0100 - val_loss: 0.0096 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0110 - val_loss: 0.0075 val_loss updated from [0.007634244074223615] to [0.007492880901231224]
Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0143 - val_loss: 0.0090 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0134 - val_loss: 0.0085 Epoch 1/1 60/60 [==============================] - 68s 1s/step - loss: 0.0103 - val_loss: 0.0089
trainer.select_weights(step=97)