GetcharZp commited on
Commit
4e30307
·
0 Parent(s):

:tada: init

Browse files
.gitattributes ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.onnx_data filter=lfs diff=lfs merge=lfs -text
18
+ *.ot filter=lfs diff=lfs merge=lfs -text
19
+ *.parquet filter=lfs diff=lfs merge=lfs -text
20
+ *.pb filter=lfs diff=lfs merge=lfs -text
21
+ *.pickle filter=lfs diff=lfs merge=lfs -text
22
+ *.pkl filter=lfs diff=lfs merge=lfs -text
23
+ *.pt filter=lfs diff=lfs merge=lfs -text
24
+ *.pth filter=lfs diff=lfs merge=lfs -text
25
+ *.rar filter=lfs diff=lfs merge=lfs -text
26
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
27
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
29
+ *.tar filter=lfs diff=lfs merge=lfs -text
30
+ *.tflite filter=lfs diff=lfs merge=lfs -text
31
+ *.tgz filter=lfs diff=lfs merge=lfs -text
32
+ *.wasm filter=lfs diff=lfs merge=lfs -text
33
+ *.xz filter=lfs diff=lfs merge=lfs -text
34
+ *.zip filter=lfs diff=lfs merge=lfs -text
35
+ *.zst filter=lfs diff=lfs merge=lfs -text
36
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
37
+ *.dll filter=lfs diff=lfs merge=lfs -text
38
+ *.so filter=lfs diff=lfs merge=lfs -text
39
+ *.dylib filter=lfs diff=lfs merge=lfs -text
40
+ *.png filter=lfs diff=lfs merge=lfs -text
41
+ *.wav filter=lfs diff=lfs merge=lfs -text
42
+ *.txt filter=lfs diff=lfs merge=lfs -text
43
+ *.mvn filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ .idea
2
+ .vscode/
3
+ .DS_Store
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2025 getcharzp
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ pipeline_tag: mask-generation
4
+ tags:
5
+ - mask-generation
6
+ - image-segmentation
7
+ ---
8
+ <div align="center" style="text-align: center;">
9
+ <img src="./assets/logo.png" alt="logo" width="200" style="display: block; margin: 0 auto;" />
10
+ </div>
11
+
12
+ <p align="center">
13
+ <a href="https://github.com/getcharzp/go-vision/fork" target="blank">
14
+ <img src="https://img.shields.io/github/forks/getcharzp/go-vision?style=for-the-badge" alt="go-vision forks"/>
15
+ </a>
16
+ <a href="https://github.com/getcharzp/go-vision/stargazers" target="blank">
17
+ <img src="https://img.shields.io/github/stars/getcharzp/go-vision?style=for-the-badge" alt="go-vision stars"/>
18
+ </a>
19
+ <a href="https://github.com/getcharzp/go-vision/pulls" target="blank">
20
+ <img src="https://img.shields.io/github/issues-pr/getcharzp/go-vision?style=for-the-badge" alt="go-vision pull-requests"/>
21
+ </a>
22
+ <a href='https://github.com/getcharzp/go-vision/releases'>
23
+ <img src='https://img.shields.io/github/release/getcharzp/go-vision?&label=Latest&style=for-the-badge'>
24
+ </a>
25
+ </p>
26
+
27
+ go-vision 基于 Golang + [ONNX](https://github.com/microsoft/onnxruntime/releases/tag/v1.23.2) 构建的轻量级视觉库
28
+
29
+ ## 安装
30
+
31
+ ```shell
32
+ # 下载包
33
+ go get -u github.com/getcharzp/go-vision
34
+
35
+ # 下载模型、动态链接库
36
+ git clone https://huggingface.co/getcharzp/go-vision
37
+ ```
38
+
39
+ ## 快速开始
40
+
41
+ ### sam2
42
+
43
+ ```go
44
+ package main
45
+
46
+ import (
47
+ "fmt"
48
+ "github.com/getcharzp/go-vision/sam2"
49
+ "github.com/up-zero/gotool/imageutil"
50
+ "log"
51
+ )
52
+
53
+ func main() {
54
+ engine, err := sam2.NewEngine(sam2.DefaultConfig())
55
+ if err != nil {
56
+ log.Fatalf("初始化引擎失败: %v", err)
57
+ }
58
+ defer engine.Destroy()
59
+
60
+ img, _ := imageutil.Open("./test.png")
61
+ imgCtx, err := engine.EncodeImage(img)
62
+ if err != nil {
63
+ log.Fatalf("图片 Encode 失败: %v", err)
64
+ }
65
+ defer imgCtx.Destroy()
66
+
67
+ points := []sam2.Point{
68
+ {X: 367, Y: 168, Label: sam2.LabelBoxTopLeft}, // 左上
69
+ {X: 441, Y: 349, Label: sam2.LabelBoxBotRight}, // 右下
70
+ }
71
+ imgResult, score, err := imgCtx.Decode(points)
72
+ if err != nil {
73
+ log.Fatalf("Mask Decode 失败: %v", err)
74
+ }
75
+
76
+ fmt.Printf("Mask generated, score: %.4f\n", score)
77
+ imageutil.Save("output_mask.png", imgResult, 100)
78
+ }
79
+
80
+ ```
81
+
82
+ | 原图 | Mask图 |
83
+ |-----------------------------------------------------|------------------------------------------------------------|
84
+ | <img width="100%" src="./examples/test.png" alt=""> | <img width="100%" src="./examples/output_mask.png" alt=""> |
assets/logo.png ADDED

Git LFS Details

  • SHA256: f72510e308055ca78189101f998e5516fa470e0b7a4eae00dba5348838f39726
  • Pointer size: 131 Bytes
  • Size of remote file: 420 kB
examples/sam2_test.go ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package examples
2
+
3
+ import (
4
+ "fmt"
5
+ "github.com/getcharzp/go-vision/sam2"
6
+ "github.com/up-zero/gotool/imageutil"
7
+ _ "image/jpeg"
8
+ "testing"
9
+ )
10
+
11
+ func TestSAM2Refactored(t *testing.T) {
12
+ config := sam2.Config{
13
+ OnnxRuntimeLibPath: "../lib/onnxruntime.dll",
14
+ EncodeModelPath: "../sam2_weights/vision_encoder.onnx",
15
+ DecodeModelPath: "../sam2_weights/prompt_encoder_mask_decoder.onnx",
16
+ }
17
+
18
+ engine, err := sam2.NewEngine(config)
19
+ if err != nil {
20
+ t.Fatalf("初始化引擎失败: %v", err)
21
+ }
22
+ defer engine.Destroy()
23
+
24
+ img, _ := imageutil.Open("./test.png")
25
+ imgCtx, err := engine.EncodeImage(img)
26
+ if err != nil {
27
+ t.Fatalf("图片 Encode 失败: %v", err)
28
+ }
29
+ defer imgCtx.Destroy()
30
+
31
+ points := []sam2.Point{
32
+ {X: 367, Y: 168, Label: sam2.LabelBoxTopLeft}, // 左上
33
+ {X: 441, Y: 349, Label: sam2.LabelBoxBotRight}, // 右下
34
+ }
35
+ imgResult, score, err := imgCtx.Decode(points)
36
+ if err != nil {
37
+ t.Fatalf("Mask Decode 失败: %v", err)
38
+ }
39
+
40
+ fmt.Printf("Mask generated, score: %.4f\n", score)
41
+ imageutil.Save("output_mask.png", imgResult, 100)
42
+ }
examples/test.png ADDED

Git LFS Details

  • SHA256: 4fded3cde9a12f954333d26f813d51904bba1b7650f2bc77b188b8e857c32327
  • Pointer size: 131 Bytes
  • Size of remote file: 869 kB
lib/onnxruntime.dll ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dec964ab1ee36cc9b0ae247d13b376627992fc57dec0454354017ab8fd84f1ea
3
+ size 14186016
lib/onnxruntime_amd64.dylib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:283e595e61cf65df7a6b1d59a1616cbd35c8b6399dd90d799d99b71a3ff83160
3
+ size 37411816
lib/onnxruntime_amd64.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:126e4a0191d547839b28a41b9087375711158a3f2c5e7da65ef815f0af6cbe28
3
+ size 22317880
lib/onnxruntime_arm64.dylib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2b885992d3d6fa4130d39ec84a80d7504ff52750027c547bb22c86165f19406a
3
+ size 33481272
lib/onnxruntime_arm64.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0afd69a0ae38c5099fd0e8604dda398ac43dee67cd9c6394b5142b19e82528de
3
+ size 17643256
sam2_weights/prompt_encoder_mask_decoder.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6745c1613ef67cdf05e63df34be2db526839a57b9d87c47535db4f5e1751419e
3
+ size 213114
sam2_weights/prompt_encoder_mask_decoder.onnx_data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:371f987fc06e9b724a4b345bd9bcd684431b58781be52dc7a4096f414f2054bd
3
+ size 20958208
sam2_weights/vision_encoder.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cd26d8b4ca0ebac8aa4264d3ab5f26b00127f7a526acdb9e683ff61ddce86acb
3
+ size 467440
sam2_weights/vision_encoder.onnx_data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5e57eeecb4ffb844f364b1f9f8a734e5f53fcbc26f19f89dbdc65caa75e5a92
3
+ size 162476288