! Effectuer une inférence d’image avec un inféreur CoreML (:predict)
Déclaration
resultat, message_erreur = objet_inference_visuelle:predict(image_a_analyser)
ou
soumis, message_erreur = objet_inference_visuelle:predict(image_a_analyser, {
async = asynchrone,
multi_array_output = "table" ou "MLMultiArray",
uses_cpu_only = uniquement CPU pour cette inférence,
})
Paramètres
-
image_a_analyser
objet image, image à analyser -
async
type booléen, paramètre facultatif, soumet l’inférence de manière asynchrone sitrue,falsepar défaut -
multi_array_output
type texte, paramètre facultatif, lorsque des valeurs de featureMLMultiArraysont renvoyées, indique s’il faut renvoyer"table"ou"MLMultiArray","table"par défaut -
uses_cpu_only
type booléen, paramètre facultatif, concerne uniquement cette inférence ;trueforce l’utilisation du CPU pour cette inférence
Valeur renvoyée
-
resultat
type tableStructure renvoyée par un modèle de détection d’objets
{
{
["y"] = number_value,
["x"] = number_value,
["w"] = number_value,
["h"] = number_value,
["confidence"] = number_value(0.0 ~ 100.0),
["name"] = string_value,
},
...
}Structure renvoyée par un modèle de classification d’images
{
{
["confidence"] = number_value(0.0 ~ 100.0),
["name"] = string_value,
},
...
}Structure renvoyée par un autre type de modèle
{
...
}
Description
- Disponible à partir de la version logicielle 1.3.8
- Les systèmes antérieurs à iOS 12 ne sont pas pris en charge
- Utilise le contexte d’inférence visuelle pour analyser l’image et renvoie le résultat
- Si le modèle renvoie une feature
MLMultiArray,multi_array_output = "MLMultiArray"permet de conserver l’objet tenseur natif pour le post-traitement :run()est un alias de:predict(); après une soumission asynchrone, utilisez:is_done()et:results()pour lire le résultat- L’objet d’inférence visuelle prend également en charge
:metadata(),:compute_units(),:image_crop_and_scale_option(),:class_labels()et:is_vision_request()
Exemple
compiled_model_path = XXT_HOME_PATH..'/models/yolo11m.mlmodelc' -- Emplacement du modèle compilé
file.remove(compiled_model_path) -- Recompiler à chaque fois pendant les tests ; cette ligne peut être commentée lorsque le modèle est stable
if not file.exists(compiled_model_path) then -- Compiler une copie si aucun modèle compilé n’existe encore
local tmp_path, err = coreml.compile_model(XXT_HOME_PATH..'/models/yolo11m.mlpackage') -- Compiler le modèle
if not tmp_path then
error(err)
end
file.move(tmp_path, compiled_model_path, 'mo') -- Déplacer le modèle compilé vers l’emplacement indiqué
end
vnrequest, err = coreml.new_vision_request(compiled_model_path) -- Créer un inféreur à partir du modèle
if not vnrequest then
error(err)
end
rets = vnrequest:predict(screen.image()) -- Effectuer l’inférence de l’image avec l’inféreur
nLog(rets)