pt模型訓練,轉onnx


pytorch訓練yolov5s.pt,之后轉onnx。

以檢測條形碼為例,1分類問題,訓練yolov5s.pt。

1、github上下載yolov5程序以及pt模型文件,https://github.com/ultralytics/yolov5/releases

2、data文件夾里,images放入樣本圖片,labels放入對應的txt標簽(labelImg制作,注意選擇YOLO模式)

 新建yaml文件(上圖中的barcode.yaml),用於指定路徑和類別。為了省事訓練和驗證用的一樣的圖。

3、VSCode打開程序文件夾

 修改models里yolov5s.yaml類別為1

 修改根目錄里的train.py

 點擊VSCode右上方的開始按鈕,訓練完畢后,在runs\train\exp\weights\里得到pt模型 best.pt

4、測試下效果

修改根目錄里detect.py

 點擊VSCode右上方的開始按鈕,檢測完畢后,在runs\detect\exp\里得到結果圖。

5、pt轉onnx

VSCode下方的“終端”里輸入命令。注意自己的pt路徑,會在同路徑里得到best.onnx。

python export.py --weights runs/train/exp7/best.pt --include onnx --opset 12 --dynamic

簡化模型,先安裝包。

【為什么要簡化?】在訓練完深度學習的pytorch或者tensorflow模型后,有時候需要把模型轉成 onnx,但是很多時候,很多節點比如cast節點,Identity 這些節點可能都不需要,我們需要進行簡化,這樣會方便我們把模型轉成ncnn或者mnn等這些端側部署的模型格式或者通過tensorRT進行部署。

pip install onnx coremltools onnx-simplifier

進入best.onnx目錄

cd runs/train/exp7/weights

簡化,同路徑下得到簡化后的模型 best-sim.onnx

python -m onnxsim best.onnx best-sim.onnx

查看網絡結構

pip install netron
python
import netron
netron.start('best-sim.onnx')

 測試下效果

python detect.py --weights best-sim.onnx --source path/to/img.jpg

 

【代碼里參數講解】

https://blog.csdn.net/IT_charge/article/details/119208680?spm=1001.2101.3001.6650.1&depth_1-utm_relevant_index=2


免責聲明!

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



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