晚上睡前一定要注冊好QE,注冊完寫在這一句的后面法绵。
一箕速、color the grountruth
雖然anaconda安裝不好,但是我直接把代碼放在linux上面跑朋譬,沒有報錯需要安裝包之類的盐茎。
cc2的給groundtruth上色的代碼在119和131行報錯了。報錯原因均是和二維轉(zhuǎn)化成三維相關(guān)的徙赢。我直接把第三維刪掉了字柠,這樣三維數(shù)組就變成了二維的了。
跑代碼的時候注意事項記錄如下:
(1)crop這個文件夾存儲png格式的原圖狡赐,注意命名:z0001,z0002之類的窑业;
(2)添加顏色的txt文件放在主文件夾下;
(3)然后結(jié)果是tif格式的文件枕屉,存儲在color_coded_out文件夾內(nèi)常柄;
(4)運行函數(shù)CC2(x,y,z)這里的x,y,z分別填圖像的維度。比如我是1024*1024*1.
(5)我其實是一張一張跑的搀擂,比如放z00001西潘,然后出一張結(jié)果;再覆蓋掉哥倔,換成新的z0001秸架,再出一張結(jié)果揍庄。
順利完成(yeah~)
其實睡飽了還是很重要的咆蒿,感覺比周六調(diào)試了一整天的效率都高。
二蚂子、把python downgrade 到3.6版本
參考網(wǎng)站:
http://chris35wills.github.io/conda_python_version/??
步驟記錄如下:
1沃测、在terminal的命令行里輸入:?conda search python
查看目前服務(wù)器里已經(jīng)安裝了的python版本;
2食茎、比如我要安裝python 3.6.7蒂破,我需要在服務(wù)器里輸入:
conda install python=3.6.7
中間要回來點一下yes or no的yes.
然后python就變成了3.6.7的版本了。
三别渔、跑xxcyclegan的代碼
帶nohup的命令行如下:
CUDA_VISIBLE_DEVICES=0 nohup python train.py --dataroot ./datasets/cell3 --name cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8889 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out &
我先跑不帶nohup的命令行:
CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name?cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8889 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out
我感覺要安裝一些包附迷。你看缺啥包,就安裝啥包吧哎媚。
然后注意數(shù)據(jù)的多樣性喇伯,之前放的數(shù)據(jù)其實可能不大行的。
遇到問題1:缺dominate包
pip install dominate
遇到問題2:CUDA driver version is insufficient for CUDA runtime version
所以還是需要把包放到學(xué)長跑代碼的服務(wù)器下面去跑拨与。
我先在學(xué)長的服務(wù)器上安裝anaconda稻据,然后再找著上面的方法downgrade。
這個服務(wù)器是藍色的服務(wù)器买喧。
參考自己之前的文章:(1-3)Windows系統(tǒng)連接Linux遠程服務(wù)器并把Python程序傳到遠程服務(wù)器上運行
繼續(xù)在新的服務(wù)器上跑命令行:
CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name?cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8889 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out
發(fā)現(xiàn)pytorch也沒有在新的機器上安裝捻悯。
依舊是參考1月3號的方法:conda install pytorch torchvision -c pytorch
遇到問題3:
報錯如下: <urllib3.connection.HTTPConnection object at 0x7fa44ca31c50>: Failed to establish a new connection: [Errno 111] Connection refused
有人遇到過類似的問題的匆赃。
詢問學(xué)長之后,記錄如下:
(1)因為我的命令行的原因今缚,所以日志文件是存在bioscpy.out里的算柳,即使沒有nohup,在terminal顯示的也不是原始文件姓言。
(2)學(xué)長能在服務(wù)器上直接編輯python文件埠居,我都是在外面編輯好,然后通過winscp扔進來事期。學(xué)習(xí)學(xué)長的這種方法
(3)學(xué)長看到了這一行:ERROR:visdom:[Errno 111] Connection refused
所以他讓我查visdom的相關(guān)內(nèi)容滥壕,問題就會變得很好解決了。
(4)這個命令行里有display的內(nèi)容兽泣,需要在文件夾里建立public_html绎橘,這樣才可能在外部display.
參考網(wǎng)站:
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/issues/24
當(dāng)我輸入:
python -m visdom.server
屏幕上跳出來:
Checking for scripts.
It's Alive!
INFO:root:Application Started
You can navigate to http://localhost:8097
跳出來這一段的時候我可激動了
所以這里我也要把端口號改掉咯~~
CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name?cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8097 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out
然后我需要查visdom的內(nèi)容,visdom是pytorch的可視化神器唠倦,類似tensorflow的tensorboard那樣称鳞。
具體介紹參考這里:
https://zhuanlan.zhihu.com/p/32025746
遇到問題4:我輸入visdom的啟動命令行之后,就卡在那里了稠鼻。
此外冈止,端口號是在linux上面,肯定不能在window上打開去看候齿。那么如何打開那個可視化頁面呢熙暴?
剛剛問了hans,需要查的內(nèi)容是:ssh visdom
其次需要查screen代碼慌盯。他說需要再開一個窗口周霉,才能輸入新的命令行。
解決辦法4-1:
遠程連接visdom的問題
參考連接:https://blog.csdn.net/RhineYu/article/details/79947745
描述:“在服務(wù)器上開啟jupyter notebook亚皂,或者TensorBoard俱箱,或者visdom服務(wù)時,會給出一個IP地址和端口號灭必,可以在瀏覽器中運行狞谱。但是我在本地瀏覽器中輸入這個地址并不能連接服務(wù)〗欤”
“通過Google及Stack Overflow跟衅,找到解決方案,原因在于本地訪問服務(wù)器應(yīng)用需要建立SSH通道璃饱,SSH端口轉(zhuǎn)發(fā)需要SSH連接与斤,而SSH連接是有方向的,從SSH Client到SSH Server。而我們所要訪問的應(yīng)用也是有方向的撩穿,應(yīng)用連接的方向也是從應(yīng)用的Client端連接到應(yīng)用的Server端磷支。比如我們要訪問服務(wù)器上的Web站點時,HTTP應(yīng)用的方向就是我們這臺主機(Client)到服務(wù)器(Server)食寡。
我們這個問題中雾狈,開啟jupyter notebook,TensorBoard抵皱,或是visdom善榛,都屬于本地轉(zhuǎn)發(fā)(Local Forward),即SSH連接和應(yīng)用的連接這兩個連接的方向一致呻畸。具體解決方法是在本地終端建立SSH通道”
vis = visdom.Visdom(env='model_1')
截圖里的代碼不對的移盆,少了一個d。
輸入前三行代碼之后報錯:“address already in use”
原因是hans幫我放到后臺跑的吧伤为。我查一下后臺的程序咒循。
查看后臺運行進程的代碼是:jobs -l,但是后臺沒有正在跑的進程呀绞愚。
我現(xiàn)在在自己的電腦上輸入127.0.0.1:8097叙甸,出現(xiàn)了visdom的界面了。(開心)
解決辦法4-2
screen這個命令具體理解:
參考網(wǎng)址:http://www.runoob.com/linux/linux-comm-screen.html
另一個參考網(wǎng)址:https://www.ibm.com/developerworks/cn/linux/l-cn-screen/index.html
我覺得第二個網(wǎng)址更加詳細位衩。
總體操作方法:
1裆蒸、輸入 ssh -L 端口名稱? 登錄的用戶名
2、其實我發(fā)現(xiàn)直接可以在瀏覽器中打開這個端口了糖驴,可能這個原因僚祷,當(dāng)我輸入:
python3 -m visdom.server的時候,才會報錯:“address already in use”
地址被占用的解決辦法:
參考網(wǎng)址:https://gauravsohoni.wordpress.com/2015/09/17/address-already-in-use-errors-find-and-kill-process/
先在命令行中輸入:lsof -i tcp:8097,其中8097是端口號堪夭。
This should list pids for applications using port 3000. Once you have the pid you can kill the process with kill command
用以下命令結(jié)束這個pid:
kill -9 <PID> #where <PID> is the process id returned by lsof
這時候再輸入:lsof -i tcp:8097,就沒有內(nèi)容返回了。同時網(wǎng)頁也打不開了殿衰。
這時候再輸入:python3 -m visdom.server,就沒有報錯:端口被占用了阅仔。
3薪伏、對sreen的嘗試:
先輸入screen,再activate可視化窗口爹殊,再sreen回去(ctrl+a+d)
這個方法可以蜕乡!
在screen回去的界面運行命令行,沒有報錯visdom相關(guān)的錯誤了梗夸。
遇到問題5:
報錯IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number
解決辦法:https://github.com/NVIDIA/flownet2-pytorch/issues/113
至少不是代碼內(nèi)部的錯誤层玲,是版本的錯誤,所以我需要自己改代碼的版本。
我先把舊版本back up一下辛块,取名為畔派。。润绵。线椰。——backup尘盼,然后再改新的代碼憨愉。
解決辦法:
That's because in PyTorch>=0.5, the index of 0-dim tensor is invalid. The master branch is designed for PyTorch 0.4.1, `loss_val.data[0]` works well.
Try to change
total_loss += loss_val.data[0]
loss_values = [v.data[0] for v in losses]
to
total_loss += loss_val.data
loss_values = [v.data for v in losses]
might fix the problem.
需要改的代碼位于:cycle_lo_seg_model.py的self.backward_G()這個函數(shù)里。
我刪掉了代碼第150行和151行的【0】卿捎,也刪掉了194~199行的【0】
也刪掉了代碼126和131行的【0】
解決了這個報錯配紫。
遇到問題6:報錯:TypeError: Object of type 'Tensor' is not JSON serializable
還是pythorch版本的問題:
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/issues/258
這里建議是安裝版本pytorch0.3.1
參考這篇文章:所以我需要安裝pytoch0.3.0,并且把問題5改過來的地方改回去午阵。就是還是用back up的代碼跑笨蚁。
嘗試解決辦法:
卸載掉當(dāng)前的pytorch,然后安裝0.3.0版本的pytorch
參考網(wǎng)址:https://ptorch.com/news/37.html
這篇文章講的很詳細趟庄,怎么卸載括细,怎么安裝特定版本的pytorch,怎么查看當(dāng)前pytorch版本戚啥。都寫得很詳細奋单。
具體做法:
1、輸入 pip uninstall torch?
然后這時候python猫十,再輸入 import torch览濒,就顯示:找不到模塊了。
這樣說明卸載成功
2拖云、嘗試這個命令行:pip install pytorch==0.3.10
但是安裝失敗贷笛。
我谷歌如下關(guān)鍵詞:“downgrade pytorch to 0.3”
有不少人問一樣的問題呢,哈哈
我在這個網(wǎng)站上找到了合適的解決辦法:https://discuss.pytorch.org/t/how-to-switch-to-older-version-of-pytorch/19656
命令行如下:conda install -c pytorch pytorch=0.3.1
用conda而不是用pip安裝
趁它在安裝的時候宙项,我把遇到問題5改過的代碼改回去(就是把原來的程序丟進來乏苦。)
其實它安裝的時候我心驚膽戰(zhàn)的,生怕什么時候又報錯了尤筐。
應(yīng)該不會的汇荐,反正萬一報錯了,實驗室里也有人可以問盆繁。
安裝成功掀淘。
3、測試pytorch版本
輸入代碼如下:
成功解決油昂。
然后我繼續(xù)跑代碼吧革娄。
遇到問題7:找不到no-blocking這個參數(shù)
哦哦這時候同步異步那里要改回來了倾贰。就是2月18號改的那些地方要改回來
就改第85和86行就可以了,在notepad上改完丟進服務(wù)器拦惋。
好像可以順利跑起來了匆浙。在log_file文件夾里,從最下面可以看到架忌,日志的行數(shù)是不斷增加的吞彤,說明跑起來了。
終于開始跑了
嗚嗚嗚好激動叹放,過了這么多天饰恕,終于跑起來了。
摘自log_file:
(epoch: 2, iters: 72, time: 0.800) D_A: 0.139 G_A: 0.280 Cyc_A: 0.253 D_B: 0.294 G_B: 0.348 Cyc_B: 0.862 location: 0.137 total: 1.880
End of epoch 2 / 200 Time Taken: 77 sec
learning rate = 0.0002000
總結(jié):
1井仰、用到的命令行如下:
CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name?cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port?8097?--input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/cell3.out
2埋嵌、版本:
python3.6.7
pytorch 0.3.1(通過conda安裝)
這個事例深刻地顯示了運行環(huán)境的重要性!
四俱恶、改數(shù)據(jù)集雹嗦,增加數(shù)據(jù)集的多樣性
先觀察自己的數(shù)據(jù)集差在哪里,然后找解決辦法合是。
1是照片不夠多了罪;
2是照片幾乎來自同幾張圖片。
我需要做的事情是:回到數(shù)據(jù)擴增部分聪全,拿編號1-13張原圖進行數(shù)據(jù)擴增泊藕,然后拿編號14-15張原圖進行測試。
我放256張圖吧难礼。如果不夠我再增加圖娃圆。我感覺像原來那樣放128張圖應(yīng)該是不夠的。
這時候?qū)W校的網(wǎng)絡(luò)不行了蛾茉。
我直接開始畫groundtruth吧
五讼呢、畫10張individual圖的groundtruth
中午遇到的問題是:注意這里的overall? label capacity,最好調(diào)成50谦炬,如果調(diào)得更低一點悦屏,label的顏色就顯示不出來了。