2019-01-19

一、更改参数,训练Unet神经网络

1、更改的两个方向:

(1)batch_size改大

(2)训练集改多,比如可以改成800.

(3)epoch可以稍微改小,从30改成20。

2、复习训练和跑训练集的方法

参考自己的文章“在Linux服务器上跑Python Unet程序”,其实自己记录得不多,这里重新写一遍跑的方法吧。

(1)服务器选择:用greenpill跑;

(2)在自己电脑上改好代码(参数和需要用到的数据集);

(i)改train数据集:

在Unet_project文件夹下的Data文件夹下的两个文件夹:“Data”和“GT_One_Class”分别代表原始图片和对应的ground truth。先把这里改掉。

注意,需要用到“renamer”软件来确保原始图片和groundtruth的对应名称是一样的。

这次我把前13个原始图像生成的扩增图像作为训练集,一共有871张图片。

注意:数据集从最后一个字为1的文件夹里复制粘贴,这里的名字是改过的。

其次检查名称是否对应:

第一个groudtruth图的名称是:“DS01_01.tif_0b2db155-af35-4c31-9586-f29fecb7e695”

第一个original图的名称是:“DS01_01.tif_0b2db155-af35-4c31-9586-f29fecb7e695”

是对应的,可能因为之前改过名字了。现在就不用改了。

(ii)改参数:

主要是改batch_size和epochs这两个量。

在“main.py”里,batch_size是从batch_size = args.batchsize这句话中得到的。其实就是从函数“get_args”中得到的。

所以改参数,实际上就改函数“get_args”里的变量就可以了。

我把batch_size改成了5,epoches还是30。

(3)放到服务器上运行

(i)把文件通过Winscp传到greenpill上。

(ii)运行python文件的方法:

直接先把目录转移到你需要运行的python文件的目录下,然后输入如下指令:python main.py 就可以了。其中“main.py”是我需要运行的文件。

转移目录的方法:比如:cd  /home/duola/file

(iii)用windows打开ubuntu软件,输入 ssh  用户名@主机地址,进而键入密码。

(iv)返回上一级的方法:cd -就可以了

3、复习测试集的test方法

(1)这个文件“result_visualization"位于visualization文件夹里,是进行测试用的。

(2)测试前需要把由train的代码生成的结果“weights0.pth”放入visualization文件夹内。这个“weights0.pth”文件本身的路径在Unet_project的Checkpoints下。

(3)测试前需要把visualization文件夹下的“img_test”文件夹下的“Data”和“GT_One_Class”文件夹分别存上测试图的data和groundtruth

我放上剩余的由original_14和original_15扩增得到了图,一共有129张。

(4)然后把文件夹cd到test的python文件result_visualization.py所在的文件夹中,然后跑这个python程序。

4、运行时出现的问题

(1)服务器 oom了

可能是:train的图片数量太多了?(不是这个原因)batch_size太大了?(是这个原因)

改main.py的参数,还是把batch改成2吧,然后直接丢到greenpill里把这个文件换掉。

从命令行里运行的batch_size可以看出新的文件覆盖掉了原来的文件。然后正常开始跑了。说明batch_size设置成5不行,设置成2才可以。

(2)跑一个epoch的时间:10分钟

5、写一个能够一口气跑出所有test图并且保存的代码

(1)远程调试教程:(非常重要!)

https://www.jianshu.com/p/9b362cdee2ab

(2)需要改result_visualization.py的代码:

新建一个python文件叫做:result_visualization_1.py

(3)研究see_results这个函数:

see_results这个函数是从dir_img里导入原图,dir_cmp里导入groundtruth,用这个函数“get_dataloader_show”来导入。

(4)研究get_data_loader_show这个函数

(i)在这个“get_dataloader_show”函数里,这一句其实我没有太看懂:ids = [f[:-4] for f in os.listdir(dir_img)]

是只读第一个名字吗?

这个函数的返回值是一个dataloader

我新建了一个test进行测试。文件名为“test_1.py”,保存在visualization这个文件夹内。

其实不用写test的,只需要这一句:

ids = [f[:-4] for f in os.listdir("./img_test/"+args.dataset+"/")],即把dir_img具体化就可以了。

结果发现ids读取了全部图片的名字(不包括文件后缀。)

我进而输入了type(ids)查看文件类型。发现是一个list。
(ii)loader = get_dataloader_show(dir_img, dir_cmp)这里的loader是什么呢?是只包含一个图还是包含了很多个图呢?

loader 是一个class类型的数据。

在class中有一个函数叫getitem,作用是ask for an image。是可以根据输入的index获取一张图。

(5) 研究result_visualization_1.py 里for (data, gt) in loader:这段循环,到底是对一个图循环还是对loader里的所有图循环?

我在test_1.py中跑了,惊讶地发现结果是把所有的结果放在同一张图上。类似这种效果:

这个感觉非常好哎!那我下一次可以试着用10个图生成这个结果图吧。

(6)实际尝试:

一次处理10张照片又oom了。

6、结果总结

(1)original_image_14我处理了第一幅图和前10幅图;
(2)original_image_15我处理了第一幅图和前10幅图;

二、评价结果

https://github.com/lucianolorenti/ImageSegmentationEvaluation.jl

https://github.com/martinkersner/py_img_seg_eval  这个代码特别好

我需要找pixel-based matrix

那么我还是自己写吧,基于https://github.com/martinkersner/py_img_seg_eval这个代码自己去写。

1、np.unique函数:该函数是去除数组中的重复数字,并进行排序之后输出。返回值通常是一个列表。

参考网址:https://blog.csdn.net/u012193416/article/details/79672729

2、for in enumerate这个循环:

例如:

3、explanation:

n_cl : number of classes included in ground truth segmentation

n_ij : number of pixels of class i predicted to belong to class j

t_i : total number of pixels of class i in ground truth segmentation

4、还是自己写程序会更快一点吧

参考文章:https://blog.csdn.net/hjxu2016/article/details/79104607

读入图片的代码:

from PIL import Image

import numpy as np

I = Image.open('./cc_1.png')

I.show()   

I.save('./save.png')

I_array = np.array(I)

print I_array.shape

这理我发现了一个问题:保存的图片的格式是png格式的。肯定不行,我需要改成“.tiff”格式

争取在1点前出完图:结果:在1:30完成了出图和对应图的PPT的书写。

争取在2点前写完evaluation的代码:结果:可能在3点左右才能写完?3:18写完

主要参考文献是学长发给我的那篇论文。

在代码里我需要计算出以下几个量:

n_tp:groundtruth为正,预测也为正

n_tn:groundtruth为负,预测也为负

n_fp:groundtruth为负,但是预测为正

n_fn:groundtruth为正,但是预测为负

正为前景(即255),负为背景(即0)

出现了问题:n_tp,n_tn,n_fp,n_fn的总和和图片的像素之和对应不上。

解决办法:我放到matlab里看一看吧。

出现问题的原因是:

prediction里有介于0~255之间的值,我的处理方法是:大于255/2的都视为255,小于255/2的视为0。

争取在4点前做完PPT:在3:41的时候我写完了定量分析部分的PPT。争取在4:00前写完

其实主要是定量分析部分。

至于那边要求的数据扩增部分,参考:“(1-2)Python3.6进行图片及对应groundtruth的data augmentation”这篇文章进行增加。

增加完了。可以睡了。

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

推荐阅读更多精彩内容

  • 环境:win8-64位、python372、django1.11.4 场景:根据教程在虚拟环境中创建了一个新的空d...
    小山丘_0c05阅读 2,109评论 0 1
  • 认识函数的学习笔记 今天是进入特训营的第十一天,学习的主题是认识函数。学习的方法仍然是按照由浅入深,由理论...
    贾贾jjh阅读 356评论 0 1
  • <center>2018年工具使用总结 charles使用提升 复习之前http协议的抓包步骤;将预抓包移动设备和...
    PageWen阅读 273评论 0 1
  • 今天是E战到底开营第十天,从今天起,我们将进入了第二阶段,也是最重要的一个阶段:EXCEL函数与公式。今天学...
    信子姐姐阅读 392评论 0 0
  • 实现了另外一种把文字自适应换行写在图片上: 仔细研究这份代码后发现,有缺点有优点。 缺点:居然把每行文字的位置,自...
    每日派森阅读 620评论 0 0