[Profondeur] Les ingénieurs doivent avoir: formation sur le modèle d'IA + optimisation du raisonnement + déploiement intégré

Ceci est un article d'enseignement complet pour les personnes en apprentissage profond et en vision par ordinateur

Tout le monde entend l'IA

Qui connaît l'IA? Il y a 7 milliards de personnes dans le monde et 1,3 milliard en Chine. Tant de gens connaissent l'IA. C'est à la mode. Cependant, toutes sortes de pseudo-sciences et pseudo-concepts sont également apparus. Il n'y a que des centaines de milliers d'ingénieurs en algorithmes informatiques en Chine, parmi lesquels l'IA

Associés, tels que les ingénieurs en algorithmes visuels, les ingénieurs en algorithmes PNL, les systèmes de recommandation, la reconnaissance vocale, etc., le sont encore moins! Si vous êtes un novice, un novice en informatique, un étudiant ou un parent qui souhaite que votre enfant soit exposé à l'IA, ne vous laissez pas tenter par les soi-disant établissements de formation et établissements d'enseignement de la société, et dépensez des dizaines de milliers ou plus. , A appris un solitaire! Je connais beaucoup de gens des établissements de formation, tous à tous les niveaux, ils sont très rentables et ils vont vous redresser. Je n'entrerai pas dans plus de détails aujourd'hui. Je n'utilise cette série d'articles que pour guider tous les horizons (Xiaobai, avec des étudiants de premier cycle et des amis qui souhaitent contacter l'IA et ceux qui sont en contact avec l'IA) en tant qu'algorithmiste de vision de l'IA. Lisez les articles et articles techniques. Pour mieux progresser!

Aujourd'hui, je partagerai l'expérience de partage d'une application de vision IA depuis le développement, la formation des modèles, l'optimisation jusqu'au déploiement jusqu'à l'atterrissage de 0 à 1! Veuillez prendre un petit cahier et prendre des notes ~

Un projet show

Insérez la description de l'image ici

          Yolov3 目标检测

Insérez la description de l'image ici Test de tabagisme Yolov5
Insérez la description de l'image ici

   Ssd 安全帽检测

Insérez la description de l'image ici

        Ssd 口罩检测

Insérez la description de l'image ici

       Yolov 4 车牌车速与闯红灯检测

On peut voir en partie qu'il peut atteindre 60-80fps sur le CPU après une accélération d'inférence basée sur le module de développement, et la consommation d'énergie est très faible, ce qui est très approprié pour l'atterrissage d'application.

De nombreux projets intéressants à valeur commerciale et scientifique ne sont pas listés un par un. Ces projets peuvent être déployés sur la carte de développement, comme notre module de vision que je présenterai ~

Deux environnement et guide dépendants

2.1 environnement dépendant

Mon environnement est: Ubuntu18.04

Python 3.7 (3.x est très bien) Tensorflow (1.14-gpu) Pytorch (1.5-gpu)

Un module 2085, Openvino2020.3.194, C ++, g ++ (Ubuntu 7.5.0-3ubuntu1 ~ 18.04)

7.5.0 Ensuite, je laisserai tout le monde l'installer lorsque l'environnement sera nécessaire.

2.2 Introduction à cet article

Cet article est original et la réimpression est interdite sans autorisation.

Si vous êtes un chercheur et un ingénieur dans le domaine de l'IA: si vous êtes un chercheur, apprenez à former des modèles et à optimiser l'inférence et le déploiement d'applications. Vous pouvez vous concentrer sur la lecture de l'inférence et du déploiement d'applications. Vous pouvez connaître intuitivement l'effet et L'effet réel de l'application d'atterrissage.

Formation sur trois modèles

3.1 Les novices peuvent faire le bon enseignement

Si vous êtes nouveau dans l'IA et que vous n'êtes pas familier avec l'apprentissage en profondeur et la vision par ordinateur, mais que vous avez une base python ou c ++ et que vous souhaitez compléter une base visuelle simple, je vous suggère d'améliorer une certaine base (cela peut mieux résoudre le problème Punaise).

À ce stade, vous souhaitez entraîner un modèle de détection de cible, vous pouvez choisir une variété d'algorithmes, tels que la série Yolo, ssd, plus rapide rcnn, etc., cette section prend yolov5 dans yolo comme exemple, pour vous donner une démonstration de la détection du tabagisme voir cet article Blog: https://blog.csdn.net/qq_46098574/article/details/107334954, autre détection de cible dans cette section ou l'utilisation d'autres algorithmes divers et comparaison d'effets, nous vous rencontrerons plus tard. Sur la base de ce blog, je vais vous donner une introduction générale au tutoriel pratique de la formation des modèles ~

Télécharger le code source

git clone https://github.com/CVUsers/Smoke-Detect-by-YoloV5/tree/master.git

Entrez le répertoire, installez l'environnement dépendant

pip install-Ur requirements.txt

Si vous devez utiliser un modèle de précision mixte pour l'entraînement: installez Apex

Si vos données ne sont pas marquées: veuillez vous référer au blog

Sur la base du fichier xml généré, l'opération os est écrite comme indiqué dans le fichier xml sans suffixe

Insérez la description de l'image ici

Puis exécutez voc_label.py pour convertir en étiquette

Couper l'exécution du jeu de formation / validation train_test_split.py

Exécutez path_trans pour terminer le chemin et écrivez train.txt

Ensuite, écrivez le texte yaml: voir smoke.yaml et écrivez les deux chemins txt après avoir terminé le chemin de train.txt et test.txt généré à l'étape précédente dans yaml, puis nc: modifiez le nombre de vos propres catégories, et noms 【'fumée'】

Insérez la description de l'image ici

Une fois que nous avons effectué le prétraitement des données ci-dessus, nous pouvons commencer la formation. Certaines des étapes de traitement ci-dessus peuvent être différentes pour tout le monde, mais les idées sont généralement les mêmes. Ensuite, nous pouvons effectuer une pré-formation et télécharger le modèle officiel de pré-formation:

yolov5s yolov5m yolov5l yolov5x est venu et j'ai mis des yolov5s dans mon github, qui est relativement petit, seulement 25 Mo, spécifiquement pour le terminal mobile.

Commence l'entraînement:

python train.py – data data / smoke.yaml – cfg models / yolov5s.yaml – weights weights / yolov5s.pt – batch-size10 --epochs100

Si cela se passe bien, vous verrez la formation itérative suivante:
Insérez la description de l'image ici

Exécutez detect.py pour une détection en temps réel

Insérez la description de l'image ici

Parmi eux, pour raisonner sur une image, puis écrivez le chemin de l'image par défaut dans la source, ou écrivez le dossier d'image entier comme indiqué sur la figure, de sorte que toutes les images soient détectées. Vous pouvez également écrire l'adresse vidéo et le dossier vidéo pour détecter toutes les vidéos et les stocker par inférence

Dans le dehors. Changer à 0

Il s'agit d'une détection en temps réel ~ La caméra d'ordinateur par défaut, bien sûr, peut également être remplacée par un téléphone mobile. C'est aussi très simple, vous pouvez discuter avec moi en privé si vous en avez besoin. Exécutez le code et vous verrez la détection en temps réel dans la caméra intégrée de votre ordinateur, ce qui peut entraîner un certain décalage. Si vous utilisez le module 2085 que j'utiliserai ci-dessous, vous aurez une nouvelle expérience.

3.2 Technologie noire que les maîtres aiment aussi: modèle demi-précision sans perte

Ci-dessus, nous avons présenté la détection de cible en utilisant la détection de tabagisme yolov5 comme exemple, puis nous allons nous améliorer sur cette base et parler de la technologie noire que les maîtres veulent également.

1: Modèle à précision mixte, comment le modèle à demi-précision peut-il réduire la mémoire vidéo tout en maintenant la précision?

Après avoir installé apex, ajoutez-le au code et initialisez l'ampli dans l'optimiseur

Optimiser la rétro-propagation. Assembler à la formation cuda

Pour obtenir une demi-précision, d'autres informations sont détaillées dans le blog, et certains détails n'ont pas été annoncés.

3.2 Technologie noire que les maîtres adorent aussi: pourquoi utiliser des modèles de pré-formation

En utilisant le modèle de pré-formation, le fonctionnaire l'a donné, alors savez-vous pourquoi vous souhaitez utiliser le modèle de pré-formation?

L'auteur a fait de son mieux pour concevoir un modèle de référence. Nous pouvons utiliser des modèles pré-entraînés sur nos propres ensembles de données au lieu de créer des modèles à partir de zéro pour résoudre des problèmes similaires de traitement du langage naturel.

Bien que quelques ajustements restent à faire, cela nous a déjà fait gagner beaucoup de temps: généralement, chaque perte tombe plus rapidement et économise des ressources de calcul.

Accélérez la vitesse de convergence de la descente de gradient

Plus susceptible d'obtenir un modèle avec une erreur de modèle faible ou une erreur de généralisation faible

Réduisez la disparition du gradient ou l'explosion du gradient causée par la non-initialisation ou une initialisation incorrecte. Cette situation entraînera un ralentissement, une panne et une défaillance du modèle.

L'initialisation aléatoire peut briser la symétrie, garantissant ainsi que différentes unités cachées peuvent apprendre différentes choses

3.3 La technologie noire que les maîtres aiment aussi: et si la formation est interrompue? «L'apprentissage de la migration» peut vous aider à le faire?

J'ai ajouté le paramètre -resume au code. Lorsque vous êtes obligé d'interrompre pendant l'entraînement, vous pouvez utiliser ce paramètre, last.pt enregistré dans votre entraînement

Transfert d'apprentissage. À ce moment, vous verrez les détails dans le code, l'utilisation est d'ajouter –resume

Alors n'utilisez pas le modèle officiel de pré-entraînement, vous verrez le dernier entraînement de perte et il réussira.

3.3 La technologie noire que les maîtres aiment aussi: l'amélioration des données

L'un des objectifs ultimes de l'intelligence artificielle, ou vision par ordinateur, est de construire un système vraiment applicable à l'environnement complexe du monde réel. En ce qui concerne les systèmes d'apprentissage automatique actuellement appliqués, la plupart d'entre eux adoptent des méthodes d'apprentissage supervisé, ce qui conduira inévitablement à la nécessité de collecter des échantillons d'images de manière extensive et d'effectuer le travail d'annotation d'images correspondant. La main-d'œuvre est toujours épuisée et des images de jeu d'échantillons de haute qualité sont les facteurs clés pour créer un excellent système d'apprentissage automatique. L'utilisation de méthodes appropriées d'amélioration des données peut multiplier par dix le nombre d'ensembles de données, maximisant ainsi l'utilisation de chaque échantillon dans un petit ensemble d'échantillons, de sorte qu'il puisse également être formé pour obtenir un meilleur modèle d'apprentissage automatique. La méthode de valorisation des données peut également améliorer la robustesse du modèle et l'empêcher de se surajouter pendant l'entraînement.

Les méthodes d'amélioration des données couramment utilisées proviennent principalement de la transformation géométrique dans le traitement d'image numérique, mais ne changent pas la valeur du pixel dans l'image, mais changent sa position spatiale, de sorte que le réseau neuronal convolutif est censé apprendre des caractéristiques plus invariantes dans l'image. Il contribue également à améliorer ses performances de généralisation.

Ce qui suit va brièvement énumérer et expliquer les différentes méthodes.

Transformation de translation (décalage): Traduisez l'image d'origine d'une certaine manière (manière prédéfinie ou aléatoire pour déterminer le pas, la plage et la direction de la traduction) dans le plan de l'image.

Retourner la transformation: retournez l'image d'origine dans le sens vertical ou horizontal.

Recadrage aléatoire: définissez aléatoirement la région d'intérêt pour recadrer l'image, ce qui équivaut à ajouter une perturbation aléatoire.

Bruit: ajoutez un bruit gaussien ou un bruit de sel et de poivre à l'image de manière aléatoire.

Transformation de contraste (Contraste): changer le contraste de l'image équivaut à garder la composante de teinte H inchangée dans l'espace HSV, tout en changeant la composante de luminosité V et la saturation S pour simuler les changements d'éclairage dans l'environnement réel.

Zoom: Réduit ou agrandit l'image selon un rapport défini.

Échelle: elle est similaire à la mise à l'échelle, mais l'objet de la transformation d'échelle est le contenu de l'image plutôt que l'image elle-même (reportez-vous à la méthode d'extraction de caractéristiques SIFT). La pyramide d'images est construite pour obtenir des images de différentes tailles et degrés de flou.

3.3 La technologie noire que les experts aiment aussi: BN

Normalisation par lots

Lors de la formation d'un réseau de neurones profonds, parce que les paramètres de chaque couche changent constamment, la distribution de probabilité de chaque entrée de couche change également constamment, ce qui entraîne également la saturation des côtés positifs et négatifs de la fonction d'activation non linéaire (telle que sigmoïde, etc.), ce qui fait l'itération d'apprentissage Le processus est devenu extrêmement lent, voire impossible. À ce stade, il est généralement nécessaire d'utiliser un taux d'apprentissage plus petit et une initialisation de poids à granularité fine. Loffe et al.appellent ce phénomène «changement de covariance interne» (changement de covariance interne).

changement de covariable) et a proposé une normalisation par lots (BN) pour résoudre ces problèmes.

L'article propose que dans chaque itération de descente de gradient stochastique, une opération de normalisation soit effectuée dans le mini-lot, de sorte que la valeur moyenne de chaque dimension du résultat de sortie soit 0 et la variance soit 1, ce qui évite effectivement la fonction d'activation non linéaire. Problème de saturation (prenez sigmoïde comme exemple. Observez la fonction sigmoïde. Lorsque l'entrée de cette fonction est concentrée près de 0, le gradient de sortie est plus grand); en même temps, le changement de gradient est réduit par l'influence des paramètres et de leurs valeurs initiales.

Normalisation par lots: généralement utilisée avant le mappage non linéaire (fonction d'activation), normaliser x = Wu + b de sorte que la valeur moyenne du résultat (chaque dimension du signal de sortie) soit 0 et la variance est 1. Laisser l'entrée de chaque couche avoir une distribution stable aidera à la formation du réseau.

L'application de l'algorithme BN en réseau

Le réseau neuronal traditionnel ne normalise que x (moins la moyenne et divise l'écart type) avant d'introduire l'échantillon x dans la couche d'entrée pour réduire la variabilité entre les échantillons. Sur cette base, BN normalise non seulement les données d'entrée x de la couche d'entrée, mais normalise également l'entrée de chaque couche cachée.

Optimisation à quatre modèles

Nous avons parlé plus haut de l'optimisation de la formation. Ensuite, je présenterai l'optimisation de l'inférence basée sur Openvino. Avez-vous un petit livre?

4.1 L'introduction d'Openvino peut être trouvée dans ce blog

OpenVINO est une boîte à outils développée par Intel sur la base de sa plate-forme matérielle existante qui peut accélérer le développement d'applications de vision par ordinateur haute performance et de vision d'apprentissage en profondeur. Elle prend en charge l'apprentissage en profondeur sur les accélérateurs matériels sur diverses plates-formes Intel et permet une exécution hétérogène directe. Support dans les systèmes Windows et Linux, langage Python / C ++. Boîte à outils d'optimisation

OpenVINO

Laissez Xiaobai qui ne comprend pas les principes de la vision par ordinateur et de l'apprentissage en profondeur être en mesure de démarrer en très peu de temps. Vous n'avez pas à vous soucier de la manière de créer une plate-forme de développement, de choisir un cadre d'apprentissage en profondeur, de former et d'optimiser les modèles et d'accélérer le matériel. Vous n'avez besoin que de la pré-formation et de l'accélération matérielle. Le modèle de segmentation sémantique optimisé sera bientôt en mesure de créer un ensemble de systèmes professionnels d'analyse visuelle des voitures autonomes.

caractéristique principale:

1: améliorez de plus de 19 fois les performances d'apprentissage en profondeur liées à la vision par ordinateur sur la plate-forme Intel

2: soulager le goulot d'étranglement des performances du réseau CNN dans les périphériques de périphérie

3: Accélérez et optimisez l'API traditionnelle des bibliothèques de vision OpenCV et OpenXV *

4: Exécuter sur CPU, GPU, FPGA et autres appareils basés sur l'interface API générale plus

OpenVINO dispose de 2 grands modules. Le premier est OR, qui est utilisé pour convertir des modèles formés au deep learning en fichiers reconnaissables par le moteur (xml et bin). L'autre est le moteur d'inférence, qui est l'unité d'implémentation spécifique d'OpenVINO, qui utilise une intelligence. Le moteur complète l'application correspondante.

Processus général:

1: Configurez Mode Optimizer en fonction de votre propre modèle d'entraînement.

2: Exécutez Model Optimizer en fonction des paramètres de modèle définis et générez l'IR correspondant (principalement xml et bin)

xml - principalement utilisé pour décrire la topologie du réseau

bin-inclut les poids générés et les données binaires biaisées

3: utilisez le moteur d'inférence pour tester l'IR généré dans des scénarios d'application réels

4: Appelez l'interface correspondante d'Inference Engine dans l'application et déployez le modèle IR généré dans l'environnement réel.

Optimiseur de modèle

Model Optimizer est un outil de ligne de commande multiplateforme utilisé pour faciliter la transition entre la formation et les plates-formes d'implémentation spécifiques, principalement pour l'analyse de modèles statiques et l'ajustement automatique des modèles de profondeur en fonction des références de configuration

Model Optimizer est conçu pour prendre en charge les frameworks couramment utilisés (Caffe, TensofFlow, MXNet, Kaldi, ONNX, etc.), ce qui équivaut à encapsuler une couche pour un développement facile.

Le flux de travail principal de Model Optimizer:

1: Configurez Model Optimizer selon le cadre requis

2: Fournir un modèle de formation en entrée, y compris la topologie et les paramètres du réseau

3: Exécuter Model Optimizer (formation en fonction de la topologie réseau sélectionnée)

4: sortie IR comme optimiseur de modèle

Moteur d'inférence :

Inference Engine est l'unité d'exploitation principale et fournit l'API correspondante

Prendre IR comme entrée

Exécution optimisée sur le matériel cible

Fournir les meilleures performances d'exécution de la plateforme embarquée

Insérez la description de l'image ici

4.2 Installation d'Openvino

Environnement: Ubuntu18.04

Consultez le site officiel pour l'enseignement ou suivez les étapes ci-dessous:

1. Téléchargez la boîte à outils OpenVINO:

https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html

2. Installation:

Décompressez:

tar -zxvf l_openvino_toolkit_p_2019.2.242.tgz

Installation de l'interface graphique:

cd /home//l_openvino_toolkit_p_2019.2.242

sudo ./install_GUI.sh

Remarque: Si vous avez déjà installé OpenVINO, supprimez inference_engine_samples et openvino_models dans le répertoire / home /.

Installation de l'utilisateur root, le répertoire d'installation par défaut est / opt / intel / openvino_

À cette étape, cliquez sur Personnaliser ..., vous pouvez voir le chemin d'installation par défaut, prendre en charge les chemins personnalisés, cliquez sur le bouton Enregistrer, tout le chemin pour installer.

Environnement dépendant de l'installation:

cd /opt/intel/openvino_2019.2.242/install_dependencies

sudo -E ./install_openvino_dependencies.sh

Définir des variables d'environnement temporaires (les variables d'environnement seront supprimées après la fermeture du terminal shell, il est recommandé de les définir définitivement)

source / opt / intel / openvino / bin / setupvars.sh

Définissez des variables d'environnement permanentes:

vi / .bashrc

Ajoutez le code suivant:

source / opt / intel / openvino / bin / setupvars.sh

Configurez l'optimiseur de modèle et configurez tous les frameworks en même temps:

cd / opt / intel / openvino / deployment_tools / model_optimizer / install_prerequisites

sudo ./install_prerequisites.sh

3. Vérification

Exécutez le script de vérification de classification d'image:

cd / opt / intel / openvino / deployment_tools / demo

sudo -E -H ./demo_squeezenet_download_convert_run.sh

Insérez la description de l'image ici

Exécutez le script de vérification du pipeline d'inférence:

sudo -H ./demo_security_barrier_camera.sh

Le test est réussi et l'installation est terminée!

4.3 Conversion et raisonnement du modèle Openvino

Par exemple, les fichiers de modèle natifs pt et pb de la série yolo sont convertis au format xml et bin d'Openvino. Voir ici. Après avoir converti les fichiers xml et bin, nous pouvons effectuer une détection en temps réel basée sur le modèle ~, la figure suivante est un processus d'utilisation simple.

Utilisation simple de l'inférence de modèle

Insérez la description de l'image ici
Insérez la description de l'image ici

Déploiement de cinq modèles

5.1 Conversion de modèle Déployez le modèle d'algorithme auto-entraîné et appliquez-le au module 2085 après l'inférence openvino

À ce stade, le xml est converti en fichier blob et nous pouvons le déployer dans notre module:

Recherchez le fichier de conversion local.

effectué

./myriad_compile

-ip U8 -VPU_MYRIAD_PLATFORM VPU_MYRIAD_2480 -VPU_NUMBER_OF_SHAVES 4

-VPU_NUMBER_OF_CMX_SLICES 4 -m chemin vers.xml -o chemin vers.blob

Vous pouvez générer des fichiers blob dans le chemin

L'environnement doit être configuré avant le déploiement. Il y a principalement les étapes suivantes ~

5.2 api en direct

git clone https://github.com/signal11/hidapi.git

Prenez Linux comme exemple, vérifiez readme.txt en détail

sudo apt-get install autotools-dev autoconf automake libtool

./amorcer

./configure --enable-testgui --prefix = / usr

faire

faire installer

Six modules utilisent

6.1 Exécuter la démo de détection de cible cnn

Après avoir installé les dépendances ci-dessus, vous pourrez utiliser directement le modèle de détection de cible CNN que nous vous fournissons et connecter le module 2085.

  1. installer les dépendances: créer des dépendances_install

  2. construire l'application avec la commande: make build

./cnn-demo / dev / video2 data / CNN_2x8x.blob gauche

Si une erreur est signalée, veuillez ajouter sudo

De cette façon, vous verrez l'écran de détection de cible en temps réel, par exemple

Insérez la description de l'image ici

Insérez la description de l'image ici

6.2 Déployer le modèle d'algorithme auto-entraîné et l'appliquer au module 2085 après l'inférence openvino

À partir de l'article de formation sur le modèle, nous avons formé le modèle grâce à des efforts inlassables, puis il nous suffit de faire une simple conversion IR, de convertir le modèle pb en fichiers de modèle xml et bin d'Openvino, puis de convertir le fichier xml en un blob via le modèle ( (Voir le raisonnement ci-dessus)

Ensuite, il suffit de modifier simplement quelques endroits dans cnn_host ~

1: modifiez la catégorie de détection de cible, comme indiqué sur la figure, commentez l'original et ajoutez votre catégorie
Insérez la description de l'image ici

Après avoir effectué la modification, vous pouvez effectuer un nettoyage, puis une nouvelle génération, et vous pouvez effectuer votre détection de cible. Si vos exigences de détection changent, comme la représentation des gestes, veuillez modifier la méthode decode_mobilenet si nécessaire, ou contactez-nous pour obtenir de l'aide. modifier.

Insérez la description de l'image ici

./cnn-demo / dev / video2 data / CNN_2x8x.blob gauche

Après avoir exécuté cnn-demo, vous verrez l'expérience visuelle en temps réel après l'accélération de l'inférence:

Insérez la description de l'image ici

L'effet spécifique dépend du modèle ~

Sept comparaison réelle

Le modèle yolov3 qui n'a pas été accéléré par l'inférence openvino a une vitesse de détection acceptable et une grande précision, comme le montre la figure ci-dessous

Insérez la description de l'image ici

Après le raisonnement et l'accélération openvino, il s'agit du processeur -d, la vitesse est très rapide

Insérez la description de l'image ici

Si vous suivez la méthode ci-dessus, déployez simplement le modèle yolov3 dans le module, vous verrez alors l'image suivante, la vitesse est également très rapide. 5
Insérez la description de l'image ici

Huit résumé

8.1 Déployer le modèle d'algorithme auto-entraîné et l'appliquer à l'exemple simple du module 2085 après l'inférence openvino

Après avoir configuré l'environnement, vous pouvez simplement utiliser la démo de open_model_zoo, en prenant comme exemple la reconnaissance des piétons:

cd / home / {votre chemin} / open_model_zoo / tools / downloader

./downloader.py– nom personne-véhicule-vélo-détection-carrefour-0078

Enregistrez le chemin de téléchargement du fichier xml:

/home/zxx/open_model_zoo/tools/downloader/intel/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.xml

Convertir xml en blob

./myriad_compile

-ip U8 -VPU_MYRIAD_PLATFORM VPU_MYRIAD_2480 -VPU_NUMBER_OF_SHAVES 4

-VPU_NUMBER_OF_CMX_SLICES 4 -m

/home/zxx/open_model_zoo/tools/downloader/intel/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.xml

-Le

/home/zxx/open_model_zoo/tools/downloader/intel/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.blob

Modifiez la classe de la ligne 186 dans le code source cpp en "cross-person"

sudo rendre propre

sudo faire construire

effectué

./cnn-demo / dev / video2 path / personne-véhicule-vélo-détection-carrefour-0078.blob gauche

Utilisez ce module pour obtenir l'expérience de raisonnement ultime

Tu verras:

Insérez la description de l'image ici

(Vous obtiendrez une expérience d'affichage en temps réel sur le module) La démo simple est tellement réussie,

8.2 Recommandation du module:

Insérez la description de l'image iciInsérez la description de l'image ici

                   经过推理加速的实时目标检测

Modules logiciels et matériels, y compris Movidius

Puce VPU, système de suivi inertiel multi-caméras (système de suivi binoculaire + caméra frontale + caméra de profondeur). La "solution SLAM de fusion de navigation visuelle-inertielle" traditionnelle, et avec une accélération VPU (processeur visuel) personnalisée, après l'optimisation collaborative logicielle et matérielle, elle peut atteindre une stabilité incroyable. En outre, il convient de noter que dans le système de suivi multi-caméras décrit ci-dessus, la caméra de profondeur est principalement utilisée pour le suivi des gestes, et la caméra frontale est utilisée pour prendre des photos.Le système binoculaire qui participe réellement au suivi spatial vslam est en fait un système binoculaire composé de deux caméras.

En utilisation réelle, l'accélération d'inférence sur le cpu, les pfs peuvent atteindre plus de 80, la consommation d'énergie est très faible, et il est très adapté aux applications d'atterrissage. Si nécessaire, veuillez contacter M. Ye, email: [email protected]

Bienvenue pour suivre le compte public DeepAI Vision

Insérez la description de l'image ici

Auteur: cv transfer package Man

Bienvenue pour suivre ma recherche de blog Douyin, Bilibili, CSDN: cv tune package man

Référence

[1] https://blog.csdn.net/qq_46098574/article/details/107334954

[2] https://blog.csdn.net/qq_46098574/article/details/105615297

[3] https://blog.csdn.net/kan2016/article/details/97371100

[4] https://blog.csdn.net/qq_46098574/article/details/107742860

Je suppose que tu aimes

Origine blog.csdn.net/qq_46098574/article/details/108397541
conseillé
Classement