Win10系統(tǒng)安裝Pytorch并研究Pytorch的Unet文件

前一半寫(xiě)于2019年1月3日凌晨

后一半寫(xiě)于2019年1月3日下午至晚上

一无埃、找Unet代碼

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

我找到的是這個(gè)浓体,instance cell segmentation恰好對(duì)應(yīng)細(xì)胞分割辱揭。

而且用到的軟件是Pytorch裆泳,恰好是學(xué)長(zhǎng)推薦的軟件鳄橘。

感覺(jué)看起來(lái)非常好的樣子叽掘。

二蚣抗、閱讀該代碼的幫助文件

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

1勉躺、準(zhǔn)備工作

Python3.7? ? ?Pythorch? ? ?數(shù)據(jù)集

2癌瘾、運(yùn)行training and validation

運(yùn)行訓(xùn)練集:運(yùn)行main.py文件。

Options for configuration配置選項(xiàng)

3饵溅、運(yùn)行結(jié)果可視化

在文件夾“visualization”中運(yùn)行結(jié)果可視化妨退。

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配置選項(xiàng)

4、Compare two Trained Models

暫時(shí)我們用不到

三蜕企、安裝Pytorch然后看一下Pytorch的基本操作

1咬荷、安裝Pytorch

我們現(xiàn)在Windows下安裝Pytorch吧。Pytorch也有Linux版本轻掩。

(1)嘗試安裝的第一個(gè)方法:

參考網(wǎng)站:https://zhuanlan.zhihu.com/p/32910624

針對(duì)小筆記本電腦幸乒,只需要這一條命令:

conda install -c peterjc123 pytorch

我還是打開(kāi)Anaconda Prompt,在這個(gè)上面輸入這條命令的唇牧。然后就開(kāi)始安裝了罕扎。

解析安裝環(huán)境好像需要1分鐘。中間需要點(diǎn)一次yes丐重。然后就一直等就行了腔召。整個(gè)過(guò)程我這邊花了20分鐘左右。

注意:安裝的時(shí)候務(wù)必要關(guān)掉所有其他的Python程序扮惦,否則可能報(bào)錯(cuò)臀蛛!

在安裝Pytorch的同時(shí)快速入門(mén)

檢測(cè)是否安裝成功:

cmd到命令窗口,輸入python,然后import torch包崖蜜,查看是否導(dǎo)出成功浊仆。

結(jié)果:安裝不成功

(2)卸載pytorch

pip uninstall torch

需要點(diǎn)一次確認(rèn)。

參考網(wǎng)站:https://ptorch.com/news/37.html

注意:務(wù)必重啟命令行豫领,不能先輸入python后再輸入這個(gè)命令抡柿。

(3)安裝pytorch的第二個(gè)方法:

參考網(wǎng)址:https://blog.csdn.net/sc2079/article/details/82353894

去官網(wǎng):

選擇適合你開(kāi)發(fā)環(huán)境要求的選項(xiàng)。筆者從上到下依次選的是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

希望這次能安裝成功

運(yùn)行第一個(gè)命令大概需要等5分鐘

再?gòu)?fù)制粘貼第二個(gè)命令闪檬。

輸入python,然后import torch包星著,查看是否導(dǎo)出成功。

安裝成功粗悯!

2虚循、Pytorch快速入門(mén)

參考網(wǎng)址:https://zhuanlan.zhihu.com/p/26854386

(1)pytorch處理對(duì)象及操作

Tensor:

張量,其實(shí)就是多維矩陣

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

a = torch.rand(5,4)

a.size()

Variable:

一個(gè)Variable里面包含著三個(gè)屬性样傍,data横缔,grad和creator,其中creator表示得到這個(gè)Variabel的操作衫哥,比如乘法或者加法等等茎刚,grad表示方向傳播的梯度,data表示取出這個(gè)Variabel里面的數(shù)據(jù)撤逢。

神經(jīng)網(wǎng)絡(luò)

模型的建立主要依賴(lài)于torch.nn膛锭,torch.nn包含這個(gè)所有神經(jīng)網(wǎng)絡(luò)的層的結(jié)構(gòu)

可以看這個(gè)網(wǎng)站,注釋是中文的蚊荣,是非常好的Pytorch入門(mén)初狰。

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

比如第四節(jié)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)。

四互例、嘗試閱讀代碼并弄清楚Options for configuration到底是什么

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

還是這個(gè)代碼

1奢入、閱讀main.py

(1)之前看代碼手冊(cè)的時(shí)候,一直看不懂Options for configuration說(shuō)的是啥媳叨,但是在代碼里找到了對(duì)應(yīng)的答案腥光。

OptionParser:Python里的這個(gè)模塊用于處理命令行參數(shù)。

比如在命令行里輸入某個(gè)命令肩杈,便會(huì)打印出對(duì)應(yīng)參數(shù)柴我。

(2)main.py一共有一下幾個(gè)組成部分:

定義第一個(gè)函數(shù):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):

定義第二個(gè)函數(shù):Definition of the optional and needed parameters.

def get_args():

這個(gè)函數(shù)里設(shè)置了各個(gè)參數(shù)的默認(rèn)值。

開(kāi)始運(yùn)行:(用到了剛剛定義的兩個(gè)函數(shù))

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這三個(gè)文件夾的命名方法:

兩個(gè)點(diǎn)“..”表示當(dāng)前所處的文件夾上一級(jí)文件夾的絕對(duì)路徑

初步理解為:

有一個(gè)最大的文件夾扩然,比如叫:Unet_project

里面分為3個(gè)小文件夾,分別為:data,checkpoints,codes

然后在data文件夾里聋伦,又分為:Data夫偶,GT_One_Class兩個(gè)小文件夾

在checkpoints文件夾里,還有一個(gè)checkpoints文件夾觉增。用來(lái)保存結(jié)果

其中有一項(xiàng)叫做Validation Percentage兵拢,暫時(shí)還沒(méi)有弄懂是什么意思。

然后這里的loss和evaluation是選擇loss和evaluation函數(shù)逾礁。

?setup_and_run_train這個(gè)函數(shù)會(huì)返回每個(gè)epoch的這些值:

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

epoch的含義是:摘自知乎:

對(duì)于初學(xué)者來(lái)講访惜,有幾個(gè)概念容易混淆:

(1)iteration:表示1次迭代(也叫training step),每次迭代更新1次網(wǎng)絡(luò)結(jié)構(gòu)的參數(shù)腻扇;

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

(3)epoch:1個(gè)epoch表示過(guò)了1遍訓(xùn)練集中的所有樣本。

值得注意的是幼苛,在深度學(xué)習(xí)領(lǐng)域中窒篱,常用帶mini-batch的隨機(jī)梯度下降算法(Stochastic Gradient Descent, SGD)訓(xùn)練深層結(jié)構(gòu),它有一個(gè)好處就是并不需要遍歷全部的樣本舶沿,當(dāng)數(shù)據(jù)量非常大時(shí)十分有效墙杯。此時(shí),可根據(jù)實(shí)際問(wèn)題來(lái)定義epoch括荡,例如定義10000次迭代為1個(gè)epoch高镐,若每次迭代的batch-size設(shè)為256,那么1個(gè)epoch相當(dāng)于過(guò)了2560000個(gè)訓(xùn)練樣本畸冲。

2嫉髓、閱讀dataset.py文件

需要在main里用到的函數(shù)是 get_dataloaders,所以需要仔細(xì)閱讀這個(gè)函數(shù)召夹。

(1)在main函數(shù)中:

在main里的調(diào)用用到的是這一行:

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

(2)在dataset.py文件中:

get_dataloaders這個(gè)函數(shù)的作用是:

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中轉(zhuǎn)化成張量形式并且進(jìn)行歸一化监憎。

參考網(wǎng)址:https://zhuanlan.zhihu.com/p/27382990

注意:第15行的extension應(yīng)該改成“tiff”以適應(yīng)我自己的圖片的需要纱意。

3、閱讀model.py文件

構(gòu)建Unet網(wǎng)絡(luò)

4鲸阔、閱讀train_val文件

定義loss function

5偷霉、閱讀miscc.py文件

把數(shù)據(jù)存到csv格式的文件中。

6褐筛、一些還有疑問(wèn)的地方

(1)代碼里是怎么區(qū)分train和validation set的呢类少?


五、弄清楚一個(gè)問(wèn)題:訓(xùn)練好之后怎么測(cè)試呢渔扎?

幫助文件里有這么一句話(huà):

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.

對(duì)硫狞!這個(gè)文件“result_visualization.py?” 位于visualization文件夾里,是進(jìn)行測(cè)試用的晃痴。

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)

這一段是最后跑的代碼残吩。這里非常關(guān)鍵的內(nèi)容是load_weights,我需要仔細(xì)研究這個(gè)函數(shù)倘核。

但是可以先訓(xùn)練起來(lái)泣侮,訓(xùn)練的過(guò)程中研究測(cè)試的代碼。

六紧唱、開(kāi)始調(diào)試和運(yùn)行訓(xùn)練集代碼

第一步:

先取200幅圖像進(jìn)行調(diào)試活尊,合適的話(huà)再去取1000幅

第二步:

開(kāi)始嘗試運(yùn)行隶校。

一開(kāi)始主要是一些文件尋找的錯(cuò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛹锰,一起剝皮案震驚了整個(gè)濱河市深胳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宁仔,老刑警劉巖稠屠,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異翎苫,居然都是意外死亡权埠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)煎谍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)攘蔽,“玉大人,你說(shuō)我怎么就攤上這事呐粘÷祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵作岖,是天一觀的道長(zhǎng)唆垃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)痘儡,這世上最難降的妖魔是什么辕万? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮沉删,結(jié)果婚禮上渐尿,老公的妹妹穿的比我還像新娘。我一直安慰自己矾瑰,他們只是感情好砖茸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著殴穴,像睡著了一般凉夯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上采幌,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天恍涂,我揣著相機(jī)與錄音,去河邊找鬼植榕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尼夺,可吹牛的內(nèi)容都是我干的尊残。 我是一名探鬼主播炒瘸,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寝衫!你這毒婦竟也來(lái)了顷扩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤慰毅,失蹤者是張志新(化名)和其女友劉穎隘截,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體汹胃,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婶芭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了着饥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犀农。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宰掉,靈堂內(nèi)的尸體忽然破棺而出呵哨,到底是詐尸還是另有隱情,我是刑警寧澤轨奄,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布孟害,位于F島的核電站,受9級(jí)特大地震影響挪拟,放射性物質(zhì)發(fā)生泄漏挨务。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一舞丛、第九天 我趴在偏房一處隱蔽的房頂上張望耘子。 院中可真熱鬧,春花似錦球切、人聲如沸谷誓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捍歪。三九已至,卻和暖如春鸵钝,著一層夾襖步出監(jiān)牢的瞬間糙臼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工恩商, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留变逃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓怠堪,卻偏偏與公主長(zhǎng)得像揽乱,于是被迫代替她去往敵國(guó)和親名眉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 想從Tensorflow循環(huán)生成對(duì)抗網(wǎng)絡(luò)開(kāi)始凰棉。但是發(fā)現(xiàn)從最難的內(nèi)容入手還是损拢?太復(fù)雜了所以搜索了一下他的始祖也就是深...
    Feather輕飛閱讀 5,034評(píng)論 1 4
  • 第一章 1.Linux是一套免費(fèi)使用和自由傳播的類(lèi)UNIX操作系統(tǒng),它可以基于Intel x86系列處理器以及Cy...
    yansicing閱讀 5,331評(píng)論 0 9
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,367評(píng)論 0 5
  • 確實(shí)放假撒犀,可能你只能休幾天還要加班或值班福压,并不是全休,那么你已經(jīng)比他們歇的多了…… 我們的身邊其實(shí)很多人都在加班或...
    清涼世界雨閱讀 222評(píng)論 2 27
  • #幸福是需要修出來(lái)的~每天進(jìn)步1%~幸福實(shí)修04班-31或舞,08班03-陳莉梅-浙江永康# 20170922(96/...
    陳莉梅閱讀 90評(píng)論 0 1