SegAnyMo: herramienta de código abierto para segmentar automáticamente objetos arbitrarios en movimiento a partir de vídeo
Últimos recursos sobre IAPublicado hace 11 meses Círculo de intercambio de inteligencia artificial 58.1K 00
Introducción general
SegAnyMo es un proyecto de código abierto desarrollado por un equipo de investigadores de la UC Berkeley y la Universidad de Pekín, entre los que figuran miembros como Nan Huang. La herramienta se centra en el procesamiento de vídeo y puede identificar y segmentar automáticamente objetos arbitrarios en movimiento en un vídeo, como personas, animales o vehículos. Combina tecnologías como TAPNet, DINOv2 y SAM2, y tiene previsto presentar resultados en CVPR 2025. El código del proyecto es totalmente público y gratuito para que los usuarios lo descarguen, utilicen o modifiquen, y es adecuado para desarrolladores, investigadores y entusiastas del procesamiento de vídeo.El objetivo de SegAnyMo es simplificar el análisis de vídeo en movimiento y ofrecer soluciones eficientes de segmentación.

Lista de funciones
- Detecta automáticamente objetos en movimiento en el vídeo y genera máscaras de segmentación precisas.
- Admite formatos de vídeo (por ejemplo, MP4, AVI) o entrada de secuencias de imágenes.
- Proporciona modelos preentrenados para facilitar una rápida implantación y realización de pruebas.
- La integración con TAPNet genera trazas de seguimiento en 2D y captura información de movimiento.
- Uso de DINOv2 para extraer características semánticas que mejoren la precisión de la segmentación.
- Segmentación a nivel de píxel utilizando la máscara de refinamiento SAM2.
- Admite la formación personalizada de conjuntos de datos para adaptarse a distintos escenarios.
- Los resultados se visualizan para facilitar la comprobación y el ajuste.
Utilizar la ayuda
SegAnyMo requiere una cierta base técnica y está dirigido principalmente a usuarios con experiencia en programación. A continuación encontrará una guía detallada de instalación y uso.
Proceso de instalación
- Preparar el hardware y el software
El proyecto se está desarrollando en Ubuntu 22.04, y se recomienda una tarjeta gráfica NVIDIA RTX A6000 o similar con CUDA. Requiere Git y Anaconda preinstalados.- Clonar el repositorio de código:
git clone --recurse-submodules https://github.com/nnanhuang/SegAnyMo - Vaya al catálogo de proyectos:
cd SegAnyMo
- Clonar el repositorio de código:
- Creación de un entorno virtual
Cree un entorno Python separado con Anaconda para evitar conflictos de dependencias.- Crear un entorno:
conda create -n seg python=3.12.4 - Activar el entorno:
conda activate seg
- Crear un entorno:
- Instalación de dependencias básicas
Instala PyTorch y otras librerías necesarias.- Instala PyTorch (soporta CUDA 12.1):
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.1 -c pytorch -c nvidia - Instale otras dependencias:
pip install -r requirements.txt - Instalar xformers (razonamiento acelerado):
pip install -U xformers --index-url https://download.pytorch.org/whl/cu121
- Instala PyTorch (soporta CUDA 12.1):
- Instalación de DINOv2
Para la extracción de características se utiliza DINOv2.- Vaya al catálogo de preprocesamiento y clone:
cd preproc && git clone https://github.com/facebookresearch/dinov2
- Vaya al catálogo de preprocesamiento y clone:
- Instalación de SAM2
SAM2 es el núcleo de refinamiento de máscaras.- Ir al catálogo SAM2:
cd sam2 - Instalación:
pip install -e . - Descargue el modelo preentrenado:
cd checkpoints && ./download_ckpts.sh && cd ../..
- Ir al catálogo SAM2:
- Instalación de TAPNet
TAPNet se utiliza para generar trazas de seguimiento en 2D.- Vaya al catálogo TAPNet:
cd preproc/tapnet - Instalación:
pip install . - Descarga el modelo:
cd ../checkpoints && wget https://storage.googleapis.com/dm-tapnet/bootstap/bootstapir_checkpoint_v2.pt
- Vaya al catálogo TAPNet:
- Verificar la instalación
Compruebe que el entorno es normal:
python -c "import torch; print(torch.cuda.is_available())"
exportaciones True Indica éxito.
Utilización
Preparación de datos
SegAnyMo admite la entrada de secuencias de vídeo o imágenes. Los datos deben organizarse en la siguiente estructura:
data
├── images
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
├── bootstapir
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
├── dinos
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
├── depth_anything_v2
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
- Si la entrada es vídeo, utilice una herramienta (como FFmpeg) para extraer fotogramas al
imagesCarpeta. - Si se trata de una secuencia de imágenes, colóquela directamente en el directorio correspondiente.
Pretratamiento operativo
- Generar mapas de profundidad, características y trayectorias
Utilice los siguientes comandos para procesar los datos (unos 10 minutos, dependiendo de la cantidad de datos):- Para secuencias de imágenes:
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --depths --tracks --dinos --e - Para el vídeo:
python core/utils/run_inference.py --video_path $VIDEO_PATH --gpus 0 --depths --tracks --dinos --e
Descripción de los parámetros:
--eActiva el Modo Eficiente para reducir la frecuencia de imagen y la resolución y acelerar el procesamiento.--step 10Indica que se utiliza 1 fotograma de cada 10 como fotograma de consulta, que puede ajustarse a la baja para mejorar la precisión.
- Para secuencias de imágenes:
Predicción de trayectorias de movimiento
- Descargar modelos de pesos
a través de (un hueco) Cara de abrazo tal vez Google Drive Descargue el modelo preentrenado. Escriba la ruta al archivoconfigs/example_train.yaml(utilizado como expresión nominal)resume_pathCampos.- Predicción de la trayectoria de carrera:
python core/utils/run_inference.py --data_dir $DATA_DIR --motin_seg_dir $OUTPUT_DIR --config_file configs/example_train.yaml --gpus 0 --motion_seg_infer --e
La salida se guarda en el archivo
$OUTPUT_DIR. - Predicción de la trayectoria de carrera:
Generar máscara de segmentación
- Utilización de la máscara de refinamiento SAM2
- Generación de máscaras de ejecución:
python core/utils/run_inference.py --data_dir $DATA_DIR --sam2dir $RESULT_DIR --motin_seg_dir $OUTPUT_DIR --gpus 0 --sam2 --e
Descripción de los parámetros:
$DATA_DIRes la ruta de la imagen original.$RESULT_DIRes la ruta de guardado de la máscara.$OUTPUT_DIRes la trayectoria del resultado de la predicción de la trayectoria.
Nota: SAM2 admite por defecto.jpgtal vez.jpegel nombre del archivo debe ser un número. Si no es así, cambia el código o renombra el archivo.
- Generación de máscaras de ejecución:
Resultados de la evaluación
- Descargar resultados precalculados
entidad transmitente Google Drive Descarga la máscara oficial para comparar.- Evaluación del conjunto de datos DAVIS:
CUDA_VISIBLE_DEVICES=0 python core/eval/eval_mask.py --res_dir $RES_DIR --eval_dir $GT_DIR --eval_seq_list core/utils/moving_val_sequences.txt - Evaluación refinada:
cd core/eval/davis2017-evaluation && CUDA_VISIBLE_DEVICES=0 python evaluation_method.py --task unsupervised --results_path $MASK_PATH
- Evaluación del conjunto de datos DAVIS:
Formación a medida
- Preprocesamiento de datos
Se utiliza como ejemplo el conjunto de datos HOI4D:
python core/utils/process_HOI.py
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --tracks --depths --dinos
Las imágenes RGB y las máscaras dinámicas son necesarias para los conjuntos de datos personalizados.
- Comprobar la integridad de los datos:
python current-data-dir/dynamic_stereo/dynamic_replica_data/check_process.py - La limpieza de datos ahorra espacio:
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --clean
- formación de modelos
modificacionesconfigs/$CONFIG.yamlentrenado con conjuntos de datos como Kubric, HOI4D, etc:
CUDA_VISIBLE_DEVICES=0 python train_seq.py ./configs/$CONFIG.yaml
escenario de aplicación
- Postproducción de vídeo
Separe los objetos en movimiento (por ejemplo, personas corriendo) del vídeo, genere máscaras y utilícelas después para la composición de efectos. - Investigación sobre el análisis del comportamiento
Seguimiento de trayectorias de movimiento de animales o seres humanos y análisis de patrones de comportamiento. - Desarrollo de la conducción autónoma
Segmentación de objetos en movimiento (por ejemplo, vehículos, peatones) en vídeos de conducción para optimizar el sistema de percepción. - Optimización del sistema de vigilancia
Extraiga movimientos anómalos de los vídeos de vigilancia para mejorar la eficacia de la seguridad.
CONTROL DE CALIDAD
- ¿Necesita una GPU?
Sí, se recomienda que las tarjetas NVIDIA soporten CUDA, de lo contrario funcionan de forma ineficiente. - ¿Admite el procesamiento en tiempo real?
La versión actual es adecuada para el procesamiento fuera de línea, las aplicaciones en tiempo real deben optimizarse por sí solas. - ¿Cuánto espacio necesita para la formación?
Dependiendo del conjunto de datos, un conjunto de datos pequeño es de unos pocos gigabytes y un conjunto de datos grande puede ser de cientos de gigabytes. - ¿Cómo mejorar la precisión de la segmentación?
disminuir--stepo entrenar el modelo con más datos etiquetados.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...



