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

2340 / 2025-09-21 14:39:30 世界杯介绍

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

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

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

人体检测框:人体检测框是通过人体(行人)检测算法预测和定位的人体区域,每个人体用一个矩形框表示吸烟检测区:将人体检测框的左上角位置保存不变,右下角的高度(Height)缩短三分之一左右,得到吸烟检测区吸烟和未吸烟:项目定义,若吸烟检测区存在烟只,则判断为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. 吸烟(抽烟)分类数据集下载

如需下载项目数据,请WX关注【AI吃大瓜】,回复【吸烟检测】即可下载

项目源码包含内容:

​smoking-dataset吸烟(抽烟)分类数据集,总共15000+张图片,其中测试集431张,训练集14761张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