Chuyển tới nội dung chính

Chạy suy luận ảnh bằng yêu cầu CoreML Vision (:predict)

Khai báo

result, err = vision_request:predict(image)

hoặc

submitted, err = vision_request:predict(image, {
async = is_async,
multi_array_output = "table" or "MLMultiArray",
uses_cpu_only = cpu_only_for_this_call,
})

Tham số

  • image
    Đối tượng ảnh dùng để chạy suy luận.

  • async
    Kiểu boolean, không bắt buộc. Khi là true, gửi yêu cầu bất đồng bộ. Mặc định là false.

  • multi_array_output
    Kiểu chuỗi, không bắt buộc. Khi mô hình trả về đặc trưng MLMultiArray, chọn "table" hoặc "MLMultiArray". Mặc định là "table".

  • uses_cpu_only
    Kiểu boolean, không bắt buộc. Chỉ áp dụng cho lời gọi này. Khi là true, quá trình suy luận chỉ chạy trên CPU.

Giá trị trả về

  • result
    Kiểu bảng.

    Cấu trúc trả về của mô hình phát hiện đối tượng
    {
    {
    ["y"] = number_value,
    ["x"] = number_value,
    ["w"] = number_value,
    ["h"] = number_value,
    ["confidence"] = number_value(0.0 ~ 100.0),
    ["name"] = string_value,
    },
    ...
    }
    Cấu trúc trả về của mô hình phân loại ảnh
    {
    {
    ["confidence"] = number_value(0.0 ~ 100.0),
    ["name"] = string_value,
    },
    ...
    }
    Các loại mô hình khác
    {
    ...
    }

Lưu ý

  • Khả dụng từ phiên bản ứng dụng 1.3.8 trở lên.
  • Không hỗ trợ các phiên bản iOS thấp hơn 12.
  • Chạy suy luận trên ảnh bằng yêu cầu Vision hiện tại và trả về kết quả.
  • Nếu mô hình trả về giá trị đặc trưng MLMultiArray, hãy đặt multi_array_output = "MLMultiArray" để giữ chúng dưới dạng đối tượng tensor gốc cho bước xử lý tiếp theo.
  • :run() là bí danh của :predict(). Sau khi gửi bất đồng bộ, dùng :is_done():results() để đọc kết quả.
  • Đối tượng yêu cầu Vision còn cung cấp các phương thức như :metadata(), :compute_units(), :image_crop_and_scale_option(), :class_labels():is_vision_request()

Ví dụ

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)