軟件技術(shù)的發(fā)展前景搜索引擎優(yōu)化是什么?
YOLOv5是目標(biāo)檢測領(lǐng)域一種非常優(yōu)秀的模型,其具有以下幾個(gè)優(yōu)勢:
1. 高精度:YOLOv5相比于其前身YOLOv4,在目標(biāo)檢測精度上有了顯著的提升。YOLOv5使用了一系列的改進(jìn),如更深的網(wǎng)絡(luò)結(jié)構(gòu)、更多的特征層和更高分辨率的輸入圖像,以提升精度。
2. 高效性能:YOLOv5在目標(biāo)檢測任務(wù)中具有很高的處理速度和實(shí)時(shí)性。相比于其他目標(biāo)檢測模型,YOLOv5采用了更少的計(jì)算量和參數(shù)數(shù)量,因此它在目標(biāo)檢測任務(wù)中具有更快的推理速度。
3. 簡單易用:YOLOv5是一個(gè)開源項(xiàng)目,源代碼公開,并且提供了預(yù)訓(xùn)練的模型權(quán)重。這使得使用YOLOv5進(jìn)行目標(biāo)檢測變得非常方便,無需從頭開始訓(xùn)練模型,只需進(jìn)行適當(dāng)?shù)奈⒄{(diào)即可。
4. 多平臺適用:YOLOv5可以在多種平臺上運(yùn)行,包括PC端、嵌入式設(shè)備和移動(dòng)設(shè)備等。這使得YOLOv5可以在各種場景下應(yīng)用,如自動(dòng)駕駛、智能安防、人臉識別等。
5. 多功能:YOLOv5可以檢測和分類多個(gè)不同的目標(biāo)類別,包括人、車輛、動(dòng)物等。此外,YOLOv5還可以檢測出目標(biāo)的位置和大小,并提供相應(yīng)的置信度。
總之,YOLOv5具有高精度、高效性能、簡單易用、多平臺適用和多功能等優(yōu)勢,使其成為目標(biāo)檢測領(lǐng)域中的一種前沿模型。
參考:【深度學(xué)習(xí)目標(biāo)檢測】六、基于深度學(xué)習(xí)的路標(biāo)識別(python,目標(biāo)檢測,yolov8)
本文介紹了基于Yolov5的路標(biāo)檢測模型,包括訓(xùn)練過程和數(shù)據(jù)準(zhǔn)備過程,同時(shí)提供了推理的代碼。對準(zhǔn)備計(jì)算機(jī)視覺相關(guān)的畢業(yè)設(shè)計(jì)的同學(xué)有著一定的幫助。
效果如下圖:
一、安裝YoloV5
yolov5和yolov8的開發(fā)團(tuán)隊(duì)相同,安裝方法一樣。官方文檔:主頁 - Ultralytics YOLOv8 文檔
安裝部分參考:官方安裝教程
二、數(shù)據(jù)集準(zhǔn)備
路標(biāo)檢測數(shù)據(jù)集,檢測4種路標(biāo):speedlimit,crosswalk,trafficlight,stop??偣?77張圖,其中訓(xùn)練集701張圖、測試集176張圖。
示例圖片如下:
原始的數(shù)據(jù)格式為COCO格式,本文提供轉(zhuǎn)換好的yolov5格式數(shù)據(jù)集,可以直接放入yolov5中訓(xùn)練,數(shù)據(jù)集地址(yolov5和yolov8的格式一樣):路標(biāo)數(shù)據(jù)集yolov5格式
三、模型訓(xùn)練
1、數(shù)據(jù)集配置文件
在ultralytics/ultralytics/cfg/datasets目錄下添加roadsign.yaml,添加以下內(nèi)容(path修改為自己的路徑):
# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco ← downloads here (20.1 GB)# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: datasets/roadsign/roadsign-yolov8 # 修改為自己的數(shù)據(jù)路徑
train: images/train
val: images/val
test: images/val # Classes
names:# 0: normal0: speedlimit # speedlimit,crosswalk,trafficlight,stop1: crosswalk2: trafficlight3: stop
2、修改模型配置文件
在ultralytics/ultralytics/cfg/models/v5目錄下添加yolov5_roadsign.yaml,添加以下內(nèi)容:
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv5 object detection model with P3-P5 outputs. For details see https://docs.ultralytics.com/models/yolov5# Parameters
nc: 4 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov5n.yaml' will call yolov5.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 1024]l: [1.00, 1.00, 1024]x: [1.33, 1.25, 1024]# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2[-1, 1, Conv, [128, 3, 2]], # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]], # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]], # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]], # 9]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]], # cat backbone P4[-1, 3, C3, [512, False]], # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]], # cat backbone P3[-1, 3, C3, [256, False]], # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]], # cat head P4[-1, 3, C3, [512, False]], # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]], # cat head P5[-1, 3, C3, [1024, False]], # 23 (P5/32-large)[[17, 20, 23], 1, Detect, [nc]], # Detect(P3, P4, P5)]
3、訓(xùn)練模型
使用如下命令訓(xùn)練模型,相關(guān)路徑更改為自己的路徑,建議絕對路徑:
yolo detect train project=deploy name=yolov5_roadsign exist_ok=False optimizer=auto val=True amp=True epochs=100 imgsz=640 model=ultralytics/ultralytics/cfg/models/v5/yolov5_roadsign.yaml data=ultralytics/ultralytics/cfg/datasets/roadsign.yaml
4、驗(yàn)證模型
使用如下命令驗(yàn)證模型,相關(guān)路徑根據(jù)需要修改:
yolo detect val imgsz=640 model=deploy/yolov5_roadsign/weights/best.pt data=ultralytics/ultralytics/cfg/datasets/roadsign.yaml
精度如下圖:
四、推理
訓(xùn)練好了模型,可以使用如下代碼實(shí)現(xiàn)推理,將權(quán)重放到同級目錄:
from PIL import Image
from ultralytics import YOLO# 加載預(yù)訓(xùn)練的YOLOv8n模型
model = YOLO('best.pt')# 在'bus.jpg'上運(yùn)行推理
image_path = 'road423.png'
results = model(image_path) # 結(jié)果列表# 展示結(jié)果
for r in results:im_array = r.plot() # 繪制包含預(yù)測結(jié)果的BGR numpy數(shù)組im = Image.fromarray(im_array[..., ::-1]) # RGB PIL圖像im.show() # 顯示圖像im.save('results.jpg') # 保存圖像
本教程訓(xùn)練好的權(quán)重和推理代碼、示例代碼連接:推理代碼和訓(xùn)練好的權(quán)重