2 pontos por GN⁺ 4 일 전 | 1 comentários | Compartilhar no WhatsApp
  • Para encontrar momentos específicos sem precisar rever manualmente 2.207 vídeos de ciclismo feitos com GoPro, os vídeos foram indexados e pesquisados com modelos de ML locais, e os melhores clipes podem ser enviados direto para a timeline do DaVinci Resolve
  • Usando uma versão desktop otimizada para Apple Silicon, como o M1 Max, é possível pedir cenas desejadas a um agente conversacional e enviá-las diretamente para a timeline de edição
  • Foi montado um pipeline de indexação com transcrição via OpenAI Whisper, análise de frames (reconhecimento facial, detecção de objetos, texto na tela e descrição de cena) e embeddings em banco de dados vetorial
  • Para indexar 628 vídeos (668,68 GB, 15h 13min 18s), foram necessárias 67h 40min 42s de processamento, cerca de 4,4 vezes mais lento que a reprodução em tempo real
  • Todo o processamento é feito na GPU/CPU local, permitindo pesquisar bibliotecas grandes de vídeo sem nuvem, e o projeto ainda está em desenvolvimento

Visão geral do projeto e motivação

  • O autor guarda 2.207 vídeos de GoPro gravados em jornadas de ciclismo em um único SSD e queria conseguir buscar os momentos mais marcantes sem precisar rever tudo
  • Embora a maior parte dos momentos tenha sido gravada com a GoPro, encontrar os melhores trechos exigia assistir aos vídeos completos, o que era ineficiente
    • Histórico de ciclismo: em 2024, Casablanca→Imsouane (mais de 470 km em 5 dias); em 2023, Kenitra→Tangier (220 km em um dia e meio); além de viagens de mountain bike entre esses trajetos
  • Para resolver esse problema, ele criou o projeto edit-mind
  • Repositório no GitHub: https://github.com/IliasHad/edit-mind

Por que usar o app desktop

  • Foi escolhida a versão desktop otimizada para Apple Silicon, que permite encontrar os momentos desejados com um agente conversacional e enviá-los diretamente para a timeline de edição do DaVinci Resolve
  • A versão em Docker não consegue acessar a GPU do M1 Max, então não aproveita o desempenho gráfico
  • O app desktop usa um processo de indexação semelhante ao da versão source-available

Processo de indexação

  • Ao selecionar uma pasta no app desktop, ele procura apenas vídeos que começam com GX para diferenciá-los dos vídeos do celular
  • Se houver trilha de áudio, o vídeo completo é transcrito com o modelo OpenAI Whisper
  • Depois disso, é executado um pipeline de análise de frames, que divide o vídeo em cenas individuais na taxa de 1 quadro por segundo (1 fps)
    • Inclui plugin de reconhecimento facial com dados faciais customizados, detecção de objetos, texto na tela, tipo de tomada e descrição da cena
  • Os dados de rostos, transcrição e descrição de cada cena são transformados em texto de documento e embeddados em um banco vetorial local
    • Os frames das cenas também são embeddados em uma coleção de banco vetorial de embeddings visuais para busca por imagem, e o áudio das cenas é tratado da mesma forma
  • No fim, são obtidas 3 coleções de banco vetorial com informações dos vídeos
    • Incluindo metadados de localização, nome da câmera, rostos reconhecidos, objetos detectados, texto na tela, transcrição e descrição de cada cena

Métricas de desempenho

  • Os números referem-se ao processamento dos vídeos indexados usando a GPU e a CPU do equipamento, e não são valores finais, já que o projeto ainda está em desenvolvimento
  • Métricas gerais

    • Vídeos indexados: 628
    • Volume total dos vídeos: 668,68 GB
    • Duração total dos vídeos: 15h 13min 18s
    • Tempo total de processamento: 67h 40min 42s
    • Velocidade em relação à reprodução: 0,22x, ou seja, cerca de 4,4 vezes mais lento que a reprodução
    • Frames analisados: 57.537
  • Análise por etapa (tempo total / média por vídeo / participação no processamento)

    • Transcrição: 25h 12min 54s / 2min 25s / 37,3%
    • Análise de frames: 24h 55min 42s / 2min 23s / 36,8%
    • Criação de cenas: 48min 0s / 5s / 1,2%
    • Embedding de texto: 36min 42s / 5s / 0,9%
    • Embedding visual: 11h 49min 17s / 1min 9s / 17,5%
    • Embedding de áudio: 4h 18min 7s / 27s / 6,4%

Função de busca

  • O autor prefere consultar os vídeos por meio de um assistente de chat, com a opção de enviar os resultados diretamente para a timeline de edição do DaVinci Resolve
  • No modo avançado de indexação, usar o modelo Qwen2.5-VL-7B-Instruct pode gerar dados de indexação que entendem e descrevem melhor os vídeos, mas a velocidade de indexação fica menor
  • Com esse método, ele indexa os vídeos da GoPro, busca e envia as cenas desejadas e monta vídeos com bons clipes

Comparação de hardware e estágio de desenvolvimento

  • Em uma GPU NVIDIA como a RTX 3060 (12 GB de VRAM), a execução foi mais rápida do que no M1 Max
  • O projeto ainda está em desenvolvimento, com melhorias em andamento para otimizar precisão e velocidade

Exemplos de prompts de uso

  • "Encontrar todos os clipes em que um cachorro late enquanto estou andando de bicicleta"
  • "Criar um highlight reel com os momentos mais bonitos e interessantes da viagem de bicicleta"
  • "Mostrar os momentos de pedalada em primeira pessoa mais rápidos em que o som do vento pode ser ouvido e enviar para o DaVinci Resolve, removendo cenas duplicadas"

1 comentários

 
GN⁺ 4 일 전
Comentários no Hacker News
  • É curioso que, há poucos dias, eu fiz praticamente a mesma coisa em uma máquina parecida com uma técnica semelhante, e isso também foi parar na primeira página do HN
    https://news.ycombinator.com/item?id=48222733
    https://blog.simbastack.com/indexed-a-year-of-video-locally/
    Eu não conhecia este projeto, mas achei interessante
    Estou tentando adicionar mais recursos relacionados a fotos ao Framedex, e é um momento empolgante porque cada vez mais coisas podem ser feitas localmente

    • Meu projeto foi mencionado nos comentários quando o post estava na primeira página, então fui conferir
      Tanto o post quanto o projeto eram bons, e os modelos locais estão ficando cada vez melhores
  • Acho que esse tipo de trabalho vai acabar sendo feito com LLMs locais
    Rodar LLMs rápidos, pequenos e poderosos localmente para indexar dados pessoais como imagens, vídeos e documentos, enriquecer isso e aplicar tags com base nos metadados enriquecidos
    Se você quiser agrupar por pessoa, pode pesquisar os metadados com tags e agrupar; se quiser encontrar uma imagem por descrição, também usa os metadados com tags; se quiser organizar qualquer coisa, usa os metadados com tags
    Espero que isso acabe com o caos da organização de arquivos

  • Ao ver “rodar o pipeline de análise de frames divide o vídeo em cenas separadas (cada 1 segundo ou 1fps)” e “57.537 frames analisados”, isso faz sentido
    Esse número parece bem mais realista do que “669GB”, e o tamanho total real dos frames processados provavelmente foi algo em torno de 10~30GB
    Isso só mostra que, para fazer em casa, sempre é preciso calcular a viabilidade; não é para diminuir o trabalho
    Se o “tempo total de computação foi 67 horas, 40 minutos e 42 segundos”, fico curioso se existe alguma opção paga para fazer esse processo mais rápido. Seria só subir uma instância com GPU?

    • “669GB” é o tamanho total das filmagens brutas usadas no processamento do vídeo, e cada frame foi reduzido para 720p para acelerar o processamento
      Pelo que sei, não é preciso a qualidade total original para obter resultados precisos, e os experimentos também mostraram isso
      Até agora, GPUs NVIDIA como uma RTX 3060 com 12GB de VRAM foram bem mais rápidas que o M1 Max, e ainda estou otimizando velocidade e precisão
  • Um recurso que foi mais agradável do que eu esperava é o Google Photos e o Apple Photos me enviarem fotos de lembranças e coletâneas de vários momentos da minha vida e da vida dos meus filhos ao longo dos últimos 10 anos
    Acho que, no futuro, a IA vai facilitar cada vez mais criar pequenos vídeos de compilação agradáveis de assistir, então estou bastante otimista em gravar mais vídeos das crianças

    • Os modelos de machine learning open source estão ficando cada vez melhores
      Fiz um pequeno experimento gerando um vídeo no estilo retrospectiva anual do Spotify, e há uma prévia aqui https://github.com/IliasHad/edit-mind/tree/expirement/year-i...
    • Você usa Android e iOS ao mesmo tempo, ou existe alguma outra vantagem em manter sua mídia pessoal nos dois?
    • Você acha aceitável o Google usar crianças para treinar modelos e algoritmos de anúncios?
      Daqui a alguns anos, você vai receber algo como “veja a nova bicicleta barata da BIKE BRAND, lembra que você andava de bicicleta da BIKE BRAND antigamente?”
  • O DaVinci 21 já vem com um recurso de indexação embutido chamado AI IntelliSearch
    Não é para diminuir o trabalho, mas isso agora é um recurso oferecido a muitos usuários. Como tem AI no nome, provavelmente é exclusivo para usuários do Studio

    • Ainda não olhei isso
      Mas tenho curiosidade se ele faz upload dos vídeos para a nuvem ou se processa localmente
      E também se é possível fornecer dados faciais personalizados para ajudar a rotular rostos nos vídeos
      Acho que o Adobe Premiere Pro também tem algo parecido, mas pelo que sei é processamento em nuvem
  • Ficou muito bom
    Não entendi muito bem como os reels são montados por meio do agente
    É algo como uma chamada de ferramenta de IA que recebe links de imagem e cria um reel em alguma ferramenta de edição de vídeo? Ou é um método que corta trechos antes e depois dos timestamps retornados pelo índice para uma consulta específica e depois junta tudo?

    • Estou usando RAG e indexei todas as cenas dos vídeos individualmente em um banco de dados vetorial
      Quando você faz um pedido ao agente, o modelo no Ollama entende a solicitação e usa as ferramentas de busca disponíveis. A busca pode ser feita por texto transcrito, rostos, informação visual, áudio ou uma combinação disso
      É parecido com a forma como Claude ou ChatGPT usam ferramentas de busca na web para encontrar informações online
      Depois, uso o Ollama para filtrar as cenas de vídeo e mostrar cenas mais precisas e com menos duplicação, e envio esse resultado para a API do DaVinci Resolve para montar uma timeline com os clipes de vídeo
  • Funciona também para coletâneas de pornô?

    • Para esse uso, acho que seria preciso um LoRA. A recusa a conteúdo pornográfico é forte
      Ou talvez fosse preciso um modelo sem censura, mas não sei se isso também funciona para visão
      Talvez você também queira adicionar algo como fine-tuning de YOLO para detecção de cenas e reconhecimento facial
    • Fazendo as perguntas importantes
    • Não sei por que sempre aparece a mesma pergunta
      Quando postei o projeto no Reddit, recebi exatamente a mesma pergunta
    • Quando usei o Whisper no passado, ele chegou a alucinar um diálogo sofisticado ouvindo apenas sons de tapas e gemidos, e levou vários minutos para despejar isso linha por linha
    • Não sei se foi sarcasmo, mas acho uma pergunta interessante
      Como o DeepSeek roda localmente, será que seria útil para esse tipo de uso?
  • Fiquei surpreso ao descobrir que a CPU do M1 Max é ARM/SoC e ainda assim comparável a um Intel i9 de 11ª geração
    Entendi direito? O Windows ARM teria desempenho parecido em CPUs desse tipo?
    Referência: https://www.cpubenchmark.net/compare/4585vs4245/Apple-M1-Max...

    • Por vários motivos, isso é mais uma comparação de coisas bem diferentes, mas os dois fatores com maior impacto são estes
      Graças à memória “unificada”, é possível usar toda a memória do sistema como se fosse VRAM, e também há aceleradores dedicados auxiliares para IA
      Por causa desses dois pontos, os chips Apple Silicon podem superar CPUs comuns com folga nesse tipo de carga de trabalho de modelos de IA
      Não sei até que ponto isso é possível no Windows ARM, mas sei que eles usam chips Qualcomm Snapdragon
    • Não tem comparação
      O M1 Max tem largura de banda de memória de 400GB/s, e até o mais novo topo de linha Snapdragon X2 Elite tem 228GB/s
    • Dizer que são “comparáveis” pode até fazer algum sentido se estiver falando de desempenho single-core, mas em largura de banda de memória o M1 Max é cerca de 8 vezes mais rápido
      Por causa do barramento mais largo e da latência menor, não dá nem para comparar
    • Não posso confirmar nem negar essa pergunta
      Ainda não tentei este projeto em uma máquina Windows nem em uma máquina com esse tipo de configuração
  • https://archive.is/O6CLQ
    Tentei ler o post, mas infelizmente o site principal estava mostrando um erro do Cloudflare

    • Pode verificar de novo? Não sei bem por que estaria aparecendo um erro do Cloudflare
  • O link é https://iliashaddad.com/blog/i-indexed-669-gb-of-my-gopro-vi...