tensorflow版Unet_v1(U-net-master)代码调试

目录

代码来源:GitHub

代码调试1:keras版本变化

代码调试2:数据path(Mac下)

代码调试3:训练图片和测试图片的读入顺序

代码调试4:二值化


代码来源:GitHub

网页链接

代码调试1:keras版本变化

旧版本中:
from keras.layers import merge
merge_old = merge([layer1,layer2], mode = 'concat', concat_axis = 3)
新版本中:
from keras.layers import merge
merge = merge.concatenate([layer1, layer2], axis=3)

tensorflow的用法:keras中keras.layers.merge用法的变化_to do 1+1的博客-CSDN博客_tensorflow.keras.layers.merge

旧版本中:
from keras.models import Model
model=Model( input=layer1,output=layer2 ) 
新版本中:
from keras.models import Model
model=Model( inputs=layer1,outputs=layer2 ) 

keras中Model_烟火笑风尘的博客-CSDN博客

旧版本中:
from keras.optimizers import Adam
新版本中:
from keras.optimizer_v2 import adam as adam_v2
'adam': adam_v2.Adam,

keras-nightly 导入包报错 cannot import name ‘Adam‘ from ‘keras.optimizers‘_lazyn的博客-CSDN博客

旧版本中:
model.fit(trainX, trainY, nb_epoch=200, batch_size=2, verbose=2)
新版本中:
model.fit(trainX, trainY, epochs=200, batch_size=2, verbose=2)

TypeError: fit() got an unexpected keyword argument 'nb_epoch' - emanlee - 博客园

代码调试2:数据path(Mac下)

\\全部改成了/

由于原代码中没有建立结果的保存路径,所以增加结果路径之后:

tensorflow版Unet_v1(U-net-master)代码调试_第1张图片

代码调试3:训练图片和测试图片的读入顺序

参考:Unet:实现多通道输入的医学图像分割_y.programming的博客-CSDN博客_unet通道数

(这个更改挺宝藏的,虽然我还没改到他里面提到的多通道)

data.py->create_train_data中

由于glob读入训练数据0-29的tif图片并不是顺序读入的,所以增加sort函数

# 返回所有匹配的文件路径列表,它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。
imgs = glob.glob(self.data_path+"/*."+self.img_type)
# GitHub源代码的基础上改动:由于glob的读入并不是顺序的,所以加上sort函数,参考CSDN
imgs.sort(key=lambda x: int(x.split('/')[3][:-4]))

测试数据同理,如果只对训练数据进行排序而不对测试数据进行排序,那么最后predict出来的30张灰度图跟test中的原tif图也不是一一对应的,不好去评估结果

imgs = glob.glob(self.test_path+"/*."+self.img_type)
imgs.sort(key=lambda x: int(x.split('/')[2][:-4]))

                                                                                                          2022.4.6早_results

代码调试4:二值化

在最终的save_img中,加上如下代码可以将最终输出的图片二值化

# imgs[imgs > 0.5] = 1
# imgs[imgs <= 0.5] = 0

但效果非常不理想,可能由于训练数据太少的原因

tensorflow版Unet_v1(U-net-master)代码调试_第2张图片 tensorflow版Unet_v1(U-net-master)代码调试_第3张图片

                                  二值化后的结果           未二值化之前预测的灰度图(最最开始predict的一次)

你可能感兴趣的:(图像分割,图像处理,tensorflow,深度学习)