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

news2024/11/24 13:53:51

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 模型对指定图像进行目标检测。

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 模型对指定视频进行目标检测。


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)  # 检测视频

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2209907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebGl学习使用attribute变量绘制一个水平移动的点

在WebGL编程中,attribute变量是一种特殊类型的变量,用于从客户端传递数据到顶点着色器。这些数据通常包括顶点的位置、颜色、纹理坐标等,它们是与每个顶点直接相关的信息。attribute变量在顶点着色器中声明,并且对于每个顶点来说都…

数据结构-5.4.二叉树的性质

一.二叉树的常考性质: 常见考点1:结点个数的性质 设非空二叉树(度最大为2,最小为0)当中度为0的结点个数为a,度为1的结点个数为b,度为2的结点个数为c,那么abc: 推导过程:设该非空二叉树共有n个…

Go基础知识:切片

数组 Go 数组的大小是固定的,其长度是其类型的一部分([4]int并且[5]int是不同的、不兼容的类型) var a [10]intb : [2]string{"Penn", "Teller"} b : [...]string{"Penn", "Teller"}package maini…

计算机专业大一课程:线性代数探秘

计算机专业大一课程:线性代数探秘 对于计算机专业的大一新生来说,线性代数是一门基础且重要的课程。它不仅是数学的一个分支,更是计算机科学中不可或缺的工具。那么,线性代数究竟包含哪些内容,对我们的计算机学习有何…

操作系统(1) (进程属性/内存映像/进程状态/PCB/上下文切换)

目录 1. 进程及其实现 2. 没有进程概念之前的系统 3. 进程的属性 4. 进程的内存映像 5. 进程状态及其转换 6. 进程描述与操作控制结构 操作控制结构: 操作系统使用数据结构来记录进程和系统资源的状态: 进程控制块(PCB)&a…

libmodbus编程应用(超详细源码讲解)

目录 前言 libmodbus开发库 1.功能概要 2.源码获取 3.libmodbus与应用程序的关系 libmodbus源代码解析 1.核心函数 2.框架分析与数据结构 3.情景分析 (1)初始化 (2)主设备发送请求 (3)主/从设备…

【Adobe PR】Adobe Premiere Pro 快捷键介绍

Adobe Premiere Pro (简称PR) 是一款广泛使用的视频编辑软件,熟练掌握其快捷键可以显著提高编辑效率。下面是整理的一些常用的Adobe Premiere Pro快捷键,适用于Windows和Mac操作系统。对于Mac用户,除非特别指出,通常可以将Ctrl键替…

视频画面变糊是平台在做手脚吗?

人气视频博主“影视飓风”一条新发布的视频被全网下架,这两日更是引起轩然大波,不仅频上热门,甚至还有不少数码与视频同行为其抱不平。那么影视飓风到底发布了一条什么视频?又为何会惨被全网下架呢? 10月8日&#xff0…

Android Studio Ladybug使用经典主题UI

背景 Android Studio Ladybug | 2024.2.1 默认使用new ui,但是已经找不到之前经典主题了。 通过插件方式设置经典主题 打开设置。Plugins。 在Marketplace中搜索:Classic UI 下面的截图是我已经安装完成的。 插件安装完成了,重启as即可。…

闭着眼学机器学习——K近邻分类

引言: 在正文开始之前,首先给大家介绍一个不错的人工智能学习教程:https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程,感兴趣的读者可以自行查阅。 1. 算法介绍 K近邻(K-Nearest Neighbors, KNN…

ScriptableObject基本使用

使用方法 自定义类继承ScriptableObject 可以在类内部增加数据或者数据类,一般用于配置 注意事项 给继承ScriptableObject的类增加CreateAssetMenu特性。 CreateAssetMenu一般默认三个参数 第一个参数是父目录 第二个参数是父目录的子选项 第三个参数是可以…

虚幻闪烁灯光材质

创建一个材质 材质域改成光照函数 , Time让材质动起来 参数B用来控制速度 , Sine 让灯光闪烁 , Frac 增加了闪烁细节 把材质放到灯光材质上 效果还是挺不错的! 可以用于一些恐怖游戏~

FileZilla的简单使用

FileZilla的下载与安装以及简单使用(有图解超简单)-CSDN博客 参考这篇文章。 我在Window下安装了客户端,在虚拟机下启动Ubuntu,启用了Ubuntu的FTP服务。 按照该文章的流程进行下去,成功的把客户端上的文件上传到了F…

STM32学习--6-1 定时器定时中断

定时器电路图 第一步:RCC开启时钟,基本上每个代码都是第一步 第二步:选择时基单元的时钟源(内部时钟) 第三步:配置时基单元,包括预分频器、自动重装器、计数模式等,通过结构体配置…

Dockerfile(Jenkins)

1.创建⼀个jenkins的Dockerfile mkdir tomcat cd tomcat 2、上传需要的安装包 apache-tomcat-8.5.47.tar.gz jdk-8u211-linux-x64.tar.gz jenkins.war 3、编写Dockerfile vim Dockerfile # This my first jenkins Dockerfile # Version 1.0 FROM centos:7 MAINTAINER l…

Echarts+vue3+高德渲染地图

Echartsvue3高德渲染地图 一&#xff1a;安装 npm install echarts二&#xff1a;渲染地图 1. html <template><div class"content"><div ref"myChartsRef" id"map" style"width: 100%;height: 560px;" ></d…

JAVA自动化测试TestNG框架

1.TestNG简介 JAVA自动化测试最重要的基石。官网&#xff1a;https://testng.org 使用注解来管理我们的测试用例。 发现测试用例 执行测试用例 判断测试用例 生成测试报告 2.创建Maven工程 2.1创建一个maven工程 2.2设置maven信息 2.3设置JDK信息 2.4引入testng依赖 <dep…

Linux下Docker方式Jenkins安装和配置

一、下载&安装 Jenkins官方Docker仓库地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins 从官网上可以看到&#xff0c;当前最新的稳定版本是 jenkins/jenkins:lts-jdk17。建议下在新的&#xff0c;后面依赖下不来 所以&#xff0c;我们这里&#xff0c;执行doc…

达梦数据库性能优化

1、SQL执行计划 拿到一条SQL的时候&#xff0c;首先要下达梦手册中提出的有效SQL规范&#xff0c;及是否命中了特殊OR子句的不规范&#xff0c;是否用了复杂的正则表达式&#xff0c;避免重复很高的索引&#xff0c;UINON ALL 是否可以替换UNION操作等,某些场景INSTR函数导致的…

FunASR离线文件转写服务开发指南-debian-10.13

FunASR离线文件转写服务开发指南-debian-10.13 服务器环境 debian10.13 64位 第一步 配置静态网卡 auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4/etc/init.d/networking restart第…