veka-server / onnx-php
lib for use onnxruntime with php
Requires
- php: >= 8.1
- ext-ffi: >= 8.1
- ext-gd: *
- ffi/work-directory: ^1.0
README
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 :