2019-01-19

一、更改參數(shù),訓(xùn)練Unet神經(jīng)網(wǎng)絡(luò)

1、更改的兩個(gè)方向:

(1)batch_size改大

(2)訓(xùn)練集改多,比如可以改成800.

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

2、復(fù)習(xí)訓(xùn)練和跑訓(xùn)練集的方法

參考自己的文章“在Linux服務(wù)器上跑Python Unet程序”,其實(shí)自己記錄得不多,這里重新寫一遍跑的方法吧。

(1)服務(wù)器選擇:用greenpill跑;

(2)在自己電腦上改好代碼(參數(shù)和需要用到的數(shù)據(jù)集);

(i)改train數(shù)據(jù)集:

在Unet_project文件夾下的Data文件夾下的兩個(gè)文件夾:“Data”和“GT_One_Class”分別代表原始圖片和對(duì)應(yīng)的ground truth。先把這里改掉。

注意,需要用到“renamer”軟件來(lái)確保原始圖片和groundtruth的對(duì)應(yīng)名稱是一樣的。

這次我把前13個(gè)原始圖像生成的擴(kuò)增圖像作為訓(xùn)練集,一共有871張圖片。

注意:數(shù)據(jù)集從最后一個(gè)字為1的文件夾里復(fù)制粘貼,這里的名字是改過(guò)的。

其次檢查名稱是否對(duì)應(yīng):

第一個(gè)groudtruth圖的名稱是:“DS01_01.tif_0b2db155-af35-4c31-9586-f29fecb7e695”

第一個(gè)original圖的名稱是:“DS01_01.tif_0b2db155-af35-4c31-9586-f29fecb7e695”

是對(duì)應(yīng)的,可能因?yàn)橹案倪^(guò)名字了?,F(xiàn)在就不用改了。

(ii)改參數(shù):

主要是改batch_size和epochs這兩個(gè)量。

在“main.py”里,batch_size是從batch_size = args.batchsize這句話中得到的。其實(shí)就是從函數(shù)“get_args”中得到的。

所以改參數(shù),實(shí)際上就改函數(shù)“get_args”里的變量就可以了。

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

(3)放到服務(wù)器上運(yùn)行

(i)把文件通過(guò)Winscp傳到greenpill上。

(ii)運(yùn)行python文件的方法:

直接先把目錄轉(zhuǎn)移到你需要運(yùn)行的python文件的目錄下,然后輸入如下指令:python main.py?就可以了。其中“main.py”是我需要運(yùn)行的文件。

轉(zhuǎn)移目錄的方法:比如:cd? /home/duola/file

(iii)用windows打開ubuntu軟件,輸入 ssh? 用戶名@主機(jī)地址,進(jìn)而鍵入密碼。

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

3、復(fù)習(xí)測(cè)試集的test方法

(1)這個(gè)文件“result_visualization"位于visualization文件夾里,是進(jìn)行測(cè)試用的。

(2)測(cè)試前需要把由train的代碼生成的結(jié)果“weights0.pth”放入visualization文件夾內(nèi)。這個(gè)“weights0.pth”文件本身的路徑在Unet_project的Checkpoints下。

(3)測(cè)試前需要把visualization文件夾下的“img_test”文件夾下的“Data”和“GT_One_Class”文件夾分別存上測(cè)試圖的data和groundtruth

我放上剩余的由original_14和original_15擴(kuò)增得到了圖,一共有129張。

(4)然后把文件夾cd到test的python文件result_visualization.py所在的文件夾中,然后跑這個(gè)python程序。

4、運(yùn)行時(shí)出現(xiàn)的問(wèn)題

(1)服務(wù)器 oom了

可能是:train的圖片數(shù)量太多了?(不是這個(gè)原因)batch_size太大了?(是這個(gè)原因)

改main.py的參數(shù),還是把batch改成2吧,然后直接丟到greenpill里把這個(gè)文件換掉。

從命令行里運(yùn)行的batch_size可以看出新的文件覆蓋掉了原來(lái)的文件。然后正常開始跑了。說(shuō)明batch_size設(shè)置成5不行,設(shè)置成2才可以。

(2)跑一個(gè)epoch的時(shí)間:10分鐘

5、寫一個(gè)能夠一口氣跑出所有test圖并且保存的代碼

(1)遠(yuǎn)程調(diào)試教程:(非常重要?。?/p>

http://www.itdecent.cn/p/9b362cdee2ab

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

新建一個(gè)python文件叫做:result_visualization_1.py

(3)研究see_results這個(gè)函數(shù):

see_results這個(gè)函數(shù)是從dir_img里導(dǎo)入原圖,dir_cmp里導(dǎo)入groundtruth,用這個(gè)函數(shù)“get_dataloader_show”來(lái)導(dǎo)入。

(4)研究get_data_loader_show這個(gè)函數(shù)

(i)在這個(gè)“get_dataloader_show”函數(shù)里,這一句其實(shí)我沒(méi)有太看懂:ids = [f[:-4] for f in os.listdir(dir_img)]

是只讀第一個(gè)名字嗎?

這個(gè)函數(shù)的返回值是一個(gè)dataloader

我新建了一個(gè)test進(jìn)行測(cè)試。文件名為“test_1.py”,保存在visualization這個(gè)文件夾內(nèi)。

其實(shí)不用寫test的,只需要這一句:

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

結(jié)果發(fā)現(xiàn)ids讀取了全部圖片的名字(不包括文件后綴。)

我進(jìn)而輸入了type(ids)查看文件類型。發(fā)現(xiàn)是一個(gè)list。
(ii)loader = get_dataloader_show(dir_img, dir_cmp)這里的loader是什么呢?是只包含一個(gè)圖還是包含了很多個(gè)圖呢?

loader 是一個(gè)class類型的數(shù)據(jù)。

在class中有一個(gè)函數(shù)叫g(shù)etitem,作用是ask for an image。是可以根據(jù)輸入的index獲取一張圖。

(5) 研究result_visualization_1.py 里for (data, gt) in loader:這段循環(huán),到底是對(duì)一個(gè)圖循環(huán)還是對(duì)loader里的所有圖循環(huán)?

我在test_1.py中跑了,驚訝地發(fā)現(xiàn)結(jié)果是把所有的結(jié)果放在同一張圖上。類似這種效果:

這個(gè)感覺(jué)非常好哎!那我下一次可以試著用10個(gè)圖生成這個(gè)結(jié)果圖吧。

(6)實(shí)際嘗試:

一次處理10張照片又oom了。

6、結(jié)果總結(jié)

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

二、評(píng)價(jià)結(jié)果

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

https://github.com/martinkersner/py_img_seg_eval? 這個(gè)代碼特別好

我需要找pixel-based matrix

那么我還是自己寫吧,基于https://github.com/martinkersner/py_img_seg_eval這個(gè)代碼自己去寫。

1、np.unique函數(shù):該函數(shù)是去除數(shù)組中的重復(fù)數(shù)字,并進(jìn)行排序之后輸出。返回值通常是一個(gè)列表。

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

2、for in enumerate這個(gè)循環(huán):

例如:

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、還是自己寫程序會(huì)更快一點(diǎn)吧

參考文章: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

這理我發(fā)現(xiàn)了一個(gè)問(wèn)題:保存的圖片的格式是png格式的??隙ú恍?,我需要改成“.tiff”格式

爭(zhēng)取在1點(diǎn)前出完圖:結(jié)果:在1:30完成了出圖和對(duì)應(yīng)圖的PPT的書寫。

爭(zhēng)取在2點(diǎn)前寫完evaluation的代碼:結(jié)果:可能在3點(diǎn)左右才能寫完?3:18寫完

主要參考文獻(xiàn)是學(xué)長(zhǎng)發(fā)給我的那篇論文。

在代碼里我需要計(jì)算出以下幾個(gè)量:

n_tp:groundtruth為正,預(yù)測(cè)也為正

n_tn:groundtruth為負(fù),預(yù)測(cè)也為負(fù)

n_fp:groundtruth為負(fù),但是預(yù)測(cè)為正

n_fn:groundtruth為正,但是預(yù)測(cè)為負(fù)

正為前景(即255),負(fù)為背景(即0)

出現(xiàn)了問(wèn)題:n_tp,n_tn,n_fp,n_fn的總和和圖片的像素之和對(duì)應(yīng)不上。

解決辦法:我放到matlab里看一看吧。

出現(xiàn)問(wèn)題的原因是:

prediction里有介于0~255之間的值,我的處理方法是:大于255/2的都視為255,小于255/2的視為0。

爭(zhēng)取在4點(diǎn)前做完P(guān)PT:在3:41的時(shí)候我寫完了定量分析部分的PPT。爭(zhēng)取在4:00前寫完

其實(shí)主要是定量分析部分。

至于那邊要求的數(shù)據(jù)擴(kuò)增部分,參考:“(1-2)Python3.6進(jìn)行圖片及對(duì)應(yīng)groundtruth的data augmentation”這篇文章進(jìn)行增加。

增加完了。可以睡了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 環(huán)境:win8-64位、python372、django1.11.4 場(chǎng)景:根據(jù)教程在虛擬環(huán)境中創(chuàng)建了一個(gè)新的空d...
    小山丘_0c05閱讀 2,183評(píng)論 0 1
  • 認(rèn)識(shí)函數(shù)的學(xué)習(xí)筆記 今天是進(jìn)入特訓(xùn)營(yíng)的第十一天,學(xué)習(xí)的主題是認(rèn)識(shí)函數(shù)。學(xué)習(xí)的方法仍然是按照由淺入深,由理論...
    賈賈jjh閱讀 441評(píng)論 0 1
  • <center>2018年工具使用總結(jié) charles使用提升 復(fù)習(xí)之前http協(xié)議的抓包步驟;將預(yù)抓包移動(dòng)設(shè)備和...
    PageWen閱讀 336評(píng)論 0 1
  • 今天是E戰(zhàn)到底開營(yíng)第十天,從今天起,我們將進(jìn)入了第二階段,也是最重要的一個(gè)階段:EXCEL函數(shù)與公式。今天學(xué)...
    信子姐姐閱讀 475評(píng)論 0 0
  • 實(shí)現(xiàn)了另外一種把文字自適應(yīng)換行寫在圖片上: 仔細(xì)研究這份代碼后發(fā)現(xiàn),有缺點(diǎn)有優(yōu)點(diǎn)。 缺點(diǎn):居然把每行文字的位置,自...
    每日派森閱讀 685評(píng)論 0 0

友情鏈接更多精彩內(nèi)容