吸烟(抽烟)检测和识别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. 吸烟(抽烟)分类数据集下载
吸烟(抽烟)分类数据集下载地址:吸烟(抽烟)检测和识别1:吸烟(抽烟)数据集说明(含下载链接)
数据包含:
- 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