小熊飛槳練習冊-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