/segment-anything-sharp

segment anything(SAM) for C# Inference

Primary LanguageC#Apache License 2.0Apache-2.0

简体中文 | English

segment anything(SAM)

[Paper] [源码]

SAM for CSharp ONNX Inference

基于C#语言,ONNX格式Segment Anything推理程序。
虽然官方提供了预训练模型,和推理代码,但预训练模型只有pytorch格式的,且推理代码只提供了基于Pytorch框架的Python代码。
本项目包含两部分:
1.将官方发布的预训练模型,拆分成编码器和解码器,并分别保存为ONNX格式。
2.使用C#语言加载模型,进行推理,并用WPF进行交互和显示。

源码编译

  • 拉取源码

  • MSBuild 构建生成

  • 将以下文件放到exe目录下

    • decoder-quant.onnx
    • encoder-quant.onnx
    • textual.onnx
    • visual.onnx
  • 运行程序

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

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

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

Text Promot:展开text栏,先自动分割,然后借助CLIP计算自动分割的crop图像和text的相似度。

由于Github不支持上传超过25M的文件,所以ONNX模型文件不能上传,如有需要请关注下面微信公众号,后台回复【SAM】

关注微信公众号:人工智能大讲堂