跳至主要內容

! 使用 CoreML 推理器對影像進行推理 (:predict)

聲明

返回結果, 錯誤資訊 = 視覺推理器物件:predict(需要推理的圖片)

是否已提交, 錯誤資訊 = 視覺推理器物件:predict(需要推理的圖片, {
async = 是否異步,
multi_array_output = "table""MLMultiArray",
uses_cpu_only = 是否本次只使用 CPU,
})

參數

  • 需要推理的圖片
    圖片物件,需要進行推理的影像參數

  • async
    布林型,可選參數,傳 true 時異步提交推理,預設 false

  • multi_array_output
    文字型,可選參數,當返回 MLMultiArray 特徵值時,指定返回 "table""MLMultiArray",預設 "table"

  • uses_cpu_only
    布林型,可選參數,僅影響本次推理,傳 true 時本次只使用 CPU

回傳值

  • 返回結果
    表型

    目標檢測模型返回結構
    {
    {
    ["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 12 以下版本系統
  • 使用影像推理上下文對影像進行推理並返回推理結果
  • 如果模型返回的是 MLMultiArray 特徵值,可通過 multi_array_output = "MLMultiArray" 保留原生張量物件,便於繼續後處理
  • :run():predict() 的別名;異步提交後可用 :is_done():results() 讀取結果
  • 視覺推理器物件還支援 :metadata():compute_units():image_crop_and_scale_option():class_labels():is_vision_request() 等方法

範例

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

file.remove(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
file.move(tmp_path, compiled_model_path, 'mo') -- 將編譯好的模型移動到指定位置
end

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

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