【机器视觉】Segment Anything模型(SAM) C# 推理

news/2024/10/18 10:17:06/

Facebook开源的Segment Anything是一个基于大型预训练模型的计算机视觉工具,它使用一种新的范式来处理图像分割任务。这个范式不依赖于传统的预训练加微调(pretrain+finetune)方法,而是通过提示(prompt)加上预训练的基础模型(foundation model)来实现。Segment Anything的目标是能够处理包括交互式分割、边缘检测、超级像素化、目标提议生成、前景分割、语义分割、实例分割、全景分割等多种计算机视觉领域的任务1。

Segment Anything模型(SAM)的架构主要包括三个部分:

  1. 图像编码器:使用标准的ViT(Vision Transformer)作为图像编码器,将原始图像编码成向量。

  2. 提示编码器:将支持的提示内容编码成向量。

  3. 掩码解码器:输出原图尺寸上的前后景概率以及IoU分数。

SAM模型通过构造合适的提示,可以实现对新样本的零样本(zero-shot)能力,这意味着它可以在没有额外训练数据的情况下处理新的图像类型。例如,通过提供一个点或边界框作为提示,SAM能够生成与之相关的图像分割掩码。这种方法的优势在于它可以灵活地应用于各种不同的分割任务,并且具有很强的泛化能力。

此外,Facebook还发布了与Segment Anything配套的数据集,这是一个非常大的图像注释数据集,包含超过11亿个分割掩码,这些掩码具有高质量和多样性。这个数据集被称为Segment Anything 1-Billion (SA-1B),它可以帮助研究人员训练图像分割的基础模型2。

总的来说,Segment Anything代表了计算机视觉领域的一个重要进展,它将NLP领域的提示范式引入到计算机视觉中,为图像分割任务提供了一种新的解决方案。这个工具的开源性质也意味着它可以被广泛地应用于学术和工业界的研究中。

16c8a4bc17a30212794e35d9688b6778.png

CSharp ONNX 推理

点Promot:展开Point栏,点击AddPoint后,鼠标点击左侧图像选择点。Add Mask表示正向点,Remove Mask表示负向点。

452c35dfc2414964d3b1501c965ea462.png

Box Promot: 展开Box栏,点击AddBox后,鼠标点击左侧图像选择起始点,易懂鼠标改变Box大小。

0901299ea81eaca8b9ae9fbf9196dcbc.png

AutoSeg:自动分割,展everythin栏,设置阈值,根据points_per_side值在图像上均匀选择候选点,每个点都作为promot,然后根据阈值对结果后处理。

6e20025364dc9b6cdbc3bd1c10118bcb.png

参考网址:

https://github.com/facebookresearch/segment-anything/

https://github.com/AIDajiangtang/Segment-Anything-CSharp 

https://github.com/AIDajiangtang/Segment-Anything-CSharp/releases/download/v1.0.1/ONNXModels.zip


http://www.ppmy.cn/news/1446931.html

相关文章

three.js是啥

three.js是一个基于WebGL的JavaScript 3D库,它可以在浏览器中创建和显示动画的3D图形。这个库提供了许多工具和函数,使得开发者可以更容易地创建复杂的3D场景,包括摄像机、光影、材质等各种对象。 three.js被广泛应用于各种领域,如…

操作DOM:性能优化之道

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

基于YOLOV8+Pyqt5无人机航拍太阳能电池板检测系统

1.YOLOv8的基本原理 YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,…

C#调用skiasharp实现绘制并拖拽图形

SkiaSharp是基于.net的跨平台二维图形库,封装的谷歌的Skia库,SkiaSharp支持在以下平台或运行时中使用,能够在图片中绘图,也提供控件在Winform、WPF等使用。本文学习skiasharp在Winform的基本用法,并参照参考文献5实现绘…

类和对象【三】析构函数和拷贝构造函数

文章目录 析构函数析构函数的定义析构函数的作用主要作用次要作用 析构函数的特点 拷贝构造函数拷贝构造函数的定义拷贝构造函数的作用主要作用次要作用 拷贝构造函数的特点浅拷贝和深拷贝浅拷贝深拷贝 拷贝构造函数的调用场景 析构函数 析构函数的定义 析构函数(destructor) …

Systemback Ubuntu14.04 制作自定义系统ISO镜像

工作需要,要基于ubuntu自定义一些编译环境并将自己配置好的ubuntu做成镜像。 硬件准备 ​ 为保证能够顺利完成系统iso镜像的制作与系统还原,推荐准备一个较大容量的U盘或者移动固态硬盘,同时确保自己的Ubuntu系统还有比较大的可用空间。 1 S…

对话访谈——五问RAG与搜索引擎:探索知识检索的未来

记一次关于RAG和搜索引擎在知识检索方面的对话访谈,针对 RAG 与传统搜索引擎的异同,以及它们在知识检索领域的优劣势进行了深入的探讨。 Q:传统搜索引擎吗,通过召回-排序的两阶段模式,实现搜索逻辑的实现,当前RAG技术也…

IP模块——计算机网络

IP模块在计算机网络中通常指的是处理互联网协议(Internet Protocol,简称IP)的部分,它负责网络中的数据包的发送和接收。IP是一种无连接的协议,意味着它不需要建立持久的连接才能在网络中传输数据。IP模块的主要任务包括…