Spaces:
Runtime error
Runtime error
| # 🛠️ helpers/ - Ferramentas de IA de Terceiros Adaptadas para ADUC-SDR | |
| Esta pasta contém implementações adaptadas de modelos e utilitários de IA de terceiros, que servem como "especialistas" ou "ferramentas" de baixo nível para a arquitetura ADUC-SDR. | |
| **IMPORTANTE:** O conteúdo desta pasta é de autoria de seus respectivos idealizadores e desenvolvedores originais. Esta pasta **NÃO FAZ PARTE** do projeto principal ADUC-SDR em termos de sua arquitetura inovadora. Ela serve como um repositório para as **dependências diretas e modificadas** que os `DeformesXDEngines` (os estágios do "foguete" ADUC-SDR) invocam para realizar tarefas específicas (geração de imagem, vídeo, áudio). | |
| As modificações realizadas nos arquivos aqui presentes visam principalmente: | |
| 1. **Adaptação de Interfaces:** Padronizar as interfaces para que se encaixem no fluxo de orquestração do ADUC-SDR. | |
| 2. **Gerenciamento de Recursos:** Integrar lógicas de carregamento/descarregamento de modelos (GPU management) e configurações via arquivos YAML. | |
| 3. **Otimização de Fluxo:** Ajustar as pipelines para aceitar formatos de entrada mais eficientes (ex: tensores pré-codificados em vez de caminhos de mídia, pulando etapas de codificação/decodificação redundantes). | |
| --- | |
| ## 📄 Licenciamento | |
| O conteúdo original dos projetos listados abaixo é licenciado sob a **Licença Apache 2.0**, ou outra licença especificada pelos autores originais. Todas as modificações e o uso desses arquivos dentro da estrutura `helpers/` do projeto ADUC-SDR estão em conformidade com os termos da **Licença Apache 2.0**. | |
| As licenças originais dos projetos podem ser encontradas nas suas respectivas fontes ou nos subdiretórios `incl_licenses/` dentro de cada módulo adaptado. | |
| --- | |
| ## 🛠️ API dos Helpers e Guia de Uso | |
| Esta seção detalha como cada helper (agente especialista) deve ser utilizado dentro do ecossistema ADUC-SDR. Todos os agentes são instanciados como **singletons** no `hardware_manager.py` para garantir o gerenciamento centralizado de recursos de GPU. | |
| ### **gemini_helpers.py (GeminiAgent)** | |
| * **Propósito:** Atua como o "Oráculo de Síntese Adaptativo", responsável por todas as tarefas de processamento de linguagem natural, como criação de storyboards, geração de prompts, e tomada de decisões narrativas. | |
| * **Singleton Instance:** `gemini_agent_singleton` | |
| * **Construtor:** `GeminiAgent()` | |
| * Lê `configs/gemini_config.yaml` para obter o nome do modelo, parâmetros de inferência e caminhos de templates de prompt. A chave da API é lida da variável de ambiente `GEMINI_API_KEY`. | |
| * **Métodos Públicos:** | |
| * `generate_storyboard(prompt: str, num_keyframes: int, ref_image_paths: list[str])` | |
| * **Inputs:** | |
| * `prompt`: A ideia geral do filme (string). | |
| * `num_keyframes`: O número de cenas a serem geradas (int). | |
| * `ref_image_paths`: Lista de caminhos para as imagens de referência (list[str]). | |
| * **Output:** `tuple[list[str], str]` (Uma tupla contendo a lista de strings do storyboard e um relatório textual da operação). | |
| * `select_keyframes_from_pool(storyboard: list, base_image_paths: list[str], pool_image_paths: list[str])` | |
| * **Inputs:** | |
| * `storyboard`: A lista de strings do storyboard gerado. | |
| * `base_image_paths`: Imagens de referência base (list[str]). | |
| * `pool_image_paths`: O "banco de imagens" de onde selecionar (list[str]). | |
| * **Output:** `tuple[list[str], str]` (Uma tupla contendo a lista de caminhos de imagens selecionadas e um relatório textual). | |
| * `get_anticipatory_keyframe_prompt(...)` | |
| * **Inputs:** Contexto narrativo e visual para gerar um prompt de imagem. | |
| * **Output:** `tuple[str, str]` (Uma tupla contendo o prompt gerado para o modelo de imagem e um relatório textual). | |
| * `get_initial_motion_prompt(...)` | |
| * **Inputs:** Contexto narrativo e visual para a primeira transição de vídeo. | |
| * **Output:** `tuple[str, str]` (Uma tupla contendo o prompt de movimento gerado e um relatório textual). | |
| * `get_transition_decision(...)` | |
| * **Inputs:** Contexto narrativo e visual para uma transição de vídeo intermediária. | |
| * **Output:** `tuple[dict, str]` (Uma tupla contendo um dicionário `{"transition_type": "...", "motion_prompt": "..."}` e um relatório textual). | |
| * `generate_audio_prompts(...)` | |
| * **Inputs:** Contexto narrativo global. | |
| * **Output:** `tuple[dict, str]` (Uma tupla contendo um dicionário `{"music_prompt": "...", "sfx_prompt": "..."}` e um relatório textual). | |
| ### **flux_kontext_helpers.py (FluxPoolManager)** | |
| * **Propósito:** Especialista em geração de imagens de alta qualidade (keyframes) usando a pipeline FluxKontext. Gerencia um pool de workers para otimizar o uso de múltiplas GPUs. | |
| * **Singleton Instance:** `flux_kontext_singleton` | |
| * **Construtor:** `FluxPoolManager(device_ids: list[str], flux_config_file: str)` | |
| * Lê `configs/flux_config.yaml`. | |
| * **Método Público:** | |
| * `generate_image(prompt: str, reference_images: list[Image.Image], width: int, height: int, seed: int = 42, callback: callable = None)` | |
| * **Inputs:** | |
| * `prompt`: Prompt textual para guiar a geração (string). | |
| * `reference_images`: Lista de objetos `PIL.Image` como referência visual. | |
| * `width`, `height`: Dimensões da imagem de saída (int). | |
| * `seed`: Semente para reprodutibilidade (int). | |
| * `callback`: Função de callback opcional para monitorar o progresso. | |
| * **Output:** `PIL.Image.Image` (O objeto da imagem gerada). | |
| ### **dreamo_helpers.py (DreamOAgent)** | |
| * **Propósito:** Especialista em geração de imagens de alta qualidade (keyframes) usando a pipeline DreamO, com capacidades avançadas de edição e estilo a partir de referências. | |
| * **Singleton Instance:** `dreamo_agent_singleton` | |
| * **Construtor:** `DreamOAgent(device_id: str = None)` | |
| * Lê `configs/dreamo_config.yaml`. | |
| * **Método Público:** | |
| * `generate_image(prompt: str, reference_images: list[Image.Image], width: int, height: int)` | |
| * **Inputs:** | |
| * `prompt`: Prompt textual para guiar a geração (string). | |
| * `reference_images`: Lista de objetos `PIL.Image` como referência visual. A lógica interna atribui a primeira imagem como `style` e as demais como `ip`. | |
| * `width`, `height`: Dimensões da imagem de saída (int). | |
| * **Output:** `PIL.Image.Image` (O objeto da imagem gerada). | |
| ### **ltx_manager_helpers.py (LtxPoolManager)** | |
| * **Propósito:** Especialista na geração de fragmentos de vídeo no espaço latente usando a pipeline LTX-Video. Gerencia um pool de workers para otimizar o uso de múltiplas GPUs. | |
| * **Singleton Instance:** `ltx_manager_singleton` | |
| * **Construtor:** `LtxPoolManager(device_ids: list[str], ltx_model_config_file: str, ltx_global_config_file: str)` | |
| * Lê o `ltx_global_config_file` e o `ltx_model_config_file` para configurar a pipeline. | |
| * **Método Público:** | |
| * `generate_latent_fragment(**kwargs)` | |
| * **Inputs:** Dicionário de keyword arguments (`kwargs`) contendo todos os parâmetros da pipeline LTX, incluindo: | |
| * `height`, `width`: Dimensões do vídeo (int). | |
| * `video_total_frames`: Número total de frames a serem gerados (int). | |
| * `video_fps`: Frames por segundo (int). | |
| * `motion_prompt`: Prompt de movimento (string). | |
| * `conditioning_items_data`: Lista de objetos `LatentConditioningItem` contendo os tensores latentes de condição. | |
| * `guidance_scale`, `stg_scale`, `num_inference_steps`, etc. | |
| * **Output:** `tuple[torch.Tensor, tuple]` (Uma tupla contendo o tensor latente gerado e os valores de padding utilizados). | |
| ### **mmaudio_helper.py (MMAudioAgent)** | |
| * **Propósito:** Especialista em geração de áudio para um determinado fragmento de vídeo. | |
| * **Singleton Instance:** `mmaudio_agent_singleton` | |
| * **Construtor:** `MMAudioAgent(workspace_dir: str, device_id: str = None, mmaudio_config_file: str)` | |
| * Lê `configs/mmaudio_config.yaml`. | |
| * **Método Público:** | |
| * `generate_audio_for_video(video_path: str, prompt: str, negative_prompt: str, duration_seconds: float)` | |
| * **Inputs:** | |
| * `video_path`: Caminho para o arquivo de vídeo silencioso (string). | |
| * `prompt`: Prompt textual para guiar a geração de áudio (string). | |
| * `negative_prompt`: Prompt negativo para áudio (string). | |
| * `duration_seconds`: Duração exata do vídeo (float). | |
| * **Output:** `str` (O caminho para o novo arquivo de vídeo com a faixa de áudio integrada). | |
| ### https://huggingface.co/spaces/ByteDance-Seed/SeedVR2-3B/tree/main | |
| --- | |
| ## 🔗 Projetos Originais e Atribuições | |
| (A seção de atribuições e licenças permanece a mesma que definimos anteriormente) | |
| ### DreamO | |
| * **Repositório Original:** [https://github.com/bytedance/DreamO](https://github.com/bytedance/DreamO) | |
| ... | |
| ### LTX-Video | |
| * **Repositório Original:** [https://github.com/Lightricks/LTX-Video](https://github.com/Lightricks/LTX-Video) | |
| ... | |
| ### MMAudio | |
| * **Repositório Original:** [https://github.com/hkchengrex/MMAudio](https://github.com/hkchengrex/MMAudio) | |
| ... |