Créez un système de gestion des stocks en temps réel en 6 heures avec Streamlit et YOLOv5

Dec 05 2022
Un bref article expliquant comment entraîner efficacement l'algorithme de détection d'objets YOLOv5 sur votre propre ensemble de données personnalisé et l'utiliser pour créer votre application Web pouvant être utilisée en temps réel. La nécessité de partager les découvertes des scientifiques des données a augmenté, en raison de l'utilisation croissante de Python comme langage de programmation préféré, une approche multiplateforme avec une interaction adéquate est l'utilisation d'applications Web.

Un bref article expliquant comment entraîner efficacement l'algorithme de détection d'objets YOLOv5 sur votre propre ensemble de données personnalisé et l'utiliser pour créer votre application Web pouvant être utilisée en temps réel.

Photo de Tobias Tullius sur Unsplash

La nécessité de partager les découvertes des scientifiques des données a augmenté, en raison de l'utilisation croissante de Python comme langage de programmation préféré, une approche multiplateforme avec une interaction adéquate est l'utilisation d'applications Web. Cependant, la programmation typique exige suffisamment d'expertise parmi les utilisateurs de Python avec des frameworks Web quelque peu complexes, comme Flask et Django. Même si l'apprentissage de ces frameworks n'est pas particulièrement difficile pour les utilisateurs modérés de Python, il peut être difficile pour les data scientists d'afficher leur travail de data science.

Streamlit

Le framework Streamlit nous offre donc aux scientifiques des données un meilleur choix aujourd'hui. Il transforme rapidement et facilement des scripts Python simples en applications Web utilisables, interactives et partageables. En raison de sa concentration sur l'exposition de solutions de science des données, il est livré avec un support natif pour les modèles de données et les graphiques créés à l'aide de bibliothèques de science des données populaires telles que pandas et matplotlib. Par conséquent, si vous êtes déjà familier avec Python, apprendre streamlit sera relativement facile.

Exécution de la détection sur une image

Objectif

Je veux vous emmener un peu plus loin dans cet article en vous montrant comment publier votre application Web afin que d'autres puissent voir vos modèles d'IA en temps réel. De plus, je montrerai comment créer un système de gestion des stocks qui gère les boissons froides en temps réel. Pour notre projet, nous utiliserons Streamlit pour créer notre application Web et SQLite comme base de données.

J'utiliserai l' ensemble de données SKU-110K pour créer mon ensemble de données personnalisé afin d'identifier les boissons froides telles que Coca-Cola, Sprite, Pepsi, Mountain Dew, 7UP et Fanta. Il existe de nombreuses photographies de mauvaise qualité dans SKU-110K, il a donc fallu les filtrer, sélectionner les meilleures et les annoter avec la bibliothèque labelImg . qui vous aide à annoter des images dans de nombreux formats de stockage, y compris YOLO et CreateML, et le format PASCAL VOC. C'est un outil utile pour annoter des données pour la détection d'objets.

Entraînement

Une fois les annotations terminées, nous les formerons à l'aide de yolov5 qui est un modèle de détection et de classification d'objets. Nous allons maintenant voir brièvement l'architecture de YOLOv5.

Comme YOLOv5 est un détecteur d'objet à un étage, il comporte trois parties importantes comme tout autre détecteur d'objet à un étage.

Structure dorsale du modèle

La fonction principale de Model Backbone est d'identifier les caractéristiques clés dans une image d'entrée.

Pour extraire des caractéristiques précieuses et utiles d'une image d'entrée dans YOLO v5, le CSPDarkNet (CSP - Cross Stage Partial Networks) est utilisé comme épine dorsale. Il utilise une technique CSPNet qui divise la carte des caractéristiques de la couche de base en deux sections, puis les fusionne à l'aide d'une hiérarchie à plusieurs étapes.

Darknet est rapide et très précis, ce qui sont les principales exigences de la famille YOLO.

Cou de modèle

PANet (Path Aggregation Network) est utilisé comme col dans YOLO v5 pour obtenir des pyramides de fonctionnalités. Les pyramides de caractéristiques sont un composant de base des systèmes de reconnaissance pour détecter des objets à différentes échelles.

Le rôle du cou du modèle est de collecter des caractéristiques à différentes étapes. Le cou est composé de plusieurs chemins descendants et de plusieurs chemins ascendants. PANet utilise les fonctionnalités de toutes les couches et décide lesquelles sont utiles.

Tête de modèle

Il utilise des boîtes d'ancrage pour construire des vecteurs de sortie finaux avec des probabilités de classe, des scores d'objet et des boîtes englobantes.

Le responsable est responsable de :
le score d'objectivité (la probabilité qu'un objet se trouve dans l'ancre)
la classe (un nombre, c'est-à-dire 1 qui correspond à une classe, par exemple une personne)
la confiance de la classe (la chance que la classe ci-dessus soit correcte)
la délimitation coordonnées de la boîte, c'est-à-dire [x, y, w, h] [120, 300, 200, 400]

L'entrée est d'abord transmise à CSPDarknet pour l'extraction de caractéristiques, puis transmise à PANet pour la fusion de caractéristiques (Feature Pyramid). Enfin, Yolo Layer génère des résultats de détection (classe, score, emplacement, taille).

Résultats de la formation

Flux de travail

Page de destination

Sur Landing Page, vous avez deux options, soit vous pouvez aller à Staff ou Admin.

En utilisant streamlit_webrtc , qui facilite la communication en temps réel, nous pourrons détecter des images en temps réel en exécutant des détections sur les images capturées à partir de la vidéo en temps réel dans le backend.

Détections en temps réel à l'aide du mobile

Vous pouvez également utiliser le glisser-déposer ou le téléchargement d'images pour effectuer des détections sur les images, comme indiqué ci-dessous.

Effectuer des classifications à l'aide d'images

En utilisant trois champs - Date, Nom de la boisson et Nombre - nous stockons les résultats sur notre base de données sqlite, ce qui aide l'utilisateur final à maintenir l'inventaire et à vérifier les quantités au jour le jour. comme indiqué ci-dessous

Conclusion

Dans cet article, j'ai expliqué comment créer un système de gestion des stocks à l'aide du modèle de détection d'objets Yolov5 sur un jeu de données personnalisé .

Si vous souhaitez expérimenter vous-même l'ensemble de données personnalisé, vous pouvez télécharger les données annotées sur Kaggle et le code sur Github , l'application Web est déployée ici .

Merci pour la lecture. Je produirai également des articles supplémentaires pour les débutants à l'avenir. Pour en savoir plus sur eux, suivez-moi sur Medium . Je suis toujours ouvert aux suggestions et aux critiques constructives, et mon compte Twitter est @FaseehAhmed2606.