yolov5障碍物识别-雪糕筒识别(代码+教程)

简介

这是一个检测交通锥并识别颜色的项目。我使用 yolov5 来训练和检测视锥细胞。此外,我使用 k 均值来确定主色,以对锥体颜色进行分类。目前,支持的颜色为红色、黄色、绿色和蓝色。其他颜色被归类为未知。

在这里插入图片描述

数据集和注释

我使用了一个自收集的锥体数据集,其中包含 303 张锥体图像。这不是一个完美的做法,因为它是一个很小的数据集。我还需要自己注释图像。在这里,我使用了一个在线注释网站 Roboflow,它提供注释、预处理和增强等服务。但是,它对免费用户有 1,000 个源图像和 5,000 个生成图像的限制。

model
├── 锥体检测:Yolov5S
└── 颜色识别:主色(k-means)
用法
如果您有兴趣,可以尝试 colab 中的代码。

在这里插入图片描述

训练

# display images
from PIL import Image
import globfor imageName in glob.glob('/content/yolov5/images/*.jpg'):basewidth = 640img = Image.open(imageName)wpercent = (basewidth/float(img.size[0]))hsize = int((float(img.size[1])*float(wpercent)))img = img.resize((basewidth,hsize), Image.NEAREST)img = img.convert("RGB")img.save(imageName)
  • 如果您有带注释的数据集,则可以直接使用 train.ipynb 在 Colab 中打开项目。

  • 使用 Colab 进行训练和预测: Colab 是一个基于云的 Jupyter 笔记本服务,能够在云端运行代码。通过提供的 Colab
    链接,你可以直接在浏览器中打开并运行代码,这对于快速尝试和理解项目非常方便。
    在这里插入图片描述

  • 项目中的注意事项: 数据集大小: 作者使用了一个包含 303
    张图像的自定义数据集,但指出这并不是一个理想的实践,因为数据集规模较小。在实际应用中,使用更大规模的数据集通常会有助于提高模型的性能。

  • 在线标注服务: 使用 Roboflow
    进行图像标注,该服务提供了标注、预处理和增强等功能。然而,对于免费用户,有一些使用限制,包括最大处理图像数量和生成图像数量。

%%writetemplate /content/yolov5/models/custom_yolov5s.yaml# parameters
nc: {num_classes}  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple# anchors
anchors:- [10,13, 16,30, 33,23]  # P3/8- [30,61, 62,45, 59,119]  # P4/16- [116,90, 156,198, 373,326]  # P5/32# YOLOv5 backbone
backbone:# [from, number, module, args][[-1, 1, Focus, [64, 3]],  # 0-P1/2[-1, 1, Conv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[-1, 9, C3, [256]],[-1, 1, Conv, [512, 3, 2]],  # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 1, SPP, [1024, [5, 9, 13]]],[-1, 3, C3, [1024, False]],  # 9]# YOLOv5 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]],  # cat backbone P4[-1, 3, C3, [512, False]],  # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]],  # cat backbone P3[-1, 3, C3, [256, False]],  # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]],  # cat head P5[-1, 3, C3, [1024, False]],  # 23 (P5/32-large)[[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]
  • 颜色分类: 采用 k-means 算法确定主导颜色,并将交通锥分为红、黄、绿和蓝等颜色。其他颜色被分类为未知。
    在这里插入图片描述

  • 推荐的下一步: 如果你对该项目感兴趣,可以进一步探索以下方面:

  • 数据增强: 在数据集上应用更多的数据增强技术,以提高模型的泛化能力。

  • 模型调优: 尝试使用更大的 YOLOv5 模型(例如 yolov5m、yolov5l 或
    yolov5x)进行训练,看看是否能够改善检测性能。

  • 更大的数据集: 如果可能的话,考虑收集更大规模的数据集,以进一步提高模型的准确性。
    在这里插入图片描述

视频预测

预测:
使用 predict.ipynb 进行锥体检测。 在 pycharm 中打开

# use the best weights!
%cd /content/yolov5/
!python detect.py --weights weights/best.pt --conf 0.6 --source videos/cone_video.mp4

注意:需要使用作者在 model 文件夹中训练的权重,并且有一些自定义的 YOLOv5 文件在 utils 文件夹中。
在这里插入图片描述

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

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

相关文章

CMMI认证中的ATM是什么?

CMMI(Capability Maturity Model Integration)认证是国际上广泛认可的一种软件能力成熟度模型,旨在帮助组织提高软件开发的效率和质量。在CMMI认证中,ATM(Appraisal Team Member)起着关键作用。本文将详细介…

Open5GSUeRANSim3:VirtualBOX VM使用static IP并和host互通

本文档参考 https://blog.csdn.net/shuaihj/article/details/127589833 https://www.cnblogs.com/manongqingcong/articles/16659150.html https://blog.csdn.net/justlpf/article/details/132977047 VM默认使用的是自动分配的IP,每个VM的ip都是10.0.2.15。后续为了…

12.19_黑马数据结构与算法笔记Java

目录 203 排序算法 选择排序 204 排序算法 堆排序 205 排序算法 插入排序 206 排序算法 希尔排序 207 排序算法 归并排序 自顶至下 208 排序算法 归并排序 自下至上 209 排序算法 归并加插入 210 排序算法 单边快排 211 排序算法 双边快排 212 排序算法 快排 随机基准…

ITIL® 4 Foundation​,12月23日即将开课~想了解点击查看

ITIL 4 Foundation即将开课~ 想报名的必须提前预约啦 👇👇👇 培训地点: 远程直播:线上平台学习 开课时间: 周末班:12月23日、24日; 什么是ITIL? 信息技术基础架构…

将Abp默认事件总线改造为分布式事件总线

文章目录 原理创建分布式事件总线实现自动订阅和事件转发 使用启动Redis服务配置传递Abp默认事件传递自定义事件 项目地址 原理 本地事件总线是通过Ioc容器来实现的。 IEventBus接口定义了事件总线的基本功能,如注册事件、取消注册事件、触发事件等。 Abp.Events…

LTD256次升级 |一分钟创建小程序官网 • 官网内容可在小程序分享

1、 商品关联表单支持上传图片; 2、 「我的咨询」新增快捷添加入口; 3、 极速官微新增官网内容分享页面;优化创建流程; 4、 极速官微支持编辑方式添加文章与产品; 5、 极速官微新增数据枢纽入口与网站设置页面&#xf…

(9)Linux Git的介绍以及缓冲区

💭 前言 本章我们先对缓冲区的概念进行一个详细的探究,之后会带着大家一步步去编写一个简陋的 "进度条" 小程序。最后我们来介绍一下 Git,着重讲解一下 Git 三板斧,一般只要掌握三板斧就基本够用了。 缓冲区&#xff…

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

当使用ssh登录服务器时,由于文件权限没有设置报以下错误 WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions for test_1.pem are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Loa…

邮政快递单号查询入口,标记需要的单号记录

批量查询邮政快递单号的物流信息,对需要的单号记录进行标记。 所需工具: 一个【快递批量查询高手】软件 邮政快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主界面左上角…

spconv简介、环境配置与安装以及遇到的各种报错处理

spconv简介、环境配置与安装以及遇到的各种报错处理 spconv介绍spconv安装源码安装spconv 1.xpip安装spconv 2.x 报错处理报错一报错二报错三 此篇博客将介绍spconv、如何安装spconv 1.x和spconv2.x,以及遇到的各种报错处理,更多详细内容可以参考官方的G…

一文教你提高写代码效率,程序员别错过!

首先,每个程序员都是会利用工具的人,也有自己囊里私藏的好物。独乐乐不如众乐乐,今天笔者整理了 3 个辅助我们写代码的黑科技,仅供参考。如果你有更好的工具,欢迎评论区分享。 1、Google/Stackoverflow——搜索解决方…

VUE小知识点

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。 Vue 的主要作用是帮助开发者构建现代 Web 应用程序。它允许前端开发人员专注于应用程序…

Guideline 2.3.2 - Performance - Accurate Metadata问题如何解决

当您的应用程序在苹果应用商城审核过程中被拒绝时,苹果会向您发送一封邮件,其中提供了关于拒绝原因的详细信息。本文将指导您如何正确处理Guideline 2.3.2 - Performance - Accurate Metadata问题,并提供解决方案,以确保您的应用程…

【Jenkins】Pipeline 语法解析(声明式Pipeline)

文章目录 一、Sections1、agent(代理)agent 参数值 2、post3、stages(阶段)4、steps(步骤) 二、Directives 指令1、environment 环境变量2、options 配置选项可用的选项 options 3、parameters 参数可用的参…

RK3568 android11 调试mipi摄像头 gc2093

一,摄像头简介 GC2093是一个高质量的1080P CMOS图像传感器,用于安全相机产品、数码相机产品和手机相机应用程序。包含了一个1920H x 1080V像素阵列、片上10位ADC和图像信号处理器。高性能和低功耗功能的全面集成使GC2093最适合设计,减少了实…

C++基础-引用详解

目录 1、概念 2、格式 3、特性 4、引用作为函数的参数 5、引用作为函

安全运营之安全加固和运维

安全运营是一个将技术、流程和人有机结合的复杂系统工程,通过对已有安全产品、工具和服务产出的数据进行有效的分析,持续输出价值,解决安全问题,以确保网络安全为最终目标。 安全加固和运维是网络安全运营中的两个重要方面。 安全…

【Proteus仿真】【Arduino单片机】视力保护仪

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使LCD1602液晶,DS18B20温度传感器、按键、蜂鸣器、继电器开关、HC05蓝牙模块等。 主要功能: 系统运行后,LCD16…

js键盘事件keydown事件,防止重复触发,组合键的配合使用

js键盘事件keydown事件,防止重复触发 键盘事件类型主要有三种: keydown 、keypress(不建议使用,部分浏览器已放弃)和 keyup 。 添加普通键盘keydown事件 // 监听键盘按下事件document.addEventListener(keydown, function(event) {// 输出按…

搭建动态网站之——基于Redhat8.6搭建Discuz论坛

目录 一、动态网站与静态网站区别 1、提供用户互动接口的动态网站 2、搭建动态网站的需求: 二、搭建步骤 第一步:www服务器配置 第二步;编辑网页文件 第三步:使用xftp 将Discuz包传到/discuz解压 1、将Discuz包移动到/discuz 2、解压…