五十行python代码实现yolov8车辆计数

参考:https://www.bilibili.com/video/BV1Dg4y1N7nz/?spm_id_from=333.1007.tianma.2-2-5.click&vd_source=d897272a73b9faef6629bccb52b418e3

简化版代码如下:

import cv2
import supervision as sv
from ultralytics import YOLO
from supervision.draw.color import Color


model = YOLO('yolov8m.pt')

# 越线检测位置
line_counter = sv.LineZone(start=sv.Point(0, 400), end=sv.Point(1280, 400))

# 可视化配置
line_annotator = sv.LineZoneAnnotator(thickness=2, text_thickness=2, text_scale=2, color=Color(r=224, g=57, b=151))
box_annotator = sv.BoxAnnotator(thickness=1, text_thickness=1, text_scale=1)

input_path ='test.mp4'
output_path = "out-" + input_path.split('/')[-1]

cap = cv2.VideoCapture(input_path)
frame_size = (cap.get(cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = cap.get(cv2.CAP_PROP_FPS)
out = cv2.VideoWriter(output_path, fourcc, fps, (int(frame_size[0]), int(frame_size[1])))

# 视频逐帧追踪
for result in model.track(source=input_path, show=False, stream=True, verbose=False, device='cuda:0'):
    frame = result.orig_img 
    detections = sv.Detections.from_yolov8(result)  # 用supervision解析预测结果  
    detections.tracker_id = result.boxes.id.cpu().numpy().astype(int) # 解析追踪ID

    # 获取每个目标的:追踪ID、类别名称、置信度
    class_ids = detections.class_id     # 类别ID
    confidences = detections.confidence # 置信度
    tracker_ids = detections.tracker_id # 多目标追踪ID
    labels = ['#{} {} {:.1f}'.format(tracker_ids[i], model.names[class_ids[i]], confidences[i]) for i in range(len(class_ids))]
    
    frame = box_annotator.annotate(scene=frame, detections=detections, labels=labels)  # 绘制目标检测可视化结果
    
    # 越线检测       
    line_counter.trigger(detections=detections)       
    line_annotator.annotate(frame=frame, line_counter=line_counter)

    out.write(frame)
        
cv2.destroyAllWindows()
out.release()
cap.release()
print('跨线进入车辆数:', line_counter.in_count)
print('跨线离开车辆数:', line_counter.out_count)

使用的视频同两百行C++代码实现yolov5车辆计数部署(通俗易懂版)中的视频。经过试验,LZ发现使用yolov8n(检出47辆)、yolov8s(检出51辆)等小模型时会发生车辆漏检,而yolov8m及更大的模型能检测出所有通过的52辆车。

智慧交通基于YOLOv8车辆检测计数系统源码(部署教程+训练好的模型+各项评估指标曲线).zip 平均准确率:0.91 类别:person、truck、car、bus、traffic light 【资源介绍】 1、ultralytics-main ultralytics-main为YOLOv8代码,里面涵盖基于yolov8分类、目标检测额、姿态估计、图像分割四部分代码,我们使用的是detect部分,也就是目标检测代码 2、搭建环境 安装anaconda 和 pycharm windows系统、mac系统、Linux系统都适配 在anaconda中新建一个新的envs虚拟空间(可以参考博客来),命令窗口执:conda create -n YOLOv8 python==3.8 创建完YOLOv8-GUI虚拟空间后,命令窗口执:source activate YOLOv8 激活虚拟空间 然后就在YOLOv8虚拟空间内安装requirements.txt中的所有安装包,命令窗口执:pip install -r requirements.txt 使用清华源安装更快 3、训练模型过程 进入到\ultralytics-main\ultralytics\yolo\v8\detect\文件夹下,datasets即为我们需要准备好的数据集,训练其他模型同理。 data文件夹下的bicycle.yaml文件为数据集配置文件,该文件为本人训练自车检测模型时创建,训练其他模型,可自创建。博文有介绍https://blog.csdn.net/DeepLearning_?spm=1011.2415.3001.5343 train.py中238,修改为data = cfg.data or './bicycle.yaml' # or yolo.ClassificationDataset("mnist") 237修改自己使用的预训练模型 若自己有显卡,修改239,如我有四张显卡,即改成args = dict(model=model, data=data, device=”0,1,2,3“) 以上配置完成后运train.py开始训练模型,训练完毕后会在runs/detect/文件夹下生成train*文件夹,里面包含模型和评估指标等 4、推理测试 训练好模型,打开predict.py,修改87,model = cfg.model or 'yolov8n.pt',把yolov8n.pt换成我们刚才训练完生成的模型路径(在\ultralytics-main\ultralytics\yolo\v8\detect\runs\detect文件夹下),待测试的图片或者视频存放于ultralytics\ultralytics\assets文件夹, 运predict.py即可,检测结果会在runs/detect/train文件夹下生成。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给算法爸爸上香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值