def test_serialize_deserialize(self): """Validate the network can be serialized and deserialized.""" num_classes = 3 backbone = backbones.UNet3D(model_id=4) decoder = decoders.UNet3DDecoder( model_id=4, input_specs=backbone.output_specs) head = segmentation_heads_3d.SegmentationHead3D( num_classes, level=1, num_convs=0) model = segmentation_model.SegmentationModel( backbone=backbone, decoder=decoder, head=head) config = model.get_config() new_model = segmentation_model.SegmentationModel.from_config(config) # Validate that the config can be forced to JSON. _ = new_model.to_json() # If the serialization was successful, the new config should match the old. self.assertAllEqual(model.get_config(), new_model.get_config())
def test_segmentation_network_unet3d_creation(self, input_size, depth): """Test for creation of a segmentation network.""" num_classes = 2 inputs = np.random.rand(2, input_size[0], input_size[0], input_size[1], 3) tf.keras.backend.set_image_data_format('channels_last') backbone = backbones.UNet3D(model_id=depth) decoder = decoders.UNet3DDecoder( model_id=depth, input_specs=backbone.output_specs) head = segmentation_heads_3d.SegmentationHead3D( num_classes, level=1, num_convs=0) model = segmentation_model.SegmentationModel( backbone=backbone, decoder=decoder, head=head) outputs = model(inputs) self.assertAllEqual( [2, input_size[0], input_size[0], input_size[1], num_classes], outputs['logits'].numpy().shape)