Skill issue: pare de implantar modelos de visão e linguagem, use-os com Skills — Merve Noyan, Hugging Face

AAI Engineer
Computing/SoftwareSmall Business/Startups

Transcript

00:00:00Olá e bem-vindos a esta palestra sobre falta de habilidade. Na verdade, não é mais uma falta de habilidade. Ao final
00:00:22desta palestra, você será capaz de construir muita coisa com os modelos de visão, se é que já não está fazendo isso.
00:00:27Resumidamente sobre mim, eu sou a Merve. Trabalho com visão computacional desde o LLaVA, lá atrás, e ultimamente tenho trabalhado mais com agentes e processamento local, porque fico fascinada e amo tanto os modelos de linguagem e visão que até escrevi um livro sobre isso. Mas não quero mais que os desenvolvedores usem modelos de linguagem e visão diretamente; quero que cada desenvolvedor comece
00:00:54a criar aplicações de visão ponta a ponta, e esta palestra vai te dar uma boa base para isso. O comportamento comum que observo nos desenvolvedores é tentar usar modelos de linguagem e visão para tudo, mas você nunca terá tempo real. E quando digo tempo real, refiro-me a ter uma torradeira
00:01:18e obter 30 ou 40 FPS nela, não importa se você está construindo classificação de imagem, segmentação de instâncias ou o que quer que seja.
00:01:28E eles não são super robustos no sentido de que, se você treinasse algo como um RT-DETR, sobre o qual o Joseph falou na primeira palestra,
00:01:39ele sempre superará o seu modelo de linguagem e visão, e eu vou provar isso hoje.
00:01:47E do lado direito, vocês podem me ver fazendo algumas coisas com o RT-DETR.
00:01:52Outro ponto é que eles não leem as licenças. Sempre que posto algo sobre detecção de objetos, todos me perguntam sobre o YOLO. O YOLO é um bom modelo, mas tem uma licença GPL 3.0, eu acho,
00:02:07e posso jurar pela minha vida que existem desenvolvedores que o implantam sem saber
00:02:12que precisam pagar por ele. Então, sim, quero que vocês migrem para modelos Apache 2.0 hoje.
00:02:23E para isso, construí algo chamado Vibe Vision, meio inspirado nesta publicação do Maziar.
00:02:30Basicamente, o que ele faz é fornecer o modelo SAM 3.1 como uma ferramenta para o Gemma 4 chamar, e achei isso super
00:02:39impressionante. Hoje eu criei um conjunto de ferramentas onde você pode fazer isso com ainda mais recursos.
00:02:49Então, estou meio que resumindo a minha própria experiência. Primeiro, esse conjunto de ferramentas tem meus modelos favoritos como ferramentas,
00:02:57para que você possa entregá-los ao seu agente, porque seu agente de programação é meio leigo em engenharia de visão computacional.
00:03:03E ao aplicar meus critérios, basicamente, sempre que escolho um modelo, eu verifico
00:03:09o seguinte: em primeiro lugar, a licença é a maior prioridade para mim, precisa ser Apache 2.0, MIT ou
00:03:16algo não comercial; em segundo lugar, o desempenho tem que estar à altura, dependendo do tamanho ou
00:03:24das escolhas arquitetônicas, então eu confiro os testes comparativos sempre que sai um modelo de uma conferência de visão computacional;
00:03:31e em terceiro lugar, a intuição e praticidade, obviamente. Esse conjunto tem uma segunda parte, que é meio que uma etapa de treinamento prático,
00:03:41que é a parte mais empolgante, então vou passar por ela primeiro. Eu me coloquei no lugar
00:03:47dos desenvolvedores para criar uma aplicação de visão. Se eu tiver imagens rotuladas, é fácil, posso simplesmente treinar um modelo
00:03:55ou posso dar alguns tutoriais ao meu agente de visão computacional para fazer isso, pois tudo já está disponível,
00:04:02afinal construímos Transformers para isso. Mas se eu tiver apenas imagens, preciso anotá-las, depois avaliar
00:04:11as anotações e só então treinar um modelo. Mas como fazer isso em escala? Você pode usar um modelo
00:04:17de linguagem e visão como rotulador e outro como avaliador, e depois treinar o que quiser. Mas como
00:04:24é essa estrutura de trabalho? Basicamente, eu construí isto e conta com VLM para rotulagem, VLM como
00:04:35avaliador e depois treinamento. É uma tarefa de longo alcance para agentes de programação e tem suporte a várias
00:04:42infraestruturas. Você pode rodar isso localmente ou remotamente; roda na infraestrutura do Hugging
00:04:48Face, onde temos tarefas que permitem processamento em lote pontual ou treinamento.
00:04:54Também temos um sistema de roteamento sem servidor chamado provedores de inferência, onde você pode usar múltiplos
00:05:00provedores, e também temos repositórios de armazenamento para despejar dados intermediários sobre os repositórios de conjuntos de dados,
00:05:07repositórios de modelos e assim por diante. Mas o que viabiliza esse trabalho? Primeiro, meu modelo favorito: RT-DETR.
00:05:17Segmentação RT-DETR: estou trabalhando em segmentação no momento. Temos agentes melhores para tarefas de longo horizonte,
00:05:24já que você precisa acompanhar de perto o processo de rotulagem, de treinamento, etc.
00:05:32E modelos de visão menores, porém mais capazes, permitem rotular dados com um custo muito baixo, e também com
00:05:40Transformers, fizemos reestruturações para a versão 5 e outras melhorias, então o desempenho para modelos de visão está melhor no momento.
00:05:47E é assim que o fluxo realmente funciona: primeiro, eu rotulo o conjunto de dados. Pego um conjunto
00:05:54de imagens qualquer, rotulo esse conjunto de dados com o Qwen 3.5 9B e depois passo o conjunto
00:06:02de dados rotulado para dois avaliadores. O primeiro é o Gemma 4 E4B, que é um avaliador de 8B, e o segundo é o
00:06:10LFM 2.5 VL, de quase 2B, sendo relativamente menor. Basicamente, analisei as pesquisas e é melhor
00:06:18ter um conjunto de avaliadores menores. Além disso, mesclei as avaliações; também consultei a
00:06:26literatura sobre isso e a maioria das pessoas pede ao VLM ou LLM para atribuir uma pontuação, mas essas pontuações
00:06:34absolutamente não funcionam, especialmente se os modelos avaliadores forem de tamanhos diferentes. Depois envio
00:06:40para treinar o RT-DETR médio ou grande. Conversei com o pessoal da Roboflow e eles incentivaram o uso
00:06:47disso, e realmente funciona. Vou mostrar em breve, mas como isso funciona? Você
00:06:55pega o repositório e simplesmente pergunta: “Pode treinar isso? Pode fazer o treinamento com este conjunto de dados
00:07:04no Hub?” E ele começará. Se o conjunto de dados já tiver rótulos, você pode simplesmente ir direto
00:07:11para o treinamento, mas se não tiver, pode começar a anotar. O truque que utilizei
00:07:19foi passar as caixas delimitadoras sobrepostas nas imagens para o avaliador. O Qwen gera tecnicamente
00:07:27caixas delimitadoras como tokens, mas não as envio diretamente; apenas sobreponho as caixas e passo essa imagem
00:07:33junto de alguns rótulos e descrições, e pergunto: “Se esta descrição de rótulo tem uma caixa delimitadora
00:07:40nela, diga-me se aprova ou não”. Quanto ao avaliador, mesclo os vereditos
00:07:49com base na concordância mínima e não no consenso absoluto — e já vou explicar por que fiz dessa forma.
00:07:56Essas descrições de rótulos também são geradas por agentes de programação e você só precisa aprová-las como ser humano.
00:08:03E os modelos que usei neste fluxo possuem todos licenças Apache 2.0, exceto
00:08:10o modelo LFM, que tem um tipo de licença na qual você paga se ultrapassar uma certa quantia de receita,
00:08:19mas dá para usar tranquilamente, é amplo. E para os agentes de programação que estão
00:08:26gerenciando esse fluxo, eu inicialmente o construí com o Opus 4.8 e depois rodei o processo com o GLM 5.2,
00:08:35que faz um bom trabalho em tarefas de longo alcance, para ser franca. Quanto à infraestrutura, trabalho no Hugging
00:08:42Face, tenho muitos créditos de computação e sou super impaciente na vida, então usei uma boa quantidade
00:08:50de hardware para os experimentos, mas fiz os testes e, no geral, custa de três a quatro dólares se você
00:08:58quiser rodar todo esse fluxo para treinar modelos, o que acho incrível. Inicialmente, para o Qwen 3.5, usei
00:09:05servidores sem servidor porque pensei ser conveniente e super barato. Usei o DeepInfra, que é
00:09:12muito barato; se for usar em conjunto, é melhor fazer processamento em lote via tarefas. E
00:09:19para a avaliação, usei as tarefas do Hugging Face, que custam menos. Para o treinamento, usei uma L4,
00:09:27mas o modelo é super pequeno — o RT-DETR é muito leve e você pode usar qualquer outra coisa, até rodar
00:09:33localmente se quiser. Eu só sou impaciente e queria um tamanho de lote grande. Testei isso em dois problemas:
00:09:42primeiro, detecção de placas de trânsito; segundo, análise de documentos. Para a detecção de placas,
00:09:48eu já tinha os rótulos, então comparei com as anotações reais para ver se o fluxo
00:09:54funcionava ou não. Para a análise de documentos, não pude fazer isso porque usei um conjunto
00:10:02de dados de DocVQA e o objetivo era extrair imagens, tabelas, assinaturas e coisas assim,
00:10:08então é uma tarefa nova e eu queria ver se o RT-DETR conseguiria aprender. Primeiro resultado: funcionou, eba!
00:10:19Temos uma precisão média média acima de 50. Para comparar, peguei um conjunto de teste
00:10:29e o passei pelo Qwen, comparando em seguida com as pseudoanotações
00:10:35e com as anotações reais desse conjunto de teste. Há uma pequena diferença, mas era de se esperar,
00:10:42pois o aprendizado veio do Qwen. Além disso, a curva ROC-AUC apresentou um valor muito bom para esse tipo
00:10:50de caso de uso. E para a análise de documentos, ele realmente generalizou, o que acho incrível.
00:10:58Aqui, no resultado do modelo treinado, dá para ver que ele detectou a assinatura, enquanto a anotação do Qwen
00:11:06nesse conjunto de teste a deixou passar. Então, posso dizer que ele generalizou muito bem também.
00:11:12Mas devemos isso ao quão bom o RT-DETR é como arquitetura base, de certa forma. Aqui vocês também podem ver como
00:11:21ele captura as imagens de forma precisa, perfeita. E enquanto construía isso, percebi
00:11:30que eu não sabia muito sobre criar projetos com agentes de visão, então tive várias descobertas sobre o assunto.
00:11:37Em primeiro lugar, há um enorme desequilíbrio na avaliação. Dependendo do problema, o LFM tende a rejeitar
00:11:44muita coisa. Por isso não pude adotar o consenso, porque se eu eliminasse tudo aquilo em que
00:11:50tanto o LFM quanto o Gemma concordassem em remover, ficaria com pouquíssimos exemplos, resultando
00:11:58em uma generalização muito fraca. O que fiz foi: se um deles disser sim, eu aproveito
00:12:04aquele exemplo. E mesmo assim funcionou bem! Mas se você tem um conjunto grande e se importa
00:12:09com a taxa de recuperação, sugiro buscar o consenso ou observar. Na análise de documentos, a diferença
00:12:17não é tão grande. Em segundo lugar, a geração de instruções é um pouco difícil, sendo a única parte em que você,
00:12:28como humano, precisa aprovar. O modelo gera as instruções para o avaliador e então
00:12:35você diz: “Certo, eu aprovo isto”, porque você ainda precisa dar uma olhada no seu
00:12:42conjunto de dados. Não há como escapar disso. Em terceiro lugar — e isso é super interessante —, por mais que o seu
00:12:52agente de programação seja bom — como o Opus 4.8, que é um excelente
00:12:59agente de programação —, ele é leigo como engenheiro de visão computacional e peca no senso comum.
00:13:06Por exemplo, ele aplicava espelhamento horizontal em placas de trânsito ou alterações de cor
00:13:14em semáforos, o que definitivamente corrompe e estraga os conjuntos de dados. Corrigi isso mais tarde,
00:13:21para que você possa dizer se quer ou não aplicar aumento de dados, e seu agente ajudará com isso.
00:13:30E, por fim, a segunda parte deste conjunto de ferramentas são os meus modelos preferidos como ferramentas.
00:13:35Portanto, este repositório cobre os meus modelos favoritos, desde estimativa de profundidade a segmentação zero-shot.
00:13:42E isto é parcialmente alimentado pelos benchmarks do Hugging Face, que lançámos recentemente, talvez há
00:13:48alguns meses. Basicamente, temos uma tabela de classificação de benchmarks e lá
00:13:55você encontra os modelos abertos e os seus resultados de avaliação, podendo comparar diferentes modelos de diferentes
00:14:02tamanhos. Mantenho tudo atualizado, mas também é parcialmente alimentado por mim, que gosto de ler
00:14:13artigos de conferências de visão computacional. Gostaria de dar um destaque a este modelo porque
00:14:20pouca gente o conhece. Basicamente, alguns não conseguem fazer segmentação por referência aberta,
00:14:26como pedir: “Ok, segmenta este carro vermelho”, e ele faz. Mas se disser: “Ok, o carro vermelho ao lado
00:14:33do carro laranja que está ao lado do carro azul”, ele não consegue. Já o Falcon Perception, que é um
00:14:39modelo da TII, consegue fazê-lo e tem apenas 600 milhões de parâmetros com licença Apache 2.0.
00:14:47Por isso, este é o que faz a segmentação zero-shot para mim.
00:14:51E esta é uma lista não exaustiva. Para estimativa de pose, temos a família Sapiens
00:14:58para tarefas centradas no ser humano, onde precisa de fazer deteção de pontos-chave humanos,
00:15:04estimativa de profundidade humana e por aí fora. Para deteção zero-shot, tenho o Moondream 3 e o MM-Grounding-DINO,
00:15:13que é um modelo com licença Apache 2.0 muito bom. É muito pequeno comparado com o Moondream. Disponibilizo
00:15:20múltiplos modelos em vários tamanhos para poder escolher dependendo do seu hardware; se quiser
00:15:25rapidez, escolha a alternativa minuscula. Para OCR, recolhi-os do benchmark de OCR
00:15:34em diferentes tamanhos. E para estimativa de profundidade, descobri que o modelo grande não
00:15:40tem uma licença não comercial, mas os restantes têm, por isso pode usá-los à vontade. Aquele tem
00:15:45licença Apache 2.0 e também vem com suporte para supervision e tracker. Ambos são
00:15:51bibliotecas da Roboflow que permitem fazer rastreio de instâncias, caixas delimitadoras e assim por diante.
00:16:00Planos futuros: primeiro, consigo ouvir-vos a dizer: “Ok, isto não vai funcionar para casos de uso
00:16:06industriais”, porque esses casos têm características diferentes, com peças difíceis de descrever,
00:16:13onde a linguagem natural não é a melhor forma de acesso. Por isso, acho que a deteção guiada por imagem
00:16:21pode ajudar. Se não conhecem a deteção guiada por imagem, basicamente temos uma instância de uma
00:16:27imagem, como um Huggy aqui como exemplo, e depois pede-se ao modelo: “Ok, deteta este objeto nesta imagem
00:16:36em todas as imagens”. Sinto que isso pode ajudar de certa forma em casos de uso industriais onde
00:16:41não se consegue descrever por linguagem natural. Além disso, quero experimentar a fusão por Interseção sobre
00:16:52União (IoU). Basicamente temos caixas anotadas e caixas do juiz, pedimos ao juiz para
00:17:00gerar uma caixa e depois calculamos a Interseção sobre União em vez de pedir ao juiz para rejeitar ou
00:17:06aceitar. De momento, estou a trabalhar no suporte para segmentação. Obrigada por ouvirem. Se
00:17:14quiserem saber mais, tenho um pequeno repositório de visão computacional com tudo sobre
00:17:20fine-tuning, quantização de modelos, modelos multimodais e tudo relacionado com visão, bem como
00:17:27guias de tarefas de transformers. Mantemo-los atualizados e têm muitos tutoriais. Também temos as Hugging Face Skills,
00:17:36que contêm competências específicas para visão computacional, bem como competências de infraestrutura para fazer
00:17:43treino com apenas um prompt. Este é o meu perfil no Twitter e o repositório está no GitHub em
00:17:51mervenoyan/vision-intern. Acho que tenho tempo para uma pergunta. Muito obrigada.
00:18:04Sim, ele está a perguntar se tenho planos para treinar VLMs diretamente, numa espécie de auto-melhoria.
00:18:16Isso seria fantástico, mas primeiro quero resolver a questão de permitir que os programadores treinem
00:18:22modelos específicos para tarefas e os implementem em edge. Depois disso, talvez. Mais alguma pergunta? Sim.
00:18:34Não propriamente, acho que não. Apenas usei porque queria... como o agente de código tem
00:18:44o contexto, queria que ele gerasse o prompt. Talvez mais uma? Ok, muito obrigada.
00:19:04Então...

Description

Merve Noyan wrote a book on vision language models and now wants developers to stop calling them directly. Put one in front of a camera and you will never get real time; a small detector trained for the task runs at forty frames per second on a toaster and beats the VLM anyway. Her other complaint is licensing: people deploy a popular detector without noticing its copyleft license. So she built a toolkit that hands her favorite Apache 2.0 models to a coding agent, which she calls a clueless computer vision engineer, plus what she calls vibe training. Give it a dataset with no labels and it labels images with a nine billion parameter open VLM, passes the overlaid bounding boxes to two smaller VLM judges, merges their verdicts on minimum agreement rather than consensus, and trains RF-DETR. The whole run costs three or four dollars on Hugging Face jobs and inference providers. On road signs the trained detector lands a good mean average precision against ground truth, and on document parsing it generalizes, catching a signature the labeling model itself missed. The findings matter more: one judge rejects far more than the other, so consensus would have left too few examples; the judge prompts still need a human to approve them; and even the best coding agent flips traffic signs horizontally and jitters the color of traffic lights until told not to. She closes with the models as tools half of the toolkit, from a 600 million parameter model that segments the red car next to the orange car to pose, depth, and OCR picks, and plans for image guided detection where words cannot describe the part. Speaker info: - https://x.com/mervenoyann - https://www.linkedin.com/in/merve-noyan-28b1a113a - https://hf.co/merve Timestamps: 0:00 - Why developers should stop reaching for a VLM at runtime 1:51 - Read the license: move to Apache 2.0 models 2:46 - A toolkit for coding agents, the clueless computer vision engineer 3:41 - Vibe training: VLM as labeler, VLMs as judges, then train 5:40 - The pipeline: overlaid boxes, minimum agreement, RF-DETR 8:29 - What it costs: a few dollars end to end 9:40 - Results on road signs and document parsing 11:18 - Findings: judge imbalance, prompt approval, augmentation blunders 13:20 - Favorite models as tools, from segmentation to depth 15:52 - Future plans: image guided detection and IoU merging 17:57 - Q&A

Community Posts

No posts yet. Be the first to write about this video!

Write about this video