From feeea59c4b074bd497eb5451d08e290377016b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=9C=E8=8F=AF?= Date: Sat, 8 Apr 2023 05:21:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=BC=A0=E9=87=8F=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 47 ++++++++++++++++++++++++++++++++++++++++- go.mod | 2 ++ go.sum | 9 ++++++++ models/resnet.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 models/resnet.go diff --git a/README.md b/README.md index 550b1e2..615b05b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,48 @@ # webp -提供webp生成服务 \ No newline at end of file +提供webp生成服务 + +```bash +# 需要安装依赖 +sudo apt install libopencv-dev +``` + +防止错误 ‘ArucoDetector’ in namespace ‘cv::aruco’ does not name a type +將安裝的 opencv 版本從 4.2 更改為 4.7,它工作正常。 + +```bash +# E: 无法定位软件包 libdc1394-22-dev +sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" +sudo apt update +sudo apt upgrade +sudo apt install libjasper1 libjasper-dev + +# 添加主服务器 +sudo gedit /etc/apt/sources.list + deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse + +sudo apt-get update +sudo apt update +sudo apt upgrade + +# GPT 方案 +sudo add-apt-repository universe +sudo apt update +sudo apt install libdc1394-22-dev +apt search libdc1394 + +# 手动下载 https://pkgs.org/download/libdc1394-22 +wget http://archive.ubuntu.com/ubuntu/pool/universe/libd/libdc1394-22/libdc1394-22_2.2.5-2.1_amd64.deb +sudo dpkg -i libdc1394-22_2.2.5-2.1_amd64.deb +apt search libdc1394 + +# 确认安装后注释 Markfile 第52行 +cd gocv +make install + +# 下载超时请爬墙 +``` + +torch 模型文件 +https://d2j0dndfm35trm.cloudfront.net/resnet-50.t7 +https://github.com/facebookarchive/fb.resnet.torch/tree/master/pretrained diff --git a/go.mod b/go.mod index 5225e36..e5d1616 100644 --- a/go.mod +++ b/go.mod @@ -31,5 +31,7 @@ require ( github.com/chai2010/webp v1.1.1 github.com/go-sql-driver/mysql v1.7.0 github.com/sizeofint/gif-to-webp v0.0.0-20210224202734-e9d7ed071591 + github.com/wangkuiyi/gotorch v0.0.0-20201028015551-9afed2f3ad7b + gocv.io/x/gocv v0.32.1 golang.org/x/image v0.0.0-20211028202545-6944b10bf410 // indirect ) diff --git a/go.sum b/go.sum index 26f846b..0115850 100644 --- a/go.sum +++ b/go.sum @@ -128,6 +128,7 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hybridgroup/mjpeg v0.0.0-20140228234708-4680f319790e/go.mod h1:eagM805MRKrioHYuU7iKLUyFPVKqVV6um5DAvCkUtXs= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -141,6 +142,7 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -168,12 +170,16 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/wangkuiyi/gotorch v0.0.0-20201028015551-9afed2f3ad7b h1:oJfm5gCGdy9k2Yb+qmMR+HMRQ89CbVDsDi6DD9AZSTk= +github.com/wangkuiyi/gotorch v0.0.0-20201028015551-9afed2f3ad7b/go.mod h1:WC7g+ojb7tPOZhHI2+ZI7ZXTW7uzF9uFOZfZgIX+SjI= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -184,6 +190,9 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +gocv.io/x/gocv v0.24.0/go.mod h1:Rar2PS6DV+T4FL+PM535EImD/h13hGVaHhnCu1xarBs= +gocv.io/x/gocv v0.32.1 h1:BC9hHs5+47nVgySUFVKntc6RsF3SULFzqk6OV9xz+C0= +gocv.io/x/gocv v0.32.1/go.mod h1:oc6FvfYqfBp99p+yOEzs9tbYF9gOrAQSeL/dyIPefJU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/models/resnet.go b/models/resnet.go new file mode 100644 index 0000000..637fa14 --- /dev/null +++ b/models/resnet.go @@ -0,0 +1,55 @@ +package models + +import ( + //"gocv.io/x/gocv" + //"github.com/xuyu/gotool/torch" + "fmt" + + "github.com/wangkuiyi/gotorch" +) + +func init() { + // 模型文件地址: https://download.pytorch.org/models/resnet50-19c8e357.pth + // 模型地址: "/home/satori/webp/data/resnet-50.t7" + + tensor := gotorch.Load("/home/satori/webp/data/resnet-50.t7") + fmt.Println(tensor) + + //model := torch.NewModel() + //err := model.ReadFromFile("/home/satori/webp/data/resnet-50.t7") + //if err != nil { + // panic(err) + //} + + /** + t7 := "/home/satori/webp/data/resnet-50.t7" + // 加载t7格式的模型 + model := gocv.ReadNetFromTorch(t7) + + if model.Empty() { + panic("Failed to load model") + } + + fmt.Println("==============================") + img := gocv.IMRead("data/test.jpeg", gocv.IMReadColor) + if img.Empty() { + panic("Failed to read image") + } + + fmt.Println("==============================") + inputBlob := gocv.BlobFromImage(img, 1.0, image.Pt(224, 224), gocv.NewScalar(0, 0, 0, 0), true, false) + defer inputBlob.Close() + + fmt.Println("==============================") + model.SetInput(inputBlob, "input") + outputBlob := model.Forward("output") + defer outputBlob.Close() + + fmt.Println("==============================") + features := outputBlob.Reshape(1, 1) + defer features.Close() + + fmt.Println("==============================") + fmt.Println(features.ToBytes()) + **/ +}