Configuração do Sistema SOONet para Acesso Local e Remoto via http://IP:7860

Introdução ao SOONet: Funcionalidade Principal

O SOONet é um sistema para localização temporal de segmentos em vídeos longos, baseado em linguagem natural. O usuário fornece uma descrição textual de uma cena, e o sistema identifica o intervalo de tempo correspondente dentro do vídeo.

Por exemplo, em uma gravação de reunião de 2 horas, basta digitar "João apresenta o orçamento" para que o sistema localize automaticamente o trecho específico. Esta abordagem é significativamente mais eficiente que a busca manual.

Vantagens Técnicas

  • Desempenho: Velocidade de inferência até 100 vezes superior a métodos tradicionais.
  • Precisão: Resultados de última geração em benchmarks padrão.
  • Escalabilidade: Projetado para processar vídeos com duração de horas.
  • Interface: Interação simples por linguagem natural.

1. Preparação do Ambiente

1.1 Requisitos de Hardware

Componente Mínimo Recomendado
GPU NVIDIA com suporte a CUDA Tesla A100 ou equivalente
Memória RAM 8 GB 16 GB+
Armazenamento 2 GB livres 5 GB livres

1.2 Instalação das Dependências

Crie e ative um ambiente virtual para o projeto:

# Criação do ambiente isolado
python -m venv meu_ambiente_soonet
# Ativação (Linux/macOS)
source meu_ambiente_soonet/bin/activate
# Ativação (Windows)
# .\meu_ambiente_soonet\Scripts\activate

# Instalação dos pacotes necessários
pip install "torch>=1.10.0" "torchvision>=0.11.0"
pip install "modelscope>=1.0.0" "gradio==6.4.0"
pip install "opencv-python>=4.5.0" "numpy<2.0"

1.3 Verificação dos Arquivos do Modelo

Os arquivos principais do modelo devem estar na estrutura abaixo:

/caminho/para/modelos/iic/multi-modal_soonet_video-temporal-grounding/
├── SOONet_MAD_VIT-B-32_4Scale_10C.pth  # Pesos do modelo
├── ViT-B-32.pt                         # Encoder visual
├── configuration.json                  # Configurações
└── video_teste.mp4                    # Arquivo de teste

Obtenha estes arquivos das fontes oficiais do projeto se estiverem ausentes.

2. Inicialização e Acesso ao Serviço

2.1 Executando o Servidor

Navegue até o diretório do projeto e execute:

cd /caminho/multi-modal_soonet_video-temporal-grounding
python app.py

A saída no terminal mostrará as URLs de acesso após a inicialização bem-sucedida.

2.2 Configurando o Acesso Dual

Acesso Local: Utilize http://localhost:7860 no navegador do mesmo computador.

Acesso Remoto:

  1. Identifique o endereço IP do servidor (ex: 192.168.1.150).
  2. Em outro dispositivo na mesma rede, acesse http://192.168.1.150:7860.
  3. Certifique-se de que a porta 7860 não está bloqueada pelo firewall do servidor.

3. Interface Web e Utilização Básica

A interface do Gradio oferece três componentes principais:

  1. Campo de Texto: Insira a descrição da cena desejada em inglês.
  2. Área de Upload: Arraste ou selecione o arquivo de vídeo.
  3. Botão de Ação: Inicie o processo de localização.

Exemplo de uso:

  1. Insira o texto: "person typing on a laptop keyboard"
  2. Envie o vídeo alvo (formatos MP4, AVI, MOV suportados).
  3. Clique em "Start Location".
  4. O resultado exibirá intervalos de tempo correspondentes, como:
    00:05:12 - 00:05:30 (Confidence: 0.85)

4. Utilização Programática via Python

4.1 Script de Exemplo

import cv2
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

# Carrega o modelo
locador_temporal = pipeline(
    task=Tasks.video_temporal_grounding,
    model='/caminho/para/o/diretorio_do_modelo'
)

# Define as entradas
descricao = "a woman opens a book and starts reading"
arquivo_video = "/meus_videos/video_longo.mp4"

# Executa a localização
resultado = locador_temporal((descricao, arquivo_video))

# Apresenta os resultados
for idx, tempo in enumerate(resultado['timestamps']):
    confianca = resultado['scores'][idx]
    print(f"Segmento {idx+1}: de {tempo[0]} até {tempo[1]} (confiança: {confianca:.2f})")

4.2 Processamento em Lote

def localizar_multiplos_descricoes(lista_descricoes, caminho_video):
    """
    Processa uma lista de descrições em um mesmo vídeo.
    """
    todos_resultados = []
    for desc in lista_descricoes:
        res = locador_temporal((desc, caminho_video))
        todos_resultados.append({'descricao': desc, 'trechos': res['timestamps']})
    return todos_resultados

# Exemplo de chamada
descricoes_para_buscar = [
    "people shaking hands",
    "whiteboard presentation",
    "coffee break"
]
resultados_grupo = localizar_multiplos_descricoes(descricoes_para_buscar, "meeting.mp4")

5. Otimização e Solução de Problemas

5.1 Dicas para Melhores Resultados

  • Descrições Precisas: Use "man in blue shirt pointing at chart" em vez de "a man".
  • Idioma: Inglês oferece os melhores resultados de correspondência.
  • Simplicidade: Prefira frases diretas e concisas.

5.2 Erros Comuns

Problema: Conexão recusada na porta 7860.
Solução: Verifique as regras do firewall. Exemplo para Linux:
sudo ufw allow 7860/tcp

Problema: Falha ao carregar o modelo.
Solução: Verifique os caminhos e permissões:
ls -la /caminho/para/os/arquivos_do_modelo

Problema: Erro de falta de memória (OOM).
Solução: Reduza a resolução do vídeo de entrada ou processe trechos menores.

5.3 Aceleração do Desempenho

  • Utilize versões otimizadas do PyTorch com CUDA compatível.
  • Para aplicações com carga alta, considere GPUs da série A100.
  • Uma instância Python 3.10+ pode oferecer melhorias de velocidade.

Tags: SOONet video-temporal-grounding Gradio Python API ModelScope

Publicado em 7-4 22:30