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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

如果需要更好的閱讀體驗,可以在ai studio上fork該項目:使用VisualDL2.0對項目進行可視化調參

調參是深度學習必須要做的事情。數據和模型處理好后,需要進行模型訓練,這個時候就需要進行調參了。一種好的參數配置,可以使得訓練出來的模型在測試集上表現出很好的效果。可是要如何調呢?這里用飛槳(paddlepaddle深度學習框架)

我們通常說的調參是指調整超參數這些,例如:

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

項目內容

  • 一.對數據進行一些處理以及簡單配置一下paddleSeg中提供的模型的參數
  • 二.訓練模型,期間調整一些超參數/參數
  • 三.使用VisualDL2.0工具進行可視化
  • 四.總結

一.數據和配置準備:

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

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

%cd PaddleSeg/ #下載預訓練模型 !python pretrained_model/download_model.py deeplabv3p_xception65_bn_coco

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

#為了方便訓練,從14萬張數據集中劃分出1萬張作為數據集,這邊已經劃分好了,如果想用完整數據集,或者進行一些數據增強操作,可以在下面代碼基礎上修改 %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#計數器 with open("train_list.txt", "w", encoding='utf-8') as f1:#訓練集with open("val_list.txt", "w", encoding='utf-8') as f2:#驗證集with open("test_list.txt", "w", encoding='utf-8') as f3:#測試集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圖片,復制1萬張到另一個文件夾new_lab下'''img1 = cv2.imread(file1,flags=-1)cv2.imwrite(new_file1, img1)#'''img1 = Image.open(file1)img1.save(new_file1)#保存圖片,用PIL讀取png圖片##對應的img_train目錄下的1萬張jpg圖片,也復制到一個新文件夾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")#生成訓練集列表else:f2.write(new_file2 + " " + new_file1 + "\n")#生成驗證集列表if nums_id > 9980:f3.write(new_file2 + "\n")#生成測試集列表,用于可視化數據,就取最后20張#打印進度if nums_id %100 == 0:print("處理到:",nums_id)if nums_id == 1000:break %cd ../../

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

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

三.使用VDL可視化分析訓練過程的各參數變化情況

1.訓練完后(訓練過程中也可以動態查看),如何使用vdl可視化查看數據變化呢?

2.完成準備工作后,我們就可以進行可視化了!

訓練過程中就打開vdl,觀察數據在訓練過程中的動態變化情況

3.查看模型結構:使用deeplabv3p_xception65模型訓練,選擇模型文件,然后打開vdl,就可以查看模型結構了

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

4.我們還可以分成多組實驗,觀察不同超參數下,loss等數據的變化情況,在一張圖上展示出來

  • 從最簡單的來:學習率
    • vis1:lr1=0.01
    • vis2:lr2=0.02
    • vis3:lr3=0.05

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

5.查看數據集

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

四.總結

  • 在訓練過程中,也有打印loss等信息,可是訓練多個epoch的話,打印的信息會非常多,每一條挨個看過去是非常累的。使用VDL2.0工具,可以將這些信息用幾張圖片展示出來,鼠標移動到圖上,數據也會動態顯示,可以幫助開發者們去更好的分析模型的一些情況。目前VisualDL2.0工具有6大功能,支持多個框架的模型可視化。
    • 標量數據的展示
    • 直方圖
    • 樣本數據
    • 網絡結構
    • P-R曲線
    • high dimensional
  • 最后,歡迎大家去VDL GitHub上點個star鴨!!
    • github首頁:https://github.com/PaddlePaddle/VisualDL
    • 官網:https://www.paddlepaddle.org.cn/paddle/visualdl
    • aistudio項目:【VisualDL2.0–眼疾識別訓練可視化】https://aistudio.baidu.com/aistudio/projectdetail/502834
    • aistudio項目:【VisualDL2.0–基于「手寫數字識別」模型的全功能展示】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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。