Bilel Benjdira, Anis Koubaa et Anas M. Ali
Robotics and Internet of Things Lab (Riotu Lab), Prince Sultan University, Arabie saoudite
Inspiré par Rosgpt. Les deux projets visent à combler le fossé entre la robotique, la compréhension du langage naturel et l'analyse d'image.
Les collaborateurs qui souhaitent participer à ce projet sont les bienvenus.
Une démonstration vidéo illustrative de Rosgpt_vision est fournie:
Rosgpt_vision propose une plate-forme unifiée qui permet aux robots de percevoir, d'interpréter et d'interagir avec les données visuelles par le langage naturel. Le cadre exploite les modèles de langue de pointe, y compris Llava, MiniGpt-4 et Légende, pour faciliter le raisonnement avancé sur les données d'image. Langchain est utilisé pour une personnalisation facile des invites. La mise en œuvre fournie comprend l'application Carmate , un système de surveillance et d'assistance des conducteurs conçus pour assurer des expériences de conduite sûres et efficaces.
** Pour plus d'informations, allez à
Carmate est une application complète pour surveiller le comportement du pilote qui a été développé uniquement en définissant deux invites dans le fichier YAML. Il analyse automatiquement la vidéo d'entrée à l'aide de l'invite visuelle, analyse ce qui doit être fait à l'aide de l'invite LLM et donne une alerte instantanée au pilote en cas de besoin.
Ce sont les invites utilisées pour développer l'application, sans avoir besoin de code supplémentaire:
L'invite visuelle:
Visual prompt: "Describe the driver’s current level of focus
on driving based on the visual cues, Answer with one short sentence."
L'invite LLM:
LLM prompt:"Consider the following ontology: You must write your Reply
with one short sentence. Behave as a carmate that surveys the driver
and gives him advice and instruction to drive safely. You will be given
human language prompts describing an image. Your task is to provide
appropriate instructions to the driver based on the description."
Nous pouvons voir trois exemples de scénarios, obtenus pendant la conduite:
Nous pouvons voir dans la zone supérieure la description générée par le module de sémantique d'image pour l'image d'entrée à l'aide de l'invite visuelle. Pendant ce temps, la deuxième case génère l'alerte qui doit être donnée au pilote à l'aide de l'invite LLM.
1. Préparez le code et l'environnement
Git clone notre référentiel, créant un environnement python et l'a-t-il via la commande suivante
git clone https://github.com/bilel-bj/ROSGPT_Vision.git
cd ROSGPT_Vision
git clone https://github.com/Vision-CAIR/MiniGPT-4.git
git clone https://github.com/haotian-liu/LLaVA.git
conda env create -f environment.yml
conda activate ROSGPT_Vision
2. Installez les dépendances requises
Vous pouvez exécuter image_semantics.py en installant toutes les dépendances requises à partir de llava, minigpt-4 et de légende.
Assurez-vous l'installation de toutes les dépendances requises pour ROS2.
Le YAML contient 6 sections principales de paramètres de configuration:
Task_name : ce champ spécifie le nom de la tâche que le système ROS est configuré pour effectuer.
ROSGPT_VISION_CAMERA_NODE : Cette section contient la configuration du ROSGPT_VISION_CAMERA_NODE.
Image_description_method : Ce champ spécifie la méthode utilisée par le nœud pour générer des descriptions à partir d'images. Il peut s'agir de l'une des méthodes actuellement développées: MiniGpt4, Llava ou Sam. Les configurations nécessaires pour chacun d'entre elles sont placées séparément à la fin de ce fichier.
Vision_Prompt : Ce champ spécifie l'invite utilisée pour guider le processus de description de l'image.
Output_video : ce champ spécifie le chemin d'accès ou le nom de l'endroit où enregistrer le fichier vidéo de sortie.
Gpt_consultation_node : cette section contient la configuration du gpt_consultation_node.
LLM_PROMPT : Ce champ spécifie l'invite utilisée pour guider le modèle de langue.
GPT_TEMPERATURE : Ce champ spécifie le paramètre de température pour le modèle GPT, qui contrôle l'aléatoire de la sortie du modèle.
MINIGPT4_PARAMETERS : Cette section contient la configuration du modèle MINIGPT4. Il doit être clairement défini si le modèle est utilisé dans cette tâche, sinon il pourrait être vide.
Configuration : Ce champ spécifie le chemin d'accès pour le fichier de configuration de MINIGPT4.
TEMPERME_MINIGPT4 : Ce champ spécifie le paramètre de température pour le modèle MINIGPT4.
LLAVA_PARAMETERS : Cette section contient la configuration du modèle LLAVA (si utilisé).
SAM_PARAMETERS : Cette section contient la configuration du modèle SAM.
colcon build --packages-select rosgpt_vision
source install/setup.bash
python3 src/rosgpt_vision/rosgpt_vision/rosgpt_vision_node_web_cam.py
python3 src/rosgpt_vision/rosgpt_vision/ROSGPT_Vision_Camera_Node.py /home/anas/ros2_ws/src/rosgpt_vision/rosgpt_vision/cfg/driver_phone_usage.yaml
colcon build --packages-select rosgpt_vision
source install/setup.bash
python3 src/rosgpt_vision/rosgpt_vision/ROSGPT_Vision_GPT_Consultation_Node.py /home/anas/ros2_ws/src/rosgpt_vision/rosgpt_vision/cfg/driver_phone_usage.yaml
bash ros2 topic echo /Image_Description
bash ros2 topic echo /GPT_Consultation
@misc{benjdira2023rosgptvision,
title={ROSGPT_Vision: Commanding Robots Using Only Language Models' Prompts},
author={Bilel Benjdira and Anis Koubaa and Anas M. Ali},
year={2023},
eprint={2308.11236},
archivePrefix={arXiv},
primaryClass={cs.RO}
}
Ce projet est sous licence en vertu de la licence internationale Creative Commons Attribution-Noncommercial 4.0. Vous êtes libre d'utiliser, de partager et d'adapter ce matériel à des fins non commerciales, tant que vous fournissez une attribution aux auteurs d'origine et à la source.
Les codes sont basés sur Rosgpt, Llava, Minigpt-4, Légende-tout et SAM. Veuillez également suivre leurs licences. Merci pour leurs œuvres impressionnantes.
Comme ce projet est toujours en cours, les contributions sont les bienvenues! Pour contribuer, veuillez suivre ces étapes:
Avant de soumettre votre demande de traction, veuillez vous assurer que vos modifications ne cassent pas la construction et respectent le style de codage du projet.
Pour toute question ou suggestion, veuillez ouvrir un problème sur le suivi du problème GitHub.