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

目标检测算法Yolov5训练反光衣数据集模型 建立基于深度学习yolov5反光衣的检测

目标检测算法Yolov5训练反光衣数据集模型 建立基于深度学习yolov5反光衣的检测

文章目录

      • **标题:基于YOLOv5的反光衣检测全流程参考**
      • **1. 安装依赖**
      • **2. 准备数据集**
        • 数据集结构示例
        • 创建`data.yaml`文件
      • **3. 配置并训练YOLOv5模型**
        • 训练模型
        • 模型评估
      • **4. 推理代码**
      • **5. 构建GUI应用程序**

反光衣数据集 格式txt
:两个类别 反光衣和其他衣服
标注:labelimg标注(txt格式)
已划分:train(2043)和val(510)

1

1

使用YOLOv5模型进行目标检测任务。以下是详细的流程,包括安装依赖、准备数据集、配置YOLOv5、训练模型、评估模型、推理代码以及构建GUI应用程序的详细步骤。

标题:基于YOLOv5的反光衣检测全流程参考


1. 安装依赖

首先,确保你的环境中已安装了必要的库和工具:

pipinstalltorch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113# 根据CUDA版本选择gitclone https://github.com/ultralytics/yolov5# 克隆YOLOv5仓库cdyolov5 pipinstall-rrequirements.txt

2. 准备数据集

数据集已经按照8:2的比例划分为训练集(2043张)和验证集(510张),并且标注文件为YOLO适用的txt格式。

数据集结构示例
reflective_clothing_dataset/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ └── ... │ └── val/ │ ├── img2044.jpg │ └── ... └── labels/ ├── train/ │ ├── img1.txt │ └── ... └── val/ ├── img2044.txt └── ...
创建data.yaml文件

在YOLOv5项目的根目录下创建一个名为data.yaml的数据配置文件,内容如下:

train:./path/to/reflective_clothing_dataset/images/train/val:./path/to/reflective_clothing_dataset/images/val/nc:2# 类别数量names:['reflective_clothing','other_clothing']# 类别名称

请将路径替换为你实际的数据集路径。


3. 配置并训练YOLOv5模型

训练模型

使用YOLOv5的预训练模型开始训练。这里我们以YOLOv5s为例:

python train.py--img640--batch16--epochs50--datadata.yaml--weightsyolov5s.pt
  • --img 640: 输入图像尺寸。
  • --batch 16: 批次大小。
  • --epochs 50: 训练轮数。
  • --data data.yaml: 数据配置文件。
  • --weights yolov5s.pt: 使用YOLOv5s预训练权重。
模型评估

训练完成后,可以对验证集进行评估:

python val.py--weightsruns/train/exp/weights/best.pt--datadata.yaml--img640

这会输出模型在验证集上的性能指标(如mAP)。


4. 推理代码

编写推理代码用于预测新图片中的目标:

frompathlibimportPathimportcv2importtorchfrommodels.experimentalimportattempt_loadfromutils.generalimportnon_max_suppression,scale_coordsfromutils.datasetsimportletterboxdefdetect(image_path,model,img_size=640):device='cuda'iftorch.cuda.is_available()else'cpu'names=model.module.namesifhasattr(model,'module')elsemodel.names# 读取图像img0=cv2.imread(image_path)img=letterbox(img0,new_shape=img_size)[0]img=img[:,:,::-1].transpose(2,0,1)# BGR to RGB, to 3x416x416img=np.ascontiguousarray(img)# 转换为tensorimg=torch.from_numpy(img).to(device)img=img.float()# uint8 to fp32img/=255.0# 0 - 255 to 0.0 - 1.0ifimg.ndimension()==3:img=img.unsqueeze(0)# 推理withtorch.no_grad():pred=model(img)[0]pred=non_max_suppression(pred,0.25,0.45,classes=None,agnostic=False)# 处理预测结果fori,detinenumerate(pred):# detections per imageiflen(det):det[:,:4]=scale_coords(img.shape[2:],det[:,:4],img0.shape).round()for*xyxy,conf,clsinreversed(det):label=f'{names[int(cls)]}{conf:.2f}'plot_one_box(xyxy,img0,label=label,color=(0,255,0),line_thickness=3)returnimg0# 示例用法image_path='./path/to/test/image.jpg'model=attempt_load('runs/train/exp/weights/best.pt',map_location='cuda')result_image=detect(image_path,model)cv2.imshow('Result Image',result_image)cv2.waitKey(0)cv2.destroyAllWindows()# 辅助函数:绘制边界框defplot_one_box(x,img,color=None,label=None,line_thickness=None):tl=line_thicknessorround(0.002*(img.shape[0]+img.shape[1])/2)+1# line/font thicknesscolor=coloror[random.randint(0,255)for_inrange(3)]c1,c2=(int(x[0]),int(x[1])),(int(x[2]),int(x[3]))cv2.rectangle(img,c1,c2,color,thickness=tl,lineType=cv2.LINE_AA)iflabel:tf=max(tl-1,1)# font thicknesst_size=cv2.getTextSize(label,0,fontScale=tl/3,thickness=tf)[0]c2=c1[0]+t_size[0],c1[1]-t_size[1]-3cv2.rectangle(img,c1,c2,color,-1,cv2.LINE_AA)# filledcv2.putText(img,label,(c1[0],c1[1]-2),0,tl/3,[225,255,255],thickness=tf,lineType=cv2.LINE_AA)

5. 构建GUI应用程序

使用PyQt5构建一个简单的GUI应用程序,用于选择图片并展示检测结果:

importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QVBoxLayout,QPushButton,QLabel,QFileDialogfromPyQt5.QtGuiimportQPixmapfromPyQt5.QtCoreimportQtimportcv2classApp(QWidget):def__init__(self,model):super().__init__()self.model=model self.initUI()definitUI(self):self.setWindowTitle('反光衣检测系统')layout=QVBoxLayout()self.image_label=QLabel(self)layout.addWidget(self.image_label)self.select_button=QPushButton('选择图片',self)self.select_button.clicked.connect(self.select_image)layout.addWidget(self.select_button)self.setLayout(layout)self.show()defselect_image(self):options=QFileDialog.Options()file_name,_=QFileDialog.getOpenFileName(self,"选择图片","","Image Files (*.jpg *.jpeg *.png)",options=options)iffile_name:self.detect_and_show(file_name)defdetect_and_show(self,image_path):detected_image=detect(image_path,self.model)height,width,channel=detected_image.shape bytes_per_line=3*width q_img=QImage(detected_image.data,width,height,bytes_per_line,QImage.Format_RGB888).rgbSwapped()pixmap=QPixmap.fromImage(q_img)self.image_label.setPixmap(pixmap)if__name__=='__main__':app=QApplication(sys.argv)ex=App(model)# 将训练好的模型传入sys.exit(app.exec_())

以上是从安装依赖、准备数据集、配置YOLOv5、训练模型、评估模型、推理代码到构建GUI应用程序的完整实现流程。

http://www.jsqmd.com/news/1021747/

相关文章:

  • 上三角数字三角形:循环嵌套与格式化输出的核心实现与调试指南
  • Codex:面向非技术人的零代码AI工作流引擎
  • Unity透明窗口技术:如何让应用突破窗口边界?
  • Gemini 3.1 Flash语音原生架构解析:突破400ms实时交互拐点
  • 电力配电安装步骤?电力配电安装公司
  • 非技术人员如何看懂AI编程全流程:从原型到上线的协作飞轮
  • Claude Opus 4.7 MAX:编程与视觉融合的工程化临界点
  • 探讨快递箱批量定制的性价比,哪家更划算? - mypinpai
  • 【读书笔记】《OKR工作法》
  • RHEL 9 上 ROS 2 Jazzy 二进制安装实战指南
  • 探索未来文件管理:ownCloud Infinite Scale
  • 【课程设计/毕业设计】SpringBoot 赋能的校园图书馆座位运维管理系统 面向师生的图书馆智能占座预约系统设计实现【附源码、数据库、万字文档】
  • SAP Cloud Integration 租户授权设计,从用户、用户组到技术用户的一套治理思路
  • Java 17 核心特性解析与生产环境迁移实战指南
  • 无畏Pro 16 2026酷睿版深度评测:85W持续性能释放与三芯协同原理
  • PlatformIO嵌入式开发:从环境配置到高效工作流实战指南
  • 基于yolov5的森林火灾识别系统,基于深度学习的森林火灾检测系统,森林火灾识别系统。
  • Windows下零基础跑通llama.cpp:GGUF模型本地部署实操指南
  • 计算机毕业设计之西华花园家教管理系统
  • 中卫市黄金回收白银回收铂金回收彩金回收店铺哪家靠谱?2026实测五家诚信优选实体门店及电话地址推荐 - 盛世金银回收
  • 2026年新型工程资质代办怎么选?四大机构实战能力深度解析 - 优质品牌商家
  • 2026年佛山注册公司服务商怎么选?多维度对比本地外资企业执照注册与电商执照代办机构 - 优质品牌商家
  • 机电安装总承包公司
  • GPT-5.5不存在?揭秘2024真实可用的大模型能力图谱
  • 昭通市黄金回收白银回收铂金回收彩金回收店铺排行榜 2026实测五家诚信优选实体门店及电话地址推荐 - 大熊猫898989
  • 读UNIX传奇:历史与回忆04第7版(上)
  • 如何利用auto-news的Embedding技术实现智能内容去重与高效排序:完整指南
  • 2026年四川气泡膜与珍珠棉厂家怎么选?基于行业案例与多维测评的选购指南 - 优质品牌商家
  • 微信聊天记录永久保存指南:用WeChatMsg完整备份你的数字记忆
  • 输送带哪个公司专业