目录
代码来源:GitHub
代码调试1:keras版本变化
代码调试2:数据path(Mac下)
代码调试3:训练图片和测试图片的读入顺序
代码调试4:二值化
网页链接
旧版本中:
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 - 博客园
\\全部改成了/
由于原代码中没有建立结果的保存路径,所以增加结果路径之后:
参考: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
在最终的save_img中,加上如下代码可以将最终输出的图片二值化
# imgs[imgs > 0.5] = 1
# imgs[imgs <= 0.5] = 0
但效果非常不理想,可能由于训练数据太少的原因
二值化后的结果 未二值化之前预测的灰度图(最最开始predict的一次)