Segment Anything C++ ONNX 部署

最近做了几个测试, Segment Anything在工业上做些简单的预处理分割效果是很不错的,而且通过点输入提示,由于工业上拍摄的东西一般位置相对固定,因此可以有广泛的应用. 比如在分割一个轮廓模糊的区域,

用halcon 一般需要使用动态阈值等等处理,还需要做图像的灰度的非线性变化等提高对比度,这些操作其实都可以使用SAM自动化完成

Halcon处理

设置多个参数

 SAM处理

 

这样对比下来,如果SAM可以提供C++的部署方案的化,其实可以将分割这个工作量大大降低,最重要的是: 无需调整参数 使用Halcon的化,当图像亮度或者其它条件变化时,需要调整参数的.

实施

 1 C++ 源码

GitHub - dinglufe/segment-anything-cpp-wrapper 这里作者给出了实现方式

 2 安装

作者提供了vcpkg的安装方式

./vcpkg install opencv:x64-windows gflags:x64-windows onnxruntime-gpu:x64-windows

但是这个比较麻烦,原因是在git clone 第三方库 时需要设置HTTPS的代理,我电脑只能设置HTTP,因此就放弃了,看了下需要的几个库:

OpenCV : 这个电脑上有(这个不知道怎么弄的就不要看了)

: 这个没有,看了下时Google用来代码调试的,后来归微软了,那么在windows下面很好配置

onnxruntime:这个也有(没有的自己百度网上一大堆,这个也不用安装,跟OpenCV一样直接用 我的是1.14.1)

然后后面就是CMAKE一下.于是就自己装一下gflags

gflags安装:

首先下载https://github.com/gflags/gflags

下载完成后,不能直接用,需要先CAMKE 一下,Windows上用CMAKE GUI就可以

这是下载解压后的目录:

这是CMAKE 以后的创建的编译结果文件夹mybuild

这是编译的结果 include lib x64 才是最终需要的.

 安装完成之后,直接进入到F:\segment-anything-cpp-wrapper-1.4.1

新建build文件夹,用来存放项目编译结果

 我的配置如下:

点击 Condifgure 进行配置,我选的是 VS2019 X64 ,你自己的需要根据OpenCV  版本.

点击Condifgure 之后会报错,提示OpenCV 没有配置,然后点击选择路径,再次Configure

然后提示gflags 没有配置, 也是一样的操作,最后都没有问题了 提示 configure complete ,然后点击 

Generate, 再点Open Project 

关键来了

这里需要onnxruntime的配置,原项目是配置到了根目录下,这里你需要根据实际的路径

仅需要配置 sam_cpp_lib这个项目就可以了

重新编译,指导全部成功

 设置sam_cpp_test为启动项目

下载

segment-anything-cpp-wrapper-win64-v1.4.1.7zhttps://github.com/dinglufe/segment-anything-cpp-wrapper/releases/download/v1.4.1/segment-anything-cpp-wrapper-win64-v1.4.1.7z

将他放到和exe目录下

技术交流:   13361204270

### 如何在 Mac 上部署 Segment Anything 模型 #### 准备工作 为了成功部署 Segment Anything 模型(SAM),需要先安装必要的依赖库并下载预训练模型。可以从 Facebook Research 的官方 GitHub 仓库获取最新版本的代码[^3]。 #### 安装环境 建议使用 Python 虚拟环境来管理项目所需的包。可以利用 `venv` 或者 Anaconda 创建独立的工作空间。对于 macOS 用户来说,Homebrew 是一种方便的方式来安装 Python 和其他工具。 ```bash # 使用 Homebrew 安装 Python brew install python ``` 接着激活虚拟环境: ```bash python -m venv sam_env source sam_env/bin/activate ``` #### 下载源码与设置 克隆 Segment Anything 的 Git 仓库到本地计算机,并进入该项目目录下执行后续操作。 ```bash git clone https://github.com/facebookresearch/segment-anything.git cd segment-anything pip install -r requirements.txt ``` 这一步骤会自动拉取所有必需的Python 库以支持 SAM 运行。 #### 配置文件调整 如果打算自定义某些参数或路径,则需编辑 `ia_config.py` 文件中的相应条目。例如指定保存分割结果图片的目标文件夹以及日志记录的位置等[^4]。 #### 获取预训练权重 访问 GitHub 页面提供的链接下载经过训练后的模型检查点(checkpoints)。通常这些资源会被托管于云存储服务中以便公众访问。确保所选模型架构同硬件兼容(比如针对 Apple Silicon 特化优化过的版本)。 #### 加载模型并测试 完成上述准备工作之后就可以编写简单的脚本来加载已有的 checkpoint 并尝试一些基本功能了。下面给出了一段用于初始化和预测的小例子: ```python from segment_anything import SamAutomaticMaskGenerator, sam_model_registry import torch device = "cuda" if torch.cuda.is_available() else "cpu" sam_checkpoint = "./checkpoints/sam_vit_h_4b8939.pth" model_type = "vit_h" sam = sam_model_registry[model_type](checkpoint=sam_checkpoint).to(device=device) mask_generator = SamAutomaticMaskGenerator(sam) image_path = 'path_to_your_image.jpg' masks = mask_generator.generate(image_path) print(masks) ``` 这段代码展示了如何实例化一个基于 ViT-H 架构的 SAM 对象,并传入特定图像路径来进行推理得到掩膜列表。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值