yolov10 - veka-server/onnx-php GitHub Wiki
yolov10
model sources : https://huggingface.co/onnx-community/yolov10m
require_once(__DIR__.'/../vendor/autoload.php');
Onnx\Library::setFolder(__DIR__.'/../');
Onnx\Library::install();
$ia = new class extends \Onnx\Task\Vision {
protected array $tags = [
0 => "person",
1 => "bicycle",
2 => "car",
3 => "motorcycle",
4 => "airplane",
5 => "bus",
6 => "train",
7 => "truck",
8 => "boat",
9 => "traffic light",
10 => "fire hydrant",
11 => "stop sign",
12 => "parking meter",
13 => "bench",
14 => "bird",
15 => "cat",
16 => "dog",
17 => "horse",
18 => "sheep",
19 => "cow",
20 => "elephant",
21 => "bear",
22 => "zebra",
23 => "giraffe",
24 => "backpack",
25 => "umbrella",
26 => "handbag",
27 => "tie",
28 => "suitcase",
29 => "frisbee",
30 => "skis",
31 => "snowboard",
32 => "sports ball",
33 => "kite",
34 => "baseball bat",
35 => "baseball glove",
36 => "skateboard",
37 => "surfboard",
38 => "tennis racket",
39 => "bottle",
40 => "wine glass",
41 => "cup",
42 => "fork",
43 => "knife",
44 => "spoon",
45 => "bowl",
46 => "banana",
47 => "apple",
48 => "sandwich",
49 => "orange",
50 => "broccoli",
51 => "carrot",
52 => "hot dog",
53 => "pizza",
54 => "donut",
55 => "cake",
56 => "chair",
57 => "couch",
58 => "potted plant",
59 => "bed",
60 => "dining table",
61 => "toilet",
62 => "tv",
63 => "laptop",
64 => "mouse",
65 => "remote",
66 => "keyboard",
67 => "cell phone",
68 => "microwave",
69 => "oven",
70 => "toaster",
71 => "sink",
72 => "refrigerator",
73 => "book",
74 => "clock",
75 => "vase",
76 => "scissors",
77 => "teddy bear",
78 => "hair drier",
79 => "toothbrush"
];
protected $rescale_factor = 0.00392156862745098 ;
protected $format = 'rgb';
protected $height = 640;
protected $width = 640;
protected $shape = 'bchw'; /* batch channel height width */
protected mixed $modelNameOrPath = __DIR__.'/../.transformers-cache/onnx-community/yolov10m/onnx/model_quantized.onnx' ;
protected function postprocess($result) {
$output_name = $this->model->outputs()[0]['name'];
$predictions = $result[$output_name][0];
$reshaped_input_sizes = [640, 640](/veka-server/onnx-php/wiki/640,-640); // Exemple de dimensions reformatées
$newHeight = $reshaped_input_sizes[0][0];
$newWidth = $reshaped_input_sizes[0][1];
$imageWidth = 640; // Exemple de largeur d'image originale
$imageHeight = 640; // Exemple de hauteur d'image originale
$xs = $imageWidth / $newWidth;
$ys = $imageHeight / $newHeight;
$t = [];
foreach ($predictions as $prediction) {
[$xmin, $ymin, $xmax, $ymax, $score, $id] = $prediction;
if ($score < 0.5) continue;
// Convertit en coordonnées d'image originales
$bbox = array_map(function($value, $scale) {
return number_format($value * $scale, 2);
}, [$xmin, $ymin, $xmax, $ymax], [$xs, $ys, $xs, $ys]);
$t[] = [
'id' => $id
,'label' => $this->tags[$id]
,'score' => $score
,'bbox' => $bbox
];
}
return $t;
}
};
$ia->loadModel();
$tags = $ia->getTags( __DIR__ . '\images\sexy.jpg');
var_dump($tags);