小熊飛槳練習冊-06Paddlex垃圾分類

小熊寶寶啊發表於2022-05-17

小熊飛槳練習冊-06Paddlex垃圾分類

簡介

小熊飛槳練習冊-06Paddlex垃圾分類,本專案開發和測試均在 Ubuntu 20.04 系統下進行。
專案最新程式碼檢視主頁:小熊飛槳練習冊
百度飛槳 AI Studio 主頁:小熊飛槳練習冊-06Paddlex垃圾分類
Ubuntu 系統安裝 CUDA 參考:Ubuntu 百度飛槳和 CUDA 的安裝

檔案說明

檔案 說明
train.py 訓練程式
test.py 測試程式
infer.py 預測程式
onekey.sh 一鍵獲取資料到 dataset 目錄下
get-data.sh 獲取資料到 dataset 目錄下
make-dataset.py 生成資料集列表
check-data.sh 檢查 dataset 目錄下的資料是否存在
mod/args.py 命令列引數解析
mod/pdx.py PaddleX 用的
mod/config.py 配置
mod/utils.py 雜項
mod/report.py 結果報表
dataset 資料集目錄
output 訓練引數儲存目錄
result 預測結果儲存目錄

環境依賴

資料集

資料集來源於百度飛槳公共資料集:垃圾分類訓練集

一鍵獲取資料

  • 執行指令碼,包含以下步驟:獲取資料,生成影像路徑和標籤的文字檔案,檢查資料。
  • 詳情檢視 onekey.sh

如果執行在本地計算機,下載完資料,檔案放到 dataset 目錄下,在專案目錄下執行下面指令碼。

如果執行在百度 AI Studio 環境,檢視 data 目錄是否有資料,在專案目錄下執行下面指令碼。

bash onekey.sh

配置模組

可以檢視修改 mod/config.py 檔案,有詳細的說明

開始訓練

執行 train.py 檔案,檢視命令列引數加 -h

  • 示例
python3 train.py --dataset ./dataset/train --epochs 16 \
    --batch_size 64 --learning_rate 0.1 \
    --lr_decay_epochs "4 8 12" --lr_decay_gamma 0.5 \
    --model MobileNetV3_small_ssld
  • 引數
  --cpu                 是否使用 cpu 計算,預設使用 CUDA
  --num_workers         執行緒數量,預設 auto,為CPU核數的一半
  --epochs              訓練幾輪,預設 4 輪
  --batch_size          一批次數量,預設 16
  --learning_rate       學習率,預設 0.025
  --lr_decay_epochs     預設優化器的學習率衰減輪數。預設為 30 60 90
  --lr_decay_gamma      預設優化器的學習率衰減率。預設為0.1
  --save_interval_epochs 
                        模型儲存間隔(單位: 迭代輪數)。預設為1
  --save_dir            模型儲存路徑。預設為 ./output/
  --dataset             資料集目錄,預設 ./dataset/
  --model               PaddleX 模型名稱
  --pretrain_weights    從檔案載入模型權重,預設 IMAGENET 自動下載 ImageNet 預訓練的模型權重
  --resume_checkpoint   恢復訓練時指定上次訓練儲存的模型路徑, 預設不會恢復訓練
  --model_list          輸出 PaddleX 模型名稱,預設不輸出,選擇後只輸出資訊,不會開啟訓練
  --train_list          訓練集列表,預設 '--dataset' 引數目錄下的 train_list.txt
  --eval_list           評估集列表,預設 '--dataset' 引數目錄下的 val_list.txt
  --label_list          分類標籤列表,預設 '--dataset' 引數目錄下的 labels.txt

檢視支援的模型

  • 執行命令
python3 train.py --model_list
  • 結果
'PPLCNet', 'PPLCNet_ssld', 'ResNet18', 'ResNet18_vd', 'ResNet34', 'ResNet34_vd', 'ResNet50', 'ResNet50_vd', 'ResNet50_vd_ssld', 'ResNet101', 'ResNet101_vd', 'ResNet101_vd_ssld', 'ResNet152', 'ResNet152_vd', 'ResNet200_vd', 'DarkNet53', 'MobileNetV1', 'MobileNetV2', 'MobileNetV3_small', 'MobileNetV3_small_ssld', 'MobileNetV3_large', 'MobileNetV3_large_ssld', 'Xception41', 'Xception65', 'Xception71', 'ShuffleNetV2', 'ShuffleNetV2_swish', 'DenseNet121', 'DenseNet161', 'DenseNet169', 'DenseNet201', 'DenseNet264', 'HRNet_W18_C', 'HRNet_W30_C', 'HRNet_W32_C', 'HRNet_W40_C', 'HRNet_W44_C', 'HRNet_W48_C', 'HRNet_W64_C', 'AlexNet'

測試模型

執行 test.py 檔案,檢視命令列引數加 -h

  • 示例
python3 test.py --dataset ./dataset/train --epochs 4 \
    --model_dir ./output/best_model
  • 引數
  --cpu         是否使用 cpu 計算,預設使用 CUDA
  --epochs      訓練幾輪,預設 4 輪
  --dataset     資料集目錄,預設 ./dataset/
  --test_list   訓練集列表,預設 '--dataset' 引數目錄下的 test_list.txt
  --model_dir   讀取訓練後的模型目錄,預設 ./output/best_model

預測模型

執行 infer.py 檔案,檢視命令列引數加 -h

  • 示例
python3 infer.py --dataset ./dataset/train --model_dir ./output/best_model
  • 引數
  --cpu           是否使用 cpu 計算,預設使用 CUDA
  --dataset       資料集目錄,預設 ./dataset/
  --infer_list    預測集列表,預設 '--dataset' 引數目錄下的 infer_list.txt
  --model_dir     讀取訓練後的模型目錄,預設 ./output/best_model
  --result_info   顯示預測結果詳細資訊,預設 不顯示
  --result_path   預測結果檔案路徑,預設 ./result/result.csv
  --split         資料分隔符,預設 ','

VisualDL 視覺化分析工具

  • 安裝和使用說明參考:VisualDL
  • 如果是 AI Studio 環境訓練的把 output/vdl_log 目錄下載下來,解壓縮後放到本地專案目錄下 output/vdl_log 目錄
  • 在專案目錄下執行下面命令
  • 然後根據提示的網址,開啟瀏覽器訪問提示的網址即可
visualdl --logdir ./output/vdl_log

相關文章