输入结构
推理载荷分为图像与张量两类。
图像
传图有三种形态。
| 形态 | C# | Python |
|---|---|---|
| 文件路径 | ai.InferFile("a.jpg") | ai.infer_file("a.jpg") |
| 编码字节 | ai.InferImage(b, ImageDesc.Auto()) | ai.infer_image(b) |
| 裸像素 | ai.InferImage(p, ImageDesc.Bgr888(1920, 1080)) | ai.infer_buffer(p, format=IMAGE_BGR888, width=1920, height=1080) |
图像描述字段:
| 字段 | 含义 |
|---|---|
| format | 0 AUTO / 1 ENCODED / 2 RGB888 / 3 BGR888 / 4 GRAY8 / 5 RGBA8888 / 6 BGRA8888 |
| width / height | 裸像素必填,编码图填 0 |
| stride | 每行字节,0 为紧凑排列 |
| alpha_premultiplied | 仅 RGBA / BGRA:0 丢 A,1 先去预乘再丢 A |
裸缓冲的字节长度须盖住 stride * height。
张量
张量会话走 AiSession.OpenTensors。
| 字段 | 含义 |
|---|---|
| name | 输入名,与模型一致,不可重复 |
| type | Float32 / UInt8 / Int8 / Int32 / Int64 / Bool / Float64 |
| shape | 维度列表,标量为空 |
| data | 连续字节,小端,长度须与 shape 匹配 |
var t = new AiTensor("images", AiTensorType.Float32, new long[] { 1, 3, 640, 640 }, buf);
var outs = session.InferTensors(new[] { t });
t = Tensor("images", TensorType.FLOAT32, [1, 3, 640, 640], buf)
outs = session.infer_tensors([t])