跳到主要内容

! 使用 CoreML 推理器对图像进行推理 (:predict)

声明

返回结果 = 视觉推理器对象:predict(需要推理的图片)

参数

  • 需要推理的图片
    图片对象,需要进行推理的图像参数

返回值

  • 返回结果
    表型

    目标检测模型返回结构
    {
    {
    ["y"] = number_value,
    ["x"] = number_value,
    ["w"] = number_value,
    ["h"] = number_value,
    ["confidence"] = number_value(0.0 ~ 100.0),
    ["name"] = string_value,
    },
    ...
    }
    图像分类模型返回结构
    {
    {
    ["confidence"] = number_value(0.0 ~ 100.0),
    ["name"] = string_value,
    },
    ...
    }
    其它类型模型返回结构
    {
    ...
    }

说明

  • 软件版本在 1.3.8 或以上方可使用
  • 不支持 iOS 13 以下版本系统
  • 使用图像推理上下文对图像进行推理并返回推理结果

示例

compiled_model_path = XXT_HOME_PATH..'/models/yolo11m.mlmodelc' -- 编译好的模型存放位置

local noexecute = require('no_os_execute')
noexecute.rm_rf(compiled_model_path) -- 测试模型阶段每次都重新编译,模型训练完备不再修改可注释掉此行

if not file.exists(compiled_model_path) then -- 如果还没有编译好的模型,则编译一份
local tmp_path, err = coreml.compile_model(XXT_HOME_PATH..'/models/yolo11m.mlpackage') -- 编译模型
if not tmp_path then
error(err)
end
local noexecute = require('no_os_execute')
noexecute.cp_r(tmp_path, compiled_model_path) -- 将编译好的模型移动到指定位置
noexecute.rm_rf(tmp_path) -- 删除临时文件
end

vnrequest, err = coreml.new_vision_request(compiled_model_path) -- 从模型创建推理器
if not vnrequest then
error(err)
end

rets = vnrequest:predict(screen.image()) -- 使用推理器推理图片
nLog(rets)