【Segment Anything Model】二:论文+代码实战调用SAM模型预训练权重+相关论文

本文深入探讨Segment Anything Model (SAM),解释其核心思想、模型架构和数据集,展示如何通过提示性分割实现零样本泛化。通过代码实战,演示如何配置环境、加载预训练权重,并讨论在目标检测任务中的应用。此外,还概述了SAM在医疗影像分割领域的潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章已经全局初步介绍了SAM和其功能,本篇作为进阶使用。点击订阅专栏查看专栏列表和对应知识点,本文为seg SAM系列文章,在持续更新。

0.前言

假如,我们有一个缺陷检测的任务(😭真的有)
一般方法分两种

方法 问题
图像处理+机器学习:图像采集,图像预处理,图像分析,缺陷检测,缺陷分类。图像分析一般包括图像降维,特征提取。基于形状,颜色,纹理,使用机器学习方法,例如贝叶斯,SVM,决策树,EM等进行分类 1️⃣ 耦合,图像采集过程依赖合适的稳定的光照环境,合适的工业相机参数,严重依赖图像质量。2️⃣只能解决已知缺陷特定缺陷,对于生产线上的各种未知可能不能提供任何预测。
### 使用 SAM 预训练模型权重进行特征提取 为了利用 Segment Anything Model (SAM) 的预训练权重进行特征提取,可以遵循以下方法: 加载预训练模型并设置为评估模式是必要的操作。这确保了在执行推理时不会应用诸如 dropout 或 batch normalization 这样的训练特定行为。 ```python import torch from segment_anything import sam_model_registry, SamPredictor device = "cuda" if torch.cuda.is_available() else "cpu" model_type = "vit_h" sam_checkpoint = "./sam_vit_h_4b8939.pth" # 下载的预训练权重路径 sam = sam_model_registry[model_type](checkpoint=sam_checkpoint) sam.to(device=device) predictor = SamPredictor(sam) ``` 通过上述代码片段创建了一个 `SamPredictor` 实例,该实例用于准备图像输入并对给定提示生成分割掩码[^2]。 对于特征提取而言,通常会关注编码器部分产生的中间表示形式。这些高维向量捕捉到了丰富的语义信息,在许多下游任务中都非常有用。具体来说,可以从视觉变压器(ViT)架构中的某一层获取隐藏状态作为特征描述子。 ```python def extract_features(image_path): image = cv2.imread(image_path) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) predictor.set_image(image) # 获取 ViT 编码后的特征图 features = predictor.get_image_embedding().cpu().numpy() return features ``` 此函数读取指定路径下的图片文件,并将其转换成适合传递给 SAM 模型的形式;接着调用 `set_image()` 方法来处理原始像素数据,最后返回由 `get_image_embedding()` 提取出的特征矩阵。
评论 86
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cv夏一笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值