YOLOv5屏蔽区域训练(选择区域训练)

news/2024/7/11 1:08:19 标签: YOLO, 深度学习, 人工智能

YOLOv5屏蔽区域/选择区域 训练(重点区域训练)

  • 前期准备
    • labelme选择mask区域
  • 代码改动

前期准备

思路就是通过使用一个mask掩膜,对我们想要屏蔽或者选择的区域进行定向遮挡或者定向选择,在训练的时候v5需要加载数据即图片和标注信息,我们在数据加载的过程中,将掩膜覆盖到输入图像上,即完成了屏蔽区域/选择区域训练。

labelme选择mask区域

在这里插入图片描述
标注好我们想检测的区域之后,我这里将标注区域命名成了mask,然后我们点击保存导出json文件:
在这里插入图片描述
然后我们再打开终端,cd到json所在的文件夹路径下,输入如下命令:

labelme_json_to_dataset xxx.json

这里有的兄弟会遇到一些报错,主要原因还是环境的版本问题,可以在网上查到,替换一下对应版本的库就行了。

我们就会在这个路径下获得一个文件夹:
在这里插入图片描述

打开文件夹之后会看到里面有这么五个文件,我们需要的就是label.png,其他的不用管:
在这里插入图片描述
到这里,我们的前期准备工作就完成了。

代码改动

打开utils/datasets.py文件,在代码的最面前,首先读取mask图像,然后将其转成二值图像:
在这里插入图片描述
然后再下方设置好超参数,方便在训练和检测时的设置:
在这里插入图片描述
要想对训练时的图像加载的图像进行操作,显然我们首先要到train.py中寻找数据加载的函数,我们可以定位到train函数下调用的create_dataloader()函数:
在这里插入图片描述
摁住ctrl+左键进入该函数:
来到了utils/datasets.py下的函数:
在这里插入图片描述
这里我们注意到该函数返回的dataset是通过LoadImagesAndLabels()函数来读取的,进入该函数之后,我们往下拉,找到加载图片的代码,可以在getitem()函数中看到:
在这里插入图片描述
查看这一段代码,我们发现当设置mosaic的时候,是一种加载方式,当未设置mosaic的时候就是直接加载的方式,v5默认的是mosaic之后再训练,因此我们直接进入load_mosaic()函数中:
在这里插入图片描述
进入到load_mosaic()函数之后,我们发现代码先调用load_image()函数来读取图像,然后通过顺序判断来进行mosaic组合,我们这里继续进入load_image()函数中,感觉胜利即将在前方了:
在这里插入图片描述
果然在进入load_image之后我们看到了加载图像的那句代码!这里的红框就是我自己加的代码,通过bool型来判断是否需要进行mask以及mask的作用是屏蔽还是选择,而这些bool型变量已经在这篇博客的开始被我们定义好了,可以根据需求来排列组合。这样就完成了我们的选择区域/屏蔽区域训练的需求。


http://www.niftyadmin.cn/n/4981498.html

相关文章

天地一张网,高精度定位导航的“大国重器”

新的认知,源自不断地求索。 1982年,邓中亮刚刚走进大学校门,选择了当时的热门专业机械制造,在毕业后从事汽车制造工作的过程,认识到国内外制造水平的差距,诞生了对新的专业知识的渴望。 工作几年之后&#…

JavaScript 执行上下文和作用域链

执行上下文 执行上下文决定了变量和函数可以访问哪些数据。 一个执行上下文就对应一个仅后台可访问的变量对象,其中保存有该上下文的局部变量、参数和函数声明。 最外层的上下文称为全局上下文。宿主环境不同,全局上下文的关联对象就不同。在浏览器中…

MySQL索引,事务和存储引擎

一、索引 1、索引的概念 ●索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。 ●使用索引后可以不用扫描全表来定位某行的数据,而是先…

SpringAOP详解(下)

proxyFactory代理对象创建方式和代理对象调用方法过程: springaop创建动态代理对象和代理对象调用方法过程: 一、TargetSource的使用 Lazy注解,当加在属性上时,会产生一个代理对象赋值给这个属性,产生代理对象的代码为…

【计算机网络】序列化与反序列化

文章目录 1. 如何处理结构化数据?序列化 与 反序列化 2. 实现网络版计算器1. Tcp 套接字的封装——sock.hpp创建套接字——Socket绑定——Bind将套接字设置为监听状态——Listen获取连接——Accept发起连接——Connect 2. 服务器的实现 ——TcpServer.hpp初始化启动…

操作系统_文件管理(三)

目录 3. 文件系统 3.1 文件系统结构 3.2 文件系统布局 3.2.1 文件系统在磁盘中的结构 3.2.2 文件系统在内存中的结构 3.3 外存空闲空间管理 3.3.1 空闲表法 3.3.2 空闲链表法 3.3.3 位示图法 3.3.4 成组链接法 3.4 虚拟文件系统 3.5 分区和安装 3.6 小结 3. 文件系…

开源vue动态表单组件

一、项目简介 vueelement的动态表单组件,拖拽组件到面板即可实现一个表单 二、实现功能 支持拖拽 支持输入框 支持文本框 支持数字输入框 支持下拉选择器 支持多选框 支持日期控件 支持开关 支持动态表格 支持上传图片 支持上传文件 支持标签 支持ht…

gRPC + Spring Boot 编程教程 - piot

在本文中,您将学习如何实现通过 gRPC 通信的 Spring Boot 应用程序。gRPC 是一个现代开源远程过程调用 (RPC) 框架,可以在任何环境中运行。默认情况下,它使用 Google 的 Protocol Buffer 来序列化和反序列化结构化数据。当然,我们…