首页 > 其他分享 >FastSam和Sam的使用

FastSam和Sam的使用

时间:2024-12-15 12:59:06浏览次数:4  
标签:分割 Sam SAM 模型 图像 cv2 FastSAM 使用 FastSam

FastSAM 和 SAM 2 是两个在图像分割领域表现突出的模型,它们各自有着独特的优势和应用场景。下面将详细介绍如何使用这两个模型进行图像分割任务。

FastSAM 的使用

FastSAM 是一种基于卷积神经网络(CNN)的实时解决方案,专为“分割任何东西”任务设计,特别适合需要快速响应的应用场景。它通过解耦分割任务成两个阶段来实现高效处理:所有实例分割和提示引导的选择。以下是使用 FastSAM 进行图像分割的基本步骤:

1. 安装依赖项

确保安装了必要的 Python 库,如 ultralytics,这是 FastSAM 的官方库之一:

pip install ultralytics
2. 导入库并加载预训练模型

接下来,在 Python 脚本中导入所需的库,并加载一个预训练好的 FastSAM 模型:

from ultralytics import FastSAM

# 加载预训练模型
model = FastSAM('FastSAM-s.pt')  # 或者 'FastSAM-x.pt' 用于更大的模型
3. 执行分割任务

调用 model.predict() 方法来执行分割任务,并获取结果。您可以根据需求提供不同的提示类型,例如边界框、点或文本描述:

source = "path/to/image.jpg"  # 输入图像路径
results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
  • device: 设备选择(CPU 或 GPU),取决于您的硬件配置。
  • retina_masks: 是否启用 RetinaMasks 功能以提高小物体检测精度。
  • imgsz: 输入图像尺寸,默认为 1024x1024。
  • conf: 置信度阈值,控制输出掩码的数量。
  • iou: IoU 阈值,用于非极大值抑制(NMS)过程中的重叠度量。
4. 可视化结果

最后,我们可以遍历每个检测到的对象,绘制其边界框和掩码,以便直观地查看分割效果:

for result in results:
    for mask, box in zip(result.masks.xy, result.boxes):
        points = np.int32([mask])
        color = tuple(np.random.randint(0, 255, size=3).tolist())
        cv2.fillPoly(img, [points], color)

cv2.imshow("Segmentation Result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

SAM 2 的使用

SAM 2 是由 Meta 开发的新一代分割一切大模型,支持图像和视频中的实时可提示分割,并具备最先进的性能。以下是使用 SAM 2 进行图像分割的基本步骤:

1. 安装依赖项

确保安装了必要的 Python 库,如 ultralytics 和其他可能需要的库:

pip install ultralytics
2. 克隆 Git 存储库并设置环境

克隆包含 SAM 2 代码的 Git 存储库,并按照官方文档创建合适的 Python 环境:

git clone https://github.com/facebookresearch/segment-anything-2.git
cd segment-anything-2
conda create --name sam2 python=3.10 -y
conda activate sam2
pip install -e .
3. 导入库并加载预训练模型

接下来,在 Python 脚本中导入所需的库,并加载一个预训练好的 SAM 2 模型:

from ultralytics import SAM

# 加载预训练模型
model = SAM('sam2_b.pt')  # 根据需要选择适当的权重文件
4. 执行分割任务

调用 model.predict() 方法来执行分割任务,并获取结果。您可以根据需求提供不同的提示类型,例如边界框、点或文本描述:

source = "path/to/image.jpg"  # 输入图像路径
results = model(source, bboxes=[[100, 100, 200, 200]], points=[[150, 150]], labels=[1])
  • bboxes: 提供边界框作为提示,格式为 [x_min, y_min, x_max, y_max]
  • points: 提供单个或多个点作为提示,格式为 [x, y]
  • labels: 对应于提供的点是前景还是背景,1 表示前景,0 表示背景。
5. 可视化结果

最后,我们可以遍历每个检测到的对象,绘制其边界框和掩码,以便直观地查看分割效果:

for result in results:
    for mask, box in zip(result.masks.xy, result.boxes):
        points = np.int32([mask])
        color = tuple(np.random.randint(0, 255, size=3).tolist())
        cv2.fillPoly(img, [points], color)

cv2.imshow("Segmentation Result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

总结

无论是 FastSAM 还是 SAM 2,两者都提供了强大的工具来解决复杂的图像分割问题。FastSAM 更加注重速度上的优化,适用于资源有限或需要快速响应的应用;而 SAM 2 则强调了对图像和视频的支持以及更高的交互性和泛化能力。根据具体的应用场景和个人偏好,您可以选择最适合自己的模型来进行开发。如果有更多问题或者需要深入探讨某个特定方面,请随时告诉我!

标签:分割,Sam,SAM,模型,图像,cv2,FastSAM,使用,FastSam
From: https://blog.csdn.net/weixin_32759777/article/details/144461400

相关文章

  • 干货分享:可以免费使用的几个GPT网站
    ​1、ChatGPT......
  • 在使用 PbootCMS 时遇到“执行 SQL 发生错误!错误:no such table: ay_config”,应该如何
    当您在使用PbootCMS时遇到“执行SQL发生错误!错误:nosuchtable:ay_config”时,这通常意味着系统在执行SQL查询时找不到名为 ay_config 的表。根据您提供的信息,这个问题可能是由于数据库连接问题或数据库结构不完整引起的。以下是一些详细的解决步骤:检查配置文件:打开......
  • 请问在使用 PbootCMS 时遇到“自动加载类文件时发生错误,类名【core\basic\Kernel】
    当您在使用PbootCMS时遇到“自动加载类文件时发生错误,类名【core\basic\Kernel】”时,这通常意味着系统在尝试加载 Kernel.php 文件时失败了。根据您提供的信息,这个问题可能是由于 Kernel.php 文件被误删除导致的。以下是一些详细的解决步骤:确认文件缺失:首先,登录到您的......
  • 微软官方驱动例子SimpleAudioSample安装失败的解决
    无法编译微软有一个Bug,Spectre,现在被缓解了,但是代价是你要在VS2022中安装一大把的环境,否则此例子无法编译……无法安装devcon.exe,如图执行后得到:但是设备管理器里找得到这个设备……说明是安装了,但安装之后并没有执行起来无法安装——从devcon.exe定位devcom.exe的输出......
  • 如何在PbootCMS中使用搜索结果列表标签来显示文章的详细信息?
    在PbootCMS中,搜索结果列表标签提供了丰富的选项,可以用来显示文章的详细信息。这些标签可以帮助你构建一个详细且用户友好的搜索结果页面。以下是一些常用的搜索结果列表标签及其用法:[search:title]:显示文章的标题。[search:author]:显示文章的作者。[search:source]:显示文章的......
  • PbootCMS中如何使用 [message:recontent] 和 [message:replydate] 标签显示留言的回复
    在PbootCMS中,使用 [message:recontent] 和 [message:replydate] 标签可以显示留言的回复信息和回复时间。这对于增强网站的互动性和用户满意度非常有用。以下是详细的步骤和代码示例,帮助你在PbootCMS中实现这一功能:基本语法:使用 {pboot:message} 标签来输出留言记录列......
  • PbootCMS中如何使用 [message:ip]、[message:os] 和 [message:bs] 标签显示留言用户的
    在PbootCMS中,使用 [message:ip]、[message:os] 和 [message:bs] 标签可以显示留言用户的详细信息,如IP地址、操作系统和浏览器。这对于管理员了解用户来源和优化用户体验非常有用。以下是详细的步骤和代码示例,帮助你在PbootCMS中实现这一功能:基本语法:使用 {pboot:message......
  • PbootCMS 的系统保留关键字有哪些?为什么不能在 URL 名称中使用这些关键字?
    PbootCMS有一些特定的保留关键字,这些关键字在系统内部有特殊的用途。如果在URL名称中使用了这些保留关键字,可能会导致各种问题,如表单提交失败、页面加载错误等。以下是一些常见的PbootCMS系统保留关键字及其用途:common:用于处理通用的功能,如公共方法和工具类。do:用......
  • 08一些元素的使用
    一、今日学习内容1、HTML常见的元素HTML结构分析,H1到6,p元素,img,a元素,div,span元素不常用元素,HTML全局属性2、额外知识点补充字符实体,URL地址,元素语义化,SEO优化,字符编码tip:这样在编写代码的时候就不用频繁的切换到英文状态下了这样会提高编写代码的效率。二、文档声明和H......
  • YOLOv8目标检测——详细记录使用ONNX Runtime进行推理部署C++/Python实现
    概述在之前博客中有介绍YOLOv8从环境安装到训练的完整过程,本节主要介绍ONNXRuntime的原理以及使用其进行推理加速,使用Python、C++两种编程语言来实现。https://blog.csdn.net/MariLN/article/details/143924548?spm=1001.2014.3001.55011.ONNXRuntimeONNXRuntime是......