文章目录
- 加载预训练模型
- 测试一张图片
- 显示结果
- [1. 加载YOLOv9轻量模型](#1. 加载YOLOv9轻量模型)
- [2. 设置视频源:0是电脑摄像头,换成视频路径就是本地视频](#2. 设置视频源:0是电脑摄像头,换成视频路径就是本地视频)
- [3. 视频保存设置(可选)](#3. 视频保存设置(可选))
- [4. 交通目标类别:只检测车辆、行人、自行车](#4. 交通目标类别:只检测车辆、行人、自行车)
- 释放资源
-
- 五、参数微调:让监控更准更快
- 六、进阶小功能:让监控更实用
-
- [1. 拥堵提醒](#1. 拥堵提醒)
- [2. 时间戳显示](#2. 时间戳显示)
- 七、常见问题:踩过的坑都给你填好
- 八、项目拓展:想升级就这么改
- 九、总结:新手也能搞定AI监控
目前国内还是很缺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")
显示结果
results[0].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找到的目标标出来,方便肉眼看
- 统计数量:数清楚有多少车、多少人,简单实用
五、参数微调:让监控更准更快
新手跑起来可能会遇到两个问题:要么误识别(把路灯当成车),要么画面有点卡,咱们调两个参数就能解决,比调手机相机参数还简单。
- 置信度conf:默认0.5,改成0.6,误识别直接减少,AI只认更确定的目标,就像拍照只拍清晰的,模糊的直接过滤。
- 缩帧尺寸:把640×480改成480×360,速度直接提升,低配电脑也能流畅跑,牺牲一点点画面清晰度,换实时性,交通监控完全够用。
- 类别过滤:代码里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)
加完这两段代码,监控系统就有了拥堵提醒、时间记录,日常使用完全够用,小区、路口、停车场都能适配。
七、常见问题:踩过的坑都给你填好
- 运行报错找不到模型:不用手动下模型,代码第一次运行会自动下载yolov9s.pt,耐心等几十秒。
- 摄像头打不开:检查video_source是不是0,有没有其他软件占用摄像头。
- 视频保存不了:确认输出路径有权限,fourcc编码用mp4v,后缀是.mp4。
- 检测速度慢:缩帧尺寸改小,conf调高,关闭不必要的功能(比如视频保存)。
这些都是新手最常遇到的问题,按我说的改,百分百解决,不用到处搜教程。
八、项目拓展:想升级就这么改
咱们这个基础系统,扩展性拉满,想进阶的话,直接往这几个方向改:
- 多摄像头监控:循环打开多个摄像头,分屏显示
- 数据统计:把车辆、人数存到Excel,生成日报表
- 边缘部署:放到树莓派、工控机上,做成离线监控设备
- 车牌识别:加个轻量OCR模型,配合YOLOv9,实现车牌检测+识别
不用从头学,基于咱们的代码改改接口就行,就像给房子装修,主体结构已经搭好,随便加装饰。
九、总结:新手也能搞定AI监控
今天咱们从零开始,用几十行代码,搭了一个完整的YOLOv9实时交通监控系统,全程不用懂复杂算法,不用写复杂逻辑,复制粘贴就能跑,还能按需改功能。
AI视觉没那么神秘,不用怕数学,不用怕编程,找对简单的工具,跟着实战流程走,普通人也能做出能用的AI项目。YOLOv9就是新手入门的最佳选择,2025-2026年最成熟的实时检测模型,资料多、坑少、易落地。
希望这篇文章能帮你快速入门YOLOv9,做出属于自己的第一个AI监控项目,后续咱们再聊更进阶的训练、部署、优化,一步步把AI玩明白。
目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
