道路垃圾识别数据集 含pt模型界面 18类 共7542张图片,xml和txt标签都有;

道路垃圾识别数据集 含pt模型&界面 18类 共7542张图片,xml和txt标签都有;

YOLO道路垃圾识别系统

系统概述

名称:YOLO道路垃圾识别系统


图片数量:7542张
标注格式:XML和TXT(支持YOLO格式)
类别:Plastic Bottle, Face Mask, PaperBag, Plastic Cup, Paper Cup, Cardboard, Peel, Cans, Plastic Wrapper, Paperboard, Styrofoam, Tetra Pack, Colored Glass Bottles, Plastic Bag, Rags, Pile of Leaves, Glass Bottle
组件:数据集、预训练模型(.pt文件)、可视化界面
用途:用于路面垃圾识别,垃圾检测,目标检测,适用于Python环境下的机器学习、深度学习项目,特别适合使用YOLO进行目标检测。

数据集特点

  • 规模:包含7542张高分辨率图像,每张图像都带有详细的标注信息。
  • 多样性:图像涵盖了不同的光照条件、天气状况、背景环境以及垃圾种类,以确保模型能够适应多样的实际场景。
  • 标注质量:每张图像都有精确的手动标注,确保了高质量的训练数据。
  • 标注格式
    • VOC格式 (XML):符合Pascal VOC标准的XML文件,包含了图像的基本信息、对象类别以及边界框坐标。
    • YOLO格式 (TXT):每个目标用一个文本行表示,格式为 class_id x_center y_center width height,所有坐标值都是归一化的。
标注信息

  • VOC格式

    <annotation><folder>images</folder><filename>image_0001.jpg</filename><size><width>800</width><height>600</height><depth>3</depth></size><object><name>Plastic Bottle</name><bndbox><xmin>200</xmin><ymin>100</ymin><xmax>300</xmax><ymax>200</ymax></bndbox></object><object><name>Face Mask</name><bndbox><xmin>400</xmin><ymin>200</ymin><xmax>500</xmax><ymax>300</ymax></bndbox></object>
    </annotation>
  • YOLO格式

    0 0.25 0.1667 0.125 0.1667
    1 0.5 0.3333 0.125 0.1667

    解释:0 表示塑料瓶,1 表示口罩。x_centery_center 是边界框中心点的归一化坐标,widthheight 是边界框的宽度和高度的归一化值。

应用领域
  • 城市清洁:自动检测道路上的垃圾,帮助环卫工人高效清理。
  • 环境保护:监测公共区域的垃圾分布情况,提高环保意识。
  • 智能监控:结合视频监控系统,实时检测并报告垃圾情况。
  • 自动驾驶:辅助自动驾驶车辆识别路面上的障碍物,提高行驶安全性。
获取方式

通常情况下,研究人员可以通过官方提供的链接或相关机构网站下载该数据集。请注意,使用时应遵循相应的许可协议和引用要求。

关键代码示例
1. 下载数据集

假设我们已经有了数据集的下载链接,可以使用 Python 的 requests 库来下载数据集:

import requests
import os# 定义下载链接和保存路径
url = 'http://example.com/path/to/road_litter_dataset.zip'  # 替换为实际的下载链接
save_path = './road_litter_dataset.zip'# 检查是否已经下载过
if not os.path.exists(save_path):print("Downloading dataset...")response = requests.get(url, stream=True)with open(save_path, 'wb') as f:for chunk in response.iter_content(chunk_size=8192):if chunk:f.write(chunk)print("Download complete.")
else:print("Dataset already exists.")# 解压数据集
import zipfile
with zipfile.ZipFile(save_path, 'r') as zip_ref:zip_ref.extractall('./road_litter_dataset')
2. 解析 VOC 格式的标注文件

以下是一个解析 VOC 格式标注文件的函数:

import xml.etree.ElementTree as ETdef parse_voc_annotation(anno_file):tree = ET.parse(anno_file)root = tree.getroot()annotations = []for obj in root.findall('object'):name = obj.find('name').textbndbox = obj.find('bndbox')xmin = int(bndbox.find('xmin').text)ymin = int(bndbox.find('ymin').text)xmax = int(bndbox.find('xmax').text)ymax = int(bndbox.find('ymax').text)annotations.append({'class_name': name,'bbox': [xmin, ymin, xmax, ymax]})return annotations
3. 加载图像并显示标注框

我们可以使用 OpenCV 来加载图像,并使用 Matplotlib 来显示图像及其标注框:

import cv2
import matplotlib.pyplot as pltdef load_image(image_path):return cv2.imread(image_path)def display_image_with_annotations(image, annotations):fig, ax = plt.subplots()ax.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))for anno in annotations:bbox = anno['bbox']rect = plt.Rectangle((bbox[0], bbox[1]), bbox[2] - bbox[0], bbox[3] - bbox[1],fill=False, edgecolor='red', linewidth=2)ax.add_patch(rect)plt.show()# 示例用法
image_path = './road_litter_dataset/images/image_0001.jpg'
anno_path = './road_litter_dataset/annotations/image_0001.xml'image = load_image(image_path)
annotations = parse_voc_annotation(anno_path)
display_image_with_annotations(image, annotations)
4. 使用数据集进行训练

如果您打算使用这个数据集进行深度学习模型的训练,可以使用 PyTorch 或 TensorFlow 等框架。以下是一个简单的 PyTorch DataLoader 示例:

import torch
from torch.utils.data import Dataset, DataLoader
from PIL import Image
import numpy as npclass RoadLitterDataset(Dataset):def __init__(self, image_dir, anno_dir, transform=None):self.image_dir = image_dirself.anno_dir = anno_dirself.transform = transformself.images = os.listdir(image_dir)def __len__(self):return len(self.images)def __getitem__(self, idx):img_name = self.images[idx]image = Image.open(os.path.join(self.image_dir, img_name)).convert("RGB")anno_name = img_name.replace('.jpg', '.xml')anno_path = os.path.join(self.anno_dir, anno_name)annotations = parse_voc_annotation(anno_path)if self.transform:image = self.transform(image)return image, annotations# 创建 DataLoader
dataset = RoadLitterDataset(image_dir='./road_litter_dataset/images',anno_dir='./road_litter_dataset/annotations')
dataloader = DataLoader(dataset, batch_size=4, shuffle=True, num_workers=2)# 遍历数据
for images, annotations in dataloader:# 在这里进行模型训练pass
YOLO模型训练

为了使用YOLO进行道路垃圾识别,您可以使用预训练的YOLO模型,并对其进行微调。以下是一个简单的YOLOv5训练示例:

  1. 安装YOLOv5:深色版本

  2. train: ./road_litter_dataset/train/images
    val: ./road_litter_dataset/val/images
    nc: 17  # 类别数
    names: ['Plastic Bottle', 'Face Mask', 'PaperBag', 'Plastic Cup', 'Paper Cup', 'Cardboard', 'Peel', 'Cans', 'Plastic Wrapper', 'Paperboard', 'Styrofoam', 'Tetra Pack', 'Colored Glass Bottles', 'Plastic Bag', 'Rags', 'Pile of Leaves', 'Glass Bottle']  # 类别名称
  3. 训练模型: 使用YOLOv5进行训练:

    python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt
  4. 评估模型: 训练完成后,可以使用验证集进行评估:

     bash 

    深色版本

    python val.py --data data.yaml --weights runs/train/exp/weights/best.pt
  5. 推理测试: 使用训练好的模型进行推理测试:

    python detect.py --source ./road_litter_dataset/test/images --weights runs/train/exp/weights/best.pt --conf 0.4
可视化界面

为了提供一个用户友好的界面,您可以使用 StreamlitFlask 等工具来构建一个简单的Web应用程序。以下是一个使用 Streamlit 的示例:

  1. 安装 Streamlit

    pip install streamlit
  2. 创建 Streamlit 应用程序

    import streamlit as st
    from PIL import Image
    import torch
    from yolov5.models.experimental import attempt_load
    from yolov5.utils.general import non_max_suppression
    from yolov5.utils.plots import plot_one_box
    import cv2# 设置标题
    st.title("YOLO道路垃圾识别系统")# 上传图片
    uploaded_file = st.file_uploader("选择一张图片", type=["jpg", "jpeg", "png"])# 加载预训练模型
    model = attempt_load('runs/train/exp/weights/best.pt', map_location=torch.device('cpu'))  # 假设模型在CPU上运行
    model.eval()if uploaded_file is not None:# 读取并显示图片image = Image.open(uploaded_file)st.image(image, caption="上传的图片", use_column_width=True)# 图像预处理img = image.convert('RGB')img = np.array(img)img = cv2.resize(img, (640, 640))  # 调整大小以匹配模型输入img = img[:, :, ::-1].transpose(2, 0, 1)  # BGR to RGB, HWC to CHWimg = np.ascontiguousarray(img)img = torch.from_numpy(img).to(torch.device('cpu'))img = img.float() / 255.0  # 归一化if img.ndimension() == 3:img = img.unsqueeze(0)# 进行推理with torch.no_grad():pred = model(img)[0]pred = non_max_suppression(pred, 0.4, 0.5)# 绘制结果for i, det in enumerate(pred):  # detections per imageif len(det):for *xyxy, conf, cls in reversed(det):label = f'{model.names[int(cls)]} {conf:.2f}'plot_one_box(xyxy, img, label=label, color=(0, 255, 0), line_thickness=3)# 显示结果result_image = Image.fromarray(cv2.cvtColor(img.squeeze().permute(1, 2, 0).numpy(), cv2.COLOR_RGB2BGR))st.image(result_image, caption="检测结果", use_column_width=True)
  3. 运行 Streamlit 应用程序

    streamlit run app.py

通过上述步骤,您将拥有一个完整的YOLO道路垃圾识别系统,包括数据集、预训练模型和用户友好的可视化界面。希望这些代码能帮助您更好地利用该系统!

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

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

相关文章

智诊小助手TF卡记录文件导出

若想将TF卡中记录的数据文件导出可按以下的流程进行配置&#xff1a; 点击主界面中的导出选项即可进入到 下图中TF卡应用界面 点击TF卡应用界面中“查看记录文件”的选项&#xff0c;进入导出文件界面。 点击“选择”进入勾选文件的界面 点击“导出”后&#xff0c;点…

Android Studio 的 Gradle 任务列表只显示测试任务

问题现象如下&#xff1a; 问题原因&#xff1a; 这是因为Android Studio 设置中勾选了屏蔽其他gradle任务的选项。 解决方法&#xff1a; File -> Settings -> Experimental 取消勾选Only include test tasks in the Gradle task list generated during Gradle Sync&…

【Golang】Gin框架:Go语言中的轻量级Web框架

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

aws(学习笔记第六课) AWS的虚拟私有,共有子网以及ACL,定义公网碉堡主机子网以及varnish反向代理

aws(学习笔记第六课) AWS的虚拟私有&#xff0c;共有子网以及ACL&#xff0c;定义公网碉堡主机子网以及varnish反向代理 学习内容&#xff1a; AWS的虚拟私有&#xff0c;共有子网以及ACL定义公网碉堡主机子网&#xff0c;私有子网和共有子网以及varnish反向代理 1. AWS的虚拟…

springboot051医院管理系统(论文+源码)_kaic

医院管理系统 摘要 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求&#xff0c;创建了一个计算机管理医院管理系统的方案。文章介绍了医院管理系统的系统分析部分&#…

Gitlab 完全卸载–亲测可行

1、停止gitlab gitlab-ctl stop2.卸载gitlab&#xff08;注意这里写的是gitlab-ce&#xff09; rpm -e gitlab-ce 3、查看gitlab进程 ps aux | grep gitlab 4、杀掉第一个进程&#xff08;就是带有好多.............的进程&#xff09; 5、删除所有包含gitlab文件 find / …

配置文件get调用为null

生成get方法调用显示为null 修改get方法去掉static调用成功

LCWLAN设备的实际使用案例

我们的LCWLAN设备在实际使用中以裸板的形式放在客户的智能总线控制器中&#xff0c;客户的 智能总线刀片灯&#xff0c;柔性灯货架&#xff0c;柔性感应钢网柜以及智能电子料架等设备都是接到总线控制 器中&#xff0c;然后总控制器通过CAN总线和我们的LCWLAN设备连接&#xff…

两个表格讲清日语形容词怎么用!柯桥小语种学习零基础日语培训

い形容词 1、敬体形和简体形 _ 肯定形 否定形 敬体现在时 词干&#xff0b;い&#xff0b;です 词干&#xff0b;くない&#xff0b;です 敬体过去时 词干&#xff0b;い&#xff0b;でした 词干&#xff0b;くない&#xff0b;です&#xff0f;ありません 简体现在时…

基于Qt的雷达航迹控件(解决QWidget绘制多点卡顿问题)

&#xff1a;详细讲解 在本篇文章中&#xff0c;我们将详细探讨如何使用Qt创建一个雷达轨迹系统。该系统可以模拟雷达轨迹的显示、处理用户的交互并管理轨迹选中状态。通过这篇文章&#xff0c;您将了解到自定义类 RadarTrackItem、RadarTrackManager、OverlayWidget 和 Radar…

大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

美摄科技云服务解决方案,方案成熟,接入简单

美摄科技作为视频处理领域的先锋&#xff0c;凭借其强大的技术实力和深厚的行业经验&#xff0c;推出了成熟的云服务解决方案&#xff0c;为轻量化视频制作开辟了全新的道路。 一、成熟方案&#xff0c;接入无忧 美摄科技云服务解决方案的最大亮点在于其成熟度和易用性。我们…

Vulnhub打靶-matrix-breakout-2-morpheus

基本信息 靶机下载&#xff1a;https://pan.baidu.com/s/1kz6ei5hNomFK44p1QT0xzQ?pwdy5qh 提取码: y5qh 攻击机器&#xff1a;192.168.20.128&#xff08;Windows操作系统&#xff09; 靶机&#xff1a;192.168.20.0/24 目标&#xff1a;获取2个flagroot权限 具体流程 …

前端 js 处理一个数组 展示成层级下拉样式

好记性不如赖笔头&#xff1b; 前端开发中&#xff0c;不管是什么时候都会遇到select 下拉框的使用&#xff0c;一般情况下&#xff0c;数据处理后端都会处理好。前端一般使用相应技术栈所推荐的公共组件就可以了。 但是一般也有后端不处理的数组&#xff0c;需要前端自己处理成…

【热门主题】000007 网络安全:守护数字世界的坚固防线

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热门主题】000007 网络安全&#xff1a;守护数字世界的坚固防线一、网…

精准赋能,助力成长 | 亲笔签数字科技“笔迹大计”第一期培训圆满收官

创新驱动&#xff0c;合作共赢。近日&#xff0c;亲笔签数字科技成功举办第一期“笔迹大计”专业培训&#xff0c;为新入职渠道管理员工和新签约渠道伙伴精准赋能&#xff0c;进一步提升业务能力水平。 精心筹备&#xff0c;全面覆盖 本期“笔迹大计”培训内容全面&#xff0c…

当LangGraph遇上Mem0:如何让你的AI Agent具有更智能的记忆与个性化的体验?

AI Agent&#xff08;智能体&#xff09;的记忆&#xff08;Memory&#xff09;被认为是一项必备的基础能力&#xff0c;它用来提取、存储会话中的重要信息并用于后续的检索与使用。可以把记忆简单地分成短期记忆与长期记忆两种&#xff0c;用来“记住”不同类型的信息&#xf…

Navicat连接openGauss数据库详细指南

文章目录 环境准备总体的技术路线root权限下&#xff0c;防火墙的关闭切换用户修改文件修改文件pg_hba.conf修改文件postgresql.conf重启数据库 创建用于连接的数据库和数据库用户使用Navicat连接 资料参考 环境准备 自行安装Navicat连接工具(自己找破解版)已经安装好openGaus…

【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款购物类智能体的开发,来体验一下我的智能体『科技君Tom』

目录 1.1、智能体运行效果1.2、创作灵感来源智能体平台拥有个人化且人性化的大致框架&#xff0c;可以让小白也能搭建出一个智能体其次是拥有丰富的插件&#xff0c;可以更加快速的得到自己想要的效果~ 1.3、如何制作智能体常见问题与解决方案关于人设与回复逻辑插件使用模型的…

【Linux内核】eBPF基础篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了学习ebpf机制的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于–知乎ebpf专栏文章–进行的&#xff0c;每个知识点的修正和深…