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