メインコンテンツまでスキップ

! CoreML 推論器で画像を推論する (:predict)

宣言

戻り値, エラー情報 = ビジョン推論器オブジェクト:predict(推論対象の画像)

または

送信済みか, エラー情報 = ビジョン推論器オブジェクト:predict(推論対象の画像, {
async = 非同期か,
multi_array_output = "table" または "MLMultiArray",
uses_cpu_only = 今回CPUのみを使用するか,
})

パラメータ

  • 推論対象の画像
    画像オブジェクト。推論する画像のパラメータです

  • async
    ブール型の省略可能なパラメータ。true を渡すと推論を非同期で送信します。デフォルトは false です

  • multi_array_output
    文字列型の省略可能なパラメータ。MLMultiArray feature 値が返される場合に、"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 feature 値を返す場合は、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)