2024-12-20 17:33:47 [显示全部楼层]
176浏览
查看: 176|回复: 0

[动态] 初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别

[复制链接]

随着人工智能技术的飞速进步,计算机视觉领域取得了长足的进步,物体检测、图像分割、姿态估计等任务得到了广泛的关注。YOLO(You Only Look Once)系列算法作为物体检测领域的杰出代表,以其速度快、准确率高而广受欢迎。本文将详细介绍如何在计算机上快速运行 YOLOv8 实现检测、分割和姿态估计。通过阅读本文,您将快速了解如何在 Windows 系统上安装、配置和运行 YOLOv8 进行实时识别,为实际应用打下坚实的基础。

安装环境

  • 个人电脑:ThinkPad AMD
  • 操作系统:Windows 11 x64
  • 软件:Python 3.11
  • 环境:Anaconda

1.下载Anaconda3:

网址:https://www.anaconda.com/download/success

初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图1

2.安装Anaconda3

我选择的安装目录是:D:\Anaconda\Anaconda3。勾选‘将 Anaconda3 添加到我的 PATH 环境变量中’,将 Anaconda 添加到环境变量中。

初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图2

3. 验证安装

请打开PowerShell并输入命令conda -V。

如果您没有看到错误:

‘conda’ 不是内部或外部命令,也不是可运行程序或批处理文件

表示安装成功。如果安装时没有将 Anaconda 添加到环境变量中,则需要手动添加 Anaconda 环境变量。

4.创建并激活虚拟环境

YOLOv8 可以使用官方提供的库,YOLOv10 的部署步骤与上述1-3步相同,详细部署说明请参考:https://github.com/THU-MIG/yolov10

  1. Bash
  2. #create new environment
  3. conda create -n yolo8test python==3.8
  4. #activate environment
  5. conda activate yolo8test
  6. # Install the ultralytics package from PyPI
  7. pip install ultralytics
复制代码

不同模型性能比较

官网提供了多种尺寸的YOLOv8模型,参数对比如下表:

初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图3

参数解释

初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图4

以YOLOv8分割对象分割模型为例,这些模型的复杂度、参数数量、计算要求、准确率、速度等各有不同,适用于不同的应用场景。
初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图5

物体检测

代码:

  1. Python
  2. import cv2
  3. import time
  4. import torch
  5. from ultralytics import YOLO
  6. # load YOLOv8n
  7. model = YOLO('yolov8n.pt')
  8. cap = cv2.VideoCapture(0)
  9. if not cap.isOpened():
  10.     print("error")
  11.     exit()
  12. width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
  13. height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
  14. prev_time = 0
  15. fps = 0
  16. while True:
  17.     ret, frame = cap.read()
  18.    
  19.     if not ret:
  20.         print("error")
  21.         break
  22.     results = model(frame, device='cpu')
  23.     for result in results:
  24.         boxes = result.boxes.xyxy.cpu().numpy()
  25.         confidences = result.boxes.conf.cpu().numpy()
  26.         class_ids = result.boxes.cls.cpu().numpy().astype(int)
  27.         for i in range(len(boxes)):
  28.             box = boxes[i]
  29.             x1, y1, x2, y2 = map(int, box[:4])
  30.             confidence = confidences[i]
  31.             class_id = class_ids[i]
  32.             label = result.names[class_id]
  33.             cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
  34.             cv2.putText(frame, f'{label} {confidence:.2f}', (x1, y1 - 10),
  35.                         cv2.FONT_HERSHEY_SIMPLEX, 0.9, (36, 255, 12), 2)
  36.     curr_time = time.time()
  37.     fps = 1 / (curr_time - prev_time)
  38.     prev_time = curr_time
  39.     cv2.putText(frame, f'FPS: {fps:.2f}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
  40.     cv2.imshow('YOLOv8n Real-time', frame)
  41.     if cv2.waitKey(1) & 0xFF == ord('q'):
  42.         break
  43. cap.release()
  44. cv2.destroyAllWindows()
复制代码

将代码保存为名为“yolov8ndet.py”的 Python 文件并运行它。


  1. Bash
  2. python yolov8ndet.py
复制代码

使用YOLOv8n模型测试性能:运行速度为7.49.


初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图6

部分

代码:

  1. Python
  2. import cv2
  3. import time
  4. # import torch
  5. from ultralytics import YOLO
  6. from PIL import Image
  7. import numpy as np
  8. model = YOLO('yolov8n-seg.pt')
  9. cap = cv2.VideoCapture(0)
  10. if not cap.isOpened():
  11.     print("error")
  12.     exit()
  13. width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
  14. height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
  15. prev_time = 0
  16. fps = 0
  17. while True:
  18.     ret, frame = cap.read()
  19.     if not ret:
  20.         print("error")
  21.         break
  22.     results = model(frame, device='cpu')
  23.     for result in results:
  24.         pil_image = Image.fromarray(results[0].plot()[:, :, ::-1])
  25.         frame = np.array(pil_image)
  26.         boxes = result.boxes.xyxy.cpu().numpy()
  27.         confidences = result.boxes.conf.cpu().numpy()
  28.         class_ids = result.boxes.cls.cpu().numpy().astype(int)
  29.         for i in range(len(boxes)):
  30.             box = boxes[i]
  31.             x1, y1, x2, y2 = map(int, box[:4])
  32.             confidence = confidences[i]
  33.             class_id = class_ids[i]
  34.             label = result.names[class_id]
  35.     curr_time = time.time()
  36.     fps = 1 / (curr_time - prev_time)
  37.     prev_time = curr_time
  38.     cv2.putText(frame, f'FPS: {fps:.2f}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
  39.     cv2.imshow('YOLOv8n Real-time', frame)
  40.    
  41.     if cv2.waitKey(1) & 0xFF == ord('q'):
  42.         break
  43. cap.release()
  44. cv2.destroyAllWindows()
复制代码

将代码保存为名为“yolov8nseg.py”的 Python 文件并运行它。


  1. Bash
  2. python yolov8nseg.py
复制代码

使用YOLOv8n模型测试性能:运行速度为5.07。



初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图7

姿态估计

代码:

  1. Python
  2. import cv2
  3. import time
  4. from ultralytics import YOLO
  5. from PIL import Image
  6. import numpy as np
  7. model = YOLO('yolov8n-pose.pt')
  8. cap = cv2.VideoCapture(0)
  9. width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
  10. height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
  11. prev_time = 0
  12. fps = 0
  13. while True:
  14.     ret, frame = cap.read()
  15.     if not ret:
  16.         print("error")
  17.         break
  18.     results = model(frame, device='cpu')
  19.     for result in results:
  20.         pil_image = Image.fromarray(results[0].plot())
  21.         frame = np.array(pil_image)
  22.         boxes = result.boxes.xyxy.cpu().numpy()
  23.         confidences = result.boxes.conf.cpu().numpy()
  24.         class_ids = result.boxes.cls.cpu().numpy().astype(int)
  25.         for i in range(len(boxes)):
  26.             box = boxes[i]
  27.             x1, y1, x2, y2 = map(int, box[:4])
  28.             confidence = confidences[i]
  29.             class_id = class_ids[i]
  30.             label = result.names[class_id]
  31.     curr_time = time.time()
  32.     fps = 1 / (curr_time - prev_time)
  33.     prev_time = curr_time
  34.     frame = cv2.resize(frame, (640, 480))  
  35.     cv2.putText(frame, f'FPS: {fps:.2f}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
  36.     cv2.imshow('YOLOv8n Real-time', frame)
  37.     if cv2.waitKey(1) & 0xFF == ord('q'):
  38.         break
  39. cap.release()
  40. cv2.destroyAllWindows()
复制代码

将代码保存为名为“yolov8npos.py”的 Python 文件并运行它。


  1. Bash
  2. python yolov8npos.py
复制代码

使用YOLOv8n模型测试性能:运行速度为6.87。


初学者如何在笔记本电脑上快速运行 YOLOv8 进行实时识别图8

概括

本文详细介绍了如何在计算机上快速运行 YOLOv8,涵盖检测、分割、定向边界框 (OBB)、分类、跟踪和姿态估计等功能。通过讲解 YOLOv8 的安装、配置和使用,相信您已经掌握了这款强大工具的基本操作。在实际应用中,YOLOv8 将为您提供高效、准确的计算机视觉体验,帮助您在人工智能领域取得更好的成果。随着技术的不断进步,YOLOv8 有望在未来发挥更大的作用,为计算机视觉领域带来更多的创新和突破。

如果本文对您有所帮助,欢迎您继续关注我们的更多更新。接下来,我们将深入研究 YOLOv10 的测试,我们热切期待您的期待。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail