[L'analyse la plus complète des problèmes de détection de darknet_ros (YOLO V3) sous Ubuntu system 18.04 virtual machine ros]


J'avais initialement prévu d'utiliser le package darknet_ros pour détecter yolov3 sur la voiture intelligente équipée d' Ubuntu 18.04

La première consiste à implémenter la détection darknet_ros (YOLO V3) sous ROS
Article de référence

https://blog.csdn.net/qq_42145185/article/details/105730256

1. Téléchargement de code
Page d'accueil Code Github : https://github.com/leggedrobotics/darknet_ros
Commande de téléchargement :

mkdir -p catkin_workspace/src
cd catkin_workspace/src
git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
cd ../

Le temps de téléchargement peut être relativement long, veuillez patienter...
Si le système Ubuntu téléchargé ne prend pas en charge l'exploration directe du code depuis gitthub, vous pouvez changer la méthode de téléchargement en téléchargement. Cliquez sur cloner dans GitHub, et vous pouvez choisir ssh et https à charger en mode déroulant. Pour le moment, il vous suffit de convertir le code git clone.
via ssh

git clone --recursive [email protected]:mirrors/leggedrobotics/darknet_ros.git

par https

git clone --recursive https://gitcode.net/mirrors/leggedrobotics/darknet_ros.git

insérez la description de l'image ici
Pour les autres problèmes que vous pourriez rencontrer lors du téléchargement, veuillez vous référer au chapitre de téléchargement du package darknet_ros dans cet article

http://t.csdn.cn/hPQyd

Parmi eux, parce qu'il est déplacé vers la voiture équipée d'Ubuntu, il est directement téléchargé via win11, puis déplacé vers le système Ubuntu à l'intérieur de la voiture via une clé USB. Au cours de ce processus de déplacement, des fichiers peuvent être manquants ou endommagés, ce qui peut provoquer des erreurs lors d'une opération ultérieure, il n'est donc pas recommandé. Il est préférable de télécharger directement via la méthode ci-dessus, et non en téléchargeant divers packages compressés tels que le zip de GitHub.
Par exemple,
démarrez yolo3 pour détecter les objets vus par la caméra

roslaunch darknet_ros darknet_ros.launch

Rapport d'erreur
insérez la description de l'image ici
Cette erreur est probablement due au fait que certains fichiers cfg ne peuvent pas être reconnus après le déplacement de ce package de Windows vers Ubuntu.
Retournez dans le répertoire /home/xx/catkin_ws/src/darknet_ros, ouvrez le terminal, exécutez
git stashinsérez la description de l'image ici
et relancez.

2. Compilez
Dans le répertoire de l'espace de travail ROS, exécutez la commande :

catkin_make -DCMAKE_BUILD_TYPE=Release

À ce stade, l'ensemble du projet commencera à être compilé. Une fois la compilation terminée, il vérifiera s'il existe deux fichiers de modèle, yolov2-tiny.weights et yolov3.weights, dans le {catkin_ws}/darknet_ros/darknet_ros/yolo_network_config /fichier de pondérations. Le volume est sans ces deux fichiers de modèle. Par conséquent, il commencera automatiquement à télécharger le fichier modèle après la compilation, ce qui représente un autre long temps d'attente.
Si vous avez déjà téléchargé le fichier modèle, c'est très bien. Copiez simplement le fichier modèle dans le dossier ci-dessus avant de commencer à compiler, et vous ne le téléchargerez plus.
insérez la description de l'image ici
Lien de téléchargement:

https://pjreddie.com/media/files/yolov2.weights
https://pjreddie.com/media/files/yolov2-tiny.weights
https://pjreddie.com/media/files/yolov3.weights
https://pjreddie.com/media/files/yolov3-tiny.weights

Placez le fichier téléchargé dans le fichier /darknet_ros/darknet_ros/yolo_network_config/weights
Continuer

catkin_make -DCMAKE_BUILD_TYPE=Release

3. Publication de sujet d'image
Étant donné que darknet_ros s'abonnera directement au nom de sujet d'image spécifié, puis détectera l'image, dessinera le cadre de détection et publiera le sujet de détection correspondant, vous devez donc d'abord trouver un package ROS pouvant publier des sujets d'image. est recommandé ici Le package de pilote usb_cam officiel peut publier directement des images capturées par la caméra intégrée de l'ordinateur ou une caméra USB connectée à l'ordinateur en tant que sujet d'image ROS.
Téléchargez le pilote de la caméra :

sudo apt-get install ros-kinetic-usb-cam

Téléchargez le pilote de la caméra Parfois, votre propre système d'exploitation n'est peut-être pas la version kinetic, vous devez donc interroger votre propre version ros via les commandes du terminal.

 rosversion -d

S'il s'agit d'une version mélodique, utilisez :

sudo apt-get install ros-kinetic-usb-cam

insérez la description de l'image ici
Publiez ensuite le sujet de l'image de la webcam :

roslaunch usb_cam usb_cam-test.launch

Si tout se passe bien, vous devriez pouvoir voir l'interface d'affichage de l'image réelle.

3. Démarrez le nœud de test de caméra
Erreur 1
Après avoir entré la commande de démarrage de test suivante, une erreur se produit.
insérez la description de l'image ici
Solution
1. Essayez de brancher l'interface de la caméra sur USB3.0.
USB3.0, USB3.0 est également appelé bus USB SuperSpeed.Comparé au bus USB2.0 haute vitesse (haute vitesse), sa vitesse de transmission est plus rapide.
2. Deuxièmement, comme indiqué dans la figure ci-dessous, il doit être vérifié, sinon cela signifie que la caméra n'est pas connectée.
insérez la description de l'image ici
Résolution de l'erreur 2
insérez la description de l'image ici
 :

sudo apt-get install ros-melodic-image-view

erreur 3
insérez la description de l'image ici

Configurez le périphérique USB et vérifiez ubs3.
insérez la description de l'image ici
Ensuite, exécutez darknet_ros
puis exécutez darknet_ros pour détecter. Avant d'exécuter la détection, vous devez modifier le fichier de configuration afin que les sujets souscrits par darknet_ros correspondent aux sujets des images publiées par usb_cam.
Ouvrez le fichier darknet_ros/config/ros.yaml et trouvez :
insérez la description de l'image ici
Modifiez le sujet dans camera_reading comme indiqué dans la figure ci-dessus, à savoir :

subscribers:
  camera_reading:
    topic: /usb_cam/image_raw
    queue_size: 1

Retournez ensuite dans le répertoire racine de l'espace de travail darknet et exécutez :

source devel/setup.bash
roslaunch darknet_ros darknet_ros.launch

Nous avons seulement besoin de remplacer l'ensemble de pré-formation par YOLO v3 pour la détection. Le remplacement est le suivant : Trouvez le fichier de configuration et vous pouvez voir l'ensemble de formation suivant. Ouvrez le fichier de lancement
insérez la description de l'image ici
et
insérez la description de l'image ici
modifiez darknet_ros.launch

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/
 
改为
 
arg name="network_param_file"         default="$(find darknet_ros)/config/yolov3.yaml"/
如下:

Redémarrez ensuite :

roslaunch darknet_ros darknet_ros.launch

Cela peut être réalisé presque, et fondamentalement, les erreurs ci-dessus sont les solutions trouvées dans les articles de référence suivants.

Implémentation de la détection darknet_ros (YOLO V3) sous ROS

https://blog.csdn.net/qq_42145185/article/details/105730256

Bras robotique Car yolo (1) Gazebo sous ros pour construire une voiture (contrôle au clavier) installer la simulation de caméra et charger yolo pour détecter et identifier les objets marqués

https://blog.csdn.net/WhiffeYF/article/details/109187804

Apprentissage ROS (3) appel portable et caméra externe usb

https://blog.csdn.net/m0_56451176/article/details/126174060?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169020102516800227494294%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169020102516800227494294&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-126174060-null-null.142^v91^insert_down1,239^v3^control&utm_term=sudo%20apt-get%20install%20ros-melodic-usb-cam&spm=1018.2226.3001.4187

Utiliser la caméra sous ROS

https://blog.csdn.net/wilylcyu/article/details/51732710

Allumez la caméra en ROS_étapes détaillées

https://blog.csdn.net/weixin_41074793/article/details/83474501?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-0&spm=1001.2101.3001.4242

Notes d'étude ROS - connecter une caméra USB dans ROS

https://blog.csdn.net/weixin_51244852/article/details/116169460?ops_request_misc=&request_id=&biz_id=102&utm_term=sudo%20apt-get%20install%20ros-melod&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-116169460.142^v91^insert_down1,239^v3^control&spm=1018.2226.3001.4187

Utilisez le pilote usb_cam pour lire les données de la caméra sous ROS

https://blog.csdn.net/Yangxiaoaijiejie/article/details/127061479?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169020121616800227474354%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169020121616800227474354&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-127061479-null-null.142^v91^insert_down1,239^v3^control&utm_term=%E5%AE%89%E8%A3%85ROS_USB%E9%A9%B1%E5%8A%A8%E6%8A%A5%E9%94%99&spm=1018.2226.3001.4187

Voici une explication pour un rapport d'erreur utilisant yolov3, car il existe différents fichiers de lancement dans le fichier darknet_ros.launch, si vous utilisez la commande suivante.

roslaunch darknet_ros yolov3.launch

insérez la description de l'image ici
Une erreur peut être signalée indiquant que le fichier yolov3-tiny.cfg est manquant. Si ce fichier est introuvable, vous devez créer manuellement un nouveau fichier .cfg et le coller.
Ce lien de fichier contient des commentaires en chinois et peut signaler une erreur. Voici le code compilé pour votre propre référence.

https://blog.csdn.net/weixin_44152895/article/details/106570976?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169027884416800222821030%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169027884416800222821030&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-26-106570976-null-null.142^v91^insert_down1,239^v3^control&utm_term=yolov3-tiny.cfg%E4%B8%8B%E8%BD%BD&spm=1018.2226.3001.4187
[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=2
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1

[convolutional]
batch_normalize=1
filters=16
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=1

[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky

###########

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear



[yolo]
mask = 3,4,5
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1

[route]
layers = -4

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

[upsample]
stride=2

[route]
layers = -1, 8

[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear

[yolo]
mask = 0,1,2
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1

Je suppose que tu aimes

Origine blog.csdn.net/weixin_47869094/article/details/131999046
conseillé
Classement