YOLOv5釋出v6.0版本,看看都更新了啥?
小知識,大挑戰!本文正在參與“程式設計師必備小知識”創作活動。
環境
- ubuntu 18.04 64bit
- GTX 1070Ti
- anaconda with python 3.8
- pytorch 1.7
- cuda 10.1
前言
就在昨天(2021年10月13日),yolov5
釋出了 V6.0
版本,這個新版本在 V5.0
的基礎上集成了很多的新特性,而且在網路結構上也做了微調,引入了全新的更小( Nano
)的模型 P5
(YOLOv5n
) 和 P6
(YOLOv5n6
)。Nano
模型保持了 yolov5s
模型的深度( depth
),寬度( width
) 則是從0.5降到了0.25,經過這個操作後,總引數減少了 75%,從 7.5M 縮小到了 1.9M,這樣的話,就非常適合於移動端或者是 CPU
的環境。
在效能指標方面,V6.0
也有所提升,看下圖
新特性
下面整理了 V6.0
新增的主要特性
-
整合了
Roboflow
roboflow
前面我們提過了,它公開了很多非常有用的資料集,在v6.0
上可以直接使用他們的資料集,參考 http://github.com/ultralytics/yolov5/issues/4975,非常的方便 -
支援
tensorflow
和keras
模型的匯出使用
python export.py --include saved_model pb tflite tfjs
就可以完成tensorFlow
、keras
、tflite
和tf.js
模型的匯出 -
同時支援
OpenCV DNN
和ONNX Runtime
匯出的
onnx
同時支援opencv dnn
和onnx runtime
python export --weights yolov5s.pt --include onnx --opset 12 --dynamic
在檢測的時候也可以使用指定的
onnx
,python detect.py --weights yolov5s.onnx --dnn
-
模型結構
- 用
Conv(k=6, s=2, p=2)
代替Focus
層,主要是為了方便模型匯出 - 使用
SPPF
代替SPP
層 - 減少
P3
主幹層C3
- 將
SPPF
放在主幹的後面 - 在最後一個
C3
主幹層中重新引入快捷方式 - 更新超引數
- 用
-
增加了
Flask REST API
提供了
web api
的支援,遠端測試非常方便,常見的開放平臺都是這麼做的
flask api實踐
下載 V6.0
原始碼
git clone -b v6.0 http://github.com/ultralytics/yolov5.git
cd yolov5/utils/flask-rest-api
安裝必要依賴並啟動服務
``` pip install flask
通過引數port可以指定特定埠,如--port 8080
python restapi.py ```
指令碼啟動過程中會去下載 yolov5
的原始碼和 yolov5s.pt
模型檔案,存放在 ~/.cache/torch/hub
下
(base) [email protected]:~/workshop/yolov5/data/images$ ls ~/.cache/torch/hub/ultralytics_yolov5_master/
CONTRIBUTING.md detect.py export.py LICENSE __pycache__ requirements.txt tutorial.ipynb val.py
data Dockerfile hubconf.py models README.md train.py utils yolov5s.pt
這個下載的動作,預設情況下,在每次指令碼執行時都會進行。可以通過修改 restapi.py
來使用現有版本
```
將force_reload,由原來的True改為False
model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=False) ```
服務啟動後,我們來到客戶端,使用 curl
命令進行測試
curl -X POST -F [email protected] 'http://192.168.1.140:5000/v1/object-detection/yolov5s'
成功後,可以得到介面返回的結果
(base) [email protected]:~/workshop/yolov5/data/images$ curl -X POST -F [email protected] 'http://192.168.1.140:5000/v1/object-detection/yolov5s'
[{"xmin":752.0,"ymin":46.0,"xmax":1148.0,"ymax":716.0,"confidence":0.875,"class":0,"name":"person"},{"xmin":100.0,"ymin":201.5,"xmax":1002.0,"ymax":718.5,"confidence":0.5795898438,"class":0,"name":"person"},{"xmin":438.25,"ymin":422.0,"xmax":509.75,"ymax":720.0,"confidence":0.5219726562,"class":27,"name":"tie"}]
或者
使用 postman
進行測試,使用的是 POST
請求,url
是 http://192.168.1.140
如果要使用 python
進行請求,專案中也給出了示例 example_request.py
,使用的是 request
模組
關聯閱讀
- 幾個機器學習常用演算法
- 目標檢測YOLOv4
- 多目標資料集中提取單個目標
- COCO格式轉YOLO
- 使用Google colab訓練YOLOv5
- Android版ffmpeg的編譯
- OpenCV的中文亂碼問題
- Dlib使用CUDA加速
- OpenCV常用畫圖函式
- 在OpenCV中使用YOLOv3進行物體檢測
- 圖形化工具打包YOLOv5,生成可執行檔案EXE
- YOLOv5釋出v6.0版本,看看都更新了啥?
- SAHI強化YOLOv5在小目標上的表現
- Android新增遙控器按鍵處理
- 嚇人,5秒鐘偷走你的聲音
- Python中的http網路請求,用它就對了
- 更逼真的摳圖技術!Realistic Lighting on Different Backgrounds
- DeepSOCIAL:基於YOLOv4的人群距離監測!集檢測、跟蹤以及逆透視對映一體的系統!
- 吳恩達的機器學習影片教程,帶中文字幕
- 嘴型同步模型Wav2Lip