自动售卖柜目标检测数据集 4880张 商品数据集 voc yolo

news2025/2/4 8:47:49

自动售货机商品检测数据集

名称

自动售货机商品检测数据集 (Automatic Vending Machine Product Detection Dataset)

规模
  • 图像数量:4880张图像。
  • 类别:30种不同的商品类别。
数据划分
  • 训练集 (Train):通常占总数据的80%左右,约3904张图像。
  • 验证集 (Validation):通常占总数据的20%左右,约976张图像。
类别和数量

  • 分类列表包括但不限于:
    • 3+2-2
    • 3jia2
    • aerbeisi
    • annmuxi
    • aoliao
    • baicha
    • baishikele
    • baoshukele
    • baokuangli
    • binghongcha
    • bingqilinniunai
    • bingtangxueli
    • buding
    • chacui
    • chapai
    • chaping
    • daofandian
    • dongpeng
    • fenda
    • guadasao
    • guoliying
    • haochidian
    • haoliyou
    • heweidao
    • hongniu
    • jianjiao
    • jianlibao
    • jindian
    • kafei
    • kaomogal
    • kaomoshaokao
    • kaomoxiangcong
    • kebie
    • kele
    • laotansuancai
    • liaomianbao
    • lingdukele
    • lujiaoxiang
    • lujikafei
    • miziyuan
    • yixing
    • yixing2
    • yixing3
数据特点
  • 高质量与高分辨率:所有图像均为高分辨率,适合进行精确的商品检测。
  • 多样性和复杂性:图像覆盖了各种商品类型和品牌,增加了模型的泛化能力。
  • 详尽标注:每个图像都附有准确的边界框标注信息,确保了训练数据的质量。
应用领域
  • 自动售货机运营:帮助自动售货机运营商快速识别商品种类和位置,提高运营效率。
  • 无人零售:在无人零售场景中,实现自动识别商品,提升购物体验。
  • 库存管理:实时监测商品库存情况,便于补货和维护。
  • 数据分析:收集销售数据,进行市场分析和决策制定。
1. 安装依赖库

首先,确保安装了必要的依赖库。可以在项目目录中的requirements.txt文件中列出这些依赖库,然后运行以下命令进行安装:

 
pip install -r requirements.txt

requirements.txt 文件内容示例:

torch==1.10.0
torchvision==0.11.1
pandas==1.3.4
cv2
albumentations==1.1.0
2. 创建数据集

定义一个自定义的数据集类,并创建数据加载器。

import os
import pandas as pd
import cv2
from torch.utils.data import Dataset, DataLoader
from torchvision.transforms import Compose, ToTensor, Normalize, Resize
from albumentations import HorizontalFlip, RandomBrightnessContrast, ShiftScaleRotate, BboxFrom Masks, BBoxFormatPASCAL
from albumentations.pytorch import ToTensorV2

# 自定义数据集类
class VendingMachineProductDataset(Dataset):
    def __init__(self, data_root, annotations_file, transforms=None):
        self.data_root = data_root
        self.annotations = pd.read_csv(annotations_file)
        self.transforms = transforms

    def __len__(self):
        return len(self.annotations)

    def __getitem__(self, idx):
        img_path = os.path.join(self.data_root, self.annotations.iloc[idx, 0])
        image = cv2.imread(img_path)
        bboxes = self.annotations.iloc[idx, 1:].values.reshape(-1, 4)  # bounding box coordinates
        labels = self.annotations.columns[1:]

        if self.transforms:
            augmented = self.transforms(image=image, bboxes=bboxes)
            image = augmented['image']
            bboxes = augmented['bboxes']

        return image, bboxes, labels

# 图像预处理
def get_transforms():
    """构建预处理函数"""
    _transform = [
        Resize(height=416, width=416, interpolation=cv2.INTER_LINEAR),
        HorizontalFlip(p=0.5),
        RandomBrightnessContrast(p=0.2),
        ShiftScaleRotate(p=0.5, shift_limit=0.0625, scale_limit=0.2, rotate_limit=15),
        Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
        ToTensorV2(),
        BboxFromMasks(format=BBoxFormatPASCAL)
    ]
    return Compose(_transform)

# 创建数据加载器
train_dataset = VendingMachineProductDataset(
    data_root='path_to_your_data_directory',
    annotations_file='path_to_your_annotations.csv',
    transforms=get_transforms()
)
val_dataset = VendingMachineProductDataset(
    data_root='path_to_your_data_directory',
    annotations_file='path_to_your_annotations.csv',
    transforms=get_transforms()
)

train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4)
val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False, num_workers=4)
3. 训练YOLOv5模型

使用YOLOv5进行训练。

!git clone https://github.com/ultralytics/yolov5  # 下载YOLOv5代码仓库
cd yolov5

# 使用YOLOv5训练模型
python train.py --weights yolov5s.pt --data path_to_your_data.yaml --name vending_machine_detection --img 416 --batch 16 --epochs 100 --device 0
  • 数据配置文件:创建一个名为data.yaml的数据配置文件,其中包含训练和验证数据集的信息。
train: path_to_your_train_images
val: path_to_your_val_images
nc: 30  # 类别数量
names: [3+2-2, 3jia2, aerbeisi, ann

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

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

相关文章

【AI知识点】二项分布(Binomial Distribution)

二项分布(Binomial Distribution) 是概率论和统计学中描述独立重复的伯努利试验中成功次数的离散概率分布。它是基于多次独立的伯努利试验的扩展,用于描述在 n n n 次试验中发生成功的次数。 1. 二项分布的定义 二项分布用于描述在 n n n…

利用GPU进行训练

文章目录 一、GPU训练模型二、对比使用gpu和cpu进行训练所花费的时间三、GPU训练模型的第二种表达方式 一、GPU训练模型 GPU只能够训练三种变量,分别是: 网络模型 数据(输入,标注targets) 损失函数 使用方式是.cuda…

精品WordPress主题/响应式个人博客主题Kratos

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题,整体布局简洁大方,针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净,简单且响应迅速的博客主题,Vtrois创建和维护, 主…

rockylinux9安装软件报错

1、rocky linux9再安装软件的时候报错: [rootClient119 yum.repos.d]# yum -y install epel-release [rootClient119 yum.repos.d]# yum -y install libcgroup Extra Packages for Enterprise Linux 9 - x86_64 …

【MySQL 09】表的内外连接

目录 1.内连接 创建表(案例准备) 案例: 2.外连接 2.1左外连接 案例: 2.2右外连接 案例: 1.内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过…

什么是pip? -- Python 包管理工具

前言 不同的编程语言通常都有自己的包管理工具,这些工具旨在简化项目的依赖管理、构建过程和开发效率,同时促进代码的复用和共享。每个包管理工具都有其独特的特点和优势,开发者可以根据自己的编程语言和项目需求选择合适的包管理工具。 pip是…

R语言的下载、安装及环境配置(RstudioVSCode)

0x01 R语言篇 一、软件介绍 R for Windows是一个免费的用于统计计算和统计制图的优秀工具,是R语言开发工具。它拥有数据存储和处理系统、数组运算工具(其向量、矩阵运算方面功能尤其强大)、完整连贯的统计分析工具、优秀的统计制图等功能。…

Spring Cloud之OpenFeign的具体实践

1 基本概念 OpenFeign基于Feign框架开发,而Feign是Netflix开源的一个声明式Web服务客户端。OpenFeign通过定义接口、注解和动态代理等方式,将服务调用的过程封装起来,使得开发者只需要定义服务接口,而无需关心底层的HTTP请求和序列…

qt 使用svg 图标的使用

1. 添加模块 在cmakeList.txt 中添加svg模块 2. 使用示例 这里已给已初始化的按钮设置图标为例: int width 12;int height 12;QSvgRenderer *minRenderer new QSvgRenderer(QString(":/resources/icon/min_window.svg"));QPixmap pixmap(width, h…

CSS——属性值计算

CSS——属性值计算 今天来详细讲解一下 CSS的属性值计算过程,这是 CSS 的核心之一(另一个是视觉可视化模型,个人理解,这个相对复杂,以后再讲)。 基本概念 层叠样式表:Cascade Style Sheet&am…

【YOLO学习】YOLOv5口罩检测实战

文章目录 1. 环境配置2. 下载代码3. 安装库3.1 安装pytorch3.2 安装其他库 4. 测试5. 数据标注6. 模型训练7. 界面可视化 1. 环境配置 1. 先参考其他文章安装 Anaconda 或者 Miniconda,我安装的是 Miniconda。 2. 更换国内源,以加快速度 。可以参考下面这…

使用Buildpacks构建Docker镜像

## 使用Buildpacks构建Docker镜像 ![](../assets/运维手册-Buildpacks-Buildpacks.io.png) ### Buildpacks简介 与Dockerfile相比,Buildpacks为构建应用程序提供了更高层次的抽象。具体来说,Buildpacks: * 提供一个平衡的控制,…

Koa2项目实战2(路由管理、项目结构优化)

添加路由(处理不同的URL请求) 路由:根据不同的URL,调用对应的处理函数。 每一个接口服务,最核心的功能是:根据不同的URL请求,返回不同的数据。也就是调用不同的接口返回不同的数据。 在 Node…

1C++入门基础(一)

文章目录 什么是C?C的发展史C关键字(C98)命名空间命名空间的定义命名空间的使用 C中的输入和输出缺省参数缺省参数的概念缺省参数分类全缺省参数半缺省参数 函数重载函数重载的概念函数重载的原理(名字修饰) extern#1. 符号的声明与定义#1.1 变量的声明与定义#1.2 函数的声明和…

均值模板和二阶差分模板的频率响应

均值模板和二阶差分模板都是偶对称。实偶函数的傅里叶变换仍是实偶函数。 给个证明过程 实偶函数 一个函数 f ( x ) f(x) f(x) 被称为实偶函数,如果它满足以下条件: f ( − x ) f ( x ) f(-x) f(x) f(−x)f(x) 傅里叶变换 对于一个实偶函数 f (…

实验 | 使用本地大模型从论文PDF中提取结构化信息

非结构文本、图片、视频等数据是待挖掘的数据矿藏, 在经管、社科等研究领域中谁拥有了_从非结构提取结构化信息的能力_,谁就拥有科研上的数据优势。正则表达式是一种强大的文档解析工具,但它们常常难以应对现实世界文档的复杂性和多变性。而随…

【Codeforces】CF 2007 E

E. Iris and the Tree #树形结构 #贪心 #数学 题目描述 Given a rooted tree with the root at vertex 1 1 1. For any vertex i i i ( 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n) in the tree, there is an edge connecting vertices i i i and p i p_i pi​ ( 1 ≤ p i ≤…

Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

matplotlib 的主要组成部分是 pyplot,它是一个类似于 MATLAB 的绘图框架。pyplot 提供了一个 MATLAB 式的接口,可以隐式地创建图形和轴,使得绘图变得简单。 以下是一个简单的 matplotlib 使用示例,用于绘制一条简单的折线图&…

Linux:进程间通信之信号量

system V的进程间通信除了共享内存,还有消息队列和信号量 IPC(进程间通信的简称) 消息队列 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同…

Electron 使⽤ electron-builder 打包应用

electron有几种打包方式,我使用的是electron-builder。虽然下载依赖的时候让我暴躁,使用起来也很繁琐,但是它能进行很多自定义,打包完成后的体积也要小一些。 安装electron-builder: npm install electron-builder -…