苞米麵 Paddle 助手
- 自己用的百度飛槳 Paddle,PaddleX 專案模板和小工具。My Paddle PaddleX project templates.
適用系統
- 一些指令碼使用 shell 編寫,所以目前適用 Linux 和 百度 AI Studio
如何安裝
- 從 gitee 獲取原始碼
git clone git@gitee.com:cnhemiya/bmm-paddle-helper.git
- 從 github 獲取原始碼
git clone git@github.com:cnhemiya/bmm-paddle-helper.git
程式引數
- 專案生成器 mkbmmph.py
cd bmm-paddle-helper
python3 tools/mkbmmph.py -h
usage: mkbmmph.py [-h] [--project] [--to_dir]
苞米麵 Paddle 專案生成器
optional arguments:
-h, --help show this help message and exit
--project 專案型別,可選:paddlex_cls, paddlex_det, paddlex_seg
--to_dir 生成的專案模板儲存目錄,預設 './run'
- 生成不同的模板
cd bmm-paddle-helper
# PaddleX 影像分類
python3 tools/mkbmmph.py --project paddlex_cls --to_dir ./run
# PaddleX 目標檢測
python3 tools/mkbmmph.py --project paddlex_det --to_dir ./run
# PaddleX 影像分割
python3 tools/mkbmmph.py --project paddlex_seg --to_dir ./run
- Linux 小技巧
可以使用軟連線把 mkbmmph.py 連線到 $HOME/.local/bin 目錄,方便使用。
使用示例
生成模板
- 生成 PaddleX 目標檢測專案模板
cd bmm-paddle-helper
python3 tools/mkbmmph.py --project paddlex_det --to_dir ./run
模板目錄結構
run
├── aismain.ipynb
├── check_data.sh
├── get_data.sh
├── infer.py
├── mod
│ ├── args.py
│ ├── config.py
│ ├── __init__.py
│ ├── pdxconfig.py
│ ├── report.py
│ └── utils.py
├── onekey.sh
├── onetasks.sh
├── paddlex_det_doc.md
├── prune.py
├── quant.py
└── train.py
檔案說明
檔案 | 說明 |
---|---|
aismain.ipynb | Jupyter notebook 適用百度 AI Studio,放到專案根目錄,或者根據目錄修改 |
check_data.sh | 檢查資料 |
get_data.sh | 獲取資料 |
infer.py | 預測程式 |
mod | python 模組 |
onekey.sh | 一鍵獲取資料指令碼模板,需要按照自己需求,修改路徑 |
onetasks.sh | 一鍵訓練,量化指令碼模板,需要按照自己需求,修改引數 |
paddlex_det_doc.md | 引數說明 |
prune.py | 裁剪程式 |
quant.py | 量化程式 |
train.py | 訓練程式 |
aismain.ipynb 目錄結構示例
├── aismain.ipynb
├── data
└── work
└── run
訓練示例
- train.py 加 -h 檢視引數
python3 run/train.py \
--dataset ./dataset/road_fighter_car \
--epochs 32 \
--batch_size 1 \
--learning_rate 0.01 \
--model PicoDet \
--backbone ESNet_m \
--pretrain_weights ""
裁剪示例
- prune.py 加 -h 檢視引數
python3 run/prune.py \
--dataset ./dataset/road_fighter_car \
--epochs 16 \
--batch_size 1 \
--learning_rate 0.001 \
--model_dir ./output/best_model \
--save_dir ./output/prune \
--pruned_flops 0.2
線上量化示例
- quant.py 加 -h 檢視引數
python3 run/quant.py \
--dataset ./dataset/road_fighter_car \
--epochs 16 \
--batch_size 1 \
--learning_rate 0.001 \
--model_dir ./output/best_model \
--save_dir ./output/quant
需要修改什麼
aismain.ipynb
- 放到百度 AI Studio 專案根目錄,或者根據目錄修改
check_data.sh
- dataset_dir:需要檢查的檔案所在的目錄
- data_files:需要檢查的檔案
onekey.sh
- app_dir:程式目錄,如果不是 run,根據自己的設定修改
- zip_file:資料壓縮包
- ais_dir:aistudio 資料目錄
- sub_data_dir:解壓後的資料目錄
- data_dir:資料目錄
onetasks.sh
- MODEL:模型名稱
- BACKBONE:主幹模型
- DATASET:資料集目錄
- BASE_SAVE_DIR:儲存的目錄
- FIXED_INPUT_SHAPE:匯出模型的輸入大小
- APP_DIR:程式目錄
- PYTHON_APP:python 程式
transforms
- 可以自己修改 train.py prune.py quant.py 的 transforms 非必須。
dataset
- 可以自己修改 train.py prune.py quant.py 的 dataset 非必須。
開源協議
專案地址
GITEE https://gitee.com/cnhemiya/bmm-paddle-helper
GITHUB https://github.com/cnhemiya/bmm-paddle-helper
AISTUDIO https://aistudio.baidu.com/aistudio/projectdetail/4260357