日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

paddlepaddle-VisualDL2.0对项目进行可视化调参

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 paddlepaddle-VisualDL2.0对项目进行可视化调参 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果需要更好的閱讀體驗(yàn),可以在ai studio上fork該項(xiàng)目:使用VisualDL2.0對(duì)項(xiàng)目進(jìn)行可視化調(diào)參

調(diào)參是深度學(xué)習(xí)必須要做的事情。數(shù)據(jù)和模型處理好后,需要進(jìn)行模型訓(xùn)練,這個(gè)時(shí)候就需要進(jìn)行調(diào)參了。一種好的參數(shù)配置,可以使得訓(xùn)練出來(lái)的模型在測(cè)試集上表現(xiàn)出很好的效果??墒且绾握{(diào)呢?這里用飛槳(paddlepaddle深度學(xué)習(xí)框架)

我們通常說(shuō)的調(diào)參是指調(diào)整超參數(shù)這些,例如:

  • 先給他個(gè)設(shè)置一個(gè)不大不小的epoch,和一些其他超參數(shù),例如epoch=10?然后跑一下,每多少iter(batch步數(shù))打印一次loss看看,這其實(shí)是很不直觀的,得一條條輸出看過(guò)去。
  • batch_size給個(gè)32?還是64?又或者更大更小?大的batch容易收斂,可是又容易陷入局部最小值(鞍點(diǎn));小的batch訓(xùn)練的模型魯棒性好,可是又難收斂!
  • 學(xué)習(xí)率先給個(gè)0.01,觀察loss,如果loss上升就說(shuō)明loss過(guò)大,給他減小到0.001?又或者0.005之類。如果loss下降很慢,這個(gè)時(shí)候是否考慮給他增大學(xué)習(xí)率呢?學(xué)習(xí)率衰減使用哪些策略比較好呢?是選擇分段衰減?還是按按步數(shù)衰減之類?等等…
  • 這些超參數(shù)都是需要盡可能的去試,在不同模型和數(shù)據(jù)上這些參數(shù)選擇哪種是比較好的,都是不確定的(也就是所謂煉丹了)。
  • 顯而易見調(diào)參這項(xiàng)工作是十分的耗費(fèi)費(fèi)時(shí)間和資源的,如果可以快速找到這些最好的參數(shù),可以節(jié)約很多時(shí)間和算力資源。這也是本文的主要問(wèn)題:如何進(jìn)行高效的調(diào)參?這里推薦使用VisualDL工具進(jìn)行可視化分析
  • PaddleSeg是基于PaddlePaddle開發(fā)的端到端圖像分割開發(fā)套件,覆蓋了DeepLabv3+, U-Net, ICNet, PSPNet, HRNet, Fast-SCNN等主流分割網(wǎng)絡(luò)。通過(guò)模塊化的設(shè)計(jì),以配置化方式驅(qū)動(dòng)模型組合,幫助開發(fā)者更便捷地完成從訓(xùn)練到部署的全流程圖像分割應(yīng)用。
  • 本文將使用paddleSeg套件實(shí)現(xiàn)一個(gè)語(yǔ)義分割項(xiàng)目,并用VisualDL工具對(duì)其參數(shù)進(jìn)行可視化分析,以可視化的形式幫助開發(fā)者清楚了解這些參數(shù)的變化情況。
下載安裝命令## CPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle## GPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

項(xiàng)目?jī)?nèi)容

  • 一.對(duì)數(shù)據(jù)進(jìn)行一些處理以及簡(jiǎn)單配置一下paddleSeg中提供的模型的參數(shù)
  • 二.訓(xùn)練模型,期間調(diào)整一些超參數(shù)/參數(shù)
  • 三.使用VisualDL2.0工具進(jìn)行可視化
  • 四.總結(jié)

一.數(shù)據(jù)和配置準(zhǔn)備:

  • 數(shù)據(jù)這里采用第八屆CCF BDCI遙感影像地塊分割的初賽數(shù)據(jù)集,由于數(shù)據(jù)比較多,語(yǔ)義分割訓(xùn)練較慢,我們這邊只是為了觀察vdl的使用。因此,我們就從這14萬(wàn)張訓(xùn)練集里劃分出一萬(wàn)張來(lái)作為我們的訓(xùn)練集。模型使用deeplabv3+exception65(輕量級(jí)網(wǎng)絡(luò))
#下載paddleSeg !git clone https://hub.fastgit.org/PaddlePaddle/PaddleSeg.git

#配置 %cd PaddleSeg !pip install -r requirements.txt

%cd PaddleSeg/ #下載預(yù)訓(xùn)練模型 !python pretrained_model/download_model.py deeplabv3p_xception65_bn_coco

#將數(shù)據(jù)集解壓到PaddleSeg路徑下,如果在本地運(yùn)行,注意更改data/data55400/ !unzip data/data55400/img_train.zip -d PaddleSeg/dataset/rs_data !unzip data/data55400/lab_train.zip -d PaddleSeg/dataset/rs_data

#為了方便訓(xùn)練,從14萬(wàn)張數(shù)據(jù)集中劃分出1萬(wàn)張作為數(shù)據(jù)集,這邊已經(jīng)劃分好了,如果想用完整數(shù)據(jù)集,或者進(jìn)行一些數(shù)據(jù)增強(qiáng)操作,可以在下面代碼基礎(chǔ)上修改 %cd PaddleSeg/dataset/rs_data %mkdir new_img %mkdir new_lab import os.path import glob import cv2 import matplotlib.pyplot as plt # plt 用于顯示圖片 import matplotlib.image as mpimg # mpimg 用于讀取圖片 import numpy as np from PIL import Image, ImageEnhance, ImageDrawnums_id = 0#計(jì)數(shù)器 with open("train_list.txt", "w", encoding='utf-8') as f1:#訓(xùn)練集with open("val_list.txt", "w", encoding='utf-8') as f2:#驗(yàn)證集with open("test_list.txt", "w", encoding='utf-8') as f3:#測(cè)試集for file1 in glob.glob(r'lab_train/*.png'):nums_id += 1#原文件保存路徑path1, pngfile = file1.split()[0], file1.split("/")[1]path2, jpgfile = "img_train", pngfile.split(".")[0] + ".jpg"file2 = os.path.join(path2, jpgfile)#新文件保存路徑new_file1 = os.path.join("new_lab", pngfile)new_file2 = os.path.join("new_img", jpgfile)##遍歷lab_train下的png圖片,復(fù)制1萬(wàn)張到另一個(gè)文件夾new_lab下'''img1 = cv2.imread(file1,flags=-1)cv2.imwrite(new_file1, img1)#'''img1 = Image.open(file1)img1.save(new_file1)#保存圖片,用PIL讀取png圖片##對(duì)應(yīng)的img_train目錄下的1萬(wàn)張jpg圖片,也復(fù)制到一個(gè)新文件夾new_img下img2 = cv2.imread(file2)cv2.imwrite(new_file2, img2, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])#保存圖片#保存list文件if nums_id <= 900:f1.write(new_file2 + " " + new_file1 + "\n")#生成訓(xùn)練集列表else:f2.write(new_file2 + " " + new_file1 + "\n")#生成驗(yàn)證集列表if nums_id > 9980:f3.write(new_file2 + "\n")#生成測(cè)試集列表,用于可視化數(shù)據(jù),就取最后20張#打印進(jìn)度if nums_id %100 == 0:print("處理到:",nums_id)if nums_id == 1000:break %cd ../../

二.開始訓(xùn)練:打印loss等信息(正常的觀察模型訓(xùn)練情況的方式)以及保存日志文件(用于VDL可視化顯示訓(xùn)練情況)

  • 訓(xùn)練過(guò)程中,設(shè)置參數(shù):–use_vdl(使用vdl) --vdl_log_dir “vis”(指定日志保存的路徑)
#進(jìn)入到PaddleSeg路徑下,如果在終端運(yùn)行,需要?jiǎng)h去代碼前面符號(hào)。 %cd PaddleSeg !python pdseg/train.py --cfg ../work/deeplabv3.yaml --use_gpu --use_vdl --do_eval --vdl_log_dir "vis5"

三.使用VDL可視化分析訓(xùn)練過(guò)程的各參數(shù)變化情況

1.訓(xùn)練完后(訓(xùn)練過(guò)程中也可以動(dòng)態(tài)查看),如何使用vdl可視化查看數(shù)據(jù)變化呢?

2.完成準(zhǔn)備工作后,我們就可以進(jìn)行可視化了!

訓(xùn)練過(guò)程中就打開vdl,觀察數(shù)據(jù)在訓(xùn)練過(guò)程中的動(dòng)態(tài)變化情況

3.查看模型結(jié)構(gòu):使用deeplabv3p_xception65模型訓(xùn)練,選擇模型文件,然后打開vdl,就可以查看模型結(jié)構(gòu)了

  • 如果想看自己搭的一個(gè)模型結(jié)構(gòu)圖,那么也可以不需要自己去辛苦畫了,直接vdl打開,跑一下,就可以顯示出來(lái)啦!用處多多,有待挖掘!

4.我們還可以分成多組實(shí)驗(yàn),觀察不同超參數(shù)下,loss等數(shù)據(jù)的變化情況,在一張圖上展示出來(lái)

  • 從最簡(jiǎn)單的來(lái):學(xué)習(xí)率
    • vis1:lr1=0.01
    • vis2:lr2=0.02
    • vis3:lr3=0.05

  • lr1、lr2、lr3在步數(shù)(橫坐標(biāo))為280的時(shí)候,miou分別為0.49357,0.43952,0.2408,可以幫助我們分析學(xué)習(xí)率衰減情況對(duì)miou提升的影響。對(duì)于某一階段的miou如果是單純看打印信息,是基本上都是沒顯示的,使用vdl后可以看任意階段的數(shù)值變化。Relative是訓(xùn)練到該位置的時(shí)間,通過(guò)這個(gè)參數(shù)可以查看訓(xùn)練多少步數(shù),需要多長(zhǎng)時(shí)間,調(diào)參時(shí)候可以先跑幾個(gè)epoch,就可以較為準(zhǔn)確的算出一個(gè)訓(xùn)練一個(gè)epoch要多長(zhǎng)時(shí)間,方便我們調(diào)整總epoch數(shù)的設(shè)置。

5.查看數(shù)據(jù)集

  • 在aistudio環(huán)境中查看圖片其實(shí)不太方便的,不過(guò)很多和我一樣的小伙伴們又得用aistudio上的gpu環(huán)境,這個(gè)時(shí)候怎么辦呢?就可以用我們的vdl工具了,直接可視化出來(lái)你要看的一部分?jǐn)?shù)據(jù),想看哪些看哪些!
  • log日志在vis4中
  • 要在vdl查看數(shù)據(jù)集的話,需要配置deeplabv3.yaml文件中的一個(gè)參數(shù):VIS_FILE_LIST: "./dataset/rs_data/test_list.txt"
  • 會(huì)在訓(xùn)練過(guò)程中保存模型時(shí)候打印一次,如果不想打印/在vdl中查看數(shù)據(jù),可以將此參數(shù)設(shè)置為None:VIS_FILE_LIST: None

四.總結(jié)

  • 在訓(xùn)練過(guò)程中,也有打印loss等信息,可是訓(xùn)練多個(gè)epoch的話,打印的信息會(huì)非常多,每一條挨個(gè)看過(guò)去是非常累的。使用VDL2.0工具,可以將這些信息用幾張圖片展示出來(lái),鼠標(biāo)移動(dòng)到圖上,數(shù)據(jù)也會(huì)動(dòng)態(tài)顯示,可以幫助開發(fā)者們?nèi)ジ玫姆治瞿P偷囊恍┣闆r。目前VisualDL2.0工具有6大功能,支持多個(gè)框架的模型可視化。
    • 標(biāo)量數(shù)據(jù)的展示
    • 直方圖
    • 樣本數(shù)據(jù)
    • 網(wǎng)絡(luò)結(jié)構(gòu)
    • P-R曲線
    • high dimensional
  • 最后,歡迎大家去VDL GitHub上點(diǎn)個(gè)star鴨!!
    • github首頁(yè):https://github.com/PaddlePaddle/VisualDL
    • 官網(wǎng):https://www.paddlepaddle.org.cn/paddle/visualdl
    • aistudio項(xiàng)目:【VisualDL2.0–眼疾識(shí)別訓(xùn)練可視化】https://aistudio.baidu.com/aistudio/projectdetail/502834
    • aistudio項(xiàng)目:【VisualDL2.0–基于「手寫數(shù)字識(shí)別」模型的全功能展示】https://aistudio.baidu.com/aistudio/projectdetail/622772
    • aistudio論壇:https://ai.baidu.com/forum/topic/show/960053?pageNo=2
下載安裝命令## CPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle## GPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

總結(jié)

以上是生活随笔為你收集整理的paddlepaddle-VisualDL2.0对项目进行可视化调参的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。