SAHI强化YOLOv5在小目标上的表现

文章目录

  • 环境
  • 前言
  • 安装sahi
  • yolov5检测
  • sahi
  • 添加新的检测模型

环境

  • ubuntu 18.04 64bit
  • sahi 0.8.4
  • yolov5 5.0
  • pytorch 1.7.1+cu101

前言

目标检测和实例分割是迄今为止计算机视觉中最重要的应用领域,各种目标检测网络层出不穷,然而,小目标的检测和在大尺寸图像上的推理在实际应用中依然有诸多问题。 SAHI (Slicing Aided Hyper Inference)就是用来帮助开发人员解决这些现实问题,它是一个轻量级的视觉库,可以在不重新训练原始检测模型(目前支持 yolov5 和 mmdetection)的情况下提升小目标的检出率,而且 gpu 资源的使用并没有大幅提升。

安装sahi

库的安装非常简单,直接使用 pip 安装最新版本,执行命令

pip install sahi

yolov5检测

sahi 使用的 YOLOv5, 这个我们前文已经介绍过了,参考 pip安装YOLOv5

# 安装gpu版torch和torchvision,这里使用1.7.1版本
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
# 安装其它依赖
pip install yolov5

可以明显看到图片上方的一些汽车目标没有被检测出来

sahi 

首先安装2个基础依赖库

pip install fiftyone imantics

再来看下面的示例代码

from sahi.utils.yolov5 import download_yolov5s6_model
from sahi.model import Yolov5DetectionModel
from sahi.utils.file import download_from_url
from sahi.predict import get_sliced_prediction
yolov5_model_path = 'yolov5s6.pt'
# 下载模型
download_yolov5s6_model(destination_path=yolov5_model_path)
# 下载测试图片
download_from_url('https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg', 'small-vehicles1.jpeg')
# 使用的YOLOv5检测模型,使用gpu加速,置信度0.3
detection_model = Yolov5DetectionModel(model_path=yolov5_model_path,confidence_threshold=0.3,device="cuda", # or 'cpu'

执行上面代码,得到

可以看到,在同一张测试图片上,使用同样的模型,sahi 库可以让 yolov5 检测出更多的目标 sahi 的切片推理原理如下图 

sahi 提供了命令行工具 sahi,使用它可以完成快速检测

sahi predict --source small-vehicles1.jpeg --model_type yolov5 --model_path yolov5s6.pt --model_device cuda --export_visual --project results 

 

添加新的检测模型

目前的 sahi 只支持 yolov5 和 mmdetection,但是,我们可以很方便的添加新框架的支持,你只需要在 sahi/sahi/model.py 文件中创建一个新的类,这个类继承自 DetectionModel,然后依次实现 load_modelperform_inference_create_object_prediction_list_from_original_predictions_create_original_predictions_from_object_prediction_list这几个方法即可,具体的可以参考 Yolov5DetectionModel 类的实现。

QQ767172261

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

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

相关文章

速卖通(AliExpress)店铺流量怎么转化?自养号测评策略

随着全球电商的蓬勃发展,速卖通(AliExpress)作为中国领先的跨境电商平台,为卖家提供了一个广阔的销售舞台。然而,对于卖家来说,如何让速卖通店铺实现转化,吸引更多的买家成为关键。 一、速卖通…

javaweb `jdbc.properties`文件编写

问题:查询数据库查不到,大概率是两者编码对应不上? 问题描述: 从数据库查询这一句,但数据库是有这个值的。 解决办法: 这是jdbc.properties里面写的内容 drivercom.mysql.jdbc.Driverurljdbc:mysql://12…

jmeter简单压测kafka

前言 这也是一个笔记,就是计划用jmeter做性能测试,但是这里是只要将数据放到kafka的topic里,后面查看下游业务处理能力。 一、方案 因为只要实现数据放到kafka,参考了下博友的方案,可行。 二、方案验证 详细过程就不…

iptables详解

1、介绍 iptables 是一个在 Linux 系统上用于配置和管理防火墙规则的工具。它允许系统管理员定义数据包的过滤规则、网络地址转换(NAT)规则和数据包的网络地址和端口的转发规则。iptables 提供了非常灵活和强大的功能,可以用于保护网络安全、…

微服务实战系列之MQ

前言 从今天起,席卷北国的雪,持续了一整天,北京也不例外。这场意外的寒潮,把整个冬天渲染的格外cool。当然你可以在外面打雪仗、堆雪人、拉雪橇,也可以静坐屋内,来一场围炉煮茶的party。此刻,冬…

KUKA机器人如何隐藏程序或程序段?

KUKA机器人如何隐藏程序或程序段? 如下图所示,新建一个示例程序进行说明, 如下图所示,如果红框中的动作指令不想让别人看到,想隐藏起来,如何做到? 如下图所示,在想要隐藏的程序或程序段的前后,分别添加 ;fold 和 endfold指令(这里要注意是英文状态下的输入法), 如…

安卓跳转页面闪屏,方法里需要传View 参数

/*** 跳转到首页的公共方法* */public void ToIndexpage(View v){//设置跳转的页面Intent intent new Intent(this, MainActivity.class);//实行跳转startActivity(intent);}

JS基础之闭包

JS基础之闭包 闭包闭包的目的闭包的优缺点 闭包 官方定义: 闭包是能够访问到自由变量的函数。 自由变量:能够在函数中使用,但是不是函数的参数,也不是内部的局部变量。 示例: var a 1; function foo(){console.log(a…

【Jmeter】Jmeter基础5-Jmeter元件介绍之线程(用户)

2.5.1、线程组 一个线程组即一个虚拟用户组,线程组中的每个线程即为1个虚拟用户,每个线程互相隔离,互不影响参数说明: 在取样器错误后要执行的动作 继续:忽略错误,继续执行启动下一进程循环: 终…

解决:ModuleNotFoundError: No module named ‘docx‘

解决:ModuleNotFoundError: No module named ‘docx’ 文章目录 解决:ModuleNotFoundError: No module named docx背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时,报错: Trace…

LainChain 原理解析:结合 RAG 技术提升大型语言模型能力

摘要:本文将详细介绍 LainChain 的工作原理,以及如何通过结合 RAG(Retrieval-Aggregated Generation)技术来增强大型语言模型(如 GPT 和 ChatGPT 等)的性能。我们将探讨 COT、TOT、RAG 以及 LangChain 的概…

_try_finally原理探究后续

入口程序的最后一道防线 这里调用mainCRTStartup(),然后调用入口程序 相当于这里才是一个进程开始执行的地方 这里有一个call调用,跟进去看看 发现有修改fs:[0]的操作,这里就相当于编译器为我们注册了一个异常处理函数 这里到kernel32.dll里面…

jsp 学科竞赛成绩管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 学科竞赛成绩管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

定制软件开发的 5 个挑战

对于大公司来说,定制软件开发就像是眼中钉。无论您是要创建内部使用的工具、自动化手动流程还是推出新产品,从头开始构建它历来都是昂贵且危险的。花钱购买领先的现成解决方案之一,却不得不花费更多的时间和金钱对其进行定制来完成工作&#…

Java数据结构篇——实现顺序表的增删查改

文章目录 1.线性表2. 顺序表2.1 顺序表结构2.2 实现顺序表接口2.3 打印顺序表2.2 实现新增元素2.3 实现查找元素2.3 获取pos位置的值2.4 删除元素2.5 获取顺序表的长度2.6 清空顺序表 3.代码在这 1.线性表 定义:线性表是 n 个具有相同特性的数据元素的有序序列。线…

大数据存储技术(1)—— Hadoop简介及安装配置

目录 一、Hadoop简介 (一)概念 (二)Hadoop发展历史 (三)Hadoop三大发行版本 (四)Hadoop的优势 二、Hadoop的组成 (一)Hadoop1.x和Hadoop2.x的区别​…

SSL通配符详解

通配符证书是一种特殊的SSL/TLS证书,它允许一个域名及其所有子域名使用相同的证书。这意味着,如果您有一个通配符证书,您可以为该证书中的任何子域名提供SSL/TLS加密,而无需为每个子域名单独购买和配置证书。 通配符证书使用通配…

苹果电脑双开

1.第一步:在应用程序中找到微信 复制一个副本出来 2.第二步:打开复制的《微信副本》 右键打开 – 显示包内容 3.第三步:Contents - info.plist 后右键 打开方式 选择 文本编辑 4.第四步:找到查找和替换 这一段com.tencent.xinWeChat 后面是修改 com.tenc…

数据库性能优化八大方案

毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信…

MySQL系列(十):主从架构

一:主从架构 常见的主从架构模式有四种: 一主多从架构:适用于读大于写的场景,采用多个从库来分担数据库系统的读压力。多主架构:适用于读写参半的场景,采用多个主库来承载数据库系统整体的读写压力。多主…