U-net在自己电脑上运行踩坑

Unet代码试运行

研一刚开始,最近要用到FCN的网络结构,所以决定先跑通Unet代码,其中发现了各种各样的错误,踩了超级多的坑。此贴记录下第一次运行的过程,并且希望后来者能避免一些错误。

GitHub代码下载

GitHub下载地址https://github.com/zhixuhao/unet

解压压缩包的内容

data/membrane/train是训练集;

data/membrane/test是测试集,因为是运行过预测代码的结果,所以该文件夹里的0_predict是预测出来的结果。

data.py里定义了加载数据的函数,model.py定义了unet模型结构,main.py是主文件训练并且预测把预测结果保存下来。

试运行

在spyder中打开data.py,运行;

打开model.py,运行;

打开main.py,运行。

出错及错误修正

1

将main.py中#os.environ["CUDA_VISIBLE_DEVICES"] = "0"去掉#

原因可能是因为我的笔记本有集显和独显

2

UserWarning: Update your Model call to the Keras 2 API: Model(inputs=[<tf.Tenso..., outputs=[<tf.Tenso...) model = Model(output = [conv10],inputs = [input_s])

原因是我电脑上装的keras版本是2.0,源代码是早期的版本,将model.py中的

model = Model(input = input_s,output = conv10)改为

model = Model(output = [conv10],inputs = [input_s])

3

此时还有一个错误merge will be removed after 2017/03大概是这样具体忘记了,这出错误是因为keras2.0中修改了API,解决方法是在model.py中将

merge6 = merge([drop4,up6], mode = 'concat', concat_axis = 3)改为

merge6 = concatenate([drop4,up6],axis = 3),同理将代码中的所有merge的格式改写。

保存,再次运行model.py.

4

运行main.py,再次报错如下

OSError: broken data stream when reading image file

修正这个错误,在data.py中

最开头导入包的位置加上

from PIL import Image,ImageFile``ImageFile.LOAD_TRUNCATED_IMAGES=True

在我的电脑上只发生了这几处错误,再次运行main.py就开始训练过程了。

运行

在训练的过程中,训练了几轮后,loss在0.5左右,acc在0.7左右,以很慢的速度下降,训练了239/300的时候

239/300 [======================>.......] - ETA: 777s - loss: 0.3776 - acc: 0.8164

249/300 [=======================>......] - ETA: 649s - loss: 0.3752 - acc: 0.8185

269/300 [==========================>...] - ETA: 368s - loss: 0.3702 - acc: 0.8227

279/300 [==========================>...] - ETA: 266s - loss: 0.3686 - acc: 0.8240

289/300 [===========================>..] - ETA: 139s - loss: 0.3663 - acc: 0.8261

299/300 [============================>.] - ETA: 12s - loss: 0.3638 - acc: 0.8280

在预测的过程中

1/30 [===============>.....]

12/30 [===============>.....]

20/30 [===============>.....]运行正常

21/30 [===============>.....]出现了错误如下

exception in thread Thread-63

意思是内存溢出,应该是我的内存太小只能放下预测出的20张预测结果的数据,第21张放不下了。

修改main.py文件中的results = model.predict_generator(testGene,30,verbose=1),将30改为20。

运行成功,保存成功。

代码解析

详解main.py中的代码

os.environ["CUDA_VISIBLE_DEVICES"] = "0"

调用英伟达独显,我的电脑有集显和独显两块显卡。

训练部分

data_gen_args = dict(rotation_range=0.2, width_shift_range=0.05, height_shift_range=0.05, shear_range=0.05, zoom_range=0.05, horizontal_flip=True, fill_mode='nearest')

不知道什么意思。

myGene = trainGenerator(2,'data/membrane/train','image','label',data_gen_args,save_to_dir = None)

myGene是训练数据,'data/membrane/train'文件夹下,image文件夹存放训练图片,label文件夹存放训练图片的标签(也是图片形式),本示例中的图片形式都是.png

model = unet()载入模型结构

model_checkpoint = ModelCheckpoint('unet_membrane.hdf5', monitor='loss',verbose=1, save_best_only=True)

这一行是载入他人训练得到的模型及权重,这是keras的断点训练属性,unet_membrane.hdf5是他人保存的模型及权重,他人用model.save('unet_membrane.hdf5')保存得到该文件。

model.fit_generator(myGene,steps_per_epoch=300,epochs=1,callbacks=[model_checkpoint])

将训练集放到载入预权重的模型训练,steps_per_epoch=300表示一共分为300份,epochs=1表示一次训练1份。

预测部分

testGene = testGenerator("data/membrane/test")读入测试集原始图像。

results = model.predict_generator(testGene,20,verbose=1) 使用模型预测,在test文件夹中有编号0--29的30张图像,代码中20的意思是预测0--19这20张图像。

saveResult("data/membrane/test",results) 将结果保存到data/membrane/test路径中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容