Líderes de pensamento
Aplicando IA ao Processamento de Vídeo em Tempo Real: Os Básicos e Mais

Por Maksym Tatariants, Cientista de Dados na MobiDev.
Não há nada de novo em usar inteligência artificial (IA) no processamento de vídeo. Se você olhar além do processamento de imagens – é um dos casos de uso mais comuns para IA. E assim como o processamento de imagens, o processamento de vídeo usa técnicas estabelecidas como visão computacional, reconhecimento de objetos, aprendizado de máquina e aprendizado profundo para aprimorar esse processo.
Seja você use visão computacional e NLP na edição de vídeo e geração, reconhecimento de objetos na autotagging de conteúdo de vídeo, aprendizado de máquina para otimizar a análise de vídeo de IA, ou aprendizado profundo para acelerar a remoção de fundo em tempo real, os casos de uso continuam a crescer a cada dia.
Continue lendo para aprender qual abordagem você pode adotar ao usar IA no processamento de vídeo.
Os Básicos do Processamento de Vídeo em Tempo Real
Vamos começar com os básicos. O processamento de vídeo em tempo real é uma tecnologia essencial nos sistemas de vigilância que usam reconhecimento de objetos e facial. É também o processo que alimenta o software de inspeção visual de IA no setor industrial.
Então, como funciona o processamento de vídeo? O processamento de vídeo envolve uma série de etapas, que incluem decodificação, computação e codificação. Aqui está o que você precisa saber:
- Decodificação: O processo necessário para converter um vídeo de um arquivo compactado de volta ao seu formato bruto.
- Computação: Uma operação específica realizada em um quadro de vídeo bruto.
- Codificação: O processo de reconverter o quadro processado de volta ao seu estado compactado original.
Agora, o objetivo de qualquer tarefa de processamento de vídeo é concluir essas etapas o mais rápido e com a maior precisão possível. As maneiras mais fáceis de alcançar isso incluem: trabalhar em paralelo e otimizar o algoritmo para velocidade. Em termos simples? Você precisa aproveitar a divisão de arquivos e a arquitetura de pipeline.
O que é Divisão de Arquivo de Vídeo?
A divisão de arquivo de vídeo permite que os algoritmos trabalhem simultaneamente, permitindo que usem modelos mais lentos e precisos. Isso é realizado dividindo os vídeos em partes separadas que são processadas ao mesmo tempo.
Você pode pensar na divisão de arquivo de vídeo como uma forma de geração de arquivo virtual em vez de geração de subarquivo.
Apesar disso, a divisão de arquivo de vídeo não é a melhor opção para o processamento de vídeo em tempo real. Por quê? Esse processo torna difícil pausar, retomar e rebobinar um arquivo enquanto ele está sendo processado.
O que é Arquitetura de Pipeline?
A outra opção é a arquitetura de pipeline. Esse processo trabalha para dividir e paralelizar as tarefas realizadas durante o processamento, em vez de dividir o vídeo em si.
Aqui está um exemplo rápido do que a arquitetura de pipeline parece na prática e como ela pode ser usada em um sistema de vigilância de vídeo para detectar e desfocar rostos em tempo real.
Nesse exemplo, o pipeline dividiu as tarefas em decodificação, detecção de rostos, desfoque de rostos e codificação. E se você quiser melhorar a velocidade do pipeline, você pode usar técnicas de aprendizado profundo de pipeline.
Decodificação e Codificação Explicadas
E sobre a decodificação e codificação? Existem duas maneiras de concluir esses processos: software e hardware.
Você já pode estar familiarizado com o conceito de aceleração de hardware. Esse processo é possível graças aos decodificadores e codificadores instalados nas placas gráficas NVIDIA mais recentes, bem como os núcleos CUDA.
Então, quais opções você tem disponíveis para aceleração de hardware para os processos de codificação e decodificação? Aqui estão algumas das opções mais populares:
- Compilar OpenCV com Suporte CUDA: Compilar OpenCV com CUDA otimiza tanto a decodificação quanto os cálculos de pipeline que usam OpenCV. Lembre-se – você precisará escrevê-los em C++ desde que o wrapper Python não suporta isso. Mas em situações que exigem tanto decodificação quanto cálculos numéricos com GPU sem copiar da memória CPU, ainda é uma das melhores escolhas disponíveis.
- Compilar FFmpeg ou GStreamer com Suporte a Codecs NVDEC/NVENC: Outra opção é usar o decodificador e codificador NVIDIA incluídos com instalações personalizadas do FFmpeg e Gstreamer. No entanto, sugerimos usar FFmpeg sempre que possível, pois requer menos manutenção. Além disso, a maioria das bibliotecas é alimentada pelo FFmpeg, o que significa que você automaticamente melhorará o desempenho da biblioteca substituindo-a.
- Usar o Framework de Processamento de Vídeo NVIDIA: A última opção é usar um wrapper Python para decodificar o quadro diretamente em um tensor PyTorch na GPU. Essa opção remove a cópia extra da CPU para a GPU.
Detecção e Desfoque de Rostos
Modelos de detecção de objetos (SSDs ou RetinaFace) são uma opção popular para concluir a detecção de rostos. Essas soluções trabalham para localizar o rosto humano em um quadro. E com base em nossa experiência, tendemos a preferir os modelos de rastreamento de rostos Caffe e detecção de objetos TensorFlow, pois forneceram os melhores resultados. Além disso, ambos estão disponíveis usando a biblioteca dnn do OpenCV.
Então, o que vem depois que um rosto é detectado? Em seguida, o sistema baseado em Python e OpenCV revelará caixas delimitadoras e confiança de detecção. Finalmente, um algoritmo de desfoque é aplicado às áreas recortadas.
Como Você Pode Construir um Software de Processamento de Vídeo em Tempo Real com IA?
Não é segredo que o processamento de vídeo, os codecs que o alimentam e tanto o hardware quanto o software necessários são bastante técnicos.
Ainda assim, isso não significa que você não possa usar essas ferramentas para construir seu próprio software de processamento de vídeo em tempo real.
Aqui está uma breve explicação do que você precisa fazer:
- Comece ajustando sua rede neural pré-treinada para concluir as tarefas necessárias.
- Configure sua infraestrutura de nuvem para lidar com o processamento de vídeo e dimensionar conforme necessário.
- Construa uma camada de software para condensar o processo e integrar casos de uso específicos, como aplicativos móveis e painéis de administração ou web.
Desenvolver um MVP para software de processamento de vídeo semelhante pode levar até quatro meses usando uma rede neural pré-treinada e camadas de aplicativo simples. No entanto, o escopo e o cronograma dependem dos detalhes de cada projeto. Na maioria dos casos, faz sentido começar com o desenvolvimento de Prova de Conceito para explorar os detalhes do projeto e encontrar um fluxo ótimo.














