! CoreML 推論器で画像を推論する (:predict)
宣言
戻り値, エラー情報 = ビジョン推論器オブジェクト:predict(推論対象の画像)
または
送信済みか, エラー情報 = ビジョン推論器オブジェクト:predict(推論対象の画像, {
async = 非同期か,
multi_array_output = "table" または "MLMultiArray",
uses_cpu_only = 今回CPUのみを使用するか,
})
パラメータ
-
推論対象の画像
画像オブジェクト。推論する画像のパラメータです -
async
ブール型の省略可能なパラメータ。trueを渡すと推論を非同期で送信します。デフォルトはfalseです -
multi_array_output
文字列型の省略可能なパラメータ。MLMultiArrayfeature 値が返される場合に、"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 以前のシステムには対応していません
- 画像推論コンテキストを使用して画像を推論し、その結果を返します
- モデルが
MLMultiArrayfeature 値を返す場合は、multi_array_output = "MLMultiArray"を指定してネイティブテンソルオブジェクトのまま保持すると、後処理を続けやすくなります :run()は:predict()の別名です。非同期で送信した後は、:is_done()と:results()を使用して結果を読み取れます- Vision 推論器オブジェクトは、
: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)