Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | 25x 25x 250x 25x 25x 25x 25x 25x 25x 25x 25x | import { type } from 'arktype';
import { entries } from '../utils.js';
import { HTTPRequest } from './common.js';
import { JsonataExpression } from './expressions.js';
export const MODEL_DETECTION_OUTPUT_SHAPES = {
cx: { help: 'Coordonée X du point central' },
cy: { help: 'Coordonée Y du point central' },
sy: { help: 'Coordonée Y du point supérieur gauche' },
sx: { help: 'Coordonée X du point supérieur gauche' },
ex: { help: 'Coordonée X du point inférieur droit' },
ey: { help: 'Coordonée Y du point inférieur droit' },
w: { help: 'Largeur de la boîte englobante' },
h: { help: 'Hauteur de la boîte englobante' },
score: { help: 'Score de confiance de cette boîte, entre 0 et 1' },
_: { help: 'Autre valeur (ignorée par CIGALE)' },
};
export const ModelDetectionOutputShape = type.or(
...entries(MODEL_DETECTION_OUTPUT_SHAPES).map(([key, { help }]) =>
type(`"${key}"`).describe(help, 'self')
)
);
export const ModelDetectionOutputShapes = ModelDetectionOutputShape.array();
export const ModelInput = type({
width: ['number < 1024', '@', "Largeur en pixels du tenseur d'entrée du modèle"],
height: ['number < 1024', '@', "Hauteur en pixels du tenseur d'entrée du modèle"],
'disposition?': type(['"CHW"', '@', 'Tenseurs de la forme [3, H, W]']).or(
type(['"1CHW"', '@', 'Tenseurs de la forme [1, 3, H, W]'])
),
normalized: [
'boolean',
'@',
'Si les valeurs des pixels doivent être normalisées entre 0 et 1. Sinon, elles sont entre 0 et 255',
],
'name?': [
'string',
'@',
"Nom de l'input du modèle à utiliser. Par défaut, prend la première input",
],
});
export const ModelOutputCommon = type({
name: type('string ', '@', "Nom de l'output du modèle à utiliser. output0 par défaut").default(
'output0'
),
});
export const ModelOutputBoundingBox = ModelOutputCommon.and({
normalized: [
'boolean',
'@',
"Si les coordonnées des boîtes englobantes sont normalisées par rapport aux dimensions de l'image",
],
shape: ModelDetectionOutputShapes.describe(
"Forme de sortie de chaque boîte englobante. Nécéssite obligatoirement d'avoir 'score'; 2 parmi 'cx', 'sx', 'ex', 'w'; et 2 parmi 'cy', 'sy', 'ey', 'h'. Si les boîtes contiennent d'autre valeurs, bien les mentionner avec '_', même quand c'est à la fin de la liste: cela permet de savoir quand on passe à la boîte suivante. Par exemple, [cx, cy, w, h, score, _] correspond à un modèle YOLO11 COCO"
),
});
export const ModelOutputEnum = ModelOutputCommon.and({
'select?': JsonataExpression(
type({
neurons: type({ score: '0 <= number <= 1', key: 'string' }).array(),
}),
type('string[]')
).describe(
'Given the 100 highest-score options (sorted with highest-score first), choose which options to select for the metadata value. If more than one is returned, the first element will be the value and the other elements will be alternatives. By default, the highest-score option only will be selected'
),
});
export const ModelSettingsCommon = type({
model: HTTPRequest.describe(
'Lien vers le modèle de classification utilisé pour inférer les métadonnées. Au format ONNX (.onnx) seulement, pour le moment.'
),
'name?': [
'string',
'@',
"Nom du réseau à afficher dans l'interface. Particulièrement utile si il y a plusieurs réseaux",
],
input: ModelInput.describe("Configuration de l'entrée des modèles"),
});
export const NeuralBoundingBoxInference = ModelSettingsCommon.and({
output: ModelOutputBoundingBox,
});
export const NeuralEnumInference = ModelSettingsCommon.and({
'output?': ModelOutputEnum,
classmapping: HTTPRequest.describe(
"Fichier texte contenant une clé d'option de la métadonnée par ligne, dans le même ordre que les neurones de sortie du modèle."
).or(
type(
'string[]',
'@',
"Liste de clés d'options de la métadonnée, dans le même ordre que les neurones de sortie du modèle"
)
),
});
/**
* @typedef {typeof NeuralBoundingBoxInference.infer | typeof NeuralEnumInference.infer} NeuralInference
*/
|