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

吸烟(抽烟)检测和识别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数据
吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)_第1张图片 吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)_第2张图片

(2)smoking-video

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

smoking数据 notsmoking数据
吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)_第3张图片 吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)_第4张图片

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

你可能感兴趣的:(深度学习,吸烟数据集,抽烟数据集,吸烟识别,抽烟识别数据集,smoking)