Bilel Benjdira, Anis Koubaa y Anas M. Ali
Robótica e Internet de las cosas Lab (laboratorio Riotu), Universidad Prince Sultan, Arabia Saudita
Inspirado en Rosgpt. Ambos proyectos tienen como objetivo cerrar la brecha entre la robótica, la comprensión del lenguaje natural y el análisis de imágenes.
Los colaboradores que desean participar en este proyecto son bienvenidos.
Se proporciona una demostración de video ilustrativa de ROSGPT_VISION:
ROSGPT_VISION ofrece una plataforma unificada que permite a los robots percibir, interpretar e interactuar con los datos visuales a través del lenguaje natural. El marco aprovecha los modelos de idiomas de última generación, incluidos Llava, Minigpt-4 y subtítulos, para facilitar el razonamiento avanzado sobre los datos de imágenes. Langchain se usa para una fácil personalización de las indicaciones. La implementación proporcionada incluye la aplicación CarMate , un sistema de monitoreo y asistencia de controladores diseñado para garantizar experiencias de manejo seguras y eficientes.
** Para más información, vaya a
CarMate es una aplicación completa para monitorear el comportamiento del conductor que se desarrolló con solo establecer dos indicaciones en el archivo YAML. Analiza automáticamente el video de entrada utilizando el aviso visual, analiza lo que debe hacerse utilizando el indicador LLM y ofrece una alerta instantánea al controlador cuando sea necesario.
Estas son las indicaciones utilizadas para desarrollar la aplicación, sin necesidad de código adicional:
El aviso visual:
Visual prompt: "Describe the driver’s current level of focus
on driving based on the visual cues, Answer with one short sentence."
El mensaje 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."
Podemos ver tres ejemplos de escenarios, obtenidos durante la conducción:
Podemos ver en el cuadro superior la descripción generada por el módulo de semántica de la imagen para la imagen de entrada utilizando el indicador visual. Mientras tanto, el segundo cuadro genera la alerta que se debe dar al controlador utilizando la solicitud de LLM.
1. Prepare el código y el entorno
Git Clone Nuestro repositorio, creando un entorno de Python y ativarlo a través del siguiente comando
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. Instale las dependencias requeridas
Puede ejecutar image_semantics.py instalar todas las dependencias requeridas de Llava, Minigpt-4 y subtítulos.
Asegúrese de la instalación de todas las dependencias requeridas para ROS2.
El YAML contiene 6 secciones principales de parámetros de configuraciones:
Task_name : este campo especifica el nombre de la tarea que el sistema ROS está configurado para realizar.
ROSGPT_VISION_CAMERA_NODE : Esta sección contiene la configuración para ROSGPT_VISION_CAMERA_NODE.
Image_description_method : este campo especifica el método utilizado por el nodo para generar descripciones a partir de imágenes. Puede ser uno de los métodos desarrollados actualmente: Minigpt4, Llava o Sam. Las configuraciones necesarias para todos se colocan por separado al final de este archivo.
Vision_Prompt : este campo especifica el mensaje utilizado para guiar el proceso de descripción de la imagen.
Output_video : este campo especifica la ruta o el nombre de dónde guardar el archivo de video de salida.
Gpt_consultation_node : esta sección contiene la configuración para el gpt_consultation_node.
LLM_PROMPT : este campo especifica el aviso utilizado para guiar el modelo de idioma.
GPT_Temperatura : este campo especifica el parámetro de temperatura para el modelo GPT, que controla la aleatoriedad de la salida del modelo.
Minigpt4_parameters : esta sección contiene la configuración para el modelo Minigpt4. Debe estar claramente establecido si el modelo se usa en esta tarea, de lo contrario podría estar vacío.
Configuración : este campo especifica la ruta para el archivo de configuración de Minigpt4.
Temperatura_Minigpt4 : este campo especifica el parámetro de temperatura para el modelo Minigpt4.
Llava_Parameters : esta sección contiene la configuración para el modelo LLAVA (si se usa).
SAM_PARAMETERS : esta sección contiene la configuración para el modelo 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}
}
Este proyecto tiene licencia bajo la Licencia Internacional de Atribución Comunes Creative Commons. Usted es libre de usar, compartir y adaptar este material con fines no comerciales, siempre que proporcione atribución a los autores originales y la fuente.
Los códigos se basan en ROSGPT, LLAVA, Minigpt-4, subtítulos y Sam. Siga también sus licencias. Gracias por sus increíbles obras.
Como este proyecto aún está en progreso, ¡las contribuciones son bienvenidas! Para contribuir, siga estos pasos:
Antes de enviar su solicitud de extracción, asegúrese de que sus cambios no rompan la compilación y se adhieran al estilo de codificación del proyecto.
Para cualquier pregunta o sugerencia, abra un problema en el rastreador de problemas de GitHub.