Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >教你如何用Paddle.js开发智能化微信小程序

教你如何用Paddle.js开发智能化微信小程序

作者头像
用户1386409
发布于 2020-08-21 07:25:04
发布于 2020-08-21 07:25:04
2.3K00
代码可运行
举报
文章被收录于专栏:PaddlePaddlePaddlePaddle
运行总次数:0
代码可运行

那么,如何开发一个智能化的微信小程序呢?使用Paddle.js插件只需要3个步骤:在开发者的小程序中添加插件,引入插件代码包,最后使用插件。

1. 添加插件

在使用插件前,首先要在微信小程序的管理后台“设置-第三方服务-插件管理”中添加插件。开发者可登录小程序管理后台,通过appid: wx7138a7bb793608c3或者插件名称(paddlejs)查找插件并添加。本插件无需申请,添加后可直接使用。

2. 引入插件代码包

用插件前,需要在微信小程序的 app.json 中声明需要使用的插件,例如plugins 定义段中可以包含Paddle.js插件声明,每个插件声明以一个使用者自定义的插件引用名作为标识,并指明插件的 appid 和需要使用的版本号。

代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
...
"plugins": {
 "paddlejs-plugin": {
   "version": "0.0.2",
   "provider": "wx7138a7bb793608c3"
 }
}
...
}

3. 小程序代码中使用插件(以酒瓶识别为例)

1) 使用npm包引入paddle.js插件, 微信小程序使用npm包的方法可参见文档:

https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "name": "yourProject",
    "version": "0.0.1",
    "main": "dist/index.js",
    "license": "ISC",
    "dependencies": {
        "paddlejs": "^1.0.7"}
}

2) 在app.js的onLaunch里调用插件的register函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const paddlejs = require('paddlejs');
const plugin = requirePlugin("paddlejs-plugin");
//app.js
App({
  globalData: {
    Paddlejs: paddlejs.runner
  },
  onLaunch: function () {
    plugin.register(paddlejs, wx);
  }
});

3) 接下来可以在小程序的页面中使用globalData.Paddlejs了,可结合示例代码,按照如下步骤完成模型预测:

  1. paddlejs实例初始化
  2. 加载神经网络模型&预热
  3. 以相册选择图片为例,获取图片的像素信息作为模型输入
  4. 在线预测计算
  5. 对预测结果进行后处理
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const app = getApp();
let pdjs;

Page({
    onLoad: function () {
        // 1. paddlejs实例初始化
        pdjs = new app.globalData.Paddlejs({

            // 网络模型地址
            modelPath: 'https://paddlejs.cdn.bcebos.com/models/wine/', 

            // 分片参数文件数目
            fileCount: 3,

            // 模型输入shape
            feedShape: {
                fw: 224,
                fh: 224
            },

            // 模型输出shape
            fetchShape: [1, 40, 1, 1],

            // 以下三个参数为输入处理所需参数
            // 输入缩放容器大小
            scale: 256,

            // 输入裁剪容器大小
            targetSize: {
                height: 224,
                width: 224
            },     

            // 均值&方差
            mean: [0.485, 0.456, 0.406],
            std: [0.229, 0.224, 0.225]
        });

        const me = this;
        // 2. 加载神经网络模型&预热
        pdjs.loadModel().then(res => {
            me.setData({
                loaded: true
            })
        });
    }chooseImage() {
        // 3. 以相册选择图片为例,获取图片的像素信息作为模型输入
        const me = this;
        wx.chooseImage({
            count: 1,
            sizeType: ['original'],
            sourceType: ['album', 'camera'],
            success(res) {
                // tempFilePath可以作为img标签的src属性显示图片
                me.getImageInfo(res.tempFilePaths[0]);
            }
        });
    }
    getImageInfo(imgPath) {
        // 获取到图片的像素信息
        const me = this;
        wx.getImageInfo({
            src: imgPath,
            success: (imgInfo) => {
                const {
                    width,
                    height,
                    path
                } = imgInfo;

                const canvasId = 'myCanvas';
                // 获取页面中的canvas上下文,tips:canvas设置的宽高要大于选择的图片宽高,canvas位置可以绝对定位到视口不可以见
                ctx = wx.createCanvasContext(canvasId);
                ctx.drawImage(path, 0, 0, width, height);
                ctx.draw(false, () => {
                    // API 1.9.0 获取图像数据
                    wx.canvasGetImageData({
                        canvasId: canvasId,
                        x: 0,
                        y: 0,
                        width: width,
                        height: height,
                        success(res) {
                            me.predict({
                                data: res.data,
                                width: width,
                                height: height
                            });
                        }
                    });
                });
            }
        });
    },
    predict(imgObj) {
        // 4. 在线预测计算
        const me = this;
        pdjs.predict(imgObj, function (data) {
            // 5. 对预测结果进行后处理
            const maxItem = pdjs.utils.getMaxItem(data);
            me.setData({
                result: maps[maxItem.index]
            });
        });
    }
});

下面是酒瓶识别小程序效果展示:

除了上述示例所使用到的模型以外,Paddle.js还支持更多场景,包括不限于手势检测、人像分割人脸检测等等,这里提供了已经实现的Demo样例:

https://paddlejs.baidu.com/

当然,百度飞桨提供了非常丰富的模型资源库,开发者也可以通过Paddle.js自带的模型转换工具施加魔法将Paddle模型变成Web可用模型,转化方法:

https://github.com/PaddlePaddle/Paddle.js/tree/master/tools/ModelConverter

不过需要您了解的是,Paddle.js目前只支持了有限的一组算子操作,如果您的模型中使用了不支持的算子,那么Paddle.js将运行失败并提示您的模型中有哪些op算子目前还不支持。如果您的模型中存在目前Paddle.js不支持的算子,欢迎在GitHub上提出Issue,让我们知道你需要支持。

目前支持算子列表如下所示:

https://github.com/PaddlePaddle/Paddle.js/blob/master/src/factory/fshader/README.md

·Paddle.js官方文档·

https://github.com/PaddlePaddle/Paddle.js/blob/master/README_cn.md

·Paddle.js GitHub项目地址·

https://github.com/PaddlePaddle/Paddle.js

·PaddleX官网地址·

https://www.paddlepaddle.org.cn/paddle/paddlex

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PaddlePaddle 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
设备接入EasyGBS平台后请求实时流播放,出现超时是什么原因?
EasyGBS是基于公安部推出的安防主流协议(国标GB28181协议)的视频接入、处理及分发平台,具有视频直播监控、云端录像、云存储、检索回放、智能告警、语音对讲等功能,能够涵盖所有监控领域的视频能力需求,已经在大量的项目中落地应用,如明厨亮灶、平安乡村、雪亮工程等。
TSINGSEE青犀视频
2022/06/02
4370
海康4200平台与EasyGBS级联后不能播放的排查及解决方法
国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。
TSINGSEE青犀视频
2023/03/20
5730
EasyCVR通过Ehome协议接入设备,获取RTSP流地址异常如何解决?
EasyCVR平台支持海量视频设备接入、视频汇聚与管理、转码与分发、告警上报、平台级联、智能分析等等。平台支持广泛的协议类型接入,包括国标GB28181、RTMP、RTSP/Onvif、海康SDK、大华SDK、Ehome等,并能支持对外分发多格式的视频流,如RTSP、RTMP、FLV、HLS、WebRTC等,实现全终端、全平台覆盖。
TSINGSEE青犀视频
2022/08/15
6550
EasyCVR新版本(v2.5.0)无法播放WebRTC视频,其他格式均正常播放,是什么原因?
EasyCVR平台基于云边端一体化管理,支持多协议、多类型的视频设备接入,对外可分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。在视频功能上,可提供服务器集群、视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等服务。
TSINGSEE青犀视频
2022/08/11
3590
EasyCVR接入国标GB28181设备,视频无法播放是什么原因?
EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。
TSINGSEE青犀视频
2023/06/02
2470
EasyCVR接入RTSP流,视频无法播放的原因排查与解决
EasyCVR基于云边端协同架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视SDK等。
TSINGSEE青犀视频
2023/05/23
7040
EasyGBS如何进行内网映射两个公网?
EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。
TSINGSEE青犀视频
2023/05/19
3600
EasyCVR与EasyCVR通过国标级联视频无法播放:暂不支持TCP协议
互联网等新兴技术的发展,推动着安防行业向集成化、高清化、智能化、网格化方向升级。EasyCVR平台综合性强、视频能力丰富,平台基于云边端一体化管理,具有强大的数据接入、处理及分发能力,兼容性强、开放度高,功能可灵活拓展。在视频能力上,EasyCVR可支持视频实时监控直播、云端录像、云存储、回放与检索、智能告警、视频快照、设备/用户权限管理、平台级联等,能应用在多种场景中,如智慧工地、智慧工厂、智慧校园、智慧社区、智慧楼宇等等。
TSINGSEE青犀视频
2022/05/26
3700
EasyCVR平台出现WebRTC协议视频播放不了是什么原因?
EasyCVR部署简单、兼容性高,平台采用分布式部署,可对外提供统一的API接口,实现连接设备、连接数据、连接应用,便于第三方平台快速集成。在视频接入与输出上,平台支持设备通过国标GB28181、RTMP、RTSP/Onvif、海康SDK、大华SDK、Ehome等协议接入,对外可分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。
TSINGSEE青犀视频
2022/07/04
5310
国标GB28181安防视频平台EasyGBS显示状态正常,却无法播放该如何解决?
国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台,可实现的视频功能包括:实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。
TSINGSEE青犀视频
2023/08/21
3260
通过SDK接入EasyCVR平台,设备录像文件出现播放异常的原因排查与解决
EasyCVR视频融合平台基于云边端一体化架构,部署轻快、功能灵活,平台可支持多协议、多类型设备接入,包括:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等。平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等视频能力与服务。
TSINGSEE青犀视频
2023/04/26
4020
设备通过国标GB28181/Ehome接入EasyCVR,视频无法打开的原因分析及解决
EasyCVR平台支持多类型设备、多协议方式接入,包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等,以及厂家私有协议,如海康SDK、大华SDK、海康Ehome等。平台可将接入的流媒体进行处理及分发,分发的视频格式包括RTSP、RTMP、FLV、HLS、WebRTC等。
TSINGSEE青犀视频
2022/09/01
8020
硬盘录像机通过国标GB28181协议注册到EasyCVR,为何频繁出现断流?
EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。
TSINGSEE青犀视频
2023/07/20
2610
EasyCVR平台配置公网后,Webrtc格式视频流无法播放是什么原因?
EasyCVR视频融合平台基于云边端协同架构,具有强大的数据接入、处理及分发能力。平台支持多协议接入,并能将接入的视频资源进行转码与分发,支持的视频流格式包括:RTSP、RTMP、HLS、FLV、Webrtc等格式,实现全终端、全平台覆盖。
TSINGSEE青犀视频
2023/04/26
3300
EasyCVR平台如何实现国标GB28181级联播放Ehome接入的设备录像?
EasyCVR视频融合平台基于云边端智能协同架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理、全网分发、按需调阅、鉴权播放、智能分析等视频能力与服务,可支持的协议有:主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。
TSINGSEE青犀视频
2023/07/11
2830
前端设备使用Ehome协议接入EasyCVR无法播放问题解决
EasyCVR作为TSINGSEE青犀视频开发的视频协议融合平台,除了可以接入RTSP、GB28181外,还通过HIKSDK、Ehome等私有协议完成与设备的对接和视频流的传输。EasyCVR支持将所有视频通道通过GB28181协议级联到上级国标平台上,且支持同一通道级联到多个上级平台,这一操作给很多用户的级联带来了便捷。
TSINGSEE青犀视频
2021/09/17
5410
EasyGBS新版本使用https访问,不能播放视频是什么原因?
国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。
TSINGSEE青犀视频
2022/08/29
3100
EasyCVR平台通道视频正常播放,但设备录像却无法播放是什么原因?
EasyCVR是集视频互联网、存储、流媒体转发、视频转码、智能分析等多功能为一体的流媒体视频服务融合平台。平台基于云边端一体化架构,兼容性高、拓展性强,可支持多类型设备、多协议方式接入,包括国标GB/T28181、RTMP、RTSP/Onvif协议,以及厂家的私有协议,如:海康Ehome协议、海康SDK、大华SDK等。在功能上,EasyCVR可支持云端录像回看以及设备录像回看。
TSINGSEE青犀视频
2022/10/21
3920
EasyCVR视频融合平台设备接入的步骤及端口配置的相关注意事项
EasyCVR视频融合平台基于云边端架构,能实现视频汇聚与集中管理、视频多端分发、多屏展示。平台可支持多协议与多类型设备接入,具体包括国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等,能对外分发RTMP、RTSP、HTTP-FLV、WS-FLV、HLS、WebRTC等。今天来给大家详细介绍下EasyCVR视频融合云平台的设备接入步骤。
TSINGSEE青犀视频
2023/05/11
9180
EasyCVR国标协议接入设备,设备在线、通道却不在线的原因是什么?
EasyCVR支持多协议、多类型设备接入,包括国标GB28181、RTMP、RTSP/Onvif、海康SDK、大华SDK、海康Ehome等,属于融合性、综合性较强的视频平台。在接入类型上,GB28181协议与海康EHOME协议均属于主动注册的设备协议,用户可在平台页面的配置中心里,根据SIP信息来配置设备。
TSINGSEE青犀视频
2022/07/13
7250
推荐阅读
设备接入EasyGBS平台后请求实时流播放,出现超时是什么原因?
4370
海康4200平台与EasyGBS级联后不能播放的排查及解决方法
5730
EasyCVR通过Ehome协议接入设备,获取RTSP流地址异常如何解决?
6550
EasyCVR新版本(v2.5.0)无法播放WebRTC视频,其他格式均正常播放,是什么原因?
3590
EasyCVR接入国标GB28181设备,视频无法播放是什么原因?
2470
EasyCVR接入RTSP流,视频无法播放的原因排查与解决
7040
EasyGBS如何进行内网映射两个公网?
3600
EasyCVR与EasyCVR通过国标级联视频无法播放:暂不支持TCP协议
3700
EasyCVR平台出现WebRTC协议视频播放不了是什么原因?
5310
国标GB28181安防视频平台EasyGBS显示状态正常,却无法播放该如何解决?
3260
通过SDK接入EasyCVR平台,设备录像文件出现播放异常的原因排查与解决
4020
设备通过国标GB28181/Ehome接入EasyCVR,视频无法打开的原因分析及解决
8020
硬盘录像机通过国标GB28181协议注册到EasyCVR,为何频繁出现断流?
2610
EasyCVR平台配置公网后,Webrtc格式视频流无法播放是什么原因?
3300
EasyCVR平台如何实现国标GB28181级联播放Ehome接入的设备录像?
2830
前端设备使用Ehome协议接入EasyCVR无法播放问题解决
5410
EasyGBS新版本使用https访问,不能播放视频是什么原因?
3100
EasyCVR平台通道视频正常播放,但设备录像却无法播放是什么原因?
3920
EasyCVR视频融合平台设备接入的步骤及端口配置的相关注意事项
9180
EasyCVR国标协议接入设备,设备在线、通道却不在线的原因是什么?
7250
相关推荐
设备接入EasyGBS平台后请求实时流播放,出现超时是什么原因?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验