tt.createBytennEngineContext
收藏
我的收藏

基础库 2.29.0 开始支持本方法,这是一个同步方法。​
创建并返回 BytennEngineContext 神经网络管理器,可通过该对象加载 BytennEngine 神经网络引擎。​
目前该接口仅对白名单小程序开放,如需使用,开发者需要至控制台-小程序页面下,进入“能力-能力实验室-小程序能力”,申请原生神经网络能力。以上仅申请接口权限,无法满足使用条件;能力使用方式及付费问题,详情请联系火山引擎商务咨询。​

语法​

text
复制
tt.createBytennEngineContext(modelName, engineConfig)

参数说明​

modelName​

类型​
默认值​
必填​
说明​
最低支持版本​
string​
是​
需要加载的神经网络名称​
2.29.0​

engineConfig​

类型​
默认值​
必填​
说明​
最低支持版本​
object​
否​
加载网络的配置​
2.29.0​

engineConfig 的结构​

属性​
类型​
说明​
numThread​
number​
工作线程数,不填默认为 1​
backend​
string​
神经网络推理使用的后端,不填默认为 auto,下列为合法值​

backend 的合法值​

值​
说明​
最低支持版本​
auto​
自动选择后端​
2.29.0​
cpu​
使用 CPU 后端​
2.29.0​
gpu​
使用 gpu 后端​
2.29.0​
core_ml​
使用 CoreML 后端(iOS)​
2.67.0​

返回值​

代码示例​

js
复制
const app = getApp();
Page({
data: {
item_class: "unknow",
prob: 0,
},
onLoad: function () {
if (this.offscreenCanvas == null) {
this.offscreenCanvas = tt.createOffscreenCanvas();
}
this.utils = require("./utils");
},
createBytennEngine: function () {
const engineCtx = tt.createBytennEngineContext("littleapp_mobilenet", {
backend: "auto",
});
engineCtx.onLoad((engine) => {
this.engine = engine;
});
engineCtx.onError((err) => {
console.log("load error: ", err);
});
engineCtx.load();
},
startInfer: function () {
if (this.cameraCtx == null) {
this.cameraCtx = tt.createCameraContext();
}
this.listener = this.cameraCtx.onCameraFrame((res) => {
this.engine.infer({
dataConfig: {
data: res.data,
width: res.width,
height: res.height,
channel: 4,
dataType: "U8",
dataFormat: "NHWC",
},
convertConfig: [
{
outputChannel: 0,
normalizeFactor: 255,
inputConfig: [
{
inputChannel: 0,
weight: 1.0,
},
],
},
{
outputChannel: 1,
normalizeFactor: 255,
inputConfig: [
{
inputChannel: 1,
weight: 1.0,
},
],
},
{
outputChannel: 2,
normalizeFactor: 255,
inputConfig: [
{
inputChannel: 2,
weight: 1.0,
},
],
},
],
success: (res) => {
const classifications = res;
if (classifications != null) {
const top = 300;
const left = 100;
const embedding = new Float32Array(classifications.data);
const topK = this.utils.topK(
embedding,
this.utils.IMAGENET_CLASSES,
1
);
const { className, probability } = topK[0];
this.setData({
item_class: className,
prob: probability,
});
} else {
console.warn("no predictions!!");
}
},
fail: (err) => {
console.log(err);
},
});
});
this.listener.start();
},
});

Bug & Tip​

    Tip: 推荐使用 auto 后端以获得最佳性能;​