Win10系统安装Pytorch并研究Pytorch的Unet文件

前一半写于2019年1月3日凌晨

后一半写于2019年1月3日下午至晚上

一、找Unet代码

https://github.com/PARMAGroup/UNet-Instance-Cell-Segmentation

我找到的是这个,instance cell segmentation恰好对应细胞分割。

而且用到的软件是Pytorch,恰好是学长推荐的软件。

感觉看起来非常好的样子。

二、阅读该代码的帮助文件

We tested UNet over several configurations including the loss function, evaluation function and the datasets.

1、准备工作

Python3.7     Pythorch     数据集

2、运行training and validation

运行训练集:运行main.py文件。

Options for configuration配置选项

3、运行结果可视化

在文件夹“visualization”中运行结果可视化。

show visualization

These report will create an image of the performance (Loss, Accuracy), an image of the outputs of the model and an image of the gt to compare.

Options for configuration配置选项

4、Compare two Trained Models

暂时我们用不到

三、安装Pytorch然后看一下Pytorch的基本操作

1、安装Pytorch

我们现在Windows下安装Pytorch吧。Pytorch也有Linux版本。

(1)尝试安装的第一个方法:

参考网站:https://zhuanlan.zhihu.com/p/32910624

针对小笔记本电脑,只需要这一条命令:

conda install -c peterjc123 pytorch

我还是打开Anaconda Prompt,在这个上面输入这条命令的。然后就开始安装了。

解析安装环境好像需要1分钟。中间需要点一次yes。然后就一直等就行了。整个过程我这边花了20分钟左右。

注意:安装的时候务必要关掉所有其他的Python程序,否则可能报错!

在安装Pytorch的同时快速入门

检测是否安装成功:

cmd到命令窗口,输入python,然后import torch包,查看是否导出成功。

结果:安装不成功

(2)卸载pytorch

pip uninstall torch

需要点一次确认。

参考网站:https://ptorch.com/news/37.html

注意:务必重启命令行,不能先输入python后再输入这个命令。

(3)安装pytorch的第二个方法:

参考网址:https://blog.csdn.net/sc2079/article/details/82353894

去官网:

选择适合你开发环境要求的选项。笔者从上到下依次选的是window、pip、3.6、None。

查看安装命令

pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp36-cp36m-win_amd64.whl

pip3 install torchvision

希望这次能安装成功

运行第一个命令大概需要等5分钟

再复制粘贴第二个命令。

输入python,然后import torch包,查看是否导出成功。

安装成功!

2、Pytorch快速入门

参考网址:https://zhuanlan.zhihu.com/p/26854386

(1)pytorch处理对象及操作

Tensor:

张量,其实就是多维矩阵

torch.Tensor(5,4) #返回5*4大小的矩阵

a = torch.rand(5,4)

a.size()

Variable:

一个Variable里面包含着三个属性,data,grad和creator,其中creator表示得到这个Variabel的操作,比如乘法或者加法等等,grad表示方向传播的梯度,data表示取出这个Variabel里面的数据。

神经网络

模型的建立主要依赖于torch.nn,torch.nn包含这个所有神经网络的层的结构

可以看这个网站,注释是中文的,是非常好的Pytorch入门。

https://github.com/L1aoXingyu/pytorch-beginner

比如第四节构建卷积神经网络。

四、尝试阅读代码并弄清楚Options for configuration到底是什么

https://github.com/PARMAGroup/UNet-Instance-Cell-Segmentation

还是这个代码

1、阅读main.py

(1)之前看代码手册的时候,一直看不懂Options for configuration说的是啥,但是在代码里找到了对应的答案。

OptionParser:Python里的这个模块用于处理命令行参数。

比如在命令行里输入某个命令,便会打印出对应参数。

(2)main.py一共有一下几个组成部分:

定义第一个函数:Configure every aspect of the run. Runs the training and validation.

def setup_and_run_train(n_channels, n_classes, dir_img, dir_gt, dir_results, load,  val_perc, batch_size, epochs, lr, run, optimizer, loss, evaluation):

定义第二个函数:Definition of the optional and needed parameters.

def get_args():

这个函数里设置了各个参数的默认值。

开始运行:(用到了刚刚定义的两个函数)

if __name__ == "__main__":

    args = get_args()

    for r in range(args.runs):

        setup_and_run_train(

                n_channels = args.n_channels,

                n_classes = args.n_classes,

                dir_img = '../data/'+args.dataset+'/',

                dir_gt = '../data/'+args.gt+'/',

                dir_results = '../checkpoints/'+args.savedir+'/',

                load = args.load,

                val_perc = args.val_perc,

                batch_size = args.batchsize,

                epochs = args.epochs,

                lr = args.lr,

                run=str(r),

                optimizer = args.optimizer,

                loss = args.loss,

                evaluation = args.evaluation)

注意:

dir_img和dir_gt和dir_results这三个文件夹的命名方法:

两个点“..”表示当前所处的文件夹上一级文件夹的绝对路径

初步理解为:

有一个最大的文件夹,比如叫:Unet_project

里面分为3个小文件夹,分别为:data,checkpoints,codes

然后在data文件夹里,又分为:Data,GT_One_Class两个小文件夹

在checkpoints文件夹里,还有一个checkpoints文件夹。用来保存结果

其中有一项叫做Validation Percentage,暂时还没有弄懂是什么意思。

然后这里的loss和evaluation是选择loss和evaluation函数。

 setup_and_run_train这个函数会返回每个epoch的这些值:

'epoch', 'train loss', 'train acc', 'val loss', 'val acc'并存在excel里。

epoch的含义是:摘自知乎:

对于初学者来讲,有几个概念容易混淆:

(1)iteration:表示1次迭代(也叫training step),每次迭代更新1次网络结构的参数;

(2)batch-size:1次迭代所使用的样本量;

(3)epoch:1个epoch表示过了1遍训练集中的所有样本。

值得注意的是,在深度学习领域中,常用带mini-batch的随机梯度下降算法(Stochastic Gradient Descent, SGD)训练深层结构,它有一个好处就是并不需要遍历全部的样本,当数据量非常大时十分有效。此时,可根据实际问题来定义epoch,例如定义10000次迭代为1个epoch,若每次迭代的batch-size设为256,那么1个epoch相当于过了2560000个训练样本。

2、阅读dataset.py文件

需要在main里用到的函数是 get_dataloaders,所以需要仔细阅读这个函数。

(1)在main函数中:

在main里的调用用到的是这一行:

train_loader, val_loader = get_dataloaders(dir_img, dir_gt, val_perc, batch_size)

(2)在dataset.py文件中:

get_dataloaders这个函数的作用是:

Returns the dataset separated in batches. Used inside every epoch for retrieving the images.

(3)这一句的含义:ids = [f[:-4] for f in os.listdir(dir_img)]

# [:-4]=.后缀

os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

(4)在Class里,有一段transform代码,试图弄清楚它的意思:

# Transforms

        self.data_transforms = {

            'imgs': transforms.Compose([

#                transforms.RandomResizedCrop(256),

#                transforms.RandomHorizontalFlip(),

                transforms.ToTensor(),

                transforms.Normalize([0.0054],[0.0037])

            ]),

            'masks': transforms.Compose([

                transforms.ToTensor()

            ]),

        }

这段代码的作用是:

在Pytorch中转化成张量形式并且进行归一化。

参考网址:https://zhuanlan.zhihu.com/p/27382990

注意:第15行的extension应该改成“tiff”以适应我自己的图片的需要。

3、阅读model.py文件

构建Unet网络

4、阅读train_val文件

定义loss function

5、阅读miscc.py文件

把数据存到csv格式的文件中。

6、一些还有疑问的地方

(1)代码里是怎么区分train和validation set的呢?


五、弄清楚一个问题:训练好之后怎么测试呢?

帮助文件里有这么一句话:

Show Visualization

If you want to see how a trained model performs out, you should use the result_visualization.py file. These report will create an image of the performance (Loss, Accuracy), an image of the outputs of the model and an image of the gt to compare.

对!这个文件“result_visualization.py ” 位于visualization文件夹里,是进行测试用的。

if __name__ == '__main__':

    args = get_args()

    df = mean_results(args.folder)

    plot_one(df, args.title, args.folder)

    see_results(n_channels = args.n_channels,

        n_classes = args.n_classes,

        load_weights = args.load,

        dir_img = "./img_test/"+args.dataset+"/",

        dir_cmp = "./img_test/"+args.gt+"/",

        savedir = args.folder,

        title = args.title)

这一段是最后跑的代码。这里非常关键的内容是load_weights,我需要仔细研究这个函数。

但是可以先训练起来,训练的过程中研究测试的代码。

六、开始调试和运行训练集代码

第一步:

先取200幅图像进行调试,合适的话再去取1000幅

第二步:

开始尝试运行。

一开始主要是一些文件寻找的错误。

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

推荐阅读更多精彩内容

  • 想从Tensorflow循环生成对抗网络开始。但是发现从最难的内容入手还是?太复杂了所以搜索了一下他的始祖也就是深...
    Feather轻飞阅读 5,031评论 1 4
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 5,314评论 0 9
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,357评论 0 5
  • 确实放假,可能你只能休几天还要加班或值班,并不是全休,那么你已经比他们歇的多了…… 我们的身边其实很多人都在加班或...
    清凉世界雨阅读 221评论 2 27
  • #幸福是需要修出来的~每天进步1%~幸福实修04班-31,08班03-陈莉梅-浙江永康# 20170922(96/...
    陈莉梅阅读 88评论 0 1