YOLOv5屏蔽区域检测(选择区域检测)
YOLOv5屏蔽区域检测以及选择区域检测
- 前期准备
- labelme选择mask区域
- 代码改动
前期准备
思路就是通过一个mask掩膜,对我们想要屏蔽或者选择的区域进行遮挡处理,在推理的时候,将有mask掩膜的图像输入,将最后的结果显示在原始图像上,即完成了屏蔽区域检测。
labelme选择mask区域

标注好我们想检测的区域之后,我这里将标注区域命名成了mask,然后我们点击保存导出json文件:

然后我们再打开终端,cd到json所在的文件夹路径下,输入如下命令:
labelme_json_to_dataset xxx.json
这里有的兄弟会遇到一些报错,主要原因还是环境的版本问题,可以在网上查到,替换一下对应版本的库就行了。
我们就会在这个路径下获得一个文件夹:

打开文件夹之后会看到里面有这么五个文件,我们需要的就是label.png,其他的不用管:

到这里,我们的前期准备工作就完成了。
代码改动
打开yolov5的项目,进入utils/datasets.py中,在代码的开头加上读取我们导出的label.png的代码:

读入我们导出的mask图片文件,然后将其转成灰度图,然后使用opencv的阈值函数,将大于0的像素值全部变成255,其余的都为0,得到一张mask的二值图。
然后我们再看到yolov5自带的推理代码中,即detect.py文件。看到代码中的数据加载部分:

我们这里是对图像进行推理,因此我们加载的是图像,不进入webcam中,因此我们加载推理数据的方法是LoadImages这个类,cltr+左键进入这个类中,在这个位置下加入以下代码:

这段代码主要实现了两个功能,其中flag参数决定了我们是否使用mask掩膜对目标进行遮挡检测,reverse参数决定了我们是进行选择区域检测还是屏蔽区域检测(其实这两者是一个取反的操作)。
这里我的参数是flag=1,reverse=0,因此此时如果我运行程序的话,我们会看到的结果是只对我们刚才框定的mask区域的目标进行检测,而对其他地方并不会检测:

可以看到,和我们预想的一样。
我们再将参数改成flag=1, reverse=1,看看结果:


此时我们检测的区域是除了mask区域的以外区域,没问题。
那么最后我们将两个参数都设置为0:


没有任何问题!
后面我也会使用openvino和tensorRT在c++进行推理部署,实现选择区域或屏蔽区域检测的功能,欢迎大家关注。
相关文章:
YOLOv5屏蔽区域检测(选择区域检测)
YOLOv5屏蔽区域检测以及选择区域检测 前期准备labelme选择mask区域 代码改动 前期准备 思路就是通过一个mask掩膜,对我们想要屏蔽或者选择的区域进行遮挡处理,在推理的时候,将有mask掩膜的图像输入,将最后的结果显示在原始图像上…...
记录一次presto sql执行报错 Error executing query的解决办法
在执行presto sql 时报错截图如下: 查看后台执行报错日志: java.sql.SQLException: Error executing query at com.facebook.presto.jdbc.PrestoStatement.internalExecute(PrestoStatement.java:307) at com.facebook.presto.jdbc.PrestoStatement.exe…...
Android Studio开发之路 (五)导入OpenCV以及报错解决
一、步骤 官网下载opencv包(我下的是4.7.0)并解压,openvc官网 先创建一个空项目,简单跑一下能正常输出helloworld 点击file->new->Import Module选择解压之后的opencv-android-sdk文件夹中的SDk文件夹, modu…...
vue3.3中ref和reactive原理源代码分析
源码是ts编写的,这里部分简化成js便于阅读 function ref(value) {return createRef(value, false) }function createRef(rawValue, shallow) { //shallow是否是浅层定义数据,用于区别ref和shallowRefif (isRef(rawValue)) {//如果已经是ref直接返回源数据return rawValue}retu…...
10.Oracle中decode函数
【函数格式】: decode ( expression, condition_01, result_01, condition_02, result_02, ......, condition_n, result_n, result_default) 【函数说明】: 若表达式expression值与condition_01值匹配,则返回result_01,…...
Podman安装部署kafka和管理界面(快速跑起来)
#1.拉取镜像 podman pull bitnami/zookeeper podman pull bitnami/kafka#2.创建子网 podman network create knet#3.创建zookeeper podman run -itd --name zookeeper-server -p 2181:2181 \ --net knet \ -e ALLOW_ANONYMOUS_LOGINyes \ bitnami/zookeeper:latest#3.1查看z…...
Hbase文档--架构体系
阿丹: 基础概念了解之后了解目标知识的架构体系,就能事半功倍。 架构体系 关键组件介绍: HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起…...
stm32基于HAL库驱动外部SPI flash制作虚拟U盘
stm32基于HAL库驱动外部SPI flash制作虚拟U盘 📌参考文章:https://xiaozhuanlan.com/topic/6058234791🎞实现效果演示: 🔖上图中的读到的FLASH_ID所指的是针对不同容量,所对应的ID。 //W25X/Q不同容量对应…...
vue3-ts- element-plus新增组件-过滤
新增组件-所有值为空时过滤 <el-form-item label"家庭成员"><divclass"username-box"v-for"(item, index) in form.namelist":key"index"><div>姓名:<el-input v-model"item.name" placeho…...
PostgreSQL SQL优化
Oracle SQL优化 一、在字段里面写的子查询放到from后面,用left join,会大幅提高SQL查询速度。 一、在字段里面写的子查询放到from后面,用left join,会大幅提高SQL查询速度。...
debian12网络静态ip配置-OSSIM 安全漏洞扫描系统平台
本配置适合于服务器上的静态ip配置,该方法简单可靠。 1 临时配置 ifconfig eth0 192.168.1.97 netmask 255.255.255.0 broadcast 192.168.1.255 ip route add default via 192.168.1.1 2 主要的网络配置文件 /etc/network/interfaces /etc/resolv.conf 3 配置…...
微软 Visual Studio 现已内置 Markdown 编辑器,可直接修改预览 .md 文件
Visual Studio Code V1.66.0 中文版 大小:75.30 MB类别:文字处理 本地下载 Markdown 是一种轻量级标记语言,当开发者想要格式化代码但又不想牺牲易读性时,Markdown 是一个很好的解决方案,比如 GitHub 就使用 Markdo…...
阿里云通义千问开源第二波!大规模视觉语言模型Qwen-VL上线魔搭社区
通义千问开源第二波!8月25日消息,阿里云推出大规模视觉语言模型Qwen-VL,一步到位、直接开源。Qwen-VL以通义千问70亿参数模型Qwen-7B为基座语言模型研发,支持图文输入,具备多模态信息理解能力。在主流的多模态任务评测…...
在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)
Jenkins介绍 Jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 将项目代码的svn地址配置在Jenkins,就可以直接在Je…...
《vue3实战》在created生命周期中运用slice()方法结合element plus组件实现电影评价系统的分页
目录 前言 电影评价系统的分页是什么?它具体的作用体现在哪些方面? 一、slice的含义、语法和作用以及created的作用 slice是什么?slice有什么语法?slice的作用体现在哪些方面? created生命周期的作用:…...
NO.04 MyBatis的各种查询功能
目录 1、查询一个实体类对象 2、查询一个List集合 3、查询单个数据 5、查询多条数据并存储在Map集合中 5.1 方法一:将数据存储在map集合中,再将map集合存储在List集合中 5.2 方法二:将数据存储在map集合中 6、MyBatis中为Java中常用的…...
Spring循环依赖
一、Autowired依赖注入的缓存 二、Resource依赖注入过程 三、循环依赖 singletonObjects:缓存经过了完整生命周期的beanearlySingletonObjects:缓存未经过完整生命周期的bean,如果某个bean出现了循环依赖,就会提前把这个暂时未经过…...
docker以distribution和registry管理个人镜像仓库
目录 一.distribution 1.扩展源下载docker-distribution并启动 2.打标签并认证安全仓库 3.推送到私人仓库 4.拉取镜像 二.registry 1.拉取registry的镜像 2.运行容器并打标签 3.认证安全仓库 4.推送到私人仓库 5.拉取镜像 一.distribution 1.扩展源下载docker-dist…...
2023京东酒类市场数据分析(京东数据开放平台)
根据鲸参谋平台的数据统计,今年7月份京东平台酒类环比集体下滑,接下来我们一起来看白酒、啤酒、葡萄酒的详情数据。 首先来看白酒市场。 鲸参谋数据显示,7月份京东平台白酒的销量为210万,环比下滑约49%;销售额将近19…...
Android中的APK打包与安全
aapt2命令行实现apk打包 apk文件结构 classes.dex:Dex,即Android Dalvik执行文件 AndroidManifest.xml:工程中AndroidManifest.xml编译后得到的二进制xml文件 META-INF:主要保存各个资源文件的SHA1 hash值,用于校验…...
CHORD-X深度研究报告生成:集成MySQL进行数据存储与管理的配置指南
CHORD-X深度研究报告生成:集成MySQL进行数据存储与管理的配置指南 如果你正在使用CHORD-X这类强大的研究报告生成工具,可能会遇到一个甜蜜的烦恼:生成的内容越来越多,数据越来越杂,怎么才能把它们管得井井有条&#x…...
强化学习实战:Sarsa vs Q-learning,on-policy和off-policy到底怎么选?
强化学习实战:Sarsa与Q-learning的深度对比与策略选择指南 1. 理解策略分类的核心逻辑 在强化学习领域,策略选择直接影响算法的行为模式和学习效果。我们先从最基础的概念切入:什么是策略?简单来说,策略就是智能体在特…...
pngquant终极错误排查手册:10个常见问题与快速解决方案
pngquant终极错误排查手册:10个常见问题与快速解决方案 【免费下载链接】pngquant Lossy PNG compressor — pngquant command based on libimagequant library 项目地址: https://gitcode.com/gh_mirrors/pn/pngquant pngquant作为一款高效的PNG有损压缩工具…...
避开这些坑,你的51单片机ADC读数才准确:XPT2046电路设计与软件滤波实战
51单片机ADC精度提升实战:XPT2046硬件优化与软件滤波全解析 当你在51单片机项目中使用XPT2046进行ADC采样时,是否遇到过这些情况:电位器调节时数值跳变剧烈、光敏电阻读数不稳定、热敏电阻测温结果漂移?这些问题往往不是代码逻辑错…...
猫抓插件:突破网页资源限制的媒体捕获解决方案
猫抓插件:突破网页资源限制的媒体捕获解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容爆炸的时代,我们每天浏览的网页中蕴含着丰富的视频、音频和图片资源。…...
Arduino LSM6DS3驱动库深度解析:寄存器级IMU开发指南
1. Arduino_LSM6DS3库深度解析:面向嵌入式工程师的LSM6DS3惯性测量单元驱动开发指南 1.1 库定位与工程价值 Arduino_LSM6DS3是专为Arduino Nano 33 IoT和Arduino Uno WiFi Rev2两款板卡设计的LSM6DS3惯性测量单元(IMU)驱动库。该库并非通用型…...
高效图像浏览:解锁90+格式的轻量级解决方案
高效图像浏览:解锁90格式的轻量级解决方案 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 在数字时代,我们每天都要与各种图像格式打交道࿰…...
自动化测试框架选型:Selenium vs Cypress深度对比
在快速迭代的软件开发周期中,自动化测试框架的选型直接影响产品质量与交付效率。Selenium与Cypress作为当前主流工具,分别代表了传统与现代化的技术路线。本文将从架构设计、核心特性、适用场景及未来趋势等维度,为测试从业者提供深度对比分析…...
开发者跨界金融科技:机遇与技能图谱
一、金融科技浪潮下的测试新机遇1.1 行业爆发式增长催生人才缺口全球金融数智化进程加速,银行业持续加码科技投入。据公开数据显示,2024年仅国有六大行金融科技投入超1250亿元,同比增长约2%。业务快速迭代与用户体验升级需求,推动…...
TresJS实战指南:Vue 3D场景开发从入门到精通
1. TresJS基础入门:从零搭建3D场景 第一次接触TresJS时,我完全被它的简洁性震惊了。作为一个基于Three.js的Vue组件库,它让3D开发变得像写普通Vue组件一样自然。先来看个最简单的例子: <template><TresCanvas><Tre…...
