色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何基于PaddlePaddle平臺訓練并測試一個視盤圖像分割的基本模型

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-01 09:20 ? 次閱讀

人工智能的輔助下,只需要數秒,即可初步判斷被檢者是否存在眼底疾病,這將有助緩解專業眼科醫生不足的瓶頸,開啟眼底疾病的基層篩查新模式。而圖像分割就是實現這項功能的基礎,可見其重要性。

下面就給大家講講如何基于 PaddlePaddle 平臺,訓練并測試一個視盤圖像分割的基本模型。

1.準備

為了實現這個實驗,Python 是必不可少的,如果你還沒有安裝 Python,建議閱讀我們的這篇文章:超詳細Python安裝指南

在安裝前,確認自己需要的 PaddlePaddle 版本,比如 GPU版 或 CPU版,GPU 在計算上具有絕對優勢,但是如果你沒有一塊強力的顯卡,建議選擇CPU版本。

(GPU版) 如果你想使用GPU版,請確認本機安裝了 CUDA 計算平臺及 cuDNN,它們的下載地址分別是:
https://developer.nvidia.com/cuda-downloads
https://developer.nvidia.com/cudnn-download-survey

具體 CUDA 和 cuDNN 對應的版本要求如下:

  • CUDA 工具包10.1/10.2配合cuDNN v7.6+
  • CUDA 工具包11.2配合cuDNN v8.1.1

CUDA安裝流程很簡單,下載exe程序,一路往下走。cuDNN安裝流程復雜一些,你需要轉移壓縮包解壓后的部分文件到CUDA中,具體可見這篇cuDNN的官方安裝指引:
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

(CPU版) CPU版安裝過程比較簡單,直接按照下面 PaddlePaddle 的安裝指引輸入命令即可。


**(通用)**選擇完你想要安裝的版本,并做好基礎工作后,接下來就是安裝 PaddlePaddle 的具體步驟,打開安裝指引流程頁面:
https://www.paddlepaddle.org.cn/install/quick

圖片

根據你自己的情況選擇這些選項,最后一個選項計算平臺指的是 GPU 加速工具包或CPU,如果你不想用GPU,請選CPU版;想用GPU版的同學請按剛剛下載的CUDA版本進行選擇。

選擇完畢后下方會出現安裝信息,輸入安裝信息里的命令即可安裝成功,不得不說,PaddlePaddle 這些方面做的還是比較貼心的。

在頁面下方還有具體的從頭到尾的安裝步驟,對 Python 基本的虛擬環境安裝流程不了解的同學可以看著這些步驟進行安裝。

圖片

2.初嘗paddleseg

安裝完 paddle 后,為了能夠實現圖像分割功能,我們還需要安裝 paddleseg:

pip install paddleseg

并克隆 paddleseg的代碼庫 (如果克隆不了,請在Python實用寶典公眾號后臺回復:圖像分割 下載):

git clone https://github.com/PaddlePaddle/PaddleSeg.git

克隆完成,進入代碼庫文件夾:

cd PaddleSeg

執行下面命令,并在 PaddleSeg/output 文件夾中出現預測結果,則證明安裝成功。

python predict.py 
       --config configs/quick_start/bisenet_optic_disc_512x512_1k.yml 
       --model_path https://bj.bcebos.com/paddleseg/dygraph/optic_disc/bisenet_optic_disc_512x512_1k/model.pdparams
       --image_path docs/images/optic_test_image.jpg 
       --save_dir output/result

預測結果如下:

圖片

圖片

3.訓練模型

前面只是利用了 PaddlePaddle 提前訓練好的數據進行預測,下面我們要嘗試自己訓練一個模型。

為了訓練模型,我們需要獲得眼底訓練集。事實上,在前面** 初嘗 Paddleseg **中,我們便獲得了一份眼底訓練集,其路徑是 PaddleSegdataoptic_disc_seg.

如果你沒有進行 初嘗 Paddleseg 這一節,也想要獲取訓練集數據的話,在Python實用寶典公眾號后臺回復:圖像分割 下載。下載后解壓數據集,得到一個optic_disc_seg文件夾,將其放到 PaddleSeg 代碼庫的 data 文件夾下。

配置化訓練

PaddleSeg 提供了配置化驅動進行模型訓練。他們在配置文件中詳細列出了每一個可以優化的選項,用戶只要修改這個配置文件就可以對模型進行定制。

所有的配置文件在PaddleSeg/configs文件夾下面

圖片

每一個文件夾代表一個模型,里面包含這個模型的所有配置文件。

在PaddleSeg的配置文件給出的學習率中,除了"bisenet_optic_disc_512x512_1k.yml"中為單卡學習率外,其余配置文件中均為4卡的學習率,因此如果你是單卡訓練,則學習率設置應變成原來的1/4。

為了簡化學習難度,我們繼續以"bisenet_optic_disc_512x512_1k.yml"文件為例,修改部分參數進行訓練,下面是這個配置的全部說明:

上滑查看更多代碼

batch_size: 4#設定batch_size的值即為迭代一次送入網絡的圖片數量,一般顯卡顯存越大,batch_size的值可以越大
iters: 1000#模型迭代的次數

train_dataset:#訓練數據設置
type: OpticDiscSeg#選擇數據集格式
dataset_root: data/optic_disc_seg#選擇數據集路徑
num_classes: 2#指定目標的類別個數(背景也算為一類)
transforms:#數據預處理/增強的方式
- type: Resize#送入網絡之前需要進行resize
target_size:[512, 512]#將原圖resize成512*512在送入網絡
- type: RandomHorizontalFlip#采用水平反轉的方式進行數據增強
- type: Normalize#圖像進行歸一化
mode: train

val_dataset:#驗證數據設置
type: OpticDiscSeg#選擇數據集格式
dataset_root: data/optic_disc_seg#選擇數據集路徑
num_classes: 2#指定目標的類別個數(背景也算為一類)
transforms:#數據預處理/增強的方式
- type: Resize#將原圖resize成512*512在送入網絡
target_size:[512, 512]#將原圖resize成512*512在送入網絡
- type: Normalize#圖像進行歸一化
mode: val

optimizer:#設定優化器的類型
type: sgd#采用SGDStochastic Gradient Descent)隨機梯度下降方法為優化器
momentum: 0.9#動量
weight_decay: 4.0e-5#權值衰減,使用的目的是防止過擬合

learning_rate:#設定學習率
value: 0.01#初始學習率
decay:
type: poly#采用poly作為學習率衰減方式。
power: 0.9#衰減率
end_lr: 0#最終學習率

loss:#設定損失函數的類型
types:
- type: CrossEntropyLoss#損失函數類型
coef:[1, 1, 1, 1, 1]
#BiseNetV2有4個輔助loss,加上主loss共五個,1表示權重 all_loss = coef_1 * loss_1 + .... + coef_n * loss_n

model:#模型說明
type: BiSeNetV2#設定模型類別
pretrained: Null#設定模型的預訓練模型

你可以嘗試調整部分參數進行訓練,看看你自己訓練的模型效果和官方給出的模型的效果的差別。

開始訓練

(GPU版)在正式開啟訓練前,我們需要將CUDA設置為目前有1張可用的顯卡:

set CUDA_VISIBLE_DEVICES=0 # windows
# export CUDA_VISIBLE_DEVICES=0 # linux

輸入訓練命令開始訓練:

python train.py 
       --config configs/quick_start/bisenet_optic_disc_512x512_1k.yml 
       --do_eval 
       --use_vdl 
       --save_interval 500 
       --save_dir output
見到如下的界面,說明你已經開始訓練了:

圖片

4.訓練過程可視化

PaddlePaddle 還提供了可視化分析工具:VisualDL,讓我們的網絡訓練過程更加直觀。

當打開use_vdl開關后,PaddleSeg會將訓練過程中的數據寫入VisualDL文件,可實時查看訓練過程中的日志。記錄的數據包括:

    1. loss變化趨勢
    1. 學習率變化趨勢
    1. 訓練時間
    1. 數據讀取時間
    1. mean IoU 變化趨勢(當打開了do_eval開關后生效)
    1. mean pixel Accuracy變化趨勢(當打開了do_eval開關后生效)

使用如下命令啟動VisualDL查看日志:

# 下述命令會在127.0.0.1上啟動一個服務,支持通過前端web頁面查看,可以通過--host這個參數指定實際ip地址
visualdl --logdir output/

在瀏覽器輸入提示的網址,效果如下:

圖片

如圖所示,打開 http://127.0.0.1:8040/ 頁面,效果如下:

圖片

5.模型測試評估

訓練完成后,用戶可以使用評估腳本val.py來評估模型效果。

假設訓練過程中迭代次數(iters)為1000,保存模型的間隔為500,即每迭代1000次數據集保存2次訓練模型。

因此一共會產生2個定期保存的模型,加上保存的最佳模型best_model,一共有3個模型,可以通過model_path指定期望評估的模型文件。

python val.py 
       --config configs/quick_start/bisenet_optic_disc_512x512_1k.yml 
       --model_path output/iter_1000/model.pdparams

在圖像分割領域中,評估模型質量主要是通過三個指標進行判斷,準確率(acc)、平均交并比(Mean Intersection over Union,簡稱mIoU)、Kappa系數。

  • 準確率:指類別預測正確的像素占總像素的比例,準確率越高模型質量越好。
  • 平均交并比:對每個類別數據集單獨進行推理計算,計算出的預測區域和實際區域交集除以預測區域和實際區域的并集,然后將所有類別得到的結果取平均。在本例中,正常情況下模型在驗證集上的mIoU指標值會達到0.80以上,顯示信息示例如下所示,第2行的mIoU=0.8609即為mIoU。
  • Kappa系數:一個用于一致性檢驗的指標,可以用于衡量分類的效果。Kappa系數越高模型質量越好。

隨著評估腳本的運行,最終打印的評估日志如下。

76/76 [==============================] - 6s 84ms/step - batch_cost: 0.0835 - reader cost: 0.0029
2021-06-05 19:38:53 [INFO]      [EVAL] #Images: 76 mIoU: 0.8609 Acc: 0.9945 Kappa: 0.8393
2021-06-05 19:38:53 [INFO]      [EVAL] Class IoU:
[0.9945 0.7273]
2021-06-05 19:38:53 [INFO]      [EVAL] Class Acc:
[0.9961 0.8975]

可以看到,我改了參數后的訓練效果還是不錯的。

6.效果可視化

除了分析模型的IOU、ACC和Kappa指標之外,我們還可以查閱一些具體樣本的切割樣本效果,從Bad Case啟發進一步優化的思路。

predict.py腳本是專門用來可視化預測案例的,命令格式如下所示

python predict.py 
       --config configs/quick_start/bisenet_optic_disc_512x512_1k.yml 
       --model_path output/iter_1000/model.pdparams 
       --image_path data/optic_disc_seg/JPEGImages/H0003.jpg 
       --save_dir output/result

運行完成后,打開 output/result 文件夾。我們選擇1張圖片進行查看,效果如下。

我們可以直觀的看到模型的切割效果和原始標記之間的差別,從而產生一些優化的思路,比如是否切割的邊界可以做規則化的處理等。

大家也可以嘗試自己標注一個數據集進行圖像分割,你只要按照 PaddleSegdataoptic_disc_seg 里面那樣組織圖片結構,就可以復用這些訓練、評估的過程。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像分割
    +關注

    關注

    4

    文章

    182

    瀏覽量

    18042
  • 模型
    +關注

    關注

    1

    文章

    3298

    瀏覽量

    49174
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85010
  • PaddlePaddle
    +關注

    關注

    0

    文章

    3

    瀏覽量

    1442
收藏 人收藏

    評論

    相關推薦

    如何在SAM時代下打造高效的高性能計算大模型訓練平臺

    Segment Anything Model (SAM)是Meta 公司最近推出的創新AI 模型,專門用于計算機視覺領域圖像分割任務。借
    的頭像 發表于 08-21 04:02 ?2476次閱讀
    如何在SAM時代下打造高效的高性能計算大<b class='flag-5'>模型</b><b class='flag-5'>訓練</b><b class='flag-5'>平臺</b>

    【愛芯派 Pro 開發板試用體驗】+ 圖像分割和填充的Demo測試

    測試的程序是官方提供的交互式圖像分割和修復(Segment and Inpaint Anything)。所謂交互式圖像分割和修復,就是軟件提
    發表于 12-26 11:22

    基于GAC模型實現交互式圖像分割的改進算法

    基于GAC模型實現交互式圖像分割的改進算法提出了種改進的交互式圖像分割算法。采用全變分去噪
    發表于 09-19 09:19

    PaddlePaddle Fluid版本的PaddlePaddle如何保存模型

    PaddlePaddle Fluid版本的PaddlePaddle如何在訓練前加載此前訓練好的模型?
    發表于 04-15 11:19

    PaddlePaddle Fluid版PaddlePaddle加載圖像數據出錯解決方案

    PaddlePaddle Fluid版的PaddlePaddle加載圖像數據報錯
    發表于 04-18 09:22

    使用全卷積網絡模型實現圖像分割

    OpenCv-C++-深度神經網絡(DNN)模塊-使用FCN模型實現圖像分割
    發表于 05-28 07:33

    研發干貨丨基于OK3399-C平臺android系統下實現圖像識別

    ,百度,華為,騰訊的OCR文字識別庫等。二:調用些開源庫進行識別):tensorflow 訓練自定義圖像識別1.是先在ubuntu上對
    發表于 02-07 08:46

    基于多級混合模型圖像分割方法

    本文研究了典型的基于區域的圖像分割方法主動形狀模型(Active Shape Model, ASM)和基于邊緣的圖像分割snake 算法,分
    發表于 07-08 09:58 ?20次下載

    基于方向氣球力活動輪廓模型圖像分割

    針對傳統參數活動輪廓模型存在對輪廓線初始位置敏感的缺點,提出了方向氣球力活動輪廓模型應用于MRI 圖像分割。該
    發表于 07-15 10:51 ?8次下載

    基于改進活動輪廓模型圖像分割

    基于改進活動輪廓模型圖像分割_王芳
    發表于 01-07 19:00 ?0次下載

    基于圖像局部灰度差異的噪聲圖像分割模型

    圖像分割在計算機視覺處理技術中占據重要位置,是圖像處理和分析的關鍵步驟?;谒郊椒ǖ幕顒虞喞?b class='flag-5'>模型被成功應用于在圖像
    發表于 04-17 11:41 ?3次下載

    很小的Pascal VOC數據集上訓練實例分割模型

    的應用,如自動駕駛汽車或醫療診斷。在這些任務中,我們依靠機器的能力來識別物體。 我們經??吹降呐c目標識別相關的任務有4:分類和定位、目標檢測、語義分割和實例分割。 在分類和定位中,我們感興趣的是為
    的頭像 發表于 12-26 11:26 ?6113次閱讀

    基于SEGNET模型圖像語義分割方法

    使用原始 SEGNET模型圖像進行語義分割時,未對圖像中相鄰像素點間的關系進行考慮,導致同目標中像素點類別預測結果不
    發表于 05-27 14:54 ?15次下載

    SAM分割模型是什么?

    SAM是類處理圖像分割任務的通用模型。與以往只能處理某種特定類型圖片的圖像分割
    的頭像 發表于 05-20 09:30 ?2332次閱讀

    圖像分割與語義分割中的CNN模型綜述

    圖像分割與語義分割是計算機視覺領域的重要任務,旨在將圖像劃分為多個具有特定語義含義的區域或對象。卷積神經網絡(CNN)作為深度學習的種核心
    的頭像 發表于 07-09 11:51 ?1132次閱讀
    主站蜘蛛池模板: 97色色极品av影院 | 性啪啪chinese东北女人 | 菠萝菠萝蜜视频在线看1 | 北条麻妃夫の友人196 | 儿子操妈妈视频 | 国产精品AV无码免费播放 | 伊人久久五月丁婷婷 | 国产精品2020观看久久 | 女教师杨雪的性荡生活 | 中国女人hd | 污污又黄又爽免费的网站 | videossexotv极度另类 | 黄页免费观看 | 69亞洲亂人倫AV精品發布 | 亚洲国产精品日本无码网站 | 国产精一品亚洲二区在线播放 | 无人区尖叫之夜美女姐姐视频 | 精品一区二区三区高清免费观看 | 国产在线精品一区二区在线看 | 快播成电影人网址 | 星空无限传媒视频在线观看视频 | 99视频国产在线 | 久久中文骚妇内射 | 久久精品午夜一区二区福利 | 香蕉动漫库| 啊灬啊灬啊灬快灬深高潮啦 | 久久嫩草影院网站 | 欧美亚洲韩日午夜 | 日日碰狠狠添天天爽 | 99国产这里只有精品视频 | 一本道久在线综合道 | AV福利无码亚洲网站麻豆 | 色www永久免费 | 欧美日韩亚洲一区视频二区 | 亚洲99精品A片久久久久久 | 中文字幕在线视频网站 | WWW污污污抽搐喷潮COM | 国产一区二区三区影院 | 国产成人刺激视频在线观看 | 麻豆成人AV久久无码精品 | 99热久这里都是精品小草 |