在日常模型的部署中我们有边缘计算盒、交互网页、手机APP、微信小程序等众多部署使用选择。这里我开发了一个通用的目标检测的微信小程序。该小程序拥有一个基于Flask开发的后台API服务提供,前台有微信小程序与用户进行交互。这个微信小程序除了能本地演示,在拥有域名和云服务器的情况下可以快速部署到实际环境中。更有趣的是,基于Flask的后台服务API是通用性的,只要是图像任务,包含图像分类、目标检测、图像分割、风格迁移等视觉项目都可以通过替换加载不同模型替换。不论是经典的Resnet网络还是最新的SOTA模型都可以快速融入到这个微信小程序和后台服务中。

这里我们以YOLOv5 version6.1训练的模型作为后台服务运行
要求环境:
.
├── back # 后端服务API
│ ├── Serving_model
│ │ └── commodity
│ │ └── 1
│ │ └── best.pt
│ ├── clear.bat
│ ├── config.yaml
│ ├── detector.py
│ ├── models
│ ├── server_wx.py
│ ├── static
│ └── utils
├── front # 前端微信小程序
│ ├── app.js
│ ├── app.json
│ ├── app.wxss
│ ├── images
│ │ └── 3.png
│ ├── pages
│ │ ├── index
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ └── logs
│ │ ├── logs.js
│ │ ├── logs.json
│ │ ├── logs.wxml
│ │ └── logs.wxss
│ ├── project.config.json
│ ├── sitemap.json
│ └── utils
│ └── util.js
└── 使用.txt # 使用说明
1、下载源代码:面包多-【源码】YOLOv5微信小程序部署(通用)
2、修改成自己的模型权重,将你自己训练的模型重新命名为:weights.pt,在Serving_model\commodity文件夹下新建一个最新的数字文件夹(例如Serving_model\commodity文件夹下有一个1文件夹,你可以新建一个2文件夹),将weights.pt放入到新建的这个数字文件夹。这里我们的server_wx.py里面会自动检测大数字的文件夹并且调用其权重。这里2比1大因此会优先调用2文件夹中的权重。
3、修改配置文件config.yaml:
# 未解释内容不要做修改!!!
HOST: localhost # 本地测试为localhost,云端部署为0.0.0.0
PORT: 8090 # 根据需求指定端口,默认8090
FOLDER: ['caches', 'results','results_json']
CACHE_FOLDER: caches
RESULTS_FOLDER: results
ALLOWED_EXTENSIONS: ['png', 'jpg', 'jpeg']
MYDEVICE: '0' # 使用的设备('0':代表使用GPU;'cpu':代表使用CPU)
IMG_SIZE: 640 # 输入图片大小640
THRESHOLD: 0.6 # 置信度
DIR_PATH: Serving_model/commodity/
4、启动服务:
# 确认自己安装好python3环境,其他环境同YOLOv5官方指定环境
python server_wx.py
输出
============================================
Model Version:1,Use Model Weight:/weights.pt
============================================
YOLOv5 2022-2-9 torch 1.10.1+cu102 CUDA:0 (NVIDIA GeForce GTX 1050, 4096MiB)
Fusing layers...
Model Summary: 213 layers, 7225885 parameters, 0 gradients, 16.5 GFLOPs
* Serving Flask app 'server' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://localhost:8090/ (Press CTRL+C to quit)
5、把front文件夹导入到微信小程序,然后点击上传就可以进行预测和返回了。
6、云端部署与本地部署无差异。

| 参数 | 解释 |
|---|---|
| file | 二进制读取的图片 |
| 参数 | 解释 |
|---|---|
| code | 1代表预测到目标;0代表没有预测到目标 |
| msg | success代表成功;Method Not Allowed代表失败 |
| newslist | 包含:output_url:预测的图片地址;result_arg:具体的预测图片目标信息;detect_time:检测时间 |
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>
参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍 介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。 内容有: ①:Hub模型的方法介绍 ②:服务器端代码介绍 ③:前端vue3安装并调用后端方法 ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke() 去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on
提供3种Ubuntu系统安装微信的方法,在Ubuntu20.04上验证都ok。1.WineHQ7.0安装微信:ubuntu20.04安装最新版微信--可以支持微信最新版,但是适配的不是特别好;比如WeChartOCR.exe报错。2.原生微信安装:linux系统下的微信安装(ubuntu20.04)--微信适配的最好,反应最快,但是微信版本只到2.1.1,版本太老,很多功能都没有。3.深度deepin-wine6安装微信:ubuntu20.04+系统deepin-wine6安装新版微信--综合比较好,当前个人使用此种方法1个月,微信版本3.4;没什么大问题,尚可。一、WineHQ7.0安装微信
对传统的餐饮商家来说,小程序很好地解决了餐厅线下线上连接的问题,在引流获客、节约人力、营销宣传、塑造会员体系、改善消费体验等方面都有很大帮助。小程序点餐可以帮助餐饮企业节省一大把人力开支。一个包含扫码点单、菜品管理、优惠券推送、外卖配送的小程序,商家花几万元就能完成开发测试并投入。商家为什么要开通“扫码点餐”1.解决服务员不够用的问题。2.不怕顾客跑单漏单。3.在微信就能管理菜品、查看营业额。4.订单小票显示顾客桌号和已点菜品。5.可在“附近的小程序”找到您的门店。如今餐饮业常用的三种经营模式:1堂食点单模式客人通过小程序堂食点单。商家可以在微信扫码点餐小程序管理后台根据自己店内情况来设置不同
技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进
快速导航(持续更新中…)Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)Cesium源码解析二(metadataAvailability的含义)Cesium源码解析三(metadata元数据拓展中行列号的分块规则解析)Cesium源码解析四(Quantized-Mesh(.terrain)格式文件在CesiumJS和UE中加载情况的对比)目录1.前言2.本篇的由来3.terrain文件的加载3.1更新环境3.2更新和执行渲染命令3.3数据优化3.4结束当前帧4.总结1.前言 目前市场上三维比较火的实现方案主要有两种,b/s的方案主要是Cesium,c/s的方案主要是u