吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)

news2024/11/25 7:23:31

吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)

目录

吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)

1. 前言

2. 吸烟(抽烟)类别说明

3. 吸烟(抽烟)分类数据集

(1)smoking-dataset

(2)smoking-video

4. 吸烟(抽烟)分类数据集下载

5. Pytorch实现吸烟(抽烟)检测和识别

6. Android实现吸烟(抽烟)检测和识别


1. 前言

这是项目《吸烟(抽烟)检测和识别》系列文章之《吸烟(抽烟)数据集说明(含下载链接)》;网上有很多吸烟(抽烟)数据集的数据,在CSDN下载那一搜一大堆,但下载下来,真是不尽人意,质量参差不齐,说多了都是泪呀,都是血泪史的教训。本篇,我们将分享一个我自己项目整合的吸烟(抽烟)分类数据集;smoking-dataset和smoking-video,总共15000+张图片。数据质量较高,可用于深度学习吸烟(抽烟)识别项目的分类模型算法开发。

【尊重原则,转载请注明出处】 https://blog.csdn.net/guyuealian/article/details/130337263


更多项目《吸烟(抽烟)检测和识别》系列文章请参考:

  1. 吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接):https://blog.csdn.net/guyuealian/article/details/130337263
  2. 吸烟(抽烟)检测和识别2:Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码):https://blog.csdn.net/guyuealian/article/details/131521338
  3. 吸烟(抽烟)检测和识别3:Android实现吸烟(抽烟)检测和识别(含源码,可实时检测):https://blog.csdn.net/guyuealian/article/details/131521347
  4. 吸烟(抽烟)检测和识别4:C++实现吸烟(抽烟)检测和识别(含源码,可实时检测):https://blog.csdn.net/guyuealian/article/details/131521352


2. 吸烟(抽烟)类别说明

在吸烟(抽烟)检测识别算法开发中,我们需要定义吸烟(抽烟)的行为类别;项目将吸烟(抽烟)状态分为两种情况,分别为:smoking(吸烟),notsmokint(未吸烟),为了便于大家理解,下面给出这吸烟(抽烟)的行为类别定义:

  1. 人体检测框:人体检测框是通过人体(行人)检测算法预测和定位的人体区域,每个人体用一个矩形框表示
  2. 吸烟检测区:人体检测框的左上角位置保存不变,右下角的高度(Height)缩短三分之一左右,得到吸烟检测区
  3. 吸烟和未吸烟:项目定义,若吸烟检测区存在烟只,则判断为smoking(吸烟)行为;反之,若吸烟检测区不存在烟只,则判断为notsmoking(未吸烟)行为。由于吸烟的行为状态不一,环境复杂多样,尽管这样的吸烟行为定义不全面,但基本可以覆盖业务的大部分场景需求。

  • notsmoking:在吸烟检测区内无烟只,则定义为无吸烟行为notsmoking);若主体存在吸烟行为,但烟只不在吸烟检测区内,受算法局限性,这时依然定义无吸烟(notsmoking
  • smoking:在吸烟检测区内有烟只,则定义为有吸烟行为(smoking);受算法局限性,只要吸烟区内存在烟只,不管是否吸烟,都定义为有吸烟行为(smoking)

代码实现:定义函数get_smoking_roi()用于获得吸烟检测区,基于该方法,项目可以制作吸烟(抽烟)的分类数据集。

# -*-coding: utf-8 -*-

import numpy as np
from pybaseutils import image_utils
import cv2


def get_smoking_roi(xyxy, scale=(), cut=0.3):
    """
    获得吸烟检测区
    :param xyxy: shape is (num-boxes,4),box is (xmin,ymin,xmax,ymax)
    :param scale: boxes缩放大小
    :param cut: 裁剪比例
    :return:
    """
    up_boxes = []
    for i in range(len(xyxy)):
        xmin, ymin, xmax, ymax = xyxy[i]
        w, h = (xmax - xmin), (ymax - ymin)
        ymax = max(ymin + h * cut, ymin + w)
        up_boxes.append([xmin, ymin, xmax, ymax])
    up_boxes = np.asarray(up_boxes)
    if scale: up_boxes = image_utils.extend_xyxy(up_boxes, scale=scale)
    return up_boxes


if __name__ == '__main__':
    image_file = "smoking/sample.png"
    boxes = [[47, 52, 255, 420]]  # 人体检测框
    boxes = np.asarray(boxes)
    image = cv2.imread(image_file)
    up = get_smoking_roi(xyxy=boxes, scale=(), cut=0.3)  # 获得吸烟检测区
    image = image_utils.draw_image_boxes(image, boxes=boxes, color=(255, 0, 0))
    image = image_utils.draw_image_boxes(image, boxes=up, color=(0, 255, 0))
    image_utils.cv_show_image("image", image)

3. 吸烟(抽烟)分类数据集

项目已经收集了两个吸烟(抽烟)分类数据集:smoking-dataset和smoking-video,总共约15000+张图片

(1)smoking-dataset

smoking-dataset吸烟(抽烟)分类数据集,总共15000+张图片,其中测试集431张,训练集14761张;原始图片主要来源于网络爬虫图片检索,部分也是整合网上的数据,背景比较复杂,可作为通用场景的吸烟分类数据。数据中含有两个文件夹,其中文件夹smoking保存的是有吸烟行为图片数据,文件夹notsmoking保存的是无吸烟行为图片数据;所有图片都按照单人单张图片的形式进行裁剪保存(裁剪规则参考get_smoking_roi()函数),数据集已经人工清洗,可用于深度学习分类模型训练

smoking数据notsmoking数据

(2)smoking-video

smoking-video吸烟(抽烟)分类数据集;对于深度学习模型训练,我们希望同一个人既有吸烟的数据,也有未吸烟的数据,这样可以提高模型的泛发性,避免模型过拟合一个人;因而,项目专门收集了多个抽烟视频,并抽帧图像,人工分类smoking和notsmoking,最终清洗后得到总共1831张图片。

smoking数据notsmoking数据

4. 吸烟(抽烟)分类数据集下载

吸烟(抽烟)分类数据集下载地址:吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)

数据包含:

  1. ​smoking-dataset吸烟(抽烟)分类数据集,总共15000+张图片,其中测试集431张,训练集14761张
  2. smoking-video吸烟(抽烟)分类数据集,总共1831张图片

5. Pytorch实现吸烟(抽烟)检测和识别

参考文章:Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码):https://blog.csdn.net/guyuealian/article/details/131521338

6. Android实现吸烟(抽烟)检测和识别

参考文章:Android实现吸烟(抽烟)检测和识别(含源码,可实时检测):https://blog.csdn.net/guyuealian/article/details/131521347

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

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

相关文章

内幕交易最高判终身监禁:韩国首部独立「加密法案」全文来了

2023年6月30日,韩国国会政务委员会通过了该国首部针对虚拟资产的立法——《虚拟资产用户保护法(가상자산 이용자 보호 등에 관한 법률안)》,目的是保护虚拟资产使用者及限制不公平交易,将在颁布一年后开始生效&#xf…

如何用 PowerPoint 制作滚动字幕

想知道如何使用 PowerPoint 制作滚动字幕吗?让您的演示更生动有趣!请紧跟以下教程,学习这个令人赞叹的技巧! 是不是你觉得自己制作的PPT过于呆板和无聊,而别人的PPT却充满了高级和趣味?原因在于你的PPT缺乏…

信创信创,有信难创

本土化产品,近年来备受追捧。比如馒头,成了更适合中国宝宝体质的欧包,有的创意馒头甚至可以卖出二十多元的“高价”;酱香饼,更适合中国宝宝体质的披萨;中药汤,更适合中国宝宝体质的咖啡…… 这样…

青岛大学_王卓老师【数据结构与算法】Week04_07_顺序表和链表的比较_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–…

uniapp实现腾讯地图定位,生成点,多点连线,清空点线,卫星地图等功能

功能: 1.地图上标点,点有内容,点击点后可以查看点的信息,详情 2.点击地图生成点,点击多个点后可以实现点连线功能 3.点击按钮后,可以把生成的点清空 4.卫星地图和默认地图切换功能 1.完整代码字段讲解 1.…

集成免费Chatgpt的WeTab安装与使用详解

集成免费Chatgpt的WeTab安装与使用详解 一、WeTab简介二、Chatgpt简介三、WeTab安装3.1 Edge浏览器在线安装教程3.2 Chrome浏览器在线安装教程 四、WeTab和ChatGPT的简单使用4.1 WeTab简单使用4.2 集成ChatGPT的简单使用 一、WeTab简介 WeTab是一款集成了多种实用工具的在线工…

第47步 深度学习图像识别:SqueezeNet建模(Pytorch)

基于WIN10的64位系统演示 一、写在前面 (1)SqueezeNet SqueezeNet是一种轻量级的深度神经网络架构,由Iandola等人在2016年提出。这种模型的最大特点是参数量极少,仅有510千个参数,而且模型大小只有5MB,比…

Simulink仿真模块 - Multiport Switch

Multiport Switch:基于控制信号选择输出信号 在仿真库中的位置为:Simulink / Signal Routing HDL Coder / Signal Routing 模型为: 双击模型打开参数设置界面为: 说明 Multiport Switch 模块用于确定将多个模块输入中的哪一个传递给输出。此模块根据第一个输入的值…

Nginx 安装 headers-more-nginx-module 扩展,隐藏www服务信息

通过Ubuntu APT安装的Nginx默认是没有扩展的,所以需要手动安装才可以。本文主要分享如何在 APT 安装 Nginx 的环境中安装 headers-more-nginx-module 扩展,隐藏www服务信息。 1、起因 今天收到一个高危漏洞的警告,该漏洞大意为:…

Fortran 中的函数与子程序

Fortran 中的函数与子程序 简介 Fortran 是不区分大小写的函数(Function): 函数是一段具有输入和输出的代码块,它接受一些输入参数,经过一系列计算后返回一个结果。 在Fortran中,函数的定义以关键字"…

【深度学习】1. yolov5 推理速度和batchsize的增长关系,推理并行处理多张图片,显存如何手动释放

文章目录 前言1. batchsize和推理速度的关系2. 修改batchsize尝试2.1 benifit(好处)2.1 编码batchsize下的推理2.2 发现问题2.2.1 推理结束后,占用显存不释放。 2.3 其它有用的参数设置 前言 yolov5的detect.py 是默认batchsize1的&#xff…

echarts 进度条 样式图表

示例图 代码 <!-- *flat-bar-chart *author yuge *date 2023/6/26 16:21 --> <template><div class"flat-bar-chart-main" ref"chartDiv"></div> </template><script> import * as echarts from echartsexport defau…

阿里云国际站:云原生数据库2.0时代,阿里云如何将云原生进行到底?

【猎云网上海】11月3日报道&#xff08;文/孙媛&#xff09; “PolarDB将云原生进行到底&#xff01;” 在2021年云栖大会上&#xff0c;阿里巴巴集团副总裁、阿里云智能数据库事业部总负责人李飞飞宣布了PolarDB实现三层解耦的重磅升级以及引领云原生数据库技术持续创新的态…

Java性能权威指南-总结25

Java性能权威指南-总结25 数据库性能的最佳实践随机数Java原生接口字符串的性能 数据库性能的最佳实践 随机数 Java7提供了3个标准的随机数生成器类&#xff1a;java.util.Random、java.util.concurrent.ThreadLocalRandom以及java.security.SecureRandom。这三个类在性能方面…

SpringBoot教学资料1-SpringBoot基础

SpringBoot简介 Spring Boot 优点 •可快速构建独立的Spring应用 •直接嵌入Tomcat(无需部署WAR文件) •提供依赖启动器简化构建配置 •极大程度的自动化配置Spring和第三方库 •提供生产就绪功能 •极少的代码生成和XML配置 •Spring Boot是基于Spring框架开发的全新框架&…

jenkins使用ftp工具,上传文件至服务器报错“Could not write file”

一、错误说明 使用ftp上传文件 ERROR: Exception when publishing, exception message [Could not write file. Server message: [553 Could not create file.]]11:12:45 FTP: Connecting from host [test-xxx-java-user-service-3-932ft-hsb69-t5wmf] 11:12:45 FTP: Conne…

『DotNetBrowser』.Net的浏览器嵌入组件,该选择DotNetBrowser 还是 CefSharp?

&#x1f4e3;读完这篇文章里你能收获到 全方位对比DotNetBrowser 和 CefSharp的优缺点 文章目录 一、引言二、引擎三、架构1. CefSharp架构2. DotNetBrowser架构 四、对比1. 稳定性和内存使用2. 应用程序域3. AnyCPU4. H.264, AAC5. 安全6. Visual Studio设计器7. 嵌入应用程…

通过DAPLink和STLink使用RTT输出日志

前提 阅读此文章的前提是已经移植好SEGGER RTT&#xff0c;如未移植请参考我的另一篇博客 《基于J-Link RTT Viewer输出日志(适用于JLink DAPLink STLink)》 由于SEGGER RTT 自带的 JLinkRTTViewer.exe 只支持自家的J-Link&#xff0c;所以使用DAPLink和STLink我们得另辟蹊径…

【设计模式】第二十一章:命令模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

shiro系列vulhub所有漏洞复现CVE-2020-1957、CVE-2016-4437、CVE-2010-3863、shiro-721 代码执行

文章目录 Apache Shiro 认证绕过漏洞&#xff08;CVE-2020-1957&#xff09;漏洞详情&#xff1a;复现&#xff1a; Apache Shiro 1.2.4反序列化漏洞&#xff08;CVE-2016-4437&#xff09;漏洞详情&#xff1a;复现: Apache Shiro 认证绕过漏洞&#xff08;CVE-2010-3863&…