Yolo简单上手

什么是Yolo?

YOLO(You Only Look Once,意思是“你只需看一次”)是一个用来识别图片里物体的AI算法,特点是又快又准。

YOLO 是怎么工作的?

普通的方法(比如 R-CNN)是先找出可能有目标的地方,再去分类。而 YOLO 直接把整张图片输入,一次性就能识别所有目标,就像人一眼扫过去就能看出画面里有什么。

YOLO 的厉害之处

  1. 速度快 🚀 —— 一次看完,立刻给出结果,适合实时应用,比如自动驾驶、监控识别等。
  2. 准确率高 🎯 —— 通过深度学习不断优化,能精准找到目标。
  3. 结构简单 🏗 —— 直接输入图片,输出结果,没有复杂的中间步骤。

有趣的应用项目

  1. 打蚊子 https://b23.tv/n5GAoEK
  2. 停车位检测 https://b23.tv/rUjtwbw
  3. 机械臂视角抓取 https://b23.tv/e51dYnB
  4. 人形机器人机械臂 https://b23.tv/UkVEofg

项目搭建

  1. 安装必要的库 你需要安装 OpenCV 和 ultralytics(YOLO 的 Python 库):
1
pip install opencv-python ultralytics
  1. 加载 YOLOv8 模型 使用 yolov8n.pt(轻量级 YOLOv8 版本)进行实时检测。
    测试代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import cv2
from ultralytics import YOLO

# 加载 YOLOv8 预训练模型
model = YOLO("yolov8n.pt")

# 打开摄像头 (0 代表默认摄像头)
cap = cv2.VideoCapture(0)

while cap.isOpened():
success, frame = cap.read() # 读取摄像头画面
if not success:
break

# 进行人体检测
results = model(frame)

# 在画面上绘制检测结果
for result in results:
for box in result.boxes:
x1, y1, x2, y2 = map(int, box.xyxy[0]) # 获取边界框坐标
confidence = box.conf[0] # 置信度
label = result.names[int(box.cls[0])] # 目标类别

# 只检测 "person" 类别
if label == "person":
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) # 绿色框
cv2.putText(frame, f"Person: {confidence:.2f}", (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

# 显示检测画面
cv2.imshow("Real-time Human Detection", frame)

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

cap.release()
cv2.destroyAllWindows()