Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Jan 18 18:56:44 2019
  4.  
  5. @author: Shaggy
  6. """
  7.  
  8.  
  9. # todo upgrade to keras 2.0
  10.  
  11.  
  12. from keras.models import Sequential
  13. from keras.layers import Reshape
  14. from keras.layers import Merge
  15. from keras.layers.core import Layer, Dense, Dropout, Activation, Flatten, Reshape, Permute
  16. from keras.layers.normalization import BatchNormalization
  17. from keras.layers.convolutional import Convolution3D, MaxPooling3D, ZeroPadding3D
  18. from keras.layers.convolutional import Convolution2D, MaxPooling2D, UpSampling2D, ZeroPadding2D
  19. from keras.layers.convolutional import Convolution1D, MaxPooling1D
  20. from keras.layers.recurrent import LSTM
  21. from keras.layers.advanced_activations import LeakyReLU
  22. from keras.optimizers import Adam , SGD
  23. from keras.layers.embeddings import Embedding
  24. from keras.utils import np_utils
  25. # from keras.regularizers import ActivityRegularizer
  26. from keras import backend as K
  27.  
  28.  
  29.  
  30.  
  31.  
  32. def segnet(nClasses , optimizer=None , input_height=360, input_width=480 ):
  33. K.set_image_data_format('channels_first')
  34. kernel = 3
  35. filter_size = 64
  36. pad = 1
  37. pool_size = 2
  38.  
  39. model = Sequential()
  40. model.add(Layer(input_shape=(3, input_height , input_width )))
  41.  
  42. # encoder
  43. model.add(ZeroPadding2D(padding=(pad,pad)))
  44. model.add(Convolution2D(filter_size, kernel, kernel, border_mode='valid'))
  45. model.add(BatchNormalization())
  46. model.add(Activation('relu'))
  47. model.add(MaxPooling2D(pool_size=(pool_size, pool_size)))
  48.  
  49. model.add(ZeroPadding2D(padding=(pad,pad)))
  50. model.add(Convolution2D(128, kernel, kernel, border_mode='valid'))
  51. model.add(BatchNormalization())
  52. model.add(Activation('relu'))
  53. model.add(MaxPooling2D(pool_size=(pool_size, pool_size)))
  54.  
  55. model.add(ZeroPadding2D(padding=(pad,pad)))
  56. model.add(Convolution2D(256, kernel, kernel, border_mode='valid'))
  57. model.add(BatchNormalization())
  58. model.add(Activation('relu'))
  59. model.add(MaxPooling2D(pool_size=(pool_size, pool_size)))
  60.  
  61. model.add(ZeroPadding2D(padding=(pad,pad)))
  62. model.add(Convolution2D(512, kernel, kernel, border_mode='valid'))
  63. model.add(BatchNormalization())
  64. model.add(Activation('relu'))
  65.  
  66.  
  67. # decoder
  68. model.add( ZeroPadding2D(padding=(pad,pad)))
  69. model.add( Convolution2D(512, kernel, kernel, border_mode='valid'))
  70. model.add( BatchNormalization())
  71.  
  72. model.add( UpSampling2D(size=(pool_size,pool_size)))
  73. model.add( ZeroPadding2D(padding=(pad,pad)))
  74. model.add( Convolution2D(256, kernel, kernel, border_mode='valid'))
  75. model.add( BatchNormalization())
  76.  
  77. model.add( UpSampling2D(size=(pool_size,pool_size)))
  78. model.add( ZeroPadding2D(padding=(pad,pad)))
  79. model.add( Convolution2D(128, kernel, kernel, border_mode='valid'))
  80. model.add( BatchNormalization())
  81.  
  82. model.add( UpSampling2D(size=(pool_size,pool_size)))
  83. model.add( ZeroPadding2D(padding=(pad,pad)))
  84. model.add( Convolution2D(filter_size, kernel, kernel, border_mode='valid'))
  85. model.add( BatchNormalization())
  86.  
  87.  
  88. model.add(Convolution2D( nClasses , 1, 1, border_mode='valid',))
  89.  
  90. model.outputHeight = model.output_shape[-2]
  91. model.outputWidth = model.output_shape[-1]
  92.  
  93.  
  94. model.add(Reshape(( nClasses , model.output_shape[-2]*model.output_shape[-1] ), input_shape=( nClasses , model.output_shape[-2], model.output_shape[-1] )))
  95.  
  96. model.add(Permute((2, 1)))
  97. model.add(Activation('softmax'))
  98.  
  99. if not optimizer is None:
  100. model.compile(loss="categorical_crossentropy", optimizer= optimizer , metrics=['accuracy'] )
  101.  
  102. return model
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement