当前位置: 首页 > news >正文

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

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.lryc.cn/news/459088.html

相关文章:

  • git-secret介绍
  • 【实战】Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP
  • 计算机专业大一课程:线性代数探秘
  • vscode写markdown插入图片视频并放在指定目录
  • 鸿蒙富文本显示
  • 手写mybatis之细化XML语句构建器,完善静态SQL解析
  • 使用Milvus和Llama-agents构建更强大的Agent系统
  • Python 工具库每日推荐【Arrow】
  • Win10 安装 Redis 数据库
  • 使用springboot生成war包
  • 见微知著:OpenEuler系统启动流程
  • 支持向量机-笔记
  • 研发线上事故风险解读之缓存篇
  • JavaScript前端开发技术
  • H.264 编码参数优化策略
  • C++ 游戏开发技术选型指南
  • 基于Python Django的在线考试管理系统
  • 《Java基础》变量和数据类型
  • FLINK内存管理解析,taskmanager、jobmanager
  • 【AI论文精读13】RAG论文综述2(微软亚研院 2409)P5-可解释推理查询L3
  • 优达学城 Generative AI 课程3:Computer Vision and Generative AI
  • UE5 C++ 通过绑定编辑器事件实现控制柄顶点编辑
  • 云计算ftp 服务器实验
  • node.js服务器基础
  • 2-SAT 问题详解:逻辑约束与图论的结合
  • 使用NetTopologySuite读写gpkg文件
  • 什么是http?列出常见方法并解他们?
  • 通过修改注册表来提高导出图像的分辨率(PPT尝试)
  • OpenCV 环境配置
  • 使用通义千问模拟ChatGPT-o1进行思考,并以类似于ChatGPT-o1的形式输出