veka-server/onnx-php

lib for use onnxruntime with php

0.4 2024-12-20 13:43 UTC

This package is auto-updated.

Last update: 2025-03-23 15:42:49 UTC


README

Total Downloads Latest Stable Version License Documentation

ONNX-PHP est une bibliothèque PHP permettant de charger et d'exécuter des modèles IA au format ONNX. Dans cet objectif, la librairie utilise FFI pour interagir directement avec onnxruntime.

Cette bibliothèque offre une API simple et flexible pour intégrer des modèles IA dans vos applications PHP.

Installation

Vous pouvez installer cette bibliothèque via Composer.

composer require veka-server/onnx-php

Prérequis PHP

  • PHP >= 8.1
  • FFI
  • GD

Tâches Disponibles

Vision

Tâches Description Statut
Classification d'images Attribuer une ou plusieurs étiquettes à une image, en identifiant à quelle catégorie l'image appartient parmi un ensemble de catégories prédéfinies.
Détection d'objets Localiser et identifier des objets spécifiques dans une image, en dessinant des boîtes englobantes autour des objets détectés et en les étiquetant avec leurs catégories correspondantes.

Traitement du Langage Naturel

Tâches Description Statut
Génération de texte Produire un texte cohérent et fluide en réponse à une entrée donnée, comme une phrase ou un contexte.

Modèles testé

Classification d'images

Modèles Description Statut Exemple
suko / nsfw classification : Naked , SAFE wiki
wd14 classification : tout les tags de danbooru wiki
NUDENET classifier (classifier_model.onnx) classification : unsafe , safe wiki
NSFW Detection classification : drawing, hentai, neutral, porn, sexy wiki

Détection d'objets

Modèles Description Statut Exemple
YOLOV10 detection de la liste COCO voir la liste wiki
YOLOV5 Face detection des visages wiki
NUDENET v3 detector (640m.onnx) detection : FEMALE_GENITALIA_COVERED, FACE_FEMALE, BUTTOCKS_EXPOSED, FEMALE_BREAST_EXPOSED, FEMALE_GENITALIA_EXPOSED, MALE_BREAST_EXPOSED, ANUS_EXPOSED, FEET_EXPOSED, BELLY_COVERED, FEET_COVERED, ARMPITS_COVERED, ARMPITS_EXPOSED, FACE_MALE, BELLY_EXPOSED, MALE_GENITALIA_EXPOSED, ANUS_COVERED, FEMALE_BREAST_COVERED, BUTTOCKS_COVERED wiki

Exemple d'utilisation

require_once(__DIR__.'/../vendor/autoload.php');

/** Définir le répertoire où la bibliothèque sera téléchargée. Si ce n'est pas défini, elle sera stockée dans le répertoire vendor */
Onnx\Library::setFolder(__DIR__.'/../');

/** Télécharger la bibliothèque si elle n'est pas trouvée */
Onnx\Library::install();

/** Instancier Vision */
$ia = new Onnx\Task\Vision(config:[
    // Liste des étiquettes pour les classifications. Les indices correspondent aux identifiants des classes.
    'tags' => [ 
        0 => "Naked", 
        1 => "Safe"  
    ],
    // Facteur de mise à l'échelle des valeurs des pixels de l'image. 
    // Ce facteur est utilisé pour normaliser les valeurs des pixels, souvent de 0 à 1.
    'rescale_factor' => 0.00392156862745098, // 1/255 pour convertir les valeurs de pixels de [0, 255] à [0, 1]
    
    // Format des canaux de couleur de l'image. 'rgb' signifie que l'image est en format Red, Green, Blue.
    'format' => 'rgb',
    
    // Hauteur de l'image en pixels attendu par le modèle. Les images seront automatiquement redimensionné à cette dimmension.
    'height' => 224,
    
    // Largeur de l'image en pixels attendu par le modèle. Les images seront automatiquement redimensionné à cette dimmension.
    'width' => 224,
    
    // La forme des données d'entrée pour le modèle. 'bhwc' signifie que les données sont en format :
    // batch (nombre d'images), height (hauteur des images), width (largeur des images), channel (nombre de canaux de couleur).
    'shape' => 'bhwc', 
    
    // Chemin vers le modèle ONNX. Il doit pointer vers le fichier du modèle pré-entraîné.
    'modelNameOrPath' => __DIR__.'/../models/model_suko_nsfw.onnx' 
]);

/** Charger les modèles */
$ia->loadModel();

/** Analyse de l'image */
$tags = $ia->getTags($img);

var_dump($tags);

Contribution

Les contributions sont les bienvenues !

Si vous avez des suggestions, trouvez des bugs, ou voulez ajouter des fonctionnalités ou des models, n'hésitez pas à ouvrir une issue ou une pull request.

License

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

Remerciements

Un grand merci à la communauté ONNX et à tous les contributeurs de onnxruntime pour leur travail exceptionnel. Cette librairie est dérivé des travaux de :