VisualizationsΒΆ

[3]:
import tensorflow as tf

from gcpds.image_segmentation.models import unet_baseline
from gcpds.image_segmentation.datasets.segmentation import InfraredThermalFeet
from gcpds.image_segmentation.losses import DiceCoefficient
[34]:
dataset = InfraredThermalFeet()
train, *_ = dataset()

train = train.map(lambda img,mask,id_img: (img,mask),
                                    num_parallel_calls=tf.data.AUTOTUNE)

shape = 256, 256
train = train.map(lambda img,mask: (tf.image.resize(img,shape), tf.image.resize(mask,shape)),
                                    num_parallel_calls=tf.data.AUTOTUNE)

train = train.batch(1)
 Number of images for Partition 1: 111
 Number of images for Partition 2: 9
 Number of images for Partition 3: 46
[35]:
model = unet_baseline(input_shape=(256,256,1),out_channels=1)

model.compile(loss=DiceCoefficient(), optimizer=tf.keras.optimizers.Adam())
model.fit(train, epochs=100)
Epoch 1/100
111/111 [==============================] - 16s 20ms/step - loss: -0.5716
Epoch 2/100
111/111 [==============================] - 3s 24ms/step - loss: -0.6899
Epoch 3/100
111/111 [==============================] - 3s 24ms/step - loss: -0.7624
Epoch 4/100
111/111 [==============================] - 2s 20ms/step - loss: -0.8247
Epoch 5/100
111/111 [==============================] - 2s 20ms/step - loss: -0.8361
Epoch 6/100
111/111 [==============================] - 3s 25ms/step - loss: -0.8770
Epoch 7/100
111/111 [==============================] - 2s 19ms/step - loss: -0.8994
Epoch 8/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9221
Epoch 9/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9386
Epoch 10/100
111/111 [==============================] - 3s 26ms/step - loss: -0.9342
Epoch 11/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9361
Epoch 12/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9251
Epoch 13/100
111/111 [==============================] - 2s 21ms/step - loss: -0.9353
Epoch 14/100
111/111 [==============================] - 3s 30ms/step - loss: -0.9527
Epoch 15/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9537
Epoch 16/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9581
Epoch 17/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9627
Epoch 18/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9599
Epoch 19/100
111/111 [==============================] - 3s 28ms/step - loss: -0.9588
Epoch 20/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9668
Epoch 21/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9722
Epoch 22/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9708
Epoch 23/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9516
Epoch 24/100
111/111 [==============================] - 3s 29ms/step - loss: -0.9233
Epoch 25/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9593
Epoch 26/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9683
Epoch 27/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9728
Epoch 28/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9752
Epoch 29/100
111/111 [==============================] - 3s 27ms/step - loss: -0.9765
Epoch 30/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9775
Epoch 31/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9775
Epoch 32/100
111/111 [==============================] - 3s 23ms/step - loss: -0.9783
Epoch 33/100
111/111 [==============================] - 3s 26ms/step - loss: -0.9788
Epoch 34/100
111/111 [==============================] - 2s 21ms/step - loss: -0.9791
Epoch 35/100
111/111 [==============================] - 2s 22ms/step - loss: -0.9796
Epoch 36/100
111/111 [==============================] - 3s 24ms/step - loss: -0.9788
Epoch 37/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9801
Epoch 38/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9806
Epoch 39/100
111/111 [==============================] - 3s 28ms/step - loss: -0.9808
Epoch 40/100
111/111 [==============================] - 2s 22ms/step - loss: -0.9780
Epoch 41/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9617
Epoch 42/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9542
Epoch 43/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9448
Epoch 44/100
111/111 [==============================] - 3s 25ms/step - loss: -0.9678
Epoch 45/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9701
Epoch 46/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9755
Epoch 47/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9782
Epoch 48/100
111/111 [==============================] - 3s 28ms/step - loss: -0.9795
Epoch 49/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9808
Epoch 50/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9812
Epoch 51/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9810
Epoch 52/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9817
Epoch 53/100
111/111 [==============================] - 3s 28ms/step - loss: -0.9771
Epoch 54/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9408
Epoch 55/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9534
Epoch 56/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9733
Epoch 57/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9778
Epoch 58/100
111/111 [==============================] - 3s 30ms/step - loss: -0.9798
Epoch 59/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9810
Epoch 60/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9820
Epoch 61/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9828
Epoch 62/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9828
Epoch 63/100
111/111 [==============================] - 3s 26ms/step - loss: -0.9831
Epoch 64/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9833
Epoch 65/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9834
Epoch 66/100
111/111 [==============================] - 2s 21ms/step - loss: -0.9841
Epoch 67/100
111/111 [==============================] - 3s 26ms/step - loss: -0.9839
Epoch 68/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9842
Epoch 69/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9847
Epoch 70/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9842
Epoch 71/100
111/111 [==============================] - 2s 22ms/step - loss: -0.9842
Epoch 72/100
111/111 [==============================] - 3s 26ms/step - loss: -0.9847
Epoch 73/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9845
Epoch 74/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9845
Epoch 75/100
111/111 [==============================] - 2s 22ms/step - loss: -0.9828
Epoch 76/100
111/111 [==============================] - 3s 25ms/step - loss: -0.9839
Epoch 77/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9846
Epoch 78/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9852
Epoch 79/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9833
Epoch 80/100
111/111 [==============================] - 3s 22ms/step - loss: -0.9347
Epoch 81/100
111/111 [==============================] - 3s 26ms/step - loss: -0.9648
Epoch 82/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9705
Epoch 83/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9782
Epoch 84/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9808
Epoch 85/100
111/111 [==============================] - 3s 27ms/step - loss: -0.9825
Epoch 86/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9832
Epoch 87/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9844
Epoch 88/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9848
Epoch 89/100
111/111 [==============================] - 3s 29ms/step - loss: -0.9843
Epoch 90/100
111/111 [==============================] - 2s 19ms/step - loss: -0.9854
Epoch 91/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9852
Epoch 92/100
111/111 [==============================] - 2s 21ms/step - loss: -0.9857
Epoch 93/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9857
Epoch 94/100
111/111 [==============================] - 3s 29ms/step - loss: -0.9862
Epoch 95/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9859
Epoch 96/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9815
Epoch 97/100
111/111 [==============================] - 2s 20ms/step - loss: -0.9822
Epoch 98/100
111/111 [==============================] - 2s 21ms/step - loss: -0.9846
Epoch 99/100
111/111 [==============================] - 3s 25ms/step - loss: -0.9855
Epoch 100/100
111/111 [==============================] - 3s 29ms/step - loss: -0.9862
[35]:
<keras.callbacks.History at 0x7f2862d08880>
[36]:
import matplotlib.pyplot as plt
from gcpds.image_segmentation.visualizations import plot_contour
[40]:
img, mask = train.take(1).get_single_element()
pred_mask = model.predict(img)
1/1 [==============================] - 0s 23ms/step
[ ]:

[41]:
img = img[0,...,0]
mask = mask[0,...,0]
pred_mask = pred_mask[0,...,0]


fig, ax = plt.subplots()
mask_info = (mask,'mask','red'), (pred_mask,'mask','green')
ax = plot_contour(img=img, masks=mask_info, ax= ax)
../_images/notebooks_06-visualizations_7_0.png
[ ]: