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ưngMLMultiArray, 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 đặtmulti_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()và: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()và: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)