使用基于Keras和TensorFlow的C#中的U-Net模型

问题描述

我正在使用带有基于Keras后端的神经网络的TensorFlow进行图像分割。我的模型具有U-Net结构。我用python编写了一个网络模型并对其进行了训练: 输入=输入((img_rows,img_cols,3))

conv1 = Conv2D(32,(3,3),activation=None,padding='same')(inputs)
conv1 = Batchnormalization()(conv1)
conv1 = Activation('relu')(conv1)
conv1 = Conv2D(32,padding='same')(conv1)
conv1 = Batchnormalization()(conv1)
conv1 = Activation('relu')(conv1)
pool1 = MaxPooling2D(pool_size=(2,2))(conv1)

conv2 = Conv2D(64,padding='same')(pool1)
conv2 = Batchnormalization()(conv2)
conv2 = Activation('relu')(conv2)
conv2 = Conv2D(64,padding='same')(conv2)
conv2 = Batchnormalization()(conv2)
conv2 = Activation('relu')(conv2)
pool2 = MaxPooling2D(pool_size=(2,2))(conv2)    
conv3 = Conv2D(128,padding='same')(pool2)
conv3 = Batchnormalization()(conv3)
conv3 = Activation('relu')(conv3)
conv3 = Conv2D(128,padding='same')(conv3)
conv3 = Batchnormalization()(conv3)
conv3 = Activation('relu')(conv3)
pool3 = MaxPooling2D(pool_size=(2,2))(conv3)    
conv4 = Conv2D(256,padding='same')(pool3)
conv4 = Batchnormalization()(conv4)
conv4 = Activation('relu')(conv4)
conv4 = Conv2D(256,padding='same')(conv4)
conv4 = Batchnormalization()(conv4)
conv4 = Activation('relu')(conv4)
pool4 = MaxPooling2D(pool_size=(2,2))(conv4)    
conv5 = Conv2D(512,padding='same')(pool4)
conv5 = Batchnormalization()(conv5)
conv5 = Activation('relu')(conv5)
conv5 = Conv2D(512,padding='same')(conv5)
conv5 = Batchnormalization()(conv5)
conv5 = Activation('relu')(conv5)        
up6 = concatenate([Conv2DTranspose(256,(2,2),strides=(2,padding='same')(conv5),conv4],axis=3)
conv6 = Conv2D(256,padding='same')(up6)
conv6 = Batchnormalization()(conv6)
conv6 = Activation('relu')(conv6)
conv6 = Conv2D(256,padding='same')(conv6)
conv6 = Batchnormalization()(conv6)
conv6 = Activation('relu')(conv6)        
up7 = concatenate([Conv2DTranspose(128,padding='same')(conv6),conv3],axis=3)
conv7 = Conv2D(128,padding='same')(up7)
conv7 = Batchnormalization()(conv7)
conv7 = Activation('relu')(conv7)
conv7 = Conv2D(128,padding='same')(conv7)
conv7 = Batchnormalization()(conv7)
conv7 = Activation('relu')(conv7)        
up8 = concatenate([Conv2DTranspose(64,padding='same')(conv7),conv2],axis=3)
conv8 = Conv2D(64,padding='same')(up8)
conv8 = Batchnormalization()(conv8)
conv8 = Activation('relu')(conv8)
conv8 = Conv2D(64,padding='same')(conv8)
conv8 = Batchnormalization()(conv8)
conv8 = Activation('relu')(conv8)        
up9 = concatenate([Conv2DTranspose(32,padding='same')(conv8),conv1],axis=3)
conv9 = Conv2D(32,padding='same')(up9)
conv9 = Batchnormalization()(conv9)
conv9 = Activation('relu')(conv9)
conv9 = Conv2D(32,padding='same')(conv9)
conv9 = Batchnormalization()(conv9)
conv9 = Activation('relu')(conv9)        
conv10 = Conv2D(flag.num_of_classes,(1,1),activation='sigmoid')(conv9)    
model = Model(inputs=[inputs],outputs=[conv10])    
model.compile(optimizer=Adam(lr=lr,decay=1e-6),loss=pixelwise_binary_ce,metrics=[dice_coef])

我将训练后的模型保存为h5格式。我想从C#使用此模型。我试图使用SciSharp Keras.NET库,但是实现示例仅适用于具有连续层的模型。如何使用C#中的模型?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)