当前位置: 首页 > news >正文

【工业场景】用YOLOv8实现反光衣识别

目录

🐸🐸0.反光衣识别任务的意义和应用场景

🌾反光衣识别的意义

🌾工业与建筑领域的应用

🌾交通管理场景的应用

🌾应急救援中的使用

🌾智能城市管理延伸

若需要完整数据集和源代码可以私信。

🌷🌷1.数据集介绍

👍👍2.反光衣识别实现效果

🍎🍎3.YOLOv8识别反光衣算法步骤

🍋3.1数据准备

🍋3.2模型选择

🍋3.3加载预训练模型

🍋3.4输入数据组织

🍭🍭4.目标检测训练代码

⭐4.1训练过程

⭐4.2训练结果

🏆🏆5.目标检测推理代码

整理不易,欢迎一键三连!!!送你们一条美丽的--分割线--


🐸🐸0.反光衣识别任务的意义和应用场景

🌾反光衣识别的意义

反光衣识别技术在安全管理和自动化监控领域具有重要意义。通过实时检测人员是否穿戴反光衣,能够有效降低高风险作业环境中的事故发生率。在夜间或低光照条件下,反光衣的高可见性结合自动识别系统,可大幅提升对工人、交警等人员的保护能力。该技术还能减少人为监管成本,实现24小时无间断安全合规检查。

🌾工业与建筑领域的应用

在建筑工地、矿山、港口等工业场景中,反光衣识别系统常与视频监控结合,自动识别未按规定穿戴防护装备的人员。系统可触发实时警报或记录违规行为,帮助管理者 enforce 安全规范。部分先进系统还能与门禁联动,禁止未穿戴防护装备的人员进入危险区域。

🌾交通管理场景的应用

交警和道路施工人员需要在复杂交通环境中工作,反光衣识别技术可通过道路摄像头实时监测这些人员的安全状态。当检测到反光衣缺失或破损时,系统能立即通知指挥中心。该技术也应用于智能交通系统,帮助自动驾驶车辆识别道路作业人员。

🌾应急救援中的使用

消防员、抢险救援人员在灾害现场常需穿戴反光标识装备。通过无人机或移动设备搭载的识别系统,指挥中心能快速掌握救援人员的分布和状态。在能见度低的灾害环境中,该技术显著提升团队协作效率和人员安全性。

🌾智能城市管理延伸

部分城市将反光衣识别技术整合到智慧城市平台,用于监测环卫工人、市政施工人员等城市服务人员的在岗状态和安全防护情况。通过大数据分析穿戴合规率,可为制定更精准的安全政策提供依据。

        本文以YOLOv8为基础,设计研究了基于YOLOv8的反光衣识别任务,提取各种场景下的反光衣自动检测,包含完整数据介绍、训练过程和测试结果全流程。

若需要完整数据集和源代码可以私信。

🌷🌷1.数据集介绍

        反光衣数据集总共包含1083张样本数据,其中训练集800张,验证集283张,部分影像展示如下:

  label为txt格式的yolo目标检测格式,示例txt文件内容为:

样本数据包含2类(0和1),分别代表普通衣服和反光衣,用类别0/1区分。

训练验证比例可以自行调整,这里不赘述。

👍👍2.反光衣识别实现效果

        YOLOv8识别反光衣的预测效果如下(2类,衣服和反光衣,用类别0/1区分):

  识别精度为95+%,以AP50来计算。

中间训练过程如下:

🍎🍎3.YOLOv8识别反光衣算法步骤

        通过目标检测方法进行反光衣识别的方法不限,本文以YOLOv8为例进行说明。

🍋3.1数据准备

火灾检测数据集总共包含1083张样本数据,其中训练集800张,验证集283张。

从混淆矩阵来看,01类别差异基本在1:2。

数据组织:

----fanguanyi_dataset----images----train----val----labels----train----val

        images/train文件夹如下:

labels/train文件夹如下:

 模型训练label部分采用的是YOLO格式的txt文件,所以如果自己的数据集是xml格式或者json格式需要进行转换哦,转换可移步这里。

        具体txt格式内容如1.数据集介绍中所示。

🍋3.2模型选择


        以YOLOv8n为例,模型选择代码如下:

from ultralytics import YOLO# Load a model
#model = YOLO('yolov8n.yaml')  # build a new model from YAML
#model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights


        其中yolov8n.yaml为./ultralytics/cfg/models/v8/yolov8n.yaml,可根据自己的数据进行模型调整,打开yolov8n.yaml显示内容如下:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 2 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024] # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPss: [0.33, 0.50, 1024] # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPsm: [0.67, 0.75, 768] # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPsl: [1.00, 1.00, 512] # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPsx: [1.00, 1.25, 512] # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C2f, [512]] # 12- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 3, C2f, [256]] # 15 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]] # cat head P4- [-1, 3, C2f, [512]] # 18 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]] # cat head P5- [-1, 3, C2f, [1024]] # 21 (P5/32-large)- [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)

主要需要修改的地方为nc,也就是num_class,此处数据集类别为2类,所以nc=2。

        如果其他的模型参数不变的话,就默认保持原版yolov8,需要改造模型结构的大佬请绕行。

🍋3.3加载预训练模型


        加载预训练模型yolov8n.pt,可以在第一次运行时自动下载,如果受到下载速度限制,也可以自行下载好(下载链接),放在对应目录下即可。

🍋3.4输入数据组织


        yolov8还是以yolo格式的数据为例,./ultralytics/cfg/datasets/data.yaml的内容示例如下:


 

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)# Classes (80 COCO classes)
names:0: person1: bicycle2: car# ...77: teddy bear78: hair drier79: toothbrush

        这个是官方的标准coco数据集,需要换成自己的数据集格式,此处建议根据自己的数据集设置新建一个fanguanyi_detect_coco128.yaml文件,放在./ultralytics/cfg/datasets/目录下,最后数据集设置就可以直接用自己的fanguanyi_detect_coco128.yaml文件了。以我的fanguanyi_detect_coco128.yaml文件为例:

 

path: /home/datasets/fanguanyi  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test: images/test # test images (optional)names:0: FGY1: CLOTH


🍭🍭4.目标检测训练代码


准备好数据和模型之后,就可以开始训练了,train.py的内容显示为:

from ultralytics import YOLO# Load a model
#model = YOLO('yolov8n.yaml')  # build a new model from YAML
#model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights# Train the model
results = model.train(data='fanguangyi_detect_coco128.yaml', epochs=100, imgsz=640)


        通常我会选择在基础YOLO模型上进行transfer微调,不会从头开始训练,如果想自己从头开始,可以自行选择第一种方式。这里建议选择第三种。

⭐4.1训练过程


        开始训练之后就会开始打印log文件了。如下图所示:

训练完成后会在/run/detect/目录下生成train或者train+数字的文件夹,存放你的训练结果。

⭐4.2训练结果

训练完成后的结果如下:

        其中weights文件夹内会包含2个模型,一个best.pth,一个last.pth。

至此就可以使用best.pth进行推理检测是否包含反光衣了。

训练精度展示:

🏆🏆5.目标检测推理代码


批量推理python代码如下:

from ultralytics import YOLO
from PIL import Image
import cv2
import osmodel = YOLO('/yolov8/runs/detect/train5/weights/best.pt')  # load a custom model
path = '/home/dataset/fanguanyi/images/test/'  #test_image_path_dir
img_list = os.listdir(path)
for img_path in img_list:
###  =============detect=====================im1 = Image.open(os.path.join(path,img_path))results = model.predict(source=im1, save=True,save_txt=True)


 

若需要完整数据集和源代码可以私信。

整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷 

http://www.dtcms.com/a/471477.html

相关文章:

  • 武邑网站建设避免视觉效果混淆
  • 建站售后服务网页设计模板免费下载网站
  • 提供营销型网站价格在线员工后台网站建设
  • 哪家购物网站建设好会员管理系统登录
  • 建设网站需求服务器搭建网站环境
  • NSGA-II算法在MATLAB中求解单目标和多目标函数极值
  • 【P8815 [CSP-J 2022] 逻辑表达式】
  • 有哪些网站做二手房好的做网站怎么维护
  • 网站做漏洞扫描费用wordpress批量添加摘要
  • 路由器通过域名解析做网站用asp做的几个大网站
  • 进行网站推广有哪些常用方法企业建站电话多少
  • 邯郸 网站建设中国交通建设集团有限公司地址
  • 编译原理机测客观题(2)词法分析
  • 大型建设网站网站优化总结
  • 中国铁路建设投资公司官方网站wordpress什么环境
  • 如何自建网站 卖东西自己的电脑做服务器,并建网站
  • 智能手机网站模板建建建设网站公司电话号码
  • 第四章 神经网络的基本组件
  • 百度不收录新网站手机网站优化
  • 手机网站源码 html5网站建设与维护的不足
  • 德鲁克管理哲学:管理是知行统一的实践创新
  • 做场景秀的网站电子商城网站建设费用
  • **标题:发散创新:探究TPU架构的深度解析**在现代计算领域,TPU(Tensor Processing Unit)架构以其
  • 郑州做网站的专业公司西安做网站哪家比较好
  • 网站建设与维护服务器学习网站开发
  • Facebook受众挖掘的高效方法
  • 怎么建自己的摄影网站我的世界怎么做购买点卷网站
  • CasADi mpc
  • 六盘水网站开发北京度seo排名
  • Linux小课堂: 文件系统结构与核心命令解析