安裝
YOLOv8
有兩種安裝方式,一種是直接用pip
命令安裝:
pip install ultralytics
另外一種是通過源碼安裝:
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e '.[dev]'
安裝完成后就可以通過yolo
命令在命令行進(jìn)行使用了。
目標(biāo)檢測
使用YOLOv8
進(jìn)行目標(biāo)檢測,可以使用下面的命令:
yolo task=detect mode=predict model=yolov8n.pt source=ultralytics/assets/bus.jpg imgsz=640 show=True save=True
如果模型權(quán)重不存在,程序會(huì)自動(dòng)從GitHub中下載。如果對(duì)命令行的參數(shù)不了解,可以參考官方文檔的說明,也可以直接看ultralytics
代碼倉庫中的ultralytics/yolo/cfg/default.yaml
文件,里面有所有參數(shù)的說明和默認(rèn)值。
上面的命令運(yùn)行成功后,帶檢測結(jié)果的圖片被保存到runs/detect/predict
目錄下,如下圖所示:
跑視頻的效果可以看下面這個(gè)視頻:
用TensorRT部署的YOLOv8模型,來看看效果怎么樣
目標(biāo)跟蹤
YOLOv8
目前支持BoT-SORT
和ByteTrack
兩種多目標(biāo)跟蹤算法,默認(rèn)的目標(biāo)跟蹤算法為BoT-SORT
,使用方式如下:
yolo track model=yolov8n.pt source=test.avi show=True save=True
如果要使用ByteTrack
跟蹤算法,可以添加命令行參數(shù)tracker=bytetrack.yaml
。
下面的視頻是使用BoT-SORT
算法的跟蹤效果,效果還是不錯(cuò)的。
YOLOv8+BoT-SORT目標(biāo)檢測與跟蹤
模型部署
如果要用TensorRT
部署YOLOv8
,需要先使用下面的命令將模型導(dǎo)出為onnx
格式:
yolo export model=yolov8n.pt format=onnx opset=12
YOLOv8
的3
個(gè)檢測頭一共有80x80+40x40+20x20=8400
個(gè)輸出單元格,每個(gè)單元格包含x,y,w,h
這4
項(xiàng)再加80
個(gè)類別的置信度總共84
項(xiàng)內(nèi)容,所以通過上面命令導(dǎo)出的onnx
模型的輸出維度為1x84x8400
。
這樣的通道排列順序有個(gè)問題,那就是后處理的時(shí)候會(huì)造成內(nèi)存訪問不連續(xù)。為了解決這個(gè)問題,我們可以修改一下代碼,具體做法是把ultralytics/nn/modules.py
文件中的421
行做如下修改,交換一下張量y
的通道順序:
修改代碼后需要執(zhí)行前面的安裝命令pip install -e '.[dev]'
使代碼生效。這樣修改后再執(zhí)行上面的模型導(dǎo)出命令,模型的輸出維度變?yōu)?code>1x8400x84。
導(dǎo)出onnx
模型后,就可以用TensorRT
進(jìn)行部署了。如何使用TensorRT
的C++
接口部署ONNX
模型可以參考我之前給【自動(dòng)駕駛之心】公眾號(hào)寫的這篇文章:手把手教學(xué)!TensorRT部署實(shí)戰(zhàn):YOLOv5的ONNX模型部署。
與YOLOv5
相比,部署YOLOv8
的不同之處就是做后處理解析模型輸出結(jié)果的時(shí)候不需要去解析objectness
這項(xiàng)內(nèi)容了,其他都類似。
使用TensorRT
框架在我的GeForce GTX 1650 Ti
顯卡上部署YOLOv8
的結(jié)果如下:
模型 | 輸入尺寸 | 模型精度 | 耗時(shí)(ms) |
---|---|---|---|
yolov8n.onnx | 640x640 | FP32 | 7 |
yolov8s.onnx | 640x640 | FP32 | 12 |
yolov8m.onnx | 640x640 | FP32 | 29 |
yolov8l.onnx | 640x640 | FP32 | 52 |
yolov8x.onnx | 640x640 | FP32 | 83 |
yolov8n.onnx | 640x640 | FP16 | 4 |
yolov8s.onnx | 640x640 | FP16 | 7 |
yolov8m.onnx | 640x640 | FP16 | 14 |
yolov8l.onnx | 640x640 | FP16 | 25 |
yolov8x.onnx | 640x640 | FP16 | 40 |
YOLOv5
測試結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-439220.html
模型 | 輸入尺寸 | 模型精度 | 耗時(shí)(ms) |
---|---|---|---|
yolov5n.onnx | 640x640 | FP32 | 7 |
yolov5s.onnx | 640x640 | FP32 | 10 |
yolov5m.onnx | 640x640 | FP32 | 21 |
yolov5l.onnx | 640x640 | FP32 | 41 |
yolov5x.onnx | 640x640 | FP32 | 76 |
yolov5n.onnx | 640x640 | FP16 | 5 |
yolov5s.onnx | 640x640 | FP16 | 6 |
yolov5m.onnx | 640x640 | FP16 | 11 |
yolov5l.onnx | 640x640 | FP16 | 21 |
yolov5x.onnx | 640x640 | FP16 | 38 |
從上面的測試結(jié)果來看,YOLOv8
比YOLOv5
稍微慢一點(diǎn)點(diǎn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-439220.html
到了這里,關(guān)于YOLOv8初體驗(yàn):檢測、跟蹤、模型部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!