【深度学习目标检测】八、基于yolov5的抽烟识别(python,深度学习)

YOLOv5是目标检测领域一种非常优秀的模型,其具有以下几个优势:

1. 高精度:YOLOv5相比于其前身YOLOv4,在目标检测精度上有了显著的提升。YOLOv5使用了一系列的改进,如更深的网络结构、更多的特征层和更高分辨率的输入图像,以提升精度。

2. 高效性能:YOLOv5在目标检测任务中具有很高的处理速度和实时性。相比于其他目标检测模型,YOLOv5采用了更少的计算量和参数数量,因此它在目标检测任务中具有更快的推理速度。

3. 简单易用:YOLOv5是一个开源项目,源代码公开,并且提供了预训练的模型权重。这使得使用YOLOv5进行目标检测变得非常方便,无需从头开始训练模型,只需进行适当的微调即可。

4. 多平台适用:YOLOv5可以在多种平台上运行,包括PC端、嵌入式设备和移动设备等。这使得YOLOv5可以在各种场景下应用,如自动驾驶、智能安防、人脸识别等。

5. 多功能:YOLOv5可以检测和分类多个不同的目标类别,包括人、车辆、动物等。此外,YOLOv5还可以检测出目标的位置和大小,并提供相应的置信度。

总之,YOLOv5具有高精度、高效性能、简单易用、多平台适用和多功能等优势,使其成为目标检测领域中的一种前沿模型。

参考:【深度学习目标检测】四、基于深度学习的抽烟识别(python,yolov8)

本文介绍了基于Yolov5的抽烟检测模型,包括训练过程和数据准备过程,同时提供了推理的代码。对准备计算机视觉相关的毕业设计的同学有着一定的帮助。

效果如下图:

检测结果如下图(检测效果有所欠缺):

一、安装YoloV5

yolov5和yolov8是同个团队开发的,官方文档:主页 - Ultralytics YOLOv8 文档

安装部分参考:官方安装教程

二、数据集准备

抽烟数据集共包含705个训练图片,78个验证图片,图片示例如下:

原始的数据格式为VOC格式,本文提供转换好的yolov5格式数据集,,可以直接放入yolov5中训练,数据集地址(yolov5和yolov8格式一致):抽烟数据集yolov5格式

三、修改yolov8配置文件

1、修改数据集配置文件

将path替换成自己的数据集路径:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco  ← downloads here (20.1 GB)
 
 
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: datasets/smoke/pp_smoke-yolov8  # 更改为自己的数据集路径,建议绝对路ing
train: images/train 
val: images/val  
test: images/val  
 
# Classes
names:
  
  0: smoke
 

2、配置模型文件

模型配置文件如下,将nc改成1:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv5 object detection model with P3-P5 outputs. For details see https://docs.ultralytics.com/models/yolov5

# Parameters
nc: 1  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov5n.yaml' will call yolov5.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024]
  s: [0.33, 0.50, 1024]
  m: [0.67, 0.75, 1024]
  l: [1.00, 1.00, 1024]
  x: [1.33, 1.25, 1024]

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc]],  # Detect(P3, P4, P5)
  ]

3、训练模型

使用如下命令开始训练(将相关路径改成自己的路径,建议改成绝对路径):

yolo detect train project=deploy name=yolov5_smoke exist_ok=True optimizer=auto val=True amp=True epochs=100  imgsz=640 model=ultralytics/ultralytics/cfg/models/v5/yolov5_smoke.yaml  data=ultralytics/ultralytics/cfg/datasets/smoke.yaml

4、评估模型

使用如下命令评估:

yolo detect val imgsz=640 model=deploy/yolov5_smoke/weights/best.pt data=ultralytics/ultralytics/cfg/datasets/smoke.yaml

5、推理

推理代码如下:

from PIL import Image
from ultralytics import YOLO

# 加载预训练的YOLOv5n模型
model = YOLO('best.pt')

# 在'bus.jpg'上运行推理
image_path = 'smoke_a526.jpg'
results = model(image_path)  # 结果列表

# 展示结果
for r in results:
    im_array = r.plot()  # 绘制包含预测结果的BGR numpy数组
    im = Image.fromarray(im_array[..., ::-1])  # RGB PIL图像
    im.show()  # 显示图像
    im.save('results.jpg')  # 保存图像

四、相关资料

本文在训练好的模型和推理代码:推理代码和权重

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一些关于fMRI脑数据的预处理工具

一些关于fMRI脑数据的预处理工具 前言概述SPM12工具箱FSL工具箱FreeSurfer工具箱BrainNet Viewer工具箱circularGraph工具箱Nipype集成框架fMRIPrep集成框架参考文献 前言 March 25, 2022 这里是关于fMRI脑数据的预处理工具的相关调研 主要是关于数据的预处理,数据…

C语言之冒泡排序

排序&#xff08;sort&#xff09;就是以一定的基准&#xff0c;将数据按照升序&#xff08;从小到大&#xff09;或降序&#xff08;从大到小&#xff09;重新排列。 冒泡排序法 我们用一段程序来演示。 /*读取学生的身高并排序*/ #include<stdio.h>#define NUMBER 5…

HPM6750系列--第十篇 时钟系统

一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解&#xff08;基本操作&#xff09;》我们讲解了HPM6750 GPIO相关内容&#xff0c;再进一步讲解其他外设功能之前&#xff0c;我们有必要先讲解一下时钟系统。 时钟可以说是微控制器系统中的心脏&#xff0c;外设必须依赖时钟才…

独立看门狗 IWDG

看门狗介绍 "看门狗"通常指的是计算机科学和信息技术领域中的一种技术或设备&#xff0c;用于监控系统的运行状态&#xff0c;并在系统出现故障或异常情况时采取相应的措施。这种技术或设备起到类似于守卫的作用&#xff0c;确保系统的稳定性和可靠性。 在计算机系统…

算法通关村第十二关—字符串冲刺题(黄金)

字符串冲刺题 一、最长公共前缀 LeetCode14 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀&#xff0c;返回空字符串"" 示例1&#xff1a; 输入&#xff1a;strs["flower","fLow","flight"] 输出&#xff1a;&…

【C++学习————引用】

【C学习——————引用】 欢迎阅读新一期的c模块————引用 ✒️个人主页&#xff1a;-Joker- &#x1f3f7;️专栏&#xff1a;C &#x1f4dc;代码仓库&#xff1a;c_code &#x1f339;&#x1f339;欢迎大佬们的阅读和三连关注&#xff0c;顺着评论回访&#x1f339;&a…

Windows10 如何开机自动启动redis

前言 当我们在Windows 10上使用Redis时&#xff0c;通常希望能够使Redis服务在系统启动时自动启动&#xff0c;以便我们无需手动介入就能够方便地访问和管理数据。在这个过程中&#xff0c;我们将通过下载、安装和配置Redis为Windows服务的方式&#xff0c;使其成为系统的一部分…

[RTOS移植]--STM32F767移植RTThread

文章目录 通过STM32cube创建一个工程选择要移植的RTOS源下载到本地如果没有重启软件选择对应配置后续补充 通过STM32cube创建一个工程 选择要移植的RTOS源 下载到本地 如果没有重启软件 选择对应配置 Build started: Project: STM32F767 *** Using Compiler V5.06 update 7 (b…

FLStudio2024完整版水果音乐编曲制作软件

FL Studio2024是款专业的音频录制编辑软件&#xff0c;可以针对作曲者的要求编辑出不同音律的节奏&#xff0c;例如鼓、镲、锣、钢琴、笛、大提琴等等任何乐器的节奏律动。FL Studio目前在中国已经受到广大制作人喜爱&#xff0c;使用它制作的音乐作品也已经数不胜数&#xff0…

同义词替换在论文降重中的实际效果评估 快码论文

大家好&#xff0c;今天来聊聊同义词替换在论文降重中的实际效果评估&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 标题&#xff1a;同义词替换在论文降重中的实际效果评…

NestJS入门手册:零基础开发第一个 HTTP 接口

前言 NestJS 是一个用于开发高效、可扩展的 Node.js 服务器端应用程序的框架。其优雅的 TypeScript 支持和深度集成的系统模块&#xff0c;使得开发复杂的后端服务变得前所未有的简单。在这篇文章中&#xff0c;我们将介绍 NestJS 的基础知识&#xff0c;帮助你快速入门。 准…

如何实现分布式调用跟踪?

分布式服务拆分以后&#xff0c;系统变得日趋复杂&#xff0c;业务的调用链也越来越长&#xff0c;如何快速定位线上故障&#xff0c;就需要依赖分布式调用跟踪技术。下面我们一起来看下分布式调用链相关的实现。 为什么需要分布式调用跟踪 随着分布式服务架构的流行&#xf…

软件测试基础知识总结

软件测试的IEEE定义&#xff1a;使用人工或自动的手段来运行或测量软件系统的过程&#xff0c;目的是检验软件系统是否满足规定的需求&#xff0c;并找出与预期结果之间的差异。 软件测试的发展趋势&#xff1a; ① 测试工作将进一步前移。软件测试不仅仅是单元测试、集成测…

【消息中间件】Rabbitmq的基本要素、生产和消费、发布和订阅

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、消息队列的基本要素1.队列:queue2.交换机:exchange3.事件:routing_key4.任务:task 二、生产消费模式1.安装pika2.模拟生产者进程3.模…

虚拟机Linux(Centos7)安装Docker

如果没有安装虚拟机的&#xff0c;可以参考这篇VMware虚拟机安装Linux操作系统&#xff08;CentOS7&#xff09; 文章目录 0.安装Docker1.CentOS安装Docker1.1.卸载&#xff08;可选&#xff09;如何看自己的虚拟机上是否安装过docker&#xff1f; 1.2.安装docker1.3.启动docke…

【观测宇宙】

这个网站一眼看清整个宇宙。可观测范围一亿光年。 Cocosmos | 掌上宇宙 作者开发介绍&#xff1a;Cocosmos 序章 | 掌中宇宙&#xff0c;浩瀚星海&#xff0c;一眼万年 (qq.com)

Cell Systems | 深度学习开启蛋白质设计新时代

今天为大家介绍的是来自Bruno Correia团队的一篇综述。深度学习领域的迅速进步对蛋白质设计产生了显著影响。最近&#xff0c;深度学习方法在蛋白质结构预测方面取得了重大突破&#xff0c;使我们能够得到数百万种蛋白质的高质量模型。结合用于生成建模和序列分析的新型架构&am…

【深度强化学习】TRPO、PPO

策略梯度的缺点 步长难以确定&#xff0c;一旦步长选的不好&#xff0c;就导致恶性循环 步长不合适 → 策略变差 → 采集的数据变差 → &#xff08;回报 / 梯度导致的&#xff09;步长不合适 步长不合适 \to 策略变差 \to 采集的数据变差 \to &#xff08;回报/梯度导致的&am…

RabbitMQ 消息持久化

默认情况下&#xff0c;exchange、queue、message 等数据都是存储在内存中的&#xff0c;这意味着如果 RabbitMQ 重启、关闭、宕机时所有的信息都将丢失。 RabbitMQ 提供了持久化来解决这个问题&#xff0c;持久化后&#xff0c;如果 RabbitMQ 发送 重启、关闭、宕机&#xff…

信息安全和网络安全的区别

信息安全与网络安全都属于安全领域&#xff0c;但它们的范围和重点不同。 信息安全主要关注数据的保护&#xff0c;包括对敏感数据进行加密、防止数据丢失或泄露等措施。信息安全通常与数据存储、传输和处理相关。 而网络安全更侧重于保护计算机系统和网络免受攻击、病毒、蠕…