Win10(無GPU)下的Paddlex2.0安裝和極簡例程


飛槳作為國內第一個開源的深度學習框架,對沒有GPU的小伙伴來說,最有吸引力的地方就是百度提供了免費算力。所以在百度AIStudio上訓練,在自己的電腦上跑應用是個不錯的選擇。飛槳開源的Paddlex集成了很多模塊,使用起來非常方便,不過在電腦上安裝的坑也不少。安裝成功后記錄一下,免得時間長忘記,又掉進坑里。

參考AIStudio服務器上的配置,用Python3.7.4、Paddlepaddle2.1.2、Paddlex2.0.0

 

一、安裝Anaconda和Pycharm,配置環境

1、安裝Anaconda

進入官方網址,下載安裝程序:

https://www.anaconda.com/products/individual#Downloads

 注意:不要安裝到C盤,后面建虛擬環境要下載不少包,占用空間較大。安裝過程就是下一步...下一步...完成。

2、安裝Pycharm

到官網下載Pycharm安裝程序,社區版免費,專業版試用1個月:

https://www.jetbrains.com/pycharm/download/#section=windows

安裝簡單,過程省略。如果想使用專業版,可以找個工具,無限次試用😁

3、配置環境

在Anaconda工具集中,打開終端,創建環境“paddle”,命令為:

conda create -n paddlex python=3.7.4

待環境安裝完成后(在anaconda安裝目錄的envs文件夾中能看到“paddle”文件夾),激活環境:

conda activate paddle

操作完成。

 

記錄一下常用conda命令:

1 conda update -n base conda  #update最新版本的conda
2 conda create -n xxxx python=3.9  #基於python3.9創建名為xxxx的虛擬環境
3 conda activate xxxx  #開啟xxxx虛擬環境
4 conda deactivate  #關閉當前虛擬環境
5 conda info -e  #顯示所有的虛擬環境
6 conda remove -n xxxx --all  #刪除XXXX虛擬環境

 

二、安裝Paddlepaddle和Paddlex

1、Paddlepaddle

打開官方網址,選擇配置:

https://www.paddlepaddle.org.cn/

 復制安裝命令(版本修改為2.1.2),在終端運行,靜待paddlepaddle安裝完成。

conda install paddlepaddle==2.1.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/

2、Paddlex

PaddleX依賴的pycocotools包,需要用Microsoft Visual C++ 14.0以上的build工具,如果系統里沒有,要先裝好VC build tools再執行下面的操作。

打開官方提供的源碼網址,下載Paddlex2.0.0,保存到自己的源碼文件夾里:

https://gitee.com/paddlepaddle/PaddleX

注意:咱沒有GPU,所以在下載的文件里,打開requirements.txt,刪除里面的paddlepaddle-gpu==2.1.2

 在終端進入requirements.txt所在路徑,安裝所需的包(用清華的源),命令為:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

注意:批量安裝出錯時,可以單獨安裝所需的包,然后再批量安裝。可能需要重復幾次,此處需要些耐心😵。

最后一步不要忘了: 

python setup.py install

 

三、跑個極簡例程

在Pycharm新建一個項目,選剛才建好的環境“paddle”。

1、准備數據集

下載蔬菜數據集並解壓:

https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz

把蔬菜數據集文件夾“vegetables_cls”放到項目的根目錄下。

2、三步完成訓練

經過圖像預處理、數據集加載和選擇模型三步,實現一個簡單的圖像分類訓練,訓練程序train.py代碼如下:

from paddlex import transforms as T
import paddlex as pdx

#定義訓練/驗證圖像處理流程transforms
train_transforms = T.Compose([
    T.RandomCrop(crop_size=224),
    T.RandomHorizontalFlip(),
    T.Normalize()])

eval_transforms = T.Compose([
    T.ResizeByShort(short_size=256),
    T.CenterCrop(crop_size=224),
    T.Normalize()
])

#加載圖像分類數據集
train_dataset = pdx.datasets.ImageNet(
    data_dir='vegetables_cls',
    file_list='vegetables_cls/train_list.txt',
    label_list='vegetables_cls/labels.txt',
    transforms=train_transforms,
    shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
    data_dir='vegetables_cls',
    file_list='vegetables_cls/val_list.txt',
    label_list='vegetables_cls/labels.txt',
    transforms=eval_transforms)

#使用MobileNetV3_small模型開始訓練
num_classes = len(train_dataset.labels)
model = pdx.cls.MobileNetV3_small(num_classes=num_classes)

model.train(num_epochs=10,
            train_dataset=train_dataset,
            train_batch_size=32,
            eval_dataset=eval_dataset,
            lr_decay_epochs=[4, 6, 8],
            save_dir='output/mobilenetv3_small',
            use_vdl=True)

我的四核十代i5筆記本,訓練10輪用了半個小時😂,不過終於有結果了。訓練的時候,可以在終端輸入如下命令,可以啟動服務查看訓練情況:

visualdl --logdir output/mobilenetv3_small --port 8001

在瀏覽器里,通過本地的8001端口看圖形化訓練數據:

https://localhost:8001

3、用訓練的模型預測一下

從網上隨便找了張胡蘿卜圖片,命名為hlb1.jpeg,放到vegetables_cls文件夾下。

運行預測程序predict.py試試,代碼如下:

import paddlex as pdx
model = pdx.load_model('output/mobilenetv3_small/best_model')
result = model.predict('vegetables_cls/hlb1.jpeg')
print("Predict Result: ", result)

不管程序的UserWarning,沒辦法,咱沒有GPU,等5秒出結果了,是“huluobo”,預測正確😅


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM