YOLOv9目标检测实战:用Python搭建你的第一个实时交通监控系统

文章目录

目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

前言

大家好,今天咱们用最接地气的方式,从零搭一个能实时看车、看人的交通监控小系统,全程不用复杂数学,不用啃大部头论文,复制粘贴改一改就能跑通。

先唠两句为啥选YOLOv9。它就像AI视觉里的"全能外卖员",跑得快、看得准、还不挑设备,不管是路口车流、小区行人,都能稳稳抓住。咱们今天做的交通监控,就是用它识别车辆、行人、自行车这些交通里常见的目标,实时画框、统计数量,最后还能把画面存下来,新手也能直接落地。

整个流程分五步:准备环境→装依赖→跑通demo→改造成交通监控→优化上线,每一步都给你拆成大白话,跟着做就行。

一、前期准备:别慌,就装俩工具

首先得有Python,建议3.8以上版本,3.10最稳,兼容性拉满。不用懂环境配置,就像装手机APP一样简单。

然后是代码编辑器,VSCode就行,免费好用,打开就能写代码。

重点说下虚拟环境,这东西就像你的"专属工具箱",把项目用到的库都装在这里面,不会和电脑里其他软件冲突。打开命令行,输入下面两行,一键创建并进入环境:

python -m venv yolov9_traffic

yolov9_traffic\Scripts\activate(Windows)

source yolov9_traffic/bin/activate(Mac/Linux)

看到命令行前面多了(yolov9_traffic),就说明进对地方了。

二、一键装依赖:复制粘贴就完事

环境准备好了,接下来装干活的库。YOLOv9现在有Ultralytics封装好的包,不用自己编译,不用下一堆源码,一行命令搞定所有依赖,包括PyTorch、OpenCV这些核心工具,相当于给系统装完"驱动"。

pip install ultralytics opencv-python

等个一两分钟,所有库自动装好,不用管版本冲突,不用手动配置CUDA,CPU就能跑,有GPU的话会自动加速,简直是新手福音。

这里给大家科普下,Ultralytics是现在YOLO系列最常用的封装工具,2025-2026年更新到了最新版,完美支持YOLOv9,咱们不用管底层原理,调用接口就能用,就像用手机相机拍照,不用懂相机内部构造。

三、先跑通demo:确认环境没毛病

装完依赖,先跑个小demo,确保环境没问题。新建一个Python文件,叫test.py,复制下面代码:

from ultralytics import YOLO

加载预训练模型

model = YOLO("yolov9s.pt")

测试一张图片

results = model("bus.jpg")

显示结果

results0.show()

随便找一张有车有人的图片,和代码放同一个文件夹,改名叫bus.jpg,运行代码。如果弹出带检测框的图片,框出公交车、人,说明环境完全没问题,接下来就能改造交通监控了。

这个yolov9s.pt是轻量版模型,速度快、体积小,适合实时监控,比大模型更适合咱们的小系统,就像用便携相机,比专业单反更方便随身带。

四、核心改造:做成实时交通监控

现在进入重头戏,把demo改成能实时读视频、实时检测、实时显示的交通监控系统。咱们支持两种输入:本地交通视频、电脑摄像头(模拟实时监控),代码全程注释,每一行都给你讲明白。

新建traffic_monitor.py,复制下面完整代码:

import cv2

from ultralytics import YOLO

import time

1. 加载YOLOv9轻量模型

model = YOLO("yolov9s.pt")

2. 设置视频源:0是电脑摄像头,换成视频路径就是本地视频

video_source = 0 # 本地视频改成"traffic_video.mp4"

cap = cv2.VideoCapture(video_source)

3. 视频保存设置(可选)

fourcc = cv2.VideoWriter_fourcc(*"mp4v")

out = cv2.VideoWriter("traffic_result.mp4", fourcc, 20.0, (640, 480))

4. 交通目标类别:只检测车辆、行人、自行车

traffic_classes = 0, 1, 2, 3, 5, 7 # 0:人 1:自行车 2:汽车 3:摩托 5:公交 7:货车

print("交通监控启动,按q退出")

while cap.isOpened():

ret, frame = cap.read()

if not ret:

break

复制代码
# 缩帧,提升速度
frame = cv2.resize(frame, (640, 480))
# 模型推理:只检测交通目标,设置置信度0.5,过滤误识别
results = model(frame, classes=traffic_classes, conf=0.5)

# 绘制检测结果
annotated_frame = results[0].plot()

# 统计目标数量
car_num = len([box for box in results[0].boxes if box.cls == 2])
person_num = len([box for box in results[0].boxes if box.cls == 0])
# 显示统计信息
cv2.putText(annotated_frame, f"Car:{car_num} Person:{person_num}",
            (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

# 显示实时画面
cv2.imshow("Traffic Monitor", annotated_frame)
# 保存视频
out.write(annotated_frame)

# 按q退出
if cv2.waitKey(1) & 0xFF == ord("q"):
    break

释放资源

cap.release()

out.release()

cv2.destroyAllWindows()

代码跑起来,窗口里就会实时显示监控画面,车辆、行人都带彩色框,左上角实时显示车辆和人数,画面自动保存成traffic_result.mp4,按q退出。

给大家拆解下核心逻辑,不用懂技术也能明白:

  • 视频源:就像给系统接了个"眼睛",摄像头或视频都能看
  • 模型推理:让AI"看"画面,找出咱们要的交通目标
  • 绘制框:把AI找到的目标标出来,方便肉眼看
  • 统计数量:数清楚有多少车、多少人,简单实用

五、参数微调:让监控更准更快

新手跑起来可能会遇到两个问题:要么误识别(把路灯当成车),要么画面有点卡,咱们调两个参数就能解决,比调手机相机参数还简单。

  1. 置信度conf:默认0.5,改成0.6,误识别直接减少,AI只认更确定的目标,就像拍照只拍清晰的,模糊的直接过滤。
  2. 缩帧尺寸:把640×480改成480×360,速度直接提升,低配电脑也能流畅跑,牺牲一点点画面清晰度,换实时性,交通监控完全够用。
  3. 类别过滤:代码里traffic_classes列表,只留你需要的目标,比如只看车,就删掉0(行人),AI不用检测无关目标,速度更快。

举个例子,低配电脑把conf改成0.6,尺寸改成480×360,实时帧率能从15帧升到30帧,流畅不卡顿,路口车流再密也能跟上。

六、进阶小功能:让监控更实用

基础功能跑通了,咱们加两个简单的小功能,直接升级成商用级监控,不用改太多代码。

1. 拥堵提醒

当车辆数量超过设定值(比如10辆),画面显示红色提醒,简单判断拥堵:

if car_num > 10:

cv2.putText(annotated_frame, "Congestion!", (10, 60),

cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

2. 时间戳显示

每帧画面加当前时间,方便回溯查看:

now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

cv2.putText(annotated_frame, now_time, (10, 90),

cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 2)

加完这两段代码,监控系统就有了拥堵提醒、时间记录,日常使用完全够用,小区、路口、停车场都能适配。

七、常见问题:踩过的坑都给你填好

  1. 运行报错找不到模型:不用手动下模型,代码第一次运行会自动下载yolov9s.pt,耐心等几十秒。
  2. 摄像头打不开:检查video_source是不是0,有没有其他软件占用摄像头。
  3. 视频保存不了:确认输出路径有权限,fourcc编码用mp4v,后缀是.mp4。
  4. 检测速度慢:缩帧尺寸改小,conf调高,关闭不必要的功能(比如视频保存)。

这些都是新手最常遇到的问题,按我说的改,百分百解决,不用到处搜教程。

八、项目拓展:想升级就这么改

咱们这个基础系统,扩展性拉满,想进阶的话,直接往这几个方向改:

  1. 多摄像头监控:循环打开多个摄像头,分屏显示
  2. 数据统计:把车辆、人数存到Excel,生成日报表
  3. 边缘部署:放到树莓派、工控机上,做成离线监控设备
  4. 车牌识别:加个轻量OCR模型,配合YOLOv9,实现车牌检测+识别

不用从头学,基于咱们的代码改改接口就行,就像给房子装修,主体结构已经搭好,随便加装饰。

九、总结:新手也能搞定AI监控

今天咱们从零开始,用几十行代码,搭了一个完整的YOLOv9实时交通监控系统,全程不用懂复杂算法,不用写复杂逻辑,复制粘贴就能跑,还能按需改功能。

AI视觉没那么神秘,不用怕数学,不用怕编程,找对简单的工具,跟着实战流程走,普通人也能做出能用的AI项目。YOLOv9就是新手入门的最佳选择,2025-2026年最成熟的实时检测模型,资料多、坑少、易落地。

希望这篇文章能帮你快速入门YOLOv9,做出属于自己的第一个AI监控项目,后续咱们再聊更进阶的训练、部署、优化,一步步把AI玩明白。

目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

相关推荐
TMT星球15 分钟前
虎鲸文娱春苗编剧计划全面升级,已孵化20个剧本进入前期开发
大数据·人工智能
奔跑中的小象7 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南7 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang7 小时前
LangGraph 状态机实战
人工智能
刹那芳华19927 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作7 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门7 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜7 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟7 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦8 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能