苞米麵 Paddle 助手 介紹

小熊寶寶啊發表於2022-06-23

苞米麵 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 非必須。

開源協議

MulanPSL-2.0

專案地址

GITEE    https://gitee.com/cnhemiya/bmm-paddle-helper

GITHUB    https://github.com/cnhemiya/bmm-paddle-helper

AISTUDIO  https://aistudio.baidu.com/aistudio/projectdetail/4260357

相關文章