前言 

本文介绍了一个用于超大图片中对小目标检测的切片辅助超推理库SAHI。该库可直接用于现有的网络,而不需要重新设计和训练模型,使用十分方便。

Github: https://github.com/obss/sahi

目标检测和实例分割是迄今为止计算机视觉中最重要的应用领域。然而,小物体的检测和大图像的推理仍然是实际使用中的主要问题。

下面是实例分割SOTA模型Cascade Mask RCNN的推理结果:

MMDetection Cascade Mask RCNN 模型的标准推理结果。

如图所示,未检测到上侧的小型汽车。

有没有办法在不重新训练模型并且不需要更大的 GPU 内存分配的情况下检测这些较小的对象?

本文将介绍SAHI(Slicing Aided Hyper Inference),帮助开发人员克服这些现实世界的问题。

本文目录

  • 目标检测和实例分割简介、

  • SAHI的安装、

  • 使用SAHI 进行切片推理、

  • 使用SAHI 进行图像和数据集切片、

  • 使用SAHI添加对新检测框架的支持

目标检测和实例分割简介


A) 目标检测:目标检测是指识别和正确标记图像帧中存在的所有物体的方法。

目标检测可视化。

这大致包括两个步骤:

1:目标定位:在这里,以尽可能紧密的方式确定边界框或封闭区域,以便定位图像中目标的准确位置。

2:图像分类:然后将定位的目标送到标记目标的分类器。

B) 语义分割:它是指将给定图像中的每个像素链接到特定类标签的过程。例如,在下图中,像素被标记为汽车、树木、行人等。然后使用这些段来查找各种对象之间的交互/关系。

语义分割可视化

C ) Instance Segmentation:在这里,我们将类标签与每个像素关联起来,类似于语义分割,不同之处在于它将同一类的多个对象视为单个对象/单独的实体。

实例分割可视化

SAHI的安装


SAHI的项目地址:https://github.com/obss/sahi

1. 通过 pip 安装最新版本:

pip install sahi

2. 通过conda

conda install sahi -c obss

现在可以在 Python 中导入和使用任何SAHI函数:

from sahi import get_sliced_prediction

使用SAHI 进行切片推理


切片推理的概念基本上是;对原始图像的较小切片执行推理,然后合并原始图像上的切片预测。可以用下图表示:

切片推理

通过执行切片推理而不是标准推理,可以更准确地检测较小的对象

在这里,我们将使用SAHI在此示例图像上展示切片推理演示:

用于推理演示的示例图像

首先导入教程所需的函数:

from sahi .model import MmdetDetectionModel
from sahi .utils.cv import read_image,visualize_object_predictions
from sahi .predict import get_sliced_prediction

MmDetectionModel是流行的MMDetection 框架的包装类。它可用于在任何MMDetection 模型上加载和执行切片/标准推理。

read_image是一个实用函数,用于将任何图像转换为 RGB numpy 数组。

get_sliced_prediction是执行切片推理的函数。

visualize_object_predictions是用于可视化SAHI预测结果的实用函数。

然后,我们需要通过定义所需的参数来创建一个DetectionModel实例:

detection_model = MmdetDetectionModel(model_path=mmdet_cascade_mask_rcnn_model_path,config_path=mmdet_cascade_mask_rcnn_config_path,prediction_score_threshold=0.4,device="cuda"
)

需要 model_path和config_path才能成功加载任何模型。

结果中将忽略分数低于predict_score_threshold 的预测。

device参数指定推理设备,可以设置为cuda或cpu。

加载图像:

image = read_image(image_dir)

最后,我们可以执行切片预测。在本例中,我们将在重叠率为 0.2 的 256x256 切片上执行预测:

result = get_sliced_prediction(image,detection_model,slice_height = 256,slice_width = 256,overlap_height_ratio = 0.2,overlap_width_ratio = 0.2
)

在原始图像上可视化预测的边界框和掩码:

visualization_result = visualize_object_predictions(image,object_prediction_list=result["object_prediction_list"],output_dir="",file_name="",
)
ipython_display(visualization_result["image"])

切片预测结果

使用SAHI 进行图像和数据集切片


您可以独立使用SAHI的切片操作。

  • 例如,您可以将单个图像切片为:

from sahi.slicing import slice_image
slice_image_result, num_total_invalid_segmentation = slice_image(image=image_path,output_file_name=output_file_name,output_dir=output_dir,slice_height=256,slice_width=256,overlap_height_ratio=0.2,overlap_width_ratio=0.2,
)

  • 或者,您可以从任何 coco 格式的数据集创建切片的 coco 数据集,如下所示:

from sahi.slicing import slice_coco
coco_dict, coco_path = slice_coco(coco_annotation_file_path=coco_annotation_file_path,image_dir=image_dir,slice_height=256,slice_width=256,overlap_height_ratio=0.2,overlap_width_ratio=0.2,
)

使用SAHI添加对新检测框架的支持


SAHI库目前仅支持MMDetection 模型。但是,添加新框架很容易。

您需要做的就是在继承自DetectionModel 类的model.py 中创建一个新类。您可以将MMDetection wapper作为参考。(这几个文件都在SAHI的项目中可以找到)

作者:Fatih Cagatay Akyon

编译:CV技术指南

原文链接:

https://medium.com/codable/sahi-a-vision-library-for-performing-sliced-inference-on-large-images-small-objects-c8b086af3b80

 欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

 在公众号中回复关键字 “技术总结”可获取公众号原创技术总结文章的汇总pdf。

其它文章

CV技术指南--精华文章汇总分类

Softmax 函数和它的误解

资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库

计算机视觉中的图像标注工具总结

Batch Size对神经网络训练的影响

PyTorch 中的 ModuleList 和 Sequential: 区别和使用场景

神经网络超参数的调参方法总结

使用 Ray 将 PyTorch 模型加载速度提高 340 倍

计算机视觉中的图像标注工具总结

轻量化模型系列--GhostNet:廉价操作生成更多特征

ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别

CVPR2021 | 重新思考BatchNorm中的Batch

ICCV2021 | 重新思考视觉transformers的空间维度

CVPR2021 | Transformer用于End-to-End视频实例分割

ICCV2021 |(腾讯优图)重新思考人群中的计数和定位:一个纯粹基于点的框架

卷积神经网络的复杂度分析

2021年小目标检测最新研究综述

计算机视觉中的自注意力

综述专栏 | 姿态估计综述

漫谈CUDA优化

为什么GEMM是深度学习的核心

使用深度神经网络为什么8位足够?

经典论文系列--胶囊网络:新的深度学习网络

经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷

如何看待人工智能的泡沫

使用Dice loss实现清晰的边界检测

PVT--无卷积密集预测的多功能backbone

CVPR2021 | 开放世界的目标检测

Siamese network总结

计算机视觉专业术语总结(一)构建计算机视觉的知识体系

欠拟合与过拟合技术总结

归一化方法总结

论文创新的常见思路总结

CV方向的高效阅读英文文献方法总结

计算机视觉中的小样本学习综述

知识蒸馏的简要概述

计算机视觉中的特征金字塔技术总结

Siamese network总结

计算机视觉中的注意力机制技术总结

文字识别OCR开源框架的对比--Tesseract vs EasyOCR

计算机视觉专业术语总结(一)构建计算机视觉的知识体系

归一化方法总结

计算机视觉的高效阅读英文文献方法总结

计算机视觉中的小样本学习综述

知识蒸馏的简要概述

损失函数技术总结

经典论文系列 | 重新思考在ImageNet上的预训练

资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库相关推荐

  1. [深度学习] 基于切片辅助超推理库SAHI优化小目标识别

    对象检测是迄今为止计算机视觉中最重要的应用领域.然而,小物体的检测和大图像的推理仍然是实际使用中的主要问题,这是因为小目标物体有效特征少,覆盖范围少.小目标物体的定义通常有两种方式.一种是绝对尺度定义 ...

  2. 【mmdetection小目标检测教程】三、使用sahi库切分高分辨率图片,一键生成coco格式数据集

    [mmdetection小目标检测教程]三.使用sahi库切分高分辨率图片,一键生成coco格式数据集 1.确认是否需要切分图像 2.子图切分 (1)安装sahi库 (2)基于sahi切图 本文我们将 ...

  3. YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 随着自动驾驶汽车和自动赛车越来越受欢迎,对更快.更准确的检测器 ...

  4. 2021年小目标检测最新研究综述 很全面值得收藏

    摘要 小目标检测长期以来是计算机视觉中的一个难点和研究热点.在深度学习的驱动下,小目标检测已取得了重大突破,并成功应用于国防安全.智能交通和工业自动化等领域.为了进一步促进小目标检测的发展,本文对小目 ...

  5. 我们是如何改进YOLOv3进行红外小目标检测的?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 [导语]本文将介绍BBuf.小武和笔者一起在过年期间完成的一个目标检测项目,将描述我们模型改进的思路. ...

  6. 小目标检测算法 Stitcher 来龙去脉、方法与分析

    昨天向大家推荐了小目标检测的福音:Stitcher,简单又有效,引起了不少朋友的兴趣.这篇文章为 Stitcher 原作者所写,介绍了Stitcher的来龙去脉.方法和分析,欢迎参考. https:/ ...

  7. 初学者必看,提供海星检测项目从零开始小目标检测sota算法(ppyoloe-sod)

    我以我的一个项目进行介绍,各位如果想运行这些程序的话,可以跳转到相应的百度的页面,我放到底下啦.基于ppyoloe-sod海星目标检测(小目标检测) - 飞桨AI Studio 0 赛事背景说明 澳大 ...

  8. YOLOV5 的小目标检测网络结构优化方法汇总(附代码)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨南山 来源丨 AI约读社 YOLOv5是一种非常受欢迎的单阶段目标检测,以其性能和速度著称,其结 ...

  9. 如何改进YOLOv3使其更好应用到小目标检测(比YOLO V4高出4%)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 编辑丨极市平台 导读 针对微小目标的特征分散和层间语义差异的问 ...

  10. 【浙大出品】基于扩展FPN的小目标检测方法

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:黄浴 知乎链接:https://zhuanlan.zhihu.com/p/1 ...

最新文章

  1. 【Qt】QtCreator updatePchInfo:switching to none
  2. 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
  3. linux内核__force,Linux内核学习:I2C_SLAVE_FORCE
  4. java中改变字符串编码
  5. odyssey react鉴定_Nike Odyssey React SHLD开箱测评 Nike Odyssey React SHLD实物欣赏
  6. llinux的shell脚本编程详解
  7. TCP IP基础知识的复习
  8. c语言中if和goto的用法,C语言中if和goto的用法.doc
  9. 容器编排技术 -- Kubernetes kubectl rollout history 命令详解
  10. 六级核心词汇pdf_人民日报总结的500个四六级【核心词汇】,祝你一次必过!
  11. c语言tty,1. 终端_C语言_C语言入门-Linux C编程一站式学习
  12. Git克隆仓库代码至本地
  13. C语言-99乘法表-正倒三角
  14. 如何在win7下安装XP系统?
  15. WORD2010 页眉横线和页面顶端距离相同显示不一样
  16. 按降序显示奇数python_程序在Python中分别以升序和降序对所有偶数和奇数进行排序...
  17. PDPS软件:机器人固定点焊虚拟仿真操作方法
  18. WPF基础五:UI②内容元素Frame
  19. FHQ Treap 总结
  20. python中字典的键是唯一的吗_python 零散记录(四) 强调字典中的键值唯一性 字典的一些常用方法...

热门文章

  1. IV-18(前苏联ИВ-18)荧光管电子钟【Energy Pillar.能量柱】
  2. 显示器接口针脚定义(D-sub15)
  3. 通过DeviceIoControl获取真实网卡地址
  4. echarts柱形图x轴y轴互换_echarts X Y轴互换后显示问题
  5. 计算机电缆检测报告,计算机用屏蔽双绞线DJYPVP-2*2*1.0mm²
  6. 脊柱神经系统分布在哪里,脊柱神经系统分布图片
  7. java水仙花数编程_水仙花数java编程实现
  8. 计算机无线网络计算机文件共享,无线局域网共享_在同一个无线局域网内如何共享文件?...
  9. 【LINUX】自己整理的干货,拿去看吧,不谢!!!。。。。。。。。。。。。
  10. redis数据类型命令