[Visión por computadora | Detección de objetivos] Puesta a tierra de la configuración del entorno de aprendizaje profundo de DINO (incluidos los casos)

Implementación oficial de PyTorch de " DINO a tierra: casarse con DINO con entrenamiento previo a tierra para la detección de objetos de conjunto abierto " : Detector de objetos de conjunto abierto SoTA .

一、Tutorial útil

Dirección en papel:

https://arxiv.org/abs/2303.05499

Mira el video de presentación en YouTube:

https://www.youtube.com/watch?v=wxWDt5UiwY8&feature=youtu.be

inserte la descripción de la imagen aquí
Pruebe la demostración de Colab:

https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/zero-shot-object-detection-with-grounding-dino.ipynb

Pruebe la demostración oficial de Huggingface:

https://huggingface.co/spaces/ShilongLiu/Grounding_DINO_demo

2. Papeleo relacionado

2.1 Recopilación de documentos relacionados

inserte la descripción de la imagen aquí

  • Grounded-SAM: Casarse con Grounding DINO con Segment Anything
  • Puesta a tierra de DINO con difusión estable
  • Puesta a tierra de DINO con GLIGEN para edición de imágenes controlable
  • OpenSeeD: un modelo de segmentación de conjunto abierto simple y sólido
  • PARECER: segmentar todo en todas partes a la vez
  • X-GPT: agente visual conversacional compatible con X-Decoder
  • GLIGEN: Generación de texto a imagen con conexión a tierra de conjunto abierto
  • LLaVA: Asistente de Lenguaje Grande y Visión

2.2 Aspectos destacados del artículo

Lo más destacado de este trabajo:

  1. Detección de conjuntos abiertos. ¡Detecta todo con el lenguaje!
  2. Alto Rendimiento. COCO zero-shot 52.5 AP (¡entrenamiento sin datos COCO!). COCO afina 63.0 AP.
  3. Flexible. Colaboración con Stable Diffusion para edición de imágenes.

2.3 Introducción al artículo

inserte la descripción de la imagen aquí

2.4 Casarse con Grounding DINO y GLIGEN

inserte la descripción de la imagen aquí

2.5 Notas/consejos sobre entradas y salidas

  • Grounding DINO acepta un par (imagen, texto) como entradas.
  • Produce 900 cajas de objetos (por defecto). Cada cuadro tiene puntuaciones de similitud en todas las palabras de entrada. (como se muestra en las Figuras a continuación).
  • Por defecto, elegimos las cajas cuyas similitudes más altas son más altas que box_threshold.
  • Extraemos las palabras cuyas similitudes son más altas que text_threshold como etiquetas predichas.
  • Si desea obtener objetos de frases específicas, como los perros en la oración dos perros con un palo, puede seleccionar las casillas con mayor similitud de texto con perros como resultados finales.
  • Tenga en cuenta que cada palabra se puede dividir en más de un token con tokenlizers diferentes. La cantidad de palabras en una oración puede no ser igual a la cantidad de tokens de texto.
  • Sugerimos separar los diferentes nombres de categorías con . para puesta a tierra DINO.
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí

3. Proceso de configuración del entorno

3.1 Mi entorno

Sistema: El último sistema ubuntu

Tarjeta gráfica: 3090

CUDA:11.3

Si tiene un entorno CUDA, asegúrese de que la variable de entorno CUDA_HOME esté configurada. Si no hay CUDA disponible, se compilará en modo solo CPU.

3.2 Proceso de configuración

3.2.1 Clonar el repositorio GroundingDINO de GitHub

git clone https://github.com/IDEA-Research/GroundingDINO.git

Después de la descarga, puede encontrar la carpeta correspondiente:

inserte la descripción de la imagen aquí

3.2.2 Cambiar el directorio actual a la carpeta GroundingDINO

cd GroundingDINO/

3.2.3 Instalar las dependencias requeridas en el directorio actual

pip3 install -q -e .

¡No sé por qué, mi descarga sigue reportando errores! Cambiar a un nuevo método de descarga:

python setup.py install

inserte la descripción de la imagen aquí

¡Pero también será rojo!

No tenga miedo en este momento, si encuentra un paquete incorrecto, simplemente use pip para descargarlo directamente, sea paciente y finalmente ejecute el comando de instalación anterior, ¡y tendrá éxito!

inserte la descripción de la imagen aquí

3.2.4 Cree un nuevo directorio llamado "pesos" para almacenar los pesos del modelo

mkdir weights

Cambie el directorio actual a la carpeta "pesos":

cd weights

Descargue el archivo de pesos del modelo:

wget -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth

4. prueba

Verifique su ID de GPU (solo si está usando una GPU):

nvidia-smi

inserte la descripción de la imagen aquí

Reemplace { GPU ID }, image_you_want_to_detect.jpg y "dir you want to save the output" con los valores apropiados en el siguiente comando:

CUDA_VISIBLE_DEVICES={
    
    GPU ID} python demo/inference_on_a_image.py \
-c /GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py \
-p /GroundingDINO/weights/groundingdino_swint_ogc.pth \
-i image_you_want_to_detect.jpg \
-o "dir you want to save the output" \
-t "chair"
 [--cpu-only] # open it for cpu mode

Por supuesto, también podemos usar Python para probar:

from groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2

model = load_model("./GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py", "./GroundingDINO/weights/groundingdino_swint_ogc.pth")
IMAGE_PATH = "./GroundingDINO/weights/1.png"
TEXT_PROMPT = "person . bike . bottle ."
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25

image_source, image = load_image(IMAGE_PATH)

boxes, logits, phrases = predict(
    model=model,
    image=image,
    caption=TEXT_PROMPT,
    box_threshold=BOX_TRESHOLD,
    text_threshold=TEXT_TRESHOLD
)

annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("./GroundingDINO/weights/annotated_image.jpg", annotated_frame)

Nuestra imagen original de prueba es:

inserte la descripción de la imagen aquí
La imagen después de la prueba es:

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/wzk4869/article/details/130582034
Recomendado
Clasificación