树莓派应用--AI项目实战篇来啦-17.YOLOv8目标检测-安全帽检测

1. YOLOv8介绍

YOLOv8是Ultralytics公司2023年推出的Yolo系列目标检测算法,可以用于图像分类、物体检测和实例分割等任务。YOLOv8作为YOLO系列算法的最新成员,在损失函数、Anchor机制、样本分配策略等方面进行了全面优化和创新。这些改进不仅提高了模型的检测精度和鲁棒性,还简化了训练流程并提升了模型的可扩展性。

建立在Yolo系列历史版本的基础上,并引入了新的功能和改进点,以进一步提升性能和灵活性。其核心思想是将目标检测问题转化为一个回归问题,通过一次前向传播过程即可完成目标的位置和类别预测。Yolov8借鉴了Yolov5、Yolov6、YoloX等模型的设计优点,在全面提升改进Yolov5模型结构的基础上实现,同时保持了Yolov5工程化简洁易用的优势。YOLOv8 采用五个预训练模型,包括YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l和 YOLOv8x,其如下图2-7所示是基于COCO Val 2017数据集测试并对比Yolov8和Yolov5的mAP、参数量和FLOPs结果。由此可以看出,Yolov8相比Yolov5精度提升比较多,但是n/s/m模型参数量和flops增加不少,但是相比Yolov5大部分模型推理速度变慢了。

1.1 YOLOv8网络结构

YOLOv8模型网络结构图如下图所示。从YOLOv8的网络结构可以看出,其延用了YOLOv5的网络结构思想,网络还是分为三个部分: 基于CSP(紧凑和分离)的主干网络(backbone)、特征增强网络(neck),检测头(head) 三个部分。

2. 安装 PyTorch和 torchvision

YOLOv8是基于 PyTorch框架来实现的,所以在使用之前需要安装这两个框架,首先可以去官方网站上下载两个编译好的包进行安装,官方网站为:

https://download.pytorch.org/whl/torch_stable.html

找到torch-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl和

torchvision-0.16.2-cp311-cp311-linux_aarch64.whl文件,复制到树莓派对应的yolov8项目目录下,然后运行如下命令进行安装:

sudo pip3 install torch-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

sudo pip3 install torchvision-0.16.2-cp311-cp311-linux_aarch64.whl

安装成功后,检查一下安装是否成功。

如果报错的话,说明安装有问题,一般问题是 numpy版本过低,我们可以更新一下:

sudo pip3 install numpy --upgrade --ignore-installed

3. 安装环境所需的包

例如:pandas、opencv-python、tqdm等,都需要在虚拟环境下安装,如下所示。

(在虚拟环境中安装,专栏中 ++树莓派使用:YOLOv8环境搭建困难--已解决++ 文章会提到该问题)

4. 安全帽检测

4.1 识别图片

使用 Ultralytics提供的 YOLOv8 模型对指定图像进行目标检测。

python 复制代码
from ultralytics import YOLO  # 从 Ultralytics 库中导入 YOLO 类。这个类提供了一个方便的接口,用于加载 YOLO 模型并执行目标检测

# 导入训练好的模型
model=YOLO("./runs/detect/train5/weights/best.pt",task="detect")

# 随意找一些测试数据
# 图片数据和视频数据都可以,直接将数据传入接口
model.predict(source="./ultralytics/assets/construction-safety.jpg",save=True,classes=[0,2])  # 检测图片

# 自己构造一些数据
# 在识别自己的构造的数据时,传入了classes=[0,2]  只识别部分的类别
# 代表只输出0和2,也就是安全帽是否佩戴这个类别

识别结果如下所示,可识别出图片中所有的安全帽,并保存识别结果。

4.2 识别视频

使用 Ultralytics提供的 YOLOv8 模型对指定视频进行目标检测。

python 复制代码
from ultralytics import YOLO  # 从 Ultralytics 库中导入 YOLO 类。这个类提供了一个方便的接口,用于加载 YOLO 模型并执行目标检测

# 导入训练好的模型
model=YOLO("./runs/detect/train5/weights/best.pt",task="detect")

model.predict(source="./ultralytics/assets/indianworkers.mp4",classes=[0,2],save=True)  # 检测视频

相关推荐
星越华夏6 小时前
计算机视觉:YOLOv12安装环境
人工智能·yolo·计算机视觉
Yolanda947 小时前
【人工智能】《从零搭建AI问答助手项目(九):Prompt优化》
人工智能·prompt
wj3055853787 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
小和尚同志7 小时前
深入使用 skill-creator:结合真实生产级实践
人工智能·aigc
DevSecOps选型指南7 小时前
安全419专访悬镜安全 | 穿越周期在 AI 浪潮中定义数字供应链安全新范式
人工智能
沪漂阿龙7 小时前
面试题详解:GraphRAG 全面解析——知识图谱增强 RAG、Local Search、Global Search、社区摘要、工程落地与评估指标一次讲透
人工智能·知识图谱
WangN27 小时前
Unitree RL Lab 学习笔记【通识】
人工智能·机器学习
haina20197 小时前
海纳AI亮相《科创中国》,解码招聘“智”变之路
人工智能·ai面试·ai招聘
阿星AI工作室8 小时前
刘润年中大课笔记:一句话说清AI落地之战的本质
大数据·人工智能·创业创新·商业
qingfeng154158 小时前
企业微信机器人开发:如何实现自动化与智能运营?
人工智能·python·机器人·自动化·企业微信