! 使用 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)