Crie um sistema de gerenciamento de inventário em tempo real em 6 horas usando Streamlit e YOLOv5
Um breve artigo explicando como treinar com eficiência o algoritmo de detecção de objetos YOLOv5 em seu próprio conjunto de dados personalizado e usá-lo para criar seu aplicativo da web que pode ser usado em tempo real.
A necessidade de compartilhar as descobertas dos cientistas de dados aumentou, devido ao uso crescente do Python como sua linguagem de programação preferida, uma abordagem de plataforma cruzada com interação adequada é o uso de aplicativos da web. No entanto, a programação típica exige conhecimento suficiente entre os usuários do Python com estruturas da Web um tanto complexas, como Flask e Django. Mesmo que aprender essas estruturas não seja particularmente difícil para usuários moderados do Python, pode ser difícil para os cientistas de dados exibir seu trabalho de ciência de dados.
Streamlit
A estrutura Streamlit, portanto, oferece aos cientistas de dados uma escolha melhor hoje. Ele transforma rápida e facilmente scripts Python diretos em aplicativos da Web utilizáveis, interativos e compartilháveis. Devido ao seu foco em exibir soluções de ciência de dados, ele vem com suporte nativo para modelos de dados e gráficos criados usando bibliotecas populares de ciência de dados, como pandas e matplotlib. Portanto, se você já estiver familiarizado com o Python, aprender streamlit será relativamente fácil.

Objetivo
Quero levar vocês um passo adiante neste artigo, demonstrando como publicar seu aplicativo da Web para que outras pessoas possam visualizar seus modelos de IA em tempo real. Além disso, demonstrarei como construir um Sistema de Gerenciamento de Inventário que gerencia bebidas geladas em tempo real. Para nosso projeto, usaremos o Streamlit para criar nosso aplicativo da Web e o SQLite como banco de dados.
Usarei o conjunto de dados SKU-110K para criar meu conjunto de dados personalizado para identificar bebidas geladas como Coca-Cola, Sprite, Pepsi, Mountain Dew, 7UP e Fanta. Existem muitas fotografias de baixa qualidade no SKU-110K, então tive que filtrá-las, selecionar as melhores e anotá-las com a biblioteca labelImg . que ajuda você a anotar imagens em vários formatos de armazenamento, incluindo YOLO e CreateML e formato PASCAL VOC. É uma ferramenta útil para anotar dados para detecção de objetos.
Treinamento
Depois que as anotações forem feitas, vamos treiná-los usando yolov5 que é um modelo de Detecção e Classificação de Objetos. Agora veremos brevemente a arquitetura do YOLOv5.
Como o YOLOv5 é um detector de objetos de estágio único, ele possui três partes importantes como qualquer outro detector de objetos de estágio único.
Backbone modelo
A principal função do Model Backbone é identificar os principais recursos em uma imagem de entrada.
Para extrair características valiosas e úteis de uma imagem de entrada no YOLO v5, o CSPDarkNet (CSP — Cross Stage Partial Networks) é empregado como backbone. Ele usa uma técnica CSPNet que divide o mapa de recursos da camada base em duas seções e as mescla usando uma hierarquia de estágio cruzado.
Darknet é rápido e altamente preciso, que são os principais requisitos para a família YOLO.
Pescoço Modelo
PANet (Path Aggregation Network) é usado como um pescoço no YOLO v5 para obter pirâmides de recursos. Pirâmides de características são um componente básico em sistemas de reconhecimento para detectar objetos em diferentes escalas.
O papel do pescoço do modelo é coletar recursos de diferentes estágios. O pescoço é composto de vários caminhos de cima para baixo e vários caminhos de baixo para cima. A PANet usa recursos de todas as camadas e decide quais são úteis.
cabeça modelo
Ele usa caixas de âncora para construir vetores de saída final com probabilidades de classe, pontuações de objetividade e caixas delimitadoras.
A cabeça é responsável por:
a pontuação de objetividade (a probabilidade de um objeto estar dentro da âncora)
a classe (um número, ou seja, 1 que corresponde a uma classe, por exemplo, uma pessoa)
a confiança da classe (a chance de que a classe acima esteja correta)
o limite coordenadas da caixa, ou seja, [x, y, w, h] [120, 300, 200, 400]
A entrada é passada primeiro para CSPDarknet para extração de recursos e, em seguida, alimentada para PANet para fusão de recursos (Pirâmide de recursos). Por fim, Yolo Layer gera resultados de detecção (classe, pontuação, localização, tamanho).

fluxo de trabalho

Na Landing Page, você tem duas opções: pode ir para Staff ou Admin.
Utilizando streamlit_webrtc , que facilita a comunicação em tempo real, poderemos detectar imagens em tempo real executando detecções nos quadros capturados do vídeo em tempo real no backend.

Você também pode usar arrastar e soltar ou upload de imagens para realizar detecções em imagens, conforme mostrado abaixo.

Usando três campos — Data, Nome da bebida e Contagem — estamos armazenando os resultados em nosso banco de dados sqlite, que ajuda o usuário final a manter o estoque e verificar as quantidades no dia a dia. como mostrado abaixo

Conclusão
Neste post, falei sobre como construir um sistema de gerenciamento de inventário usando o modelo de detecção de objetos Yolov5 em um conjunto de dados personalizado .
Se você quiser experimentar o conjunto de dados personalizado, pode baixar os dados anotados no Kaggle e o código no Github , o aplicativo da web é implantado aqui .
Obrigado por ler. Eu estarei produzindo postagens adicionais para iniciantes no futuro também. Para saber mais sobre eles, siga-me no Medium . Estou sempre aberto a sugestões e críticas construtivas, e meu Twitter é @FaseehAhmed2606.