Skip to content

Latest commit

 

History

History
99 lines (74 loc) · 5.57 KB

File metadata and controls

99 lines (74 loc) · 5.57 KB

English Français 中文 日本語

Comprendre les scènes visuelles à l'aide de réseaux de neurones à tenseur logistique 🚀🤖

Python 3.12 CUDA 12.4 LTNTorch Visual Genome YOLO OneFormer

Ce projet combine un modèle de segmentation et un réseau tensoriel logique pour réaliser le raisonnement de la relation entre les objets dans les images et améliorer l'analyse du contenu de l'image grâce à une formule logique de premier ordre et à un réseau perceptron multicouche. par le biais d'une formule logique de premier ordre et d'un réseau perceptron multicouche. ✨


Architecture générale et répartition des modules

Architecture générale

  1. ✨ Segmentation de l'image et extraction des caractéristiques : Le modèle YOLO-Seg de UltraLytics ou le modèle OneFormer de SHI-Labs est utilisé pour la segmentation de l'image d'entrée et l'extraction des caractéristiques. L'image d'entrée est utilisée pour la segmentation et l'extraction des caractéristiques.
  1. ✨Goal relation detection : En utilisant un réseau tensoriel logique de LTNTorch, chaque objectif est converti en un prédicat logique, qui est ensuite raisonné par le réseau tensoriel logique.
  1. ✨Logical Relationship Training : Les réseaux de tenseurs logistiques ont été entraînés à l'aide de données relationnelles provenant de la base de données Visual Genome.
  1. ✨ Sortie des résultats du raisonnement : lit les relations trouvées par l'utilisateur en utilisant la forme d'un ternaire et sort les résultats du raisonnement.

Guide d'installation

Environnement de formation (Ubuntu 22.04)

pip install -r requirements.train.txt

Environnement de raisonnement (macOS 15.3)

pip install -r requirements.inference.txt

Des modèles pré-entraînés pour YOLO et OneFormer sont automatiquement téléchargés lors de l'exécution du programme.

Lignes directrices pour l'utilisation

Exemple de formation

from utils.Trainer import trainer

predicate = ["in", "on", "next to"]
for pred in predicate:
    print(f"🚂 Entraîner {pred} ...")
    trainer(
        pos_predicate=pred,
        neg_predicates=[p for p in predicate if p != pred],
        epoches=50,
        batch_size=32,
        lr=1e-4
    )

Exemples de raisonnement

from utils.Inferencer import Inferencer

# Initialiser l'inférenteur
analyzer = Inferencer(
    subj_class="person",
    obj_class="bicycle",
    predicate="near"
)

# Effectuer l'inférence sur une seule image
result = analyzer.inference_single("demo.jpg")
print(f"🔎 Obtenu :{result['relation']} (Confiance:{result['confidence']:.2f})")

# Effectuer une inférence sur un dossier d'images
analyzer.process_folder("input_images/")

Base de données

Les relations et les métadonnées des images de la base de données Visual Genome ont été utilisées pour extraire les informations sur les images et les paires de caractéristiques. ont été utilisées pour extraire des informations sur les images et des informations sur les paires de caractéristiques.

Visual Genole Example

Le projet extrait les données et les emplacements cibles à partir de données relationnelles et extrait les données d'image pour normaliser les emplacements cibles.

Code Style and Documentation

This project uses the black and isort to automatically enforce a consistent code style. All code comments and documentation follow the Google Python Style Guide to maintain clarity and consistency.

Use the following command to keep the code in the same format before submitting.

black . && isort .

Acknowledgements

This project is based on the LTNTorch project and uses the Visual Genome database for data extraction. The project uses the YOLO and OneFormer models for object detection and segmentation.

License

This project is licensed under the GNU3.0 License - see the LICENSE file for details.