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