>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Python

Como Ensinar um Robô a Ver Objetos Sem Treinamento Longo

Imagine o seguinte: você comprou um novo manipulador ou decidiu construir uma câmera inteligente para classificar peças. Você tem um monte de objetos diferentes — de latas de refrigerante a peças de reposição complexas. O caminho padrão em Visão Computacional hoje é coletar um conjunto de dados, rotular milhares de frames, treinar um modelo e esperar que ele não "derive" sob diferentes condições de iluminação. E se um novo objeto aparecer amanhã? Você terá que começar tudo de novo.

Engenheiros da NVIDIA Research parecem ter se cansado desse ciclo interminável e lançaram o FoundationPose. É um modelo unificado para estimativa de pose 6D (posição e orientação no espaço) e rastreamento de objetos que funciona "pronto para uso" mesmo com objetos que nunca viu durante o treinamento.

Qual é a Principal Característica

Geralmente, as tarefas de Estimativa de Pose 6D são divididas em dois campos. No primeiro, você tem um modelo CAD preciso do objeto (baseado em modelo), e no segundo, você só tem algumas fotos de diferentes ângulos (livre de modelo). O FoundationPose combina essas abordagens.

O projeto é interessante porque não requer ajuste fino para uma tarefa específica. Você simplesmente fornece um modelo 3D ou um conjunto de imagens de referência, e ele imediatamente começa a outputting as coordenadas do objeto no espaço. Atualmente, esta solução ocupa o primeiro lugar no leaderboard mundial do BOP (Benchmark for 6D Object Pose Estimation) entre os métodos para objetos novos.

Como Funciona Por Dentro

Os desenvolvedores usaram vários truques inteligentes para alcançar esse tipo de flexibilidade.

Primeiro, eles aplicaram representação implícita neural. Isso permite que o sistema sintetize novas visualizações do objeto em tempo real, tornando o processo de estimativa de pose idêntico tanto para o caso com um modelo 3D pronto quanto para o caso com algumas fotos.

Segundo, a escala de treinamento é impressionante. O modelo foi treinado em uma enorme quantidade de dados sintéticos. Um ponto interessante: grandes modelos de linguagem (LLM) foram envolvidos na geração desses dados. Isso ajudou a criar cenários e texturas diversos que são difíceis de obter manualmente.

Terceiro, a arquitetura é construída sobre transformers e aprendizado contrastivo. Simplificando, o modelo aprende a comparar o frame atual com uma referência e entender exatamente como o objeto está rotacionado, sem se prender a características específicas de "esta broca particular".

O Que o Projeto Pode Fazer na Prática

Se você olhar os demos no repositório, pode ver três cenários principais de uso:

  1. Robótica. Um robô pega uma garrafa de mostarda que está constantemente se movendo. O sistema consegue recalcular a pose em tempo real, o que é crítico para manipuladores.
  2. Realidade aumentada (AR). Objetos virtuais são "colados" em objetos reais sem tremores e deslocamentos.
  3. Trabalhando com conjuntos de dados complexos. O modelo lida bem com benchmarks clássicos como YCB-Video, onde há muitas oclusões (quando um objeto bloqueia outro).

A propósito, para quem se importa com velocidade em produção, a NVIDIA preparou uma versão ROS com suporte a TensorRT. Isso dá um aumento significativo de FPS através de otimização de GPU.

Como Iniciar e Testar

Implantar projetos de ML assim frequentemente se transforma em inferno de dependências, mas aqui os autores oferecem dois caminhos razoáveis.

O mais simples é o Docker. A equipe preparou uma imagem com todos os truques de CUDA já configurados.

cd docker/
docker pull wenbowen123/foundationpose && docker tag wenbowen123/foundationpose foundationpose
bash docker/run_container.sh

Se você prefere o Conda, o processo é ligeiramente mais complexo, pois você precisará compilar extensões C++ e CUDA manualmente. Você precisará instalar o PyTorch, o PyTorch3D e o NVDiffRast.

Após a configuração, executar o demo é direto:

python run_demo.py

Por padrão, o script mostrará como o modelo rastreia uma garrafa de mostarda dos dados de demo. Primeiro, há a inicialização (estimativa de pose no primeiro frame), e então a mudança automática para o modo de rastreamento.

Nuances e Limitações

Não espere que tudo funcione perfeitamente em qualquer placa de vídeo. Por exemplo, proprietários de RTX 4090 precisarão usar uma imagem Docker personalizada devido às especificidades de novos kernels CUDA.

Outro ponto importante: devido a restrições de licenciamento do Stable Diffusion (que foi usado para gerar algumas texturas para treinamento), os autores não puderam liberar os pesos do modelo treinados com augmentação de difusão. A versão pública é ligeiramente mais simples, então a acurácia pode ser marginalmente menor do que a relatada no artigo de pesquisa oficial.

Quem Se Beneficiará Disso

FoundationPose não é apenas mais uma rede neural de centenas de artigos do CVPR. É uma base pronta para quem trabalha com:

  • Robótica de armazém (onde você precisa adicionar rapidamente novos produtos ao sistema).
  • Controle de qualidade na manufatura.
  • Criação de aplicações interativas de AR.

Se você precisa determinar a posição de objetos no espaço e não quer passar semanas coletando conjuntos de dados para cada novo "pequeno parafuso", este repositório definitivamente vale a pena favoritar. O projeto é ativo, ativamente discutido em Issues, e a liderança no BOP sugere que hoje é um dos métodos SOTA mais fortes em seu nicho.

Projetos relacionados