Aprendendo ONNX para negociação - página 12

 

Integrando modelos de ML do scikit-learn com ML.NET usando ONNX - grupo de usuários práticos de ML.NET 18/02/2022



Integrando modelos de ML do scikit-learn com ML.NET usando ONNX - grupo de usuários práticos de ML.NET 18/02/2022

Neste vídeo, o palestrante discute a integração dos modelos de aprendizado de máquina Scikit-learn com o ecossistema .NET usando ONNX. Eles usam a pontuação de leads no campo de marketing digital como um exemplo prático de como construir, implantar e testar modelos de aprendizado de máquina para sistemas de clientes. O apresentador explica o processo de lead scoring e destaca a importância de construir uma ferramenta automatizada que maximize a eficiência das equipes de marketing e vendas. O palestrante discute o desafio de implantar modelos de aprendizado de máquina para sistemas clientes e apresenta o ONNX como solução. Eles fornecem uma visão geral das ferramentas, pacotes e técnicas usadas para integrar modelos Scikit-learn ML com ML.NET usando ONNX. O palestrante demonstra como construir e serializar um modelo de regressão logística, convertê-lo para o formato ONNX e executar o modelo ONNX antes de integrá-lo ao ecossistema .NET usando o Azure Functions. No geral, este vídeo serve como um guia prático para desenvolvedores que procuram integrar modelos Scikit-learn ML com o ecossistema .NET usando ONNX.

Nesta sessão prática de grupo de usuários de ML.NET, o apresentador demonstra o uso do formato ONNX para criar um modelo ONNX de pontuação de leads que pode ser incorporado ao ecossistema Dot Net. A implementação pode ser usada em paralelo com o ML.NET, permitindo a execução de modelos ONNX usando o ONNX runtime enquanto realiza aprendizado de máquina usando ML.NET. O apresentador compartilha um repositório GitHub que contém as técnicas utilizadas, bibliotecas e instruções passo a passo para a construção do modelo ONNX. O uso do formato ONNX permite um mecanismo de tempo de execução de plataforma cruzada e ajuda a preencher a lacuna entre cientistas de dados e desenvolvedores de aplicativos. O valor da sessão está na implementação prática de um sistema de prova de conceito, que pode ser usado com outros algoritmos.

  • 00:00:00 Nesta seção, o palestrante apresenta seu tópico de integração de modelos de aprendizado de máquina Scikit-learn no ecossistema .NET e demonstra um exemplo prático de como fazer isso. Eles também discutem o Open Neural Network Exchange Format (ONNX) e como ele ajuda a implantar modelos no ecossistema .NET. O palestrante apresenta o projeto de lead scoring de sua equipe na área de marketing digital, utilizando seus conhecimentos do domínio do negócio para desenvolver uma ferramenta complementar que automatize o processo de lead scoring. Eles fornecem uma breve visão geral do processo de pontuação de leads e enfatizam a importância de construir um sistema que esteja funcionando no final do dia.

  • 00:05:00 Nesta seção, o palestrante explica o processo de conversão de leads e a necessidade de aprendizado de máquina para otimizar o processo de geração e pontuação de leads. O palestrante destaca a importância do big data gerado pelas equipes de marketing e vendas digitais e a necessidade de um formato estruturado predeterminado para os dados. Ao usar o aprendizado de máquina, eles podem adotar uma abordagem supervisionada para recuperar dados históricos e melhorar o processo de conversão de leads. A ferramenta automatizada visa maximizar a eficiência das equipes de marketing e vendas, fornecendo insights dos dados, como identificar os recursos mais importantes e ajustar a estratégia de marketing para gerar mais leads. O protótipo envolve a recuperação de dados de diferentes fontes e a implementação de técnicas tradicionais de ciência de dados, como limpeza de dados, análise exploratória de dados e preparação de dados antes de aplicar o modelo de aprendizado de máquina.

  • 00:10:00 Nesta seção do vídeo, o palestrante discute o processo de geração de insights de dados e construção de modelos de aprendizado de máquina, bem como o desafio de implantar esses modelos para serem usados por clientes e empresas. Eles apresentam o ONNX (Open Neural Network Exchange) como uma possível solução para esse desafio de implantação. ONNX é um formato de arquivo que representa modelos na forma de gráficos e é independente de estrutura, o que significa que pode ser compartilhado entre diferentes ferramentas e estruturas de aprendizado de máquina. O tempo de execução ONNX é um conjunto de APIs para integrar modelos em ambientes de destino e é multiplataforma e de alto desempenho. O palestrante fornece links para o site ONNX e GitHub para mais informações.

  • 00:15:00 Nesta seção, o palestrante discute o desafio de integrar modelos de aprendizado de máquina em sistemas clientes depois de terem sido desenvolvidos usando ferramentas de ciência de dados como Python. Eles recomendam o uso de ONNX como um formato unificado para os modelos e demonstram como importar, ler, construir, implantar e testar o modelo em um ecossistema .NET. O palestrante também menciona um conjunto de dados de pontuação de leads disponível publicamente que pode ser usado para criar um protótipo para marketing orientado a dados. Eles discutem técnicas como limpeza de dados, análise exploratória de dados e aprendizado de máquina supervisionado, incluindo regressão e classificação para cenários de pontuação de leads. O objetivo é maximizar a eficiência das equipes de marketing e vendas e ajudar a aumentar o desempenho com foco nos clientes mais potenciais.

  • 00:20:00 Nesta seção do vídeo, o palestrante fornece uma visão geral das ferramentas e pacotes que estão usando para integrar modelos ML scikit-learn com ML.NET usando ONNX. Eles mencionam que estão usando a distribuição Anaconda para computação Python, notebook Jupyter para construir os modelos com biblioteca scikit-learn baseada em Python e .NET versão 6 com ONNX versão 1.9 e ONNX runtime versão 181. O palestrante examina brevemente o conjunto de dados eles estão usando e as técnicas que implementaram para manipulação de dados, análise exploratória de dados e métricas de avaliação de desempenho. Eles também mencionam que construíram um modelo logístico com mais de 82% de precisão usando a regressão logística para fins de classificação usando o algoritmo Lipliner.

  • 00:25:00 Nesta seção, o apresentador discute o processo de construção de um modelo de regressão logística para prever a pontuação de leads e, em seguida, serializá-lo usando a biblioteca pickle em Python para salvá-lo como um arquivo pkl. Em seguida, o apresentador carrega o arquivo pkl para testar o modelo e o resultado mostra uma precisão de 0,76 no conjunto de teste. O apresentador então demonstra como converter o modelo do scikit-learn para o formato ONNX, que é necessário para implantar o modelo no ecossistema Microsoft.NET. Esta seção pode servir como um guia prático sobre como integrar modelos de aprendizado de máquina scikit-learn com ML.NET usando ONNX.

  • 00:30:00 Nesta seção, o palestrante discute o processo de integração de modelos ML scikit-learn com ML.NET usando ONNX. Eles sugerem verificar a lista de algoritmos suportados pelos conversores ONNX do ML.NET antes de implementar qualquer aprendizado de máquina e demonstrar como importar os conversores suportados SK2ONNX. Eles então definem o caminho para armazenar o modelo e o número de recursos, enfatizando a importância do esquema na nomenclatura das entradas e convertendo-as em tipo de tensor de fluxo. Por fim, mostram como construir o modelo ONNX usando a função convert_sklearn, usando o modelo e os tipos iniciais previamente definidos.

  • 00:35:00 Nesta seção, o palestrante demonstra como salvar um modelo de aprendizado de máquina scikit-learn baseado em Python no formato ONNX e como executar o modelo ONNX usando a sessão de inferência do tempo de execução ONNX. O nome de entrada do modelo ONNX é identificado e os nomes de saída de assinatura não são de interesse para esta demonstração. Além disso, usando o método predict_proba, as probabilidades de ser ou não convertido são extraídas e usadas como indicadores e pesos de cenário específicos para o modelo de lead scoring.

  • 00:40:00 Nesta seção, o palestrante começa criando uma solução em branco no Visual Studio 2022 para integrar um modelo scikit-learn ML, especificamente um modelo de regressão logística, com o ecossistema .NET usando ONNX. O palestrante então cria uma função do Azure na solução e obtém o código clichê para implementá-lo com .NET 6 como um gatilho HTTP. Eles usam o Insomnia para criar uma nova solicitação com recursos de entrada no formato JSON, que serão analisados e utilizados para a integração do sistema. O palestrante instala o pacote de tempo de execução Microsoft ML ONNX do NuGet e cria uma classe para explicar o conjunto de recursos de entrada. O palestrante usa trechos de código para acelerar o processo de integração.

  • 00:45:00 Nesta seção, o palestrante discute como recuperar e desserializar o corpo da solicitação de uma API usando o conversor JSON, a fim de enviá-lo como uma entrada para um modelo de ML. Eles criam um objeto da classe de parâmetro LSLead Scoring Model e atribuem valores do corpo da solicitação desserializado a ele. Eles também explicam a importância de implementar o tensor de entrada e converter os dados de entrada em um objeto TensorFlow do tensor, para que possa ser incorporado na sessão de inferência. Por fim, eles criam uma sessão de inferência usando o tempo de execução ONNX e recuperam a saída da sessão para executar o modelo ML.

  • 00:50:00 Nesta seção, o apresentador tenta mostrar como integrar modelos ML scikit-learn com ML.NET usando ONNX, mas encontra dificuldades técnicas com o Visual Studio. Depois de tentar corrigir o problema, o apresentador passa a mostrar os trechos de código e discute os pacotes necessários e os tensores de entrada necessários para a integração. Apesar dos contratempos, o apresentador é capaz de fornecer um link para o conjunto de recursos de entrada e função usado na demonstração para que os espectadores acessem e experimentem por conta própria.

  • 00:55:00 Nesta seção, o apresentador demonstra como usar ONNX para integrar modelos de aprendizado de máquina scikit-learn com ML.NET. Eles primeiro mostram como desempacotar a saída de probabilidades da implementação de probabilidade de previsão e convertê-los em um dicionário de valores long e float representando as probabilidades de serem ou não convertidas. Eles então usam essas probabilidades para obter uma pontuação de lead por ser convertido e não convertido, que eles exibem em uma mensagem de insônia. Por fim, eles usam um notebook Jupyter para mostrar como um registro do conjunto de teste é enviado ao modelo e recuperam o valor de saída correspondente a um, indicando que o indivíduo provavelmente será convertido.

  • 01:00:00 Nesta seção, o apresentador demonstra como o uso do formato Open Neural Network Exchange (ONNX) permite a criação de um modelo ONNX de pontuação de leads que pode ser implementado como parte de outra estrutura. O apresentador mostra que isso pode ser feito usando a estrutura de segmentação TensorFlow, Keras e Dot Net. O apresentador também mostra que, com base no modelo ONNX resultante, eles conseguiram incorporar esse formato de arquivo ao ecossistema Dot Net e, posteriormente, construir uma solução simples que pudesse executar a sessão e recuperar os resultados. Eles também discutem como o uso do formato ONNX permite um mecanismo de tempo de execução de plataforma cruzada e ajuda a preencher a lacuna entre cientistas de dados e desenvolvedores de aplicativos. O apresentador compartilha um repositório de código no GitHub que inclui um documento de notebook e espaço de trabalho necessário para começar a integrar modelos ONNX no ecossistema Dot Net.

  • 01:05:00 Nesta seção, o apresentador compartilha um repositório GitHub que contém as técnicas utilizadas, bibliotecas e instruções passo a passo para a construção do modelo ONNX, sendo a parte mais importante a incorporação dos pacotes de tempo de execução ONNX e ONNX . O apresentador destaca ainda que a implementação pode ser utilizada em paralelo com o ML.NET, possibilitando a execução de modelos ONNX utilizando o ONNX runtime enquanto realiza aprendizado de máquina utilizando ML.NET. Por fim, o apresentador agradece a paciência e o tempo dos participantes e destaca que o valor da sessão está na implementação prática de um sistema de prova de conceito, que pode ser usado com outros algoritmos.
 

Machine learning models with ONNX and .NET | .NET Conf 2022



Machine learning models with ONNX and .NET | .NET Conf 2022

The "Machine learning models with ONNX and .NET" video from .NET Conf 2022 introduces viewers to the concepts of AI and machine learning, including the difference between deep learning and traditional programming. The presenters provide an overview of Azure Machine Learning, PyTorch, and ONNX, and demonstrate how to create a pipeline using Azure Machine Learning to train machine learning models with ONNX and .NET. They also explain how to integrate a machine learning model into a .NET Maui application and discuss techniques to reduce the size of ONNX models for mobile devices. The section ends by introducing the next speaker, Rory, who will be discussing accessibility.

  • 00:00:00 In this section of the video, Beatriz and Henk introduce AI and machine learning, and the difference between the two. They explain that machine learning is a subset of AI and has the ability to learn from data without being explicitly programmed with an algorithm. Instead, it produces a model based on the data provided, which can then be used to make predictions or decisions.

  • 00:05:00 In this section, the speaker explains the difference between the training and prediction phases of machine learning. The prediction phase works like traditional programming where a model or algorithm is given input, produces an answer or prediction, and enables solving complex problems that are challenging to solve with traditional programming. The speaker also talks about deep learning, which is a subset of machine learning based on artificial neural networks inspired by the brain. The demo that the speaker presents in the video uses computer vision, a field of artificial intelligence that trains computers to interpret and understand the visual world, which includes classification, object detection, and image segmentation. Finally, the speaker discusses the concept of transfer learning, where a model trained for one task is used as a starting point for a different task, saving time in training the model.

  • 00:10:00 In this section, the presenters give an overview of the two frameworks they will be using for their machine learning model: PyTorch and ONNX. PyTorch is an open-source deep learning framework that the presenters prefer for this demo, while ONNX is an open format built to represent machine learning models that enables AI developers to use models in a variety of frameworks. They explain that ONNX allows them to use PyTorch to create their model and then save it in ONNX, making it possible to read that model from within .NET MAUI. They also introduce Azure Machine Learning, which includes a set of cloud services that enable collaborative machine learning workloads, along with its key elements: experiments, datastores, environments, and model management. They explain that model management is the key to their story because they will be training their model in PyTorch and registering it in model management so others can check out and use it in the software of their choice. They also provide an overview of machine learning pipelines, which are workflows of steps that can use data sources, datasets, and run on compute targets.

  • 00:15:00 In this section, the speaker discusses how to create a pipeline using the Azure Machine Learning Designer to train machine learning models with ONNX and .NET. The first step is to review the data, which is stored in Blob Storage. Next, they create a new pipeline using the designer, which enables them to drag and drop components onto the canvas. The components they select include the PyTorch model, the ONNX converter, and the model trainer. Once the components are defined, the speaker runs the pipeline on their Azure Machine Learning compute called BumbleBee. They demonstrate the features of the component definition and the code for the training file.

  • 00:20:00 In this section, the presenter demonstrates how to use ONNX and .NET to create a machine learning model and integrate it into a .NET Maui application. The model was trained using Azure Machine Learning with Python and PyTorch and converted to ONNX format. The model was then registered in Model Management and used in a .NET application. The presenter explains the importance of allowing data scientists to work with their language of choice and developers to build applications in theirs. All sample codes used in the presentation can be found in the provided link, as well as other resources for learning more about machine learning and the AI developer role.

  • 00:25:00 In this section of the video, the presenters discuss the file size of ONNX models and the techniques used to make them smaller and work better on mobile. They highlight that there is a huge area of machine learning dedicated to reducing the size of models, even if it means sacrificing some performance. They also mention a project called Seeing AI, which uses different AI models in a mobile app, and suggest that viewers check it out for themselves. Lastly, the presenters introduce Rory as the next speaker who will be discussing accessibility.
 

On .NET Live - Operacionalizando modelos ML com ONNX, C# .... e Pokemon!



On .NET Live - Operacionalizando modelos ML com ONNX, C# .... e Pokemon!

Neste vídeo On.NET Live, os hosts discutem a operacionalização de modelos de aprendizado de máquina com ONNX e trazem Cassie Kozyrkov como convidada especial. Kozyrkov enfatiza a importância da orientação e discute o uso do ONNX como uma forma de preencher a lacuna entre cientistas de dados e engenheiros de software. A conversa abrange vários tópicos, desde a criação de um modelo de aprendizado de máquina usando o processamento de linguagem natural e a importância da transformação de dados até o teste com dados não vistos e a implantação do modelo por meio do Azure Functions. Os palestrantes também discutem o Azure Machine Learning e os recursos disponíveis para os interessados em explorar o ONNX e os modelos de aprendizado de máquina de forma mais ampla.

O vídeo On.NET Live discute a operacionalização de modelos de ML com ONNX, C# e (por diversão) Pokémon. O primeiro apresentador fala sobre ONNX, um formato de aprendizado de máquina que permite salvar e carregar modelos em diferentes frameworks, e como operacionalizar os modelos usando .NET. O segundo apresentador discute o uso do ML.NET para criar um classificador de imagens Pokémon e mostra como ele pode ser operacionalizado para implantação. No geral, o vídeo fornece uma excelente visão geral da operacionalização de modelos de aprendizado de máquina com ONNX e C#.

  • 00:00:00 Nesta seção do vídeo, os apresentadores apresentam uma convidada especial, Cassie, que discutirá aprendizado de máquina com Onnx e possivelmente até com Pokémon. A conversa também inclui anúncios sobre as próximas conferências, como .NET Conf e Start Dev Change, que foi realizada por Cassie e a equipe para ajudar as pessoas a aprender novas habilidades de desenvolvimento e capacitar os que mudam de carreira. A conferência cobriu vários campos técnicos com o objetivo de ajudar as pessoas a encontrar sua paixão e buscar uma mudança de carreira.

  • 00:05:00 Nesta seção, Cassie Kozyrkov fala sobre a importância da orientação e a necessidade de as pessoas se envolverem em iniciativas como Start Dev Change, especialmente durante esses momentos em que as pessoas estão lutando devido à pandemia. Em seguida, ela discute o ONNX, o formato aberto para salvar modelos de aprendizado de máquina e implantá-los em diferentes ambientes. Cassie explica que o ONNX facilita a ponte entre o que os cientistas de dados estão fazendo e o que os engenheiros de software estão fazendo, especialmente nos casos em que há uma desconexão entre os departamentos. Com o ONNX, os modelos podem ser passados para o lado do DevOps, que pode fazer o deploy da forma que melhor funcionar para o projeto, e pode ser usado em diferentes aplicações, incluindo C#, C++ e Python.

  • 00:10:00 Nesta seção, o palestrante descreve a construção de um modelo de aprendizado de máquina usando processamento de linguagem natural para obter dados de descrições de vinhos e usá-los para prever a variedade, valor de pontos e faixa de preço do vinho. Eles mencionam o uso de uma enorme biblioteca de dados de mágicos do vinho e a construção do modelo com diferentes recursos. O modelo é criado com Python e treinado nos Jupyter Notebooks. O palestrante também explica como o Pandas é usado para manipular os dados e mostra uma nuvem de palavras para demonstrar as palavras mais comuns no conjunto de dados.

  • 00:15:00 Nesta seção, o palestrante discute diferentes abordagens de aprendizado de máquina e como escolher a mais adequada para uma determinada tarefa. Eles explicam a diferença entre aprendizado de máquina clássico e aprendizado profundo, com o aprendizado profundo exigindo mais camadas e redes neurais. O palestrante recomenda começar com o scikit-learn, uma biblioteca clássica de aprendizado de máquina, e experimentar diferentes algoritmos para ver o que funciona melhor. Eles também discutem a importância da transformação de dados e tokenização ao processar dados de texto e como equilibrar a precisão do modelo com o tamanho do modelo.

  • 00:20:00 Nesta seção, o palestrante discute o processamento de dados necessário para aprendizado de máquina antes de treinar o modelo, como limpeza de dados e extração de recursos. Eles enfatizam a importância de testar com dados não vistos e evitam confiar apenas na precisão, pois os resultados podem diferir ao aplicar o modelo a dados de produção do mundo real. O palestrante também demonstra como configurar um pipeline de dados e usar um modelo de regressão logística para criar um modelo de aprendizado de máquina, antes de passar para o estágio de implantação.

  • 00:25:00 Nesta seção, os palestrantes discutem o modelo de processamento de linguagem natural usado e o algoritmo CountVectorizer usado para isso, que faz parte da biblioteca scikit-learn. O pipeline mostrado no vídeo inclui o CountVectorizer e o modelo de regressão logística. Os autores explicam como exportar o modelo usando o tempo de execução ONNX e salvá-lo como um arquivo ONNX. Eles discutem o melhor desempenho do tempo de execução, que leva em consideração o hardware no qual ele é implantado, proporcionando uma vantagem significativa de velocidade.

  • 00:30:00 Nesta seção, os apresentadores discutem a implantação do modelo e o processo de inferência. Eles mencionam que a implantação de um modelo envolve considerar a arquitetura e os projetos apropriados para a situação em questão, que pode variar desde o uso do aprendizado de máquina do Azure até recursos de contêiner ou ofertas sem servidor, como a função do Azure. O modelo e o código precisam ser carregados na nuvem e, nesse caso específico, o modelo é armazenado no armazenamento de blob e depois consumido pela função. Os apresentadores também abordam a importância do cache de dados para tornar o processo de inferência mais rápido e explicam como funciona o dicionário e a sessão de inferência para executar o modelo na função. Embora seja necessário entender o tipo de dados, não é necessário entender como o modelo foi criado para executá-lo com sucesso.

  • 00:35:00 não. Nesta seção, o palestrante discute o processo de operacionalização de modelos de aprendizado de máquina com ONNX e como isso pode ser feito sem a ajuda de um cientista de dados. Eles enfatizam a importância de entender o formato de entrada e criar o tensor e também explicam o processo de conversão dos resultados do modelo no formato desejado. O palestrante menciona a necessidade de simplificação nas camadas necessárias para chegar à saída do modelo e como os dados podem ser limpos e agrupados para obter melhores resultados. Eles também abordam a possibilidade de coletar métricas e feedback para retreinar o modelo.

  • 00:40:00 Nesta seção, os palestrantes discutem a importância de testar e entender como um modelo de aprendizado de máquina funciona ao fazer previsões. Eles trazem a ideia de criar testes de unidade e incorporar testes automatizados no processo normal de desenvolvimento. Além disso, eles mencionam as ferramentas disponíveis no Azure Machine Learning para a interpretabilidade do modelo, o que pode ajudar na identificação de possíveis problemas com as previsões do modelo. Por fim, abordam a implantação do modelo em um gatilho HTTP por meio da extensão do Visual Studio Code.

  • 00:45:00 Nesta seção, os palestrantes discutem um divertido jogo de degustação de vinhos que foi criado usando aprendizado de máquina e implantado no Azure. Eles compartilham o link para o site e falam sobre como o modelo foi treinado usando descrições de sommelier da Winemag e como usaram as funções do Azure para implantar o modelo no Azure. Eles também discutem os usos mais amplos do aprendizado de máquina do Azure, incluindo ferramentas para computação em nuvem, aceleração de GPU e versão de modelo, tornando-o ideal para aprendizado de máquina empresarial. Apesar disso, ainda pode haver momentos em que a implantação em um ponto de extremidade não seja necessária, e o aprendizado de máquina do Azure permite essa simplicidade.

  • 00:50:00 Nesta seção, o palestrante discute os vários recursos e capacidades do Azure Machine Learning, que vai além de apenas criar um modelo e consumi-lo por meio de pontos de extremidade. Eles destacam o workbench de experimentação, controle de versão e computação de modelo e plug-ins DevOps que permitem a colaboração entre cientistas de dados e desenvolvedores na criação e implantação de modelos de aprendizado de máquina. Eles também mencionam a natureza em constante evolução da ferramenta e recomendam revisitá-la caso os usuários não a vejam há algum tempo. O palestrante fornece links para seu repositório GitHub e postagem de blog para os interessados em aprender mais sobre como usar o ONNX com C# e implantá-lo por meio do Azure Functions.

  • 00:55:00 Nesta seção, os palestrantes discutem vários recursos disponíveis para os interessados em explorar ONNX e modelos de aprendizado de máquina em geral. Eles recomendam verificar o tutorial e os notebooks de exemplo fornecidos pelo ONNX, bem como explorar seu código-fonte aberto no Github. Além disso, eles discutem brevemente o uso de ferramentas como o Custom Vision para criar modelos de visão computacional sem a necessidade de código extenso. Por fim, eles brincam sobre a criação de um modelo de detecção de Pokémon no futuro e recomendam verificar o .NET Conf que acontecerá em novembro para mais anúncios de aprendizado de máquina.
 

Standup da comunidade de aprendizado de máquina - aprendizado profundo com PyTorch ONNX



Standup da comunidade de aprendizado de máquina - aprendizado profundo com PyTorch e ONNX

O vídeo "Machine Learning Community Standup - Deep Learning with PyTorch & ONNX" aborda vários tópicos relacionados ao aprendizado de máquina, PyTorch e ONNX. Uma seção aborda o overfitting e como evitá-lo em redes neurais usando dropout e validação cruzada. Os anfitriões também destacam vários projetos de aprendizado de máquina baseados na comunidade e seus próximos eventos sobre o uso de .NET com aprendizado de máquina. O vídeo também apresenta o PyTorch, uma popular biblioteca de aprendizado de máquina usada para visão computacional e processamento de linguagem natural, com vários módulos integrados, como visão de tocha e transformações. Os palestrantes explicam o formato ONNX para representar modelos de aprendizado de máquina e seu tempo de execução para executar inferência e treinamento em vários idiomas. O tutorial também discute como usar modelos pré-construídos no zoológico de modelos do PyTorch e aborda a depuração e o gerenciamento de pacotes e ambientes Python usando Jupyter Notebooks e Anaconda. Além disso, o tutorial aborda os detalhes de treinamento e exportação de um modelo PyTorch usando o ONNX, que pode ser usado com o tempo de execução do ONNX para melhorar o desempenho dos modelos.

O vídeo também discute vários tópicos relacionados ao aprendizado de máquina e aprendizado profundo. Os palestrantes falam sobre o uso do SkiaSharp para processamento de imagem no Xamarin e as limitações dos modelos no dispositivo devido ao seu tamanho, mas observam os benefícios de ter modelos no dispositivo. Eles também sugerem vários recursos para aprender a teoria do aprendizado de máquina, como a aula de Andrew Ng Coursera e uma aula de aprendizado de máquina aplicada que fornece informações de alto nível sobre o uso de ferramentas e bibliotecas para criar modelos de aprendizado de máquina. A importância de ter um objetivo ao aprender sobre aprendizado de máquina e incorporar o aprendizado ao trabalho também é mencionada. Por fim, o palestrante dá dicas sobre os próximos conteúdos que podem ser de interesse do público.

  • 00:00:00 Nesta seção, os anfitriões apresentam sua convidada, Cassie Breviu, gerente de programa sênior da Microsoft na equipe de tempo de execução do ONNX, que discutirá o PyTorch e o ONNX. Eles recapitularam brevemente o tópico do stream anterior, que tratava do uso do .NET com bibliotecas como o PyTorch. Antes de se aprofundar no tópico principal, os anfitriões apresentam um novo segmento onde falam sobre conceitos de aprendizado de máquina, começando com o abandono. O dropout é um método para evitar o overfitting em redes neurais, que é obtido ao descartar aleatoriamente alguns dos nós durante o treinamento.

  • 00:05:00 Nesta seção do vídeo, os apresentadores discutem o overfitting e como o uso de dropout e validação cruzada pode ajudar a resolver o problema em modelos de aprendizado de máquina. Eles mencionam que obter 100% de precisão em um conjunto de treinamento nem sempre é bom e pode levar a um desempenho ruim em dados reais. Eles fazem uma analogia com estudar para uma prova e memorizar respostas sem entender os conceitos por trás delas. Os hosts passam para os links da comunidade e mencionam vários projetos e apresentações de dentro da comunidade, incluindo a criação de soluções de aprendizado de máquina sem servidor, aplicativos de análise de sentimento, usando AutoML e Model Builder e treinando um modelo de classificação de imagem usando o Azure. Esses projetos visam ajudar os usuários a criar e implantar soluções de IA com mais eficiência.

  • 00:10:00 Nesta seção, o palestrante fala sobre um tutorial sobre como usar o Azure para treinar modelos de classificação de imagens, bem como uma demonstração do uso do tempo de execução ONNX e detecção de objetos com o modelo YOLO v5. Eles também mencionam vários eventos futuros sobre aprendizado de máquina e .NET, incluindo o evento Let's Learn .NET Focus on Machine Learning, no qual os participantes passarão por um módulo de aprendizado que será lançado ainda este mês. Em seguida, eles discutem o novo recurso no Visual Studio que permite o uso de notebooks, semelhantes aos notebooks Jupiter, e como isso permite que os usuários façam engenharia reversa de uma IU de baixo código para codificação, aprendizado de máquina e aprendizado mais profundo. Por fim, eles expressam sua esperança de que os notebooks se tornem o formato padrão para guias e exemplos do usuário, permitindo que os usuários baixem arquivos de notebook para executar células de código e aprender como usar uma API em vez de ler páginas wiki ou outros arquivos markdown.

  • 00:15:00 Nesta seção, os palestrantes discutem várias atualizações e melhorias feitas no Microsoft Learn e ML.NET. Eles mencionam o suporte a notebook interativo que pode ser acessado por meio da interface do usuário da web, facilitando para quem não sabe como configurar ambientes locais em Python. Eles também destacam a biblioteca Torch Sharp, que permite aos usuários criar redes neurais personalizadas e integrá-las intimamente ao tempo de execução ONNX, melhorando a experiência de consumir modelos de aprendizado profundo. Além disso, há um foco em IA ética e responsável dentro do ML.NET, com planos para reconhecimento de nomes, entrada dinâmica de dados e previsão de saída e séries temporais, entre outras coisas. No geral, os palestrantes enfatizam a importância do feedback dos usuários e os incentivam a fornecer sugestões de melhorias.

  • 00:20:00 Nesta seção do vídeo, o palestrante discute as maneiras pelas quais o fluxo de desenvolvimento pode mudar ao construir modelos de aprendizado de máquina, principalmente em termos de diferentes ferramentas e bibliotecas usadas. Eles comparam a programação tradicional ao aprendizado de máquina, explicando que, com o último, os dados são inseridos em um algoritmo para produzir um modelo, que é usado para inferência. O palestrante então apresenta o PyTorch, uma biblioteca de aprendizado de máquina de código aberto e seus vários componentes, incluindo a função de rede neural e utilitários de dados. Eles também abordam outras bibliotecas como TensorFlow e scikit-learn, bem como ferramentas como notebooks Jupyter e VS Code.

  • 00:25:00 Nesta seção, o palestrante fornece uma visão geral do PyTorch, que é uma biblioteca popular de aprendizado de máquina comumente usada em visão computacional e processamento de linguagem natural. A biblioteca inclui vários módulos, como visão de tocha para visão computacional, áudio de tocha para dados de áudio e texto de tocha para processamento de linguagem natural. Como os dados são a espinha dorsal do aprendizado de máquina, os módulos também fornecem funcionalidades de pré-processamento, como conjuntos de dados, carregadores de dados e transformações para preparar dados para treinamento por um modelo. O palestrante recomenda o uso de um tutorial interativo no PyTorch para saber mais sobre a biblioteca e suas funcionalidades. Eles também apresentam o ONNX, um formato aberto criado para representar modelos de aprendizado de máquina, e o ONNX runtime, uma ferramenta de implantação de plataforma cruzada que permite inferência e treinamento em vários idiomas.

  • 00:30:00 Nesta seção, os palestrantes discutem o uso de modelos ONNX no Blazor, com Cassie admitindo que ainda não experimentou. Eles também falam sobre como converter modelos no formato ONNX usando bibliotecas como PyTorch, Scikit-learn ou TensorFlow. Usar modelos ONNX é simples, pois você só precisa importar a biblioteca de tempo de execução ONNX, criar uma sessão de inferência e passar seus dados de entrada para obter um resultado. A dificuldade vem com a manipulação de dados em diferentes linguagens, já que o Python é considerado poderoso nesse aspecto em comparação com outras linguagens. Os palestrantes também mencionam o zoológico modelo, que possui modelos pré-construídos que podem ser usados para inferência com código de amostra disponível para ajudar.

  • 00:35:00 Nesta seção, o palestrante discute como usar modelos pré-construídos no zoológico de modelos do PyTorch, com foco na segmentação de objetos usando fast rcnn, um tipo de rede neural convolucional (CNN). O palestrante também aborda brevemente como trabalhar com tensores e manipulá-los usando o NumPy, observando que o PyTorch fornece um notebook interativo para aprender como manipular tensores com eficiência. Além disso, o palestrante observa que os conjuntos de dados do PyTorch são obtidos usando `torchvision.datasets`, que os baixa de um repositório de código aberto.

  • 00:40:00 Nesta seção do vídeo, o palestrante discute a natureza de código aberto do PyTorch, permitindo acesso ao código e aos diferentes locais de armazenamento de blob que estão sendo usados. Eles destacam como a documentação do PyTorch lista todos os conjuntos de dados disponíveis que podem ser acessados, com os conjuntos de dados sendo apenas um wrapper em torno de diferentes conjuntos de dados de código aberto. O palestrante destaca as implicações legais do uso de conjuntos de dados de código aberto e o que pode ser extraído da fonte e o que não deve ser hospedado. O vídeo também discute conjuntos de dados e carregadores de dados, dados de teste para validação e criação de conjuntos de dados personalizados. Por fim, eles abordam brevemente as transformações e sua importância na manipulação de dados para transformá-los em tensores e processá-los por meio do algoritmo.

  • 00:45:00 Nesta seção, o palestrante fala sobre as ferramentas que usa para gerenciar pacotes e ambientes Python. Ele destaca o Anaconda, uma ferramenta que ele adora e que adicionou ao seu terminal Windows onde pode ativar e usar rapidamente diferentes pacotes pré-configurados para diferentes bibliotecas de aprendizado de máquina. Ele continua mostrando como usa Jupyter Notebooks no VS Code, que oferece mais ferramentas, Intellisense e a capacidade de usar um computador em nuvem para executar modelos que precisam de uma GPU maior. Finalmente, ele aponta que para aqueles que preferem o ambiente .NET, a experiência do Notebook Júpiter é diretamente instalável, graças à execução do Anaconda.

  • 00:50:00 Nesta seção, o palestrante discute a experiência do Jupyter Notebook com PyTorch no Azure Machine Learning Studio, onde os usuários podem instalar quaisquer pacotes necessários e usar qualquer ferramenta de sua preferência. O palestrante cobre brevemente o guia de início rápido do PyTorch, que está disponível no Azure Machine Learning Studio e no site do PyTorch, e depois muda a discussão para o ONNX. Sem se aprofundar muito, o palestrante fornece uma breve visão geral da arquitetura do modelo, função de perda e otimizador necessário para treinar um modelo. O palestrante também faz uma rápida menção ao Copilot e sua capacidade de escrever comentários para os usuários.

  • 00:55:00 Nesta seção, o palestrante explica como treinar e exportar um modelo de aprendizagem profunda PyTorch usando ONNX. Para treinar o modelo, os usuários devem definir o número de épocas e os dados de validação, garantindo que sejam diferentes dos dados de teste para evitar overfitting. O alto-falante mostra um gráfico da perda do modelo em cada época à medida que percorre cada lote e, uma vez concluído o treinamento, o modelo pode ser exportado no formato ONNX usando uma função que envia um tensor para o dispositivo. O modelo exportado pode ser usado para executar inferência usando tempo de execução ONNX com tensores de entrada e otimizações gráficas otimizadas para melhor desempenho. O palestrante também demonstra um suporte Xamarin a ser lançado em breve para o tempo de execução ONNX.

  • 01:00:00 Nesta seção, os palestrantes discutem o uso do SkiaSharp para processamento de imagens no Xamarin e como o tempo de execução ONNX é usado para processar os dados. Eles mencionam as limitações de usar modelos no dispositivo devido ao seu tamanho, mas observam os benefícios de ter modelos no dispositivo. Os palestrantes também abordam brevemente a arquitetura do Xamarin e como ele cria andaimes. A discussão termina com uma menção de querer mais colaboração entre os desenvolvedores C# e o mundo da IA e como qualquer pessoa com perguntas sobre aprendizado de máquina ou aprendizado profundo pode entrar em contato com Cassidy Williams no Twitter ou no Twitter em tempo de execução do ONNX para obter respostas.

  • 01:05:00 Nesta seção, os apresentadores discutem recursos para os interessados em aprender a teoria do aprendizado de máquina. Eles sugerem fazer uma aula do coursera, como a ministrada por Andrew Ng, que investiga o funcionamento dos bastidores dos modelos de aprendizado profundo. Eles fazem a ressalva de que existem duas maneiras de abordar o aprendizado de máquina: o método aplicado e o método teórico. Outros recursos incluem uma aula de aprendizado de máquina aplicada no coursera, que fornece informações de alto nível sobre o uso de ferramentas e bibliotecas para criar modelos de aprendizado de máquina, e o caminho de aprendizado PyTorch, que é mais aprofundado e abrange parte da matemática. Além disso, os apresentadores mencionam um hackathon para ML.Net que ocorrerá nas próximas semanas.

  • 01:10:00 Nesta seção, o palestrante discute a importância de ter um objetivo ao aprender sobre aprendizado de máquina e aprendizado profundo. Existem muitos recursos gratuitos disponíveis online, mas pode ser difícil decidir por onde começar. O palestrante sugere definir uma meta, como treinar um modelo de visão computacional e encontrar recursos que se alinhem com essa meta. Também pode ser útil incorporar o aprendizado ao trabalho, como usar hackathons ou sprints de projeto para experimentar coisas novas. O palestrante também menciona que é importante continuar avançando nas partes difíceis e não desistir até que o objetivo seja alcançado. Por fim, o palestrante dá dicas sobre os próximos conteúdos que podem ser de interesse do público.
 
GitHub - ptiszai/Object-Detection-yolov7-ML.NET-onnx: Yolov7 ONNX model process with NET 7.0 ML.NET
GitHub - ptiszai/Object-Detection-yolov7-ML.NET-onnx: Yolov7 ONNX model process with NET 7.0 ML.NET
  • ptiszai
  • github.com
Windows 10 64-bit NVIDIA Geforce GTX 960 2 Gbyte RAM Microsoft Visual Studio Community 2022 CUDA Toolkit v11.8: c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\ Installation Nuget Package : - Yolov5Net, Version="1.0.9 - Microsoft.ML.OnnxRuntime.Gpu, Version="1.13.1" - Microsoft.ML.CpuMath, Version="2.0.0" - Emgu.CV Version="4.6.0.5131...
 
GitHub - duonghb53/YoloOnCSharpGPU
GitHub - duonghb53/YoloOnCSharpGPU
  • duonghb53
  • github.com
A state of the art real-time object detection system for C# (Visual Studio). This project has CPU and GPU support, with GPU the detection works much faster. The primary goal of this project is an easy use of yolo, this package is available on nuget and you must only install two packages to start detection. In the background we are use the...
 

Detecção de face usando C# e OpenCVSharp - Grupo prático de usuários de ML.NET 19/01/2022



Detecção de face usando C# e OpenCVSharp - Grupo prático de usuários de ML.NET 19/01/2022

O tutorial em vídeo sobre detecção facial usando OpenCVSharp em C# começou com o palestrante apresentando a biblioteca OpenCVSharp, uma biblioteca de código aberto para tarefas de visão computacional, com um wrapper .NET. O vídeo discutiu o uso de diferentes classificadores para detecção, inclusive para olhos, e a importância da experimentação na seleção do classificador. O tutorial auxiliou o ouvinte na construção de um programa para detecção de face e olho usando webcams, com o auxílio de trechos de código, visual studio e notebooks interativos .NET. Diferentes aspectos, incluindo como sobrepor imagens transparentes e lidar com objetos de tapete de forma adequada, também foram elaborados. O palestrante reconheceu a facilidade de uso, velocidade e compatibilidade do OpenCVSharp com .NET, mas também notou a falta de exemplos e suporte incerto de longo prazo.

  • 00:00:00 Nesta seção, o palestrante apresenta o tópico de detecção facial usando OpenCVSharp em C# e dá uma breve visão geral do que é OpenCVSharp, que é um wrapper .NET para OpenCV, uma biblioteca de código aberto para tarefas de visão computacional. O palestrante discute os diferentes recursos do OpenCVSharp, incluindo manipulação de imagens, detecção facial e modelos de reconhecimento facial. O palestrante também observa que, embora não haja muitos exemplos de C# para OpenCVSharp, há muitos exemplos de Python que podem ser facilmente convertidos em C# devido às semelhanças nas APIs. O palestrante passa a listar alguns exemplos de como executar tarefas específicas em Python e C# usando o OpenCVSharp.

  • 00:05:00 Nesta seção, o palestrante discute os diferentes tipos de OpenCVSharp e a importância de emparelhar bibliotecas gerenciadas com bibliotecas de vinculação nativas. Em seguida, eles demonstram alguns exemplos usando o Visual Studio Code e blocos de anotações interativos .NET, carregando pacotes NuGet e usando os arquivos XML em cascata rígidos para executar a detecção facial. O código mostra como trazer os classificadores de cascata rígidos e usá-los para detectar rostos e desenhar caixas ao redor deles nas imagens.

  • 00:10:00 Nesta seção, o apresentador explica a importância de lidar e descartar adequadamente os "objetos mat" no OpenCVSharp para evitar possíveis vazamentos de memória. Eles demonstram como carregar uma imagem de origem e criar uma nova "imagem cinza" vazia para detecção de face, pois o classificador funciona melhor em imagens em preto e branco. Eles então explicam como usar o "histograma equalizado cb2" para normalizar o brilho e o contraste da imagem, o que leva a uma melhor classificação em cascata. O apresentador também discute como usar requisitos mínimos de tamanho para detecção facial para evitar falsos positivos e artefatos. Por fim, mostram como usar o "retângulo cv2" para desenhar uma caixa ao redor dos rostos detectados e abrir uma janela para mostrar a imagem resultante, com a tecla de peso sendo usada como forma de o usuário fechar a janela.

  • 00:15:00 Nesta seção do vídeo, o palestrante discute como eles não esperam que uma chave de peso entre, já que não precisam dela para mostrar uma imagem estática. No entanto, ele entrará mais em jogo quando eles olharem para a demonstração da webcam. Eles também respondem a uma pergunta sobre namespaces padrão e explicam como vão detectar não apenas o rosto, mas também os olhos no rosto. Eles discutem a introdução de dois arquivos em cascata - o rosto frontal e o olho em cascata - e como eles percorrem os retângulos do rosto para tentar fazer uma detecção adicional dos olhos. Eles explicam o processo envolvido na criação de uma região de interesse (ROI) e no desenho de um retângulo ao redor da face.

  • 00:20:00 Nesta seção, o instrutor passa pelo processo de detecção de olhos em uma imagem facial usando cascatas aninhadas no OpenCVSharp. Eles pegam a região de interesse do rosto detectada anteriormente, a convertem em cinza e, em seguida, aplicam uma cascata aninhada especificamente para detectar olhos. Ao fazer isso, eles são capazes de desenhar círculos ao redor dos olhos detectados, com o ponto central do círculo sendo a localização dos olhos detectados. Eles observam que o tamanho dos olhos detectados deve ser menor que o tamanho do rosto detectado e, por meio de tentativa e erro, ajustam os parâmetros da cascata aninhada para detectar melhor os olhos em rostos de tamanhos diferentes. No geral, embora o processo não seja perfeito, é eficaz na detecção de olhos na maioria dos casos.

  • 00:25:00 Nesta seção, o palestrante discute diferentes classificadores que podem ser usados para detecção facial e a necessidade de experimentação para determinar qual classificador funciona melhor para situações específicas. O locutor também reconhece que pode haver artefatos no processo de detecção e sugere o uso da lógica para removê-los se a produção for o processo. O palestrante passa a discutir o uso de webcams e como o código para detecção de face e olho da webcam é semelhante aos exemplos anteriores, com a única diferença sendo a introdução da captura de vídeo e a criação de um objeto de janela. Por fim, destaca-se a importância de esperar um milissegundo entre os quadros para ver se uma tecla é pressionada, pois isso afeta muito os quadros por segundo capturados na webcam.

  • 00:30:00 Nesta seção, o apresentador demonstra o recurso de detecção facial no OpenCVSharp usando C#. O código captura os dados da webcam e detecta o rosto do sujeito colocando uma caixa ao redor dele. O apresentador explica a chave de peso, um diferencial do OpenCVSharp que deve ser incluído para que a janela mostre uma imagem. Eles respondem a uma pergunta sobre quando o método de chave de peso é executado e descrevem como ele é usado. A seção também inclui um exemplo de adição de quadros por segundo ao código de captura de dados da webcam. O apresentador destaca a importância de incluir a chave de peso, pois esquecê-la pode causar problemas, e demonstra como destruir todas as janelas do código.

  • 00:35:00 Nesta seção, o apresentador discute como eles são capazes de colocar texto na tela e controlar a cor usando C# e OpenCVSharp. Eles explicam como definem uma cor para a caixa ao redor de rostos e olhos, e definem outra cor chamada cor fps, que é vermelha se a taxa de quadros for menor que 20 quadros por segundo e verde se for maior ou igual a 20. Eles também demonstram o efeito do atraso na chave de peso e como isso afeta as taxas de quadros. Eles mencionam que, com todas as variáveis envolvidas, ficam felizes se conseguirem 20 ou mais quadros por segundo, o que lhes permite atingir seus objetivos no momento.

  • 00:40:00 Nesta seção, o apresentador demonstra como sobrepor imagens e explica a importância de usar IamReadModes inalterado para manter o elemento de transparência de uma imagem. Eles usam óculos escuros como exemplo e admitem que o código não está otimizado, pois não tiveram tempo de deixar tudo perfeito. Eles também trapaceiam codificando as coordenadas de onde desejam que os óculos de sol fiquem, em vez de usar as coordenadas x e y do retângulo do rosto. O apresentador explica que em cenários da vida real, seria preciso passar as coordenadas x e y para o método MakeOverlay para saber onde colocar a sobreposição. Além disso, eles mencionam o método Resize que precisaria ser usado para redimensionar a imagem de sobreposição com base no tamanho do retângulo, mas isso não é necessário em seu exemplo de trapaça.

  • 00:45:00 Nesta seção, o palestrante explica o processo de fusão de uma imagem de sobreposição transparente em uma imagem de base. Primeiro, a imagem de sobreposição transparente é convertida em RGB enquanto preserva o canal transparente. Em seguida, os canais RGB são extraídos da sobreposição original e mesclados em um novo mapa. Depois disso, o canal de transparência é mesclado com o novo mapa, duplicando-o três vezes em um novo mapa chamado "overlay alpha 3 channel" e executando uma operação bit a bit. Por fim, define-se a região de interesse onde os óculos de sol serão colocados e extrai-se o retângulo da face para servir como região de interesse da face para mesclar os óculos de sol.

  • 00:50:00 Nesta seção, o palestrante explica brevemente o processo de adicionar óculos de sol a um rosto detectado usando o OpenCVSharp. Eles usam operações bit a bit para colocar os óculos de sol em cima do rosto detectado, manter a transparência e colocar o rosto de volta em seu local original. O palestrante também destaca alguns prós e contras do OpenCVSharp, como facilidade de uso, velocidade e compatibilidade com .NET, mas a falta de exemplos e suporte incerto a longo prazo. O palestrante fornece vários recursos e incentiva os usuários a patrocinar o projeto OpenCVSharp no GitHub. Um participante pergunta se o OpenCVSharp pode ser executado em um microcontrolador como o Raspberry Pi, e o palestrante responde que isso deve ser possível com o Linux Arm.
 

Prevendo um modelo ONNX de visão personalizada com ML.NET



Prevendo um modelo ONNX de visão personalizada com ML.NET

Neste vídeo do YouTube, o apresentador discute o uso de ML.NET para prever em um modelo ONNX de visão personalizada. Isso envolve exportar o modelo do serviço de visão personalizada e importá-lo para o projeto ML.NET. A implementação inclui redimensionar imagens, extrair pixels de imagem, criar um contexto de dados e uma lista de dados vazia para carregar os dados da imagem, usar a estrutura ML.NET para fazer previsões no modelo e gerar os resultados. O vídeo também demonstra como obter o nome de saída de um modelo usando uma ferramenta chamada Neuron e como obter informações da caixa delimitadora do modelo para uma determinada imagem de teste. O apresentador também mostra como desenhar um retângulo ao redor da caixa delimitadora e exibir os rótulos previstos usando a API de gráficos. A implementação do modelo ONNX usando a API ML.NET e redimensionamento de imagem é enfatizada como a parte mais significativa da implementação.

  • 00:00:00 Usaremos a estrutura ML.NET para prever em um modelo ONNX de visão personalizada. Para fazer isso, precisamos primeiro exportar o modelo do serviço de visão personalizada e importá-lo para nosso projeto ML.NET. Uma vez que o modelo esteja em nosso projeto, podemos criar um pipeline que redimensiona as imagens e extrai os pixels da imagem antes de fazer a previsão no modelo. Para fazer isso, precisamos baixar e adicionar vários pacotes NuGet ao nosso projeto, bem como criar um novo contexto de dados e uma lista de dados vazia para carregar os dados da imagem. Por fim, usamos a estrutura ML.NET para fazer previsões sobre o modelo e produzir os resultados.

  • 00:05:00 Nesta seção, o palestrante discute o uso de uma ferramenta chamada Neuron para obter o nome de saída de um modelo baixado do Custom Vision. Neuron é um pequeno aplicativo de desktop que fornece informações sobre um modelo, incluindo entradas e saídas. Depois que o nome de saída for obtido, ele poderá ser usado como o nome da coluna de saída ao chamar a transformação para aplicar o modelo. O palestrante também demonstra como criar um mecanismo de previsão e usar métodos auxiliares para obter informações da caixa delimitadora do modelo para uma determinada imagem de teste.

  • 00:10:00 Nesta seção, o palestrante continua com a implementação do modelo de detecção de objetos, demonstrando como obter as caixas delimitadoras, desenhar um retângulo ao redor delas e exibir os rótulos previstos para as imagens usando a API de gráficos. A confiança máxima é obtida para obter a caixa delimitadora superior, onde apenas uma caixa delimitadora com a confiança máxima é considerada. O código também usa métodos auxiliares para desenhar o retângulo e a string da descrição é retornada para indicar a porcentagem de confiança. Por fim, a imagem de teste é salva no sistema de arquivos para referência futura. O palestrante destaca que a maior parte da implementação é o redimensionamento das imagens e a aplicação do modelo ONNX utilizando a API ML.NET.
 

Tornando redes neurais portáteis com ONNX



Tornando redes neurais portáteis com ONNX

Neste vídeo do YouTube, Ron Dagdag explica como tornar as redes neurais portáteis com o ONNX, com foco no lado de inferência do aprendizado de máquina. ONNX é uma estrutura de código aberto que permite a portabilidade de modelos de aprendizado de máquina em várias unidades e dispositivos de processamento. O palestrante discute o processo de conversão de modelos para ONNX, implantação e integração do modelo com aplicativos e uso para implantação de nuvem e borda. Eles também demonstram como carregar um modelo ONNX no Node.js e integrar modelos de classificação de imagens em aplicativos móveis e da Web usando o ONNX Runtime. Os modelos ONNX são um padrão aberto que pode ser criado a partir de várias estruturas para serem implantados com eficiência na plataforma de destino.

  • 00:00:00 Nesta seção, Ron Dagdag apresenta o conceito de tornar as redes neurais portáteis por meio do ONNX, com foco no lado de inferência do aprendizado de máquina. Ele explica o processo típico de programação versus aprendizado de máquina e a necessidade de dados de treinamento, uma estrutura de treinamento, um modelo e um tempo de execução de inferência para criar algoritmos. Ele também menciona que o foco da apresentação será o lado da inferência, usando o ONNX para incorporar o modelo em um aplicativo.

  • 00:05:00 Nesta seção, o palestrante apresenta o ONNX como uma estrutura que permite a portabilidade de modelos de aprendizado de máquina em várias unidades de processamento, como CPUs, GPUs e FPGAs, bem como em diferentes dispositivos, como nuvem ou IoT. Eles o comparam a um PDF por ser um formato que pode ser consumido em qualquer lugar e é de código aberto no GitHub, tendo conquistado mais de 11.000 estrelas e 200 colaboradores. O palestrante recomenda o uso do ONNX ao lidar com modelos treinados em Python que precisam ser implantados com outros aplicativos ou exigem alta latência de inferência, como execução em dispositivos de borda como o Azure Percept.

  • 00:10:00 Nesta seção, o palestrante discute cenários em que é necessário converter um aplicativo programado em um sistema operacional (SO) ou hardware específico para ser executado em outro SO ou hardware. A solução é converter o programa para o formato ONNX. O ONNX é usado ao executar modelos criados a partir de estruturas diferentes e quando o treinamento leva muito tempo. O palestrante detalha quatro maneiras de obter um modelo ONNX, a primeira delas é o zoológico modelo ONNX no GitHub. Isso é seguido pelo serviço de visão personalizada, convertendo de um modelo existente e treinado usando aprendizado de máquina do Azure ou aprendizado de máquina automatizado.

  • 00:15:00 Nesta seção, o palestrante discute o processo de conversão de modelos para ONNX. O processo não se limita a modelos escritos em Python e também pode ser feito com ML.NET. O palestrante demonstra como converter um modelo ML.NET e salvá-lo em ONNX. Existem muitos modelos disponíveis que foram convertidos para ONNX, incluindo classificação de imagens e modelos de detecção de objetos. O serviço de visão personalizada também pode ser usado para fazer upload de imagens e marcá-las para classificar diferentes tipos de objetos. O GitHub fornece um aplicativo chamado Netron que permite aos engenheiros de software visualizar a aparência de um modelo ONNX, incluindo sua entrada e saída. O palestrante explica que também é possível gerar um modelo ONNX convertendo-o de PyTorch ou TensorFlow.

  • 00:20:00 Nesta seção, o palestrante demonstra como gerar um modelo de regressão e exportá-lo para ONNX, um formato de código aberto que permite a portabilidade ao usar diferentes estruturas de aprendizado de máquina. Usando C# e ml.net, o palestrante carrega dados salariais em um quadro de dados e treina um modelo de regressão, especificando a coluna de rótulo e a entrada (anos de experiência) usando um pipeline. Depois de avaliar o modelo, eles o convertem em ONNX passando o modelo, os dados de amostra e o fluxo para o contexto, resultando em um arquivo que pode ser visualizado usando o Netron. O palestrante observa que o ONNX também pode ser usado como um formato intermediário para converter modelos de aprendizado de máquina entre frameworks, como PyTorch e TensorFlow.

  • 00:25:00 Nesta seção, o palestrante discute o processo de implantação e integração de um modelo ONNX em um aplicativo. A conversão de modelos para ONNX permite compatibilidade entre diferentes estruturas, e os usuários também podem usar modelos ONNX para aprendizado de transferência e ajuste fino. O palestrante enfatiza a importância do controle de versão e de ter um registro de modelo, assim como um registro de contêiner, para facilitar o rastreamento e a implantação. Além disso, o palestrante destaca os diferentes conjuntos de habilidades necessários para os cientistas de dados que constroem a "receita" versus os necessários para os engenheiros que iniciam uma "padaria" e integram a IA aos aplicativos. A palestra abrange vários frameworks e plataformas que suportam a implantação de modelos ONNX, como Azure Machine Learning, Ubuntu ou Windows Server e dispositivos IoT edge.

  • 00:30:00 Nesta seção, o palestrante discute a implantação de modelos de aprendizado de máquina, abrangendo a implantação na nuvem e na borda. De acordo com o palestrante, a implantação de borda é sobre o quão próximo o processamento de dados está dos usuários e é muito mais próximo do que a nuvem. A execução de IA na borda é ideal para baixa latência e economia de custos, pois pode processar dados localmente sem fazer upload para a nuvem. Além disso, a execução local é mais flexível e pode garantir a conformidade com a privacidade, especialmente importante ao lidar com regras que proíbem o compartilhamento de imagens fora da rede. Para facilitar a implantação de modelos de aprendizado de máquina na borda, a Microsoft desenvolveu um tempo de execução ONNX de código aberto que suporta não apenas redes neurais, mas também especificações tradicionais de aprendizado de máquina, pode realizar inferência de alto desempenho e possui uma arquitetura extensível para aceleradores de hardware.

  • 00:35:00 Nesta seção, o palestrante discute como tornar as redes neurais portáteis com o ONNX. O tempo de execução ONNX permite que os usuários executem modelos em diferentes unidades de processamento, incluindo GPUs, CPUs e VPUs, e pode ser usado em várias plataformas, como Windows, navegadores da Web, Node.js e aplicativos React Native. O palestrante mostra uma demonstração de como carregar um modelo ONNX em um aplicativo Node.js e como passar valores de entrada para receber a saída desejada. Ao usar o tempo de execução ONNX, os desenvolvedores podem incorporar facilmente modelos de aprendizado de máquina em seus aplicativos sem se preocupar com a compatibilidade de hardware.

  • 00:40:00 Nesta seção, o vídeo discute o ONNX Runtime Web, uma biblioteca JavaScript projetada para executar modelos ONNX diretamente em um navegador usando as tecnologias WebAssembly e WebGL otimizadas. Esse método de inferência no navegador é mais rápido, seguro e barato, além de permitir o uso off-line. No entanto, pode não ser eficiente para modelos maiores que requerem especificações de hardware específicas e podem resultar em tempos de download mais longos. O vídeo fornece um exemplo de uso do ONNX Runtime Web para analisar uma imagem de um bebê chorando, demonstrando como o modelo é integrado a um arquivo HTML e executado usando o tempo de execução.

  • 00:45:00 Nesta seção do vídeo, o apresentador demonstra como usar o ONNX model zoo e o ONNX runtime web para integrar um modelo de classificação de imagens em um aplicativo web. Ele carrega uma imagem no aplicativo da web e a redimensiona e converte em escala de cinza e um tensor para prepará-la para o modelo pré-treinado. Usando o ONNX runtime web, o modelo é carregado e alimentado com a imagem processada, resultando em uma predição para a emoção expressa na imagem. O apresentador então demonstra a pontuação de um modelo ONNX pré-treinado em um aplicativo React Native.

  • 00:50:00 Nesta seção, o palestrante discute o uso do ONNX runtime móvel como uma solução de inferência leve para executar modelos ONNX otimizados em plataformas Android e iOS. Para integrar o ONNX runtime mobile ao aplicativo, pode-se usar npm install ONNX runtime react native, que minimiza o tamanho binário para um modelo ONNX pré-otimizado chamado formato ort. O tutorial disponível em onnxruntime.ai explica passo a passo como implantar modelos ONNX usando várias plataformas como node, navegador web, react mobile, etc. O gráfico de compatibilidade mostra que o Chrome suporta montagem web e webGL no Windows 10, macOS, Ubuntu , iOS e Android. Os modelos ONNX são um padrão aberto que pode ser criado a partir de várias estruturas para implantação usando as ferramentas certas de forma eficiente na plataforma de destino.
 

No .NET Live - AI Everywhere: Azure ML e ONNX Runtime



No .NET Live - AI Everywhere: Azure ML e ONNX Runtime

O vídeo "On .NET Live - AI Everywhere: Azure ML and ONNX Runtime" se concentra no uso do Azure ML e do ONNX Runtime para aprendizado de máquina com C#. Os palestrantes discutem os benefícios do uso do formato ONNX para exportar modelos em linguagens de programação, a otimização do tempo de execução ONNX para aceleração e inferência de hardware e sua compatibilidade com versões específicas da estrutura. Eles também mostram como usar o ONNX Runtime com Azure ML em Python e .NET, criar e treinar um modelo de rede neural e explicar a inferência e sua etapa final no aprendizado de máquina. O vídeo termina com a introdução de um novo provedor para o tempo de execução ONNX que permite o uso do OpenVINO para a CPU ARM, fornecendo recursos de depuração.

Nesta seção do vídeo, os hosts discutem a flexibilidade e a configurabilidade do tempo de execução ONNX e sua capacidade de execução em várias plataformas de hardware e software. O tempo de execução ONNX é visto como um ótimo wrapper para diferentes plataformas, pois os clientes podem usá-lo em uma nuvem, Android, iOS ou CPU Snapdragon, e permite inferências mais rápidas.

  • 00:00:00 Nesta seção, os anfitriões apresentam o convidado, Maro Benici, um desenvolvedor .NET italiano com experiência em inteligência artificial (IA). O episódio se concentrará em como usar o Azure ML e o ONNX Runtime com C# para continuar estudando o aprendizado de máquina. No segmento de bits relacionados, eles discutem um documento no site Azure Machine Learning sobre como fazer previsões com modelos AutoML ONNX em .NET, que está intimamente relacionado ao tópico do dia.

  • 00:05:00 Nesta seção, o palestrante discute a opção de exportar modelos de aprendizado de máquina para o formato ONNX para compartilhar modelos entre estruturas usando componentes em Automl dentro do Azure Machine Learning. Para executar a inferência em .NET, o pacote de tempo de execução ONNX é usado, com ml.net realizando o pipeline de previsão usando o modelo ONNX. Netron, uma ferramenta para entender as entradas e saídas de um modelo, é apresentada e é demonstrada a criação de classes para entradas e saídas. Por fim, o pipeline incluindo o modelo é definido e uma instância de entrada é executada no mecanismo para fazer previsões, com a saída resultante sendo a tarifa prevista. O palestrante apresenta brevemente um artigo relacionado sobre o uso do tempo de execução ONNX com Stable Difussion para gerar imagens AI.

  • 00:10:00 Nesta seção, o palestrante fala sobre como a tecnologia evoluiu nos últimos 15 anos, desde hardware personalizado até data centers e computação em nuvem. Ele dá um exemplo de seu primeiro projeto em 2006, que envolvia sensores artesanais para capturar minerais em um vinhedo, e como os dados eram armazenados em discos rígidos portáteis e enviados a um laboratório para serem analisados. Hoje, o mesmo projeto pode ser feito com um celular, com dados coletados na nuvem e analisados em tempo real, possibilitando alertas e ajustes instantâneos. O palestrante também discute como a mudança para a nuvem abriu oportunidades para as empresas, com serviços baseados em nuvem agora disponíveis para clientes que antes estavam restritos à computação no local.

  • 00:15:00 Nesta seção, o palestrante discute os desafios enfrentados pelos clientes que usam diferentes linguagens de programação para construir e implantar seus modelos de aprendizado de máquina. Ele explica que o formato ONNX foi criado como uma solução para esse problema, permitindo que os clientes salvem seus modelos em uma linguagem que pode ser recarregada em outra linguagem de programação. Ele explica que o ONNX pode exportar as funções matemáticas e os valores das camadas da rede neural, permitindo uma fácil conversão entre diferentes linguagens. O palestrante destaca que o ONNX está sendo utilizado por diversas empresas, possibilitando a terceirização de código e o uso de diversas empresas que conhecem diferentes linguagens de programação.

  • 00:20:00 Nesta seção, o vídeo discute a estrutura ONNX e seu uso para exportar e executar modelos de aprendizado de máquina em diferentes plataformas e linguagens de programação. A estrutura ONNX permite que os usuários exportem modelos e os executem sem precisar recarregar bibliotecas ou estruturas, facilitando para clientes que talvez não conheçam Python e TensorFlow. O tempo de execução ONNX é de código aberto e está disponível no GitHub, e os usuários podem selecionar seu idioma e arquitetura preferidos para executar o modelo. O vídeo também aborda a compatibilidade do op set e como ela está sendo influenciada, pois é essencial garantir a compatibilidade com versões específicas do framework.

  • 00:25:00 Nesta seção, os palestrantes discutem como garantir que as funções matemáticas usadas nos modelos AI sejam compatíveis com a biblioteca de tempo de execução ONNX. Eles recomendam usar a versão mais recente da biblioteca, que suporta todas as operações do modelo. Eles também mencionam que há uma atualização recente na documentação do ONNX que fornece melhor visibilidade sobre quais aplicativos são suportados e quais não são. Se uma função matemática não for suportada, um alerta é gerado e o usuário é informado sobre qual offset não é suportado. Os palestrantes também discutem os benefícios da biblioteca de tempo de execução ONNX, como aceleração de hardware para GPUs e otimização para modelos de IA.

  • 00:30:00 Nesta seção, o palestrante discute a otimização do tempo de execução ONNX e a capacidade de usá-lo para treinamento e inferência. Com ONNX, pode-se otimizar o processo de treinamento e acomodar hardware personalizado sem começar do zero. O palestrante também confirma que o tempo de execução ONNX pode ser usado para otimizar o hardware de treinamento, enquanto outro hardware pode ser escolhido para inferência. No geral, o palestrante enfatiza a capacidade de criar e treinar modelos para qualquer ambiente de hardware e a flexibilidade do tempo de execução do ONNX.

  • 00:35:00 Nesta seção, o palestrante fala sobre o uso do Azure ML e do ONNX Runtime para criar uma rede neural para classificação de flores. Eles começam selecionando o aplicativo executado dentro de uma máquina S11 padrão para medição. Em seguida, eles usam o Tensorflow como sua empresa geralmente o usa e escolhem pandas, NumPy e outras ferramentas de pré-processamento. Eles discutem a codificação de strings como matrizes e a divisão do conjunto de dados entre treinamento e teste. Eles finalmente criam a rede neural, que codificam no formato ONNX para que possa ser usada no data center de seus clientes.

  • 00:40:00 Nesta seção do vídeo, o palestrante explica o processo de treinamento de um modelo de rede neural usando Azure Machine Learning e TensorFlow. Ele demonstra como compilar o modelo e otimizar a precisão antes de avaliar o desempenho do modelo. Depois que o modelo é treinado, ele mostra como importar o modelo para o TensorFlow para criar um novo modelo para o cliente. Para facilitar para o cliente, ele define a especificação de entrada e nomeia a entrada e a saída. Ele também explica os benefícios de converter o modelo para o formato ONNX para testes antes de entregá-lo ao cliente.

  • 00:45:00 Nesta seção do vídeo, o palestrante mostra como usar o ONNX Runtime com Azure ML em Python e .NET. Eles importam ONNX uma vez em Python, selecionam um provedor e carregam o tempo de execução ONNX para usar enquanto ignoram o modelo TensorFlow. Eles criam a entrada e a alimentam com valores de matriz antes de executar o modelo para obter a saída. Além disso, o palestrante mostra como criar um endpoint para expor o ONNX diretamente no Azure e como usar o ONNX em um dispositivo IoT ou smartphone usando um aplicativo de console no .NET Core.

  • 00:50:00 Nesta seção, os hosts explicam o conceito de inferência, que é a etapa final do aprendizado de máquina em que a rede neural treinada é usada para prever resultados com base em novos dados nunca vistos antes. Eles também discutem o formato ONNX, que pode converter qualquer modelo de tensor personalizado em um formato compatível com o ONNX Runtime. Eles mencionam que o pré e o pós-processamento do modelo também podem ser serializados no próprio modelo ONNX, facilitando a execução em cada plataforma. Os hosts demonstram que o processo é semelhante em diferentes idiomas depois que o modelo é carregado.

  • 00:55:00 Nesta seção, o palestrante discute o novo provedor que chegou para o tempo de execução ONNX, possibilitando o uso do OpenVINO para a CPU ARM, permitindo a depuração. O palestrante enfatiza o poder disso, afirmando que quando o modelo é suportado e possível de ser executado, não há necessidade de alterar o código, sendo possível executar o mesmo modelo sem convertê-lo constantemente. O palestrante observa que, embora a escolha do hardware para o modelo seja essencial, não é algo que o tempo de execução do ONNX controle, e as decisões tomadas na operacionalização do modelo precisam considerar os requisitos de hardware. Além disso, o palestrante menciona que é possível usar o tempo de execução ONNX em um cluster e, na inferência, o modelo não precisa ser convertido todas as vezes.
Razão: