def get_copy_of_layer(layer): from keras.applications.mobilenet import relu6 from keras.layers.core import Activation from keras import layers config = layer.get_config() # Non-standard relu6 layer (from MobileNet) if layer.__class__.__name__ == 'Activation': if config['activation'] == 'relu6': layer_copy = Activation(relu6, name=layer.name) return layer_copy # DeepLabV3+ non-standard layer if layer.__class__.__name__ == 'BilinearUpsampling': from neural_nets.deeplab_v3_plus_model import BilinearUpsampling layer_copy = BilinearUpsampling(upsampling=config['upsampling'], output_size=config['output_size'], name=layer.name) return layer_copy layer_copy = layers.deserialize({ 'class_name': layer.__class__.__name__, 'config': config }) layer_copy.name = layer.name return layer_copy
def get_copy_of_layer(layer, verbose=False): from keras.layers.core import Activation from keras import layers config = layer.get_config() # Non-standard relu6 layer (from MobileNet) if layer.__class__.__name__ == 'Activation': if config['activation'] == 'relu6': if get_keras_sub_version() == 1: from keras.applications.mobilenet import relu6 else: from keras_applications.mobilenet import relu6 layer_copy = Activation(relu6, name=layer.name) return layer_copy # DeepLabV3+ non-standard layer if layer.__class__.__name__ == 'BilinearUpsampling': from neural_nets.deeplab_v3_plus_model import BilinearUpsampling layer_copy = BilinearUpsampling(upsampling=config['upsampling'], output_size=config['output_size'], name=layer.name) return layer_copy # RetinaNet non-standard layer if layer.__class__.__name__ == 'UpsampleLike': from keras_retinanet.layers import UpsampleLike layer_copy = UpsampleLike(name=layer.name) return layer_copy # RetinaNet non-standard layer if layer.__class__.__name__ == 'Anchors': from keras_retinanet.layers import Anchors layer_copy = Anchors(name=layer.name, size=config['size'], stride=config['stride'], ratios=config['ratios'], scales=config['scales']) return layer_copy # RetinaNet non-standard layer if layer.__class__.__name__ == 'RegressBoxes': from keras_retinanet.layers import RegressBoxes layer_copy = RegressBoxes(name=layer.name, mean=config['mean'], std=config['std']) return layer_copy # RetinaNet non-standard layer if layer.__class__.__name__ == 'PriorProbability': from keras_retinanet.layers import PriorProbability layer_copy = PriorProbability(name=layer.name, mean=config['mean'], std=config['std']) return layer_copy # RetinaNet non-standard layer if layer.__class__.__name__ == 'ClipBoxes': from keras_retinanet.layers import ClipBoxes layer_copy = ClipBoxes(name=layer.name) return layer_copy # RetinaNet non-standard layer if layer.__class__.__name__ == 'FilterDetections': from keras_retinanet.layers import FilterDetections layer_copy = FilterDetections( name=layer.name, max_detections=config['max_detections'], nms_threshold=config['nms_threshold'], score_threshold=config['score_threshold'], nms=config['nms'], class_specific_filter=config['class_specific_filter'], trainable=config['trainable'], parallel_iterations=config['parallel_iterations']) return layer_copy layer_copy = layers.deserialize({ 'class_name': layer.__class__.__name__, 'config': config }) layer_copy.name = layer.name return layer_copy