Componentes para o Design de Sistemas de Visão de Máquina

Criada: Agosto 13, 2021
Atualizada: Julho 1, 2024

 

Câmeras inteligentes, visão computacional, visão de máquina... não importa como você chame, aplicações de visão estão se tornando comuns em mais produtos. A aplicação clássica com a qual a maioria dos projetistas de PCBs está familiarizada é a manufatura, e mais recentemente com o reconhecimento facial em seu smartphone. Os projetistas que regularmente trabalham com designs e sistemas de visão de máquina estão vendo muitas aplicações únicas em medicina, automotivo, robótica, aeroespacial, segurança e certamente em outras áreas.

 

Uma coisa interessante que acontece na indústria eletrônica é a facilidade com que nova tecnologia pode ser integrada em novos sistemas à medida que continua a proliferar. A visão de máquina certamente cruzou o limiar até o ponto onde a padronização, suporte ao desenvolvedor e uma riqueza de componentes estão disponíveis para projetistas que querem inovar nesta área. Hoje, existem várias plataformas de hardware populares que são uma opção de nível de entrada para projetistas mais novos. Se você está além da prototipagem e está preparando hardware de produção, processadores mais novos estão habilitando sistemas mais integrados que aproveitam tecnologias avançadas como aprendizado de máquina.

 

Neste guia, exploraremos alguns dos componentes necessários para construir sistemas de visão de máquina e os recursos disponíveis para desenvolvedores embarcados. Sistemas de visão de máquina têm um importante elemento de engenharia de hardware e mecânica, já que estamos lidando com câmeras e ópticas. O desenvolvimento desses sistemas é muito rico, com tarefas abrangendo múltiplas disciplinas. Felizmente, fabricantes de componentes e desenvolvedores de código aberto têm acesso a muitos recursos para ajudar a acelerar o design de hardware e o desenvolvimento de sistemas, e desenvolvedores interessados são encorajados a olhar para alguns dos exemplos que mostraremos aqui para começar.

Arquitetura do Sistema de Visão de Máquina

Em termos de eletrônica, sistemas de visão de máquina têm uma arquitetura um tanto genérica comparada a outros sistemas. O diagrama de blocos mostrado abaixo ilustra uma arquitetura de alto nível genérica que é implementada em sistemas de visão de máquina. Esses sistemas podem ter níveis variados de integração e formatos, com alguns dos blocos mostrados abaixo possivelmente integrados em um processador mais poderoso.

 

Arquitetura de sistema de visão de máquina de alto nível

Não existe um sistema de visão de máquina quintessencial que possa ser usado como referência para outros designs, pois visão de máquina é uma capacidade, não um produto ou tipo específico de design. Sistemas de visão de máquina têm características comuns como mostrado no diagrama de blocos acima, mas são implementados com diferentes conjuntos de componentes. Em vez de lançar listas de componentes para suportar sistemas de visão de máquina, precisamos começar no nível do processador para ver como algoritmos de processamento de imagem podem ser implementados de forma eficiente.

FPGA, MPU ou GPU?

MCUs ou SoCs baseados em MCU sempre foram populares, mesmo para sistemas que implementam capacidades de visão de máquina. MCUs com interfaces digitais padrão podem se conectar a ASICs mais especializados para processamento de visão, enquanto FPGAs podem ser grandes o suficiente para implementar aquisição de imagem em linha, funções de DSP e outros processamentos a nível de sistema. GPUs podem fornecer um processador de visão externo dedicado que fornece dados de volta ao controlador host.

 

 

 

Em termos de nível de avanço, as arquiteturas MPU + FPGA ou MPU + GPU são preferíveis para visão de máquina quase em tempo real. Elas também são preferíveis para processar imagens de maior resolução, pois o FPGA/GPU pode implementar paralelização, o que reduz o tempo de processamento quando é necessário processar alta resolução/profundidade de cor. Esta é a principal vantagem do FPGA, pois a lógica é flexível, embora a gestão e os algoritmos para processamento avançado sejam mais difíceis de desenvolver sem experiência prévia.

 

Isso não quer dizer que MCUs e MPUs não possam ser usados como controladores host em aplicações de visão de máquina. Por exemplo, seu telefone e computador não usam esses e eles podem realizar algumas tarefas de processamento de imagem mais simples a partir de vídeo de baixa taxa de quadros e imagens estáticas. Para ser justo, o CPU/SoC desses dispositivos tende a ter muito mais capacidade de computação do que um MPU de alta gama. Um MCU poderia ser usado para processamento de imagem de baixa resolução, baixa taxa de quadros, menor profundidade de cor ou monocromático, e à medida que você adiciona mais capacidade de computação, você pode lidar com imagens mais detalhadas. MPUs são uma opção melhor na produção, pois você pode precisar acessar memória externa de alta velocidade, o que significa que você precisará de uma interface DDR RAM e possivelmente PCIe para alguns periféricos, algo que você normalmente não encontrará em um MCU mais lento.

Aplicação Específica vs. Generalizada

Se você deseja implementar algoritmos de reconhecimento e segmentação de imagem mais avançados em seu sistema, então você pode optar por um SOM, COM ou computador de placa única como o controlador principal para sua aplicação de visão de máquina. Se um processador tem memória on-chip suficiente e RAM externa, ele pode normalmente implementar a maioria das tarefas de aquisição e processamento enquanto também executa uma aplicação para controlar o resto do seu sistema. Essas arquiteturas são frequentemente usadas para tarefas de segmentação de imagem baseadas em limiar e detecção de objetos em aplicações muito específicas de dados de vídeo de baixa a moderada taxa de quadros.

Desafios no Design de Visão de Máquina

Como muitos outros designs que operam essencialmente com sinais analógicos de baixo nível, sistemas e designs de visão de máquina têm seu próprio conjunto de desafios elétricos que precisam ser considerados. Algumas das soluções estão no nível de processamento de imagem, outras estão no nível do sistema e se relacionam com a seleção de componentes. Aqui estão alguns dos principais desafios que os designers devem considerar no design de visão de máquina:

 

  • Gestão de calor: Câmeras de alta resolução montadas em placas em sistemas mais compactos podem receber muito calor durante a operação, o que pode exigir dissipação de calor ou fluxo de ar através do invólucro para se manterem frias. Sistemas com processadores menores e placas maiores geralmente conseguem se manter frios por conta própria, mas placas menores com processadores mais rápidos podem exigir um material de interface colado ao invólucro para remover o calor.

  • EMI/EMC: Como os sistemas de visão de máquina são geralmente sistemas de sinal misto, eles exigem um layout adequado para evitar interferência entre componentes digitais e a saída de um sensor CMOS ou CCD. CMOS pode ser uma opção melhor, pois a conversão de dados é feita no nível do chip. Para garantir uma recuperação de imagem precisa em sistemas compactos com processamento rápido, certifique-se de implementar algumas melhores práticas para supressão de EMI.

  • Integridade de energia: Sistemas de visão e sistemas HMI podem experimentar problemas de integridade de energia se o layout não for construído adequadamente, mesmo no caso de o design não estar operando com componentes ou protocolos de alta velocidade. Isso pode parecer um problema que pode ser filtrado, mas não é o caso. Em vez disso, a solução pode ser tão simples quanto garantir que um plano de terra seja colocado para rotear todos os sinais digitais que chegam à placa principal.

  • Montagem de ópticas: Sistemas de visão exigem ópticas para definir planos de objeto e imagem, e para formar imagens claras no sensor de imagem para que a aquisição de dados possa ocorrer. Sistemas de visão de máquina modernos precisam de uma montagem estável com baixa histerese e possivelmente foco automático com controle de motor integrado. Este é um desafio de design mecânico, bem como um desafio de design elétrico, onde este último envolve consumo de energia em um circuito de controle de motor e temporização.

 

Componentes que você precisará

Obviamente, não podemos mostrar todos os componentes possíveis neste artigo, pois seria simplesmente muito longo. O que podemos fazer é dar-lhe uma boa lista de componentes que você pode usar para começar a construir diferentes partes do seu sistema. Na lista abaixo, incluí alguns componentes de exemplo de cada parte de um novo sistema que você pode usar para começar:

 

  • MCUs como STM32 e MSP430 são ótimas opções para executar um sistema de visão computacional leve e implementar algumas tarefas de inferência de IA mais simples.

  • Para algo com muito mais capacidade de processamento, a plataforma Zynq FPGA é uma ótima opção para sistemas de visão computacional. A Xilinx também oferece muito suporte para desenvolvedores de sistemas de visão computacional baseados em Zynq.

  • Sensores de imagem CMOS e sensores CCD podem ser monocromáticos ou coloridos, e eles vêm em uma variedade de resoluções. Algo como o MT9P031I12STC-DR1 da ON Semiconductor é um bom exemplo de um sensor CMOS colorido para aplicações de visão computacional de alta resolução.

  • Para desenvolver uma aplicação de alto nível, OpenCV é um excelente conjunto de bibliotecas de código aberto que inclui muitas das funções padrão de processamento de imagem usadas em sistemas de visão computacional. Existem outras bibliotecas de código aberto online que podem ser usadas para o desenvolvimento de aplicações mais especializadas.

 

Eu recomendaria um GPU ou FPGA para tarefas mais generalizadas como reconhecimento de imagem, segmentação e identificação de objetos com rastreamento em dados de vídeo sem aplicar pré-processamento específico da aplicação (ou seja, a partir de imagens brutas). Menciono isso aqui porque precisamos considerar como interagir com o sensor de imagem, e o sensor precisa ser compatível com o processador. Em um FPGA, a lógica de aquisição e o processamento subsequente podem ser implementados em paralelo ao lado do restante da lógica para a aplicação.

 

Uma plataforma de hardware aberto popular que pode ser usada para o desenvolvimento do sistema é OpenMV. Esses módulos de câmera incorporam lógica para aquisição de imagem, hardware para montagem de elementos ópticos e uma PCB para garantir EMI/EMC e SI/PI. Eles também são compatíveis com MCUs STM32 e outras plataformas. Este é um bom sistema para desenvolvedores de aplicações que querem usar um processador externo como o controlador host para uma aplicação maior no sistema, mas sem se envolver demais no desenvolvimento e depuração de hardware.

 

Módulo de câmera M7 (à esquerda) e Módulo Adaptador FLIR Lepton (à direita).

 

Integrando Projetos de Visão Computacional com a Nuvem

A visão computacional é extremamente útil em todas as suas formas, e não deveríamos nos surpreender que soluções avançadas baseadas em MCU, MPU ou FPGA devam ser integradas à nuvem. Dependendo de como o processamento na nuvem é aproveitado, pode ser mais vantajoso deslocar o processamento para o centro de dados em vez de realizá-lo na borda, então um MCU ou MPU leve poderia ser usado. Quando o processamento rápido é necessário em campo, as tarefas de processamento devem ser realizadas no campo com um controlador hospedeiro mais poderoso (FPGA, MPU + FPGA ou MPU + GPU). Novamente, a escolha depende da quantidade de pré-processamento que você realiza no dispositivo para limpar e comprimir imagens antes de enviá-las para a nuvem para processamento.

 

Para aplicações de IA/ML envolvendo visão computacional, algumas empresas fornecem SoCs e ASICs como complemento para processadores mais lentos ou como módulos adicionais para SBCs. Google Coral é uma dessas opções, atuando como um processador dedicado para executar modelos TensorFlow Lite envolvendo inferência a partir de dados de imagem. Outras opções estão chegando ao mercado de startups que estão visando inferência de IA para múltiplos fluxos de vídeo, idealmente substituindo GPUs por pacotes menores.

 

Sistemas de visão computacional precisam fazer muito mais do que apenas capturar e processar imagens. Os sistemas de hoje estão conectados, eles se interfaceiam com múltiplos sensores, Alguns outros componentes que você pode precisar para o seu sistema de visão computacional incluem:

 

 

O design de sistemas de visão computacional requer expertise em múltiplas áreas e colaboração com uma equipe, mas a seleção de componentes para esses sistemas não deveria ser difícil. Quando você precisar encontrar componentes para sua aplicação de visão computacional, use os recursos avançados de busca e filtragem no Octopart. Ao usar o motor de busca de eletrônicos do Octopart, você terá acesso a dados atualizados de preços de distribuidores, inventário de peças e especificações de peças, e tudo isso é livremente acessível em uma interface amigável. Dê uma olhada na nossa página de circuitos integrados para encontrar os componentes de que precisa.

Fique atualizado com nossos últimos artigos ao inscrever-se em nossa newsletter.

Recursos relacionados

Retornar a página inicial
Thank you, you are now subscribed to updates.