La détection de ligne de voie est un module de base dans la conduite automatique, le maintien de la voie, la croisière adaptative, le changement de voie automatique ; il est également très important pour les décisions ultérieures de sortie de voie ou de planification de trajectoire des véhicules à conduite entièrement automatique.
À l'heure actuelle, il existe deux schémas principaux pour la détection des lignes de voie : les méthodes traditionnelles et l'apprentissage en profondeur .
1. Méthode traditionnelle
(1) Détection des contours + transformation de Hough
Flux de la méthode : image couleur en niveaux de gris, flou, détection des contours, transformée de Hough
Cette méthode peut généralement détecter les deux lignes de voies conduisant actuellement un véhicule dans une scène simple, et parfois des voies adjacentes (selon de la caméra frontale). Cette méthode peut utiliser le résultat de la transformation de Hough (la pente de la ligne) pour filtrer davantage les lignes des voies gauche et droite. Mais en même temps, cette méthode s'appuie également sur les résultats de la détection des contours, donc l'ajustement des paramètres (détection des contours, transformée de Hough) et d'autres astuces (sélection ROI, etc.) sont très importants.
(2) Flux de méthode de seuil de couleur : convertissez l'image en espace colorimétrique (HSV général), définissez la valeur de seuil pour chaque canal dans le nouvel espace colorimétrique (la valeur supérieure à la valeur de seuil est 1 et la valeur inférieure à la valeur est
0), et le résultat est obtenu.
Cette méthode repose sur la sélection du seuil de chaque canal, et n'a besoin d'ajuster que quelques paramètres de seuil, mais parfois la robustesse sera médiocre, par exemple, les véhicules devant le véhicule actuel peuvent tous être réglés sur 1.
(3) Flux de méthode de transformation de perspective
: obtenir une matrice de transformation de perspective, une transformation de perspective, une détection de ligne de voie L'
avantage de cette méthode est que l'image capturée par la caméra frontale peut être convertie en une vue à vol d'oiseau, et plusieurs lignes peuvent être détecté. La clé réside dans la précision de la matrice de transformation de perspective (sans tenir compte de la détection de ligne de voie convertie).Pour la vue à vol d'oiseau convertie, la ligne de voie peut être détectée des deux manières ci-dessus.
Détection des bords, k-Means, modèle de probabilité gaussien
(1) Détection de ligne de voie Udacity
- Étalonnage de la caméra, openCV
Raisons : erreur de fabrication du capteur, distorsion radiale non linéaire, distorsion tangentielle
Référence : https://zhuanlan.zhihu.com/p/87334006 ; https://blog.csdn.net/a083614/article/details/78579163
- Sélection du retour sur investissement, transformation de la perspective de l'image, conversion de l'image en vue de dessus
- Binariser et trouver des lignes de voie
Fenêtres coulissantes et ajustement polynomial
- La méthode des moindres carrés ajuste le point central pour former la ligne de voie
(2) Détection de ligne de voie basée sur la projection
- Calibrage d'image, perspective ROI
Image originale:
Binarisation :
- Projeter le point binarisé sur l'abscisse
Choisissez la valeur maximale correspondante :
- Ransac (algorithme de consensus d'échantillonnage aléatoire) Ajustement polynomial des points proches
L'effet de la projection vers l'image d'origine :
Dans des scénarios réels, la robustesse de la méthode traditionnelle n'est pas bonne.En plus de l'influence de l'éclairage et des véhicules adjacents, les flèches indicatrices au milieu de la voie et du trottoir sont également des défis que de tels algorithmes sont difficiles à gérer.
2. Apprentissage en profondeur
La vague d'apprentissage en profondeur a fait de grands progrès dans la détection des lignes de voie
Limitations du travail de détection de ligne de voie (continu, c'est-à-dire généralement présent jusqu'à présent) :
La ligne de base du travail de détection de ligne de voie n'est pas claire, et différentes méthodes et différentes applications de scène ont leurs propres limites. Par exemple:
- Type de sortie : masque masque/ensemble de points/ligne vectorielle
- Instanciation : si chaque ligne de voie forme une instance
- Classification : S'il faut classer les lignes de voie (simple blanc, double jaune, etc.)
- Paramètres définis à l'avance : si seul un nombre fixe de lignes de voie peut être détecté
- Marquages de voie : S'il faut détecter les marquages de conduite sur la voie
Cela affectera l'étiquetage des données et la forme de sortie du réseau, et ce qui est finalement nécessaire est l'équation de la ligne de voie dans le système de coordonnées mondial. Le réseau de neurones est plus adapté à l'extraction de caractéristiques au niveau de l'image, et les paramètres de l'équation de régression directe ont plus de restrictions. Par conséquent, un post-traitement relativement complexe est nécessaire pour résoudre le problème des coordonnées réelles après la sortie du raisonnement en réseau.
Le problème de détection de voie est souvent formulé comme une tâche de segmentation, où, étant donné une image d'entrée, la sortie est une carte de segmentation avec des prédictions par pixel.
Performance:
Pour juger Vrai ou Faux, il existe deux manières principales :
- point final : en jugeant si la distance entre les points terminaux de la ligne et sa zone de délimitation dépasse le seuil
- IOU: calculez directement la zone de chevauchement de IOU
IOU=(A∩B)/(A∪B)
IOU=SI/(SA+SB-SI)
Pipeline de travail :
Le pipeline de méthodes grand public actuel est divisé en plusieurs étapes et en une seule étape.
- La multi-étape peut être divisée en deux parties, la segmentation sémantique binaire génère une carte de masque et adapte une ligne à la carte de masque. Parmi eux, la segmentation sémantique binaire adopte principalement la méthode CNN, et à travers SCNN (Spatial As Deep : Spatial CNN for Traffic Scene Understanding), CNN+RNN (Robust Lane Detection from Continuous Driving Scenes Using Deep Neural Networks), GAN (EL- GAN : Embedding Loss Driven Generateive Adversarial Networks for Lane Detection) et d'autres méthodes pour améliorer la précision de la segmentation sémantique. Pour l'ajustement de ligne de l'image de masque, la matrice de conversion apprise est utilisée pour convertir le résultat de la segmentation en perspective de la vue à vol d'oiseau, puis la méthode de sélection de points uniformes + moindres carrés est utilisée pour l'ajustement, et le l'équation d'ajustement peut être une équation cubique.
- Pour la méthode en une étape, il s'agit de renvoyer directement les paramètres sortants, c'est-à-dire de modifier la branche sur le CNN, et d'utiliser une couche spéciale pour sortir les paramètres.
jeux de données:
- L'équilibre des données de chaque catégorie de scène est requis, comme l'autoroute, la route auxiliaire, la route de montagne sinueuse, la nuit, le jour de pluie et d'autres données
- Vérifiez et filtrez les images de meilleure qualité, telles que les données d'autoroute la nuit et les vidéos de conduite sous la pluie sont floues
- Des images similaires sont dessinées et marquées, et une image peut être extraite pour 10 images. Par exemple, si plusieurs images à basse vitesse sont similaires, le taux de précision sera faussement élevé.
- Augmentez les images de petites catégories, telles que la visualisation de l'histogramme des coefficients de ligne de voie, puis faites-les pivoter légèrement pour rendre la distribution de chaque coefficient plus raisonnable
- Mettre à l'échelle et normaliser les données pour accélérer la convergence
Les ensembles de données de détection de ligne de voie couramment utilisés incluent TuSimple, CULane, BDD100K, etc. Parmi eux, le jeu de données TuSimple a un total de 7K images, et la scène est les données de l'autoroute américaine. CULane dispose d'un total de 133 000 éléments de données. La scène comprend huit conditions difficiles à détecter, telles que des nuits bondées et sombres. Les données sont collectées à Pékin. BDD100K a un total d'images 120M.L'ensemble de données contient une variété de tâches de perception de conduite autonome.L'ensemble de données est relativement nouveau et le taux d'adoption de l'algorithme n'est pas élevé. (Mise à jour des données)
papiers avec code https://paperswithcode.com/task/lane-detection/latest#code
Communication 1 : " LaneATT—— Gardez les yeux sur la voie : détection de voie guidée par l'attention en temps réel " détection de voie guidée par l'attention en temps réel
Adresse papier :
https://arxiv.org/pdf/2010.12035.pdf
Adresse Github :
https://github.com/lucastabelini/LaneATT
Insuffisances des méthodes existantes : maintenir l'efficacité en temps réel
LaneATT : un modèle de détection à une étape basé sur des ancres pour les voies profondes, qui est similaire à d'autres détecteurs d'objets profonds généraux, utilisant des ancres pour une étape de mise en commun des caractéristiques
Une image RVB est reçue en entrée d'une caméra frontale montée sur le véhicule :
la sortie est les lignes de délimitation des voies (voies), et pour générer ces sorties, un réseau neuronal convolutif (CNN), l'épine dorsale, génère une carte de caractéristiques puis fusionne la carte des caractéristiques pour extraire les caractéristiques de chaque ancre. Ces caractéristiques combinent un ensemble de caractéristiques globales produites par le module d'attention . En combinant des fonctionnalités locales et globales, le modèle peut plus facilement utiliser les informations d'autres voies, ce qui peut être nécessaire dans des situations telles que des occlusions ou l'absence de marquage de voie visible. Enfin, les entités combinées sont transmises à une couche entièrement connectée pour prédire le canal de sortie final.
Le réseau fédérateur génère des cartes de caractéristiques à partir d'images d'entrée. Par la suite, chaque ancre est projetée sur la carte des caractéristiques. Cette projection est utilisée pour agréger les caractéristiques concaténées avec un autre ensemble de caractéristiques créé dans le module d'attention. Enfin, en utilisant l'ensemble de fonctionnalités résultant, deux couches, l'une pour la classification et l'autre pour la régression, effectuent la prédiction finale.
Reproductibilité:
Mesure de l'efficacité du modèle : opérations de multiplication-accumulation (mac) et images par seconde (FPS)
en conclusion:
Tusimple : cette méthode atteint le deuxième F1 le plus élevé (seulement 0,02 % de différence), tout en étant beaucoup plus rapide que la méthode F1 supérieure (171 contre 30 FPS) ;
CULane : cette méthode atteint un niveau élevé parmi les méthodes en temps réel en termes de vitesse et de précision (par rapport à la méthode de pointe, la vitesse de la première est d'environ 170 FPS) ;
A atteint un F1 élevé (+93%) sur le benchmark LLAMAS.
Article 2 : " Towards End-to-End Lane Detection : an Instance Segmentation Approach " est une segmentation d'instance pour la détection de voies de bout en bout
Adresse papier :
Vers une détection de voie de bout en bout : une approche de segmentation d'instance
Adresse Github :
https://github.com/MaybeShewill-CV/lanenet-lane-detection
- LaneNet et H-Net deux modèles de réseau
LanNet est un modèle multitâche qui combine la segmentation sémantique et la représentation vectorielle des pixels , et utilise enfin le regroupement pour compléter la segmentation des instances des lignes de voies. H-Net a une petite structure de réseau, qui est responsable de la prédiction de la matrice de transformation H et de l'utilisation de la matrice de transformation H pour remodeler tous les pixels appartenant à la même ligne de voie (en utilisant les coordonnées y pour représenter les coordonnées x).
LaneNet
Tâche de segmentation d'instance → segmentation sémantique (une branche de LanNet) et clustering (une branche de LanNet pour extraire l'embedding express, Mean-Shift clustering)
Embedding branch : Représentation embarquée des pixels
Branche de segmentation : Deux classifications, jugeant si le pixel appartient à la ligne de couloir ou à l'arrière-plan
Formation pour obtenir le vecteur d'intégration pour le clustering
Concevoir un modèle de segmentation sémantique
1. Traiter le problème d'occlusion : restituer (estimer) les lignes de voie et les pointillés obstrués par le véhicule ;
2. Résolvez le problème de distribution d'échantillon déséquilibrée (les pixels appartenant à la ligne de voie sont bien inférieurs aux pixels appartenant à l'arrière-plan) : utilisez le poids de classe inverse borné pour pondérer la perte :
p est la probabilité que la catégorie correspondante apparaisse dans l'échantillon global, c est l'hyperparamètre (1.02 dans l'article) " A Deep Neural Network Architecture for Real-Time Semantic Segmentation "
Incorporation de pixels :
Afin de distinguer à quelle voie appartient le pixel sur la ligne de voie, embedding_branch initialise un vecteur d'incorporation pour chaque pixel, et lors de la conception de la perte, rend la distance du vecteur de représentation appartenant à la même ligne de voie aussi petite que possible, et le vecteur de représentation distance appartenant aux différentes lignes de voies aussi grande que possible.
La fonction de perte dans cette partie est composée de trois parties :
C : le nombre de lignes de couloir ; Nc : le nombre de pixels appartenant à la même ligne de couloir ; μc : le vecteur moyen de la ligne de couloir ; xi est le vecteur pixel (pixel embedding) ; [x]+=max(0, X).
H-Net :
La sortie de LaneNet est une collection de pixels pour chaque ligne de voie, et une ligne de voie doit être régressée en fonction de ces points de pixel. L'approche traditionnelle consiste à projeter l'image dans la vue à vol d'oiseau, puis à utiliser un polynôme d'ordre 2 ou 3 pour l'ajustement. Dans cette méthode, la matrice de transformation H n'est calculée qu'une seule fois, et la même matrice de transformation est utilisée pour toutes les images, ce qui conduit à des erreurs sous les variations du niveau du sol (montagne, colline).
Afin de résoudre ce problème, l'article forme un réseau de neurones H-Net qui peut prédire la matrice de transformation H. L'entrée du réseau est une image et la sortie est la matrice de transformation H :
Contraignez la matrice de transposition en définissant 0, c'est-à-dire que la ligne horizontale reste horizontale sous la transformation. (c'est-à-dire que la transformation de la coordonnée y n'est pas affectée par la coordonnée x)
La matrice de transposition H n'a que 6 paramètres, donc la sortie de H-Net est un vecteur à 6 dimensions. H-Net est composé de 6 couches de réseau convolutif ordinaire et d'une couche de réseau entièrement connecté. Sa structure de réseau est illustrée dans la figure :
en conclusion:
H-Net est préférable à l'utilisation d'une matrice de transformation fixe, l'utilisation d'un ajustement polynomial du troisième ordre est préférable à un ajustement du second ordre et l'utilisation d'une transformation de perspective est préférable à l'absence d'utilisation.
Défis rencontrés par l'apprentissage en profondeur pour la reconnaissance des lignes de voie :
(1) La structure morphologique élancée de la ligne de voie nécessite une fusion plus puissante des caractéristiques de haut niveau et de bas niveau pour obtenir simultanément la relation de structure spatiale globale et la précision de positionnement des détails.
(2) Il existe de nombreuses incertitudes quant à la forme des lignes de voie, telles que le fait d'être bloqué, usé et discontinu lorsque la route change . Le réseau doit avoir une forte capacité d'inférence pour ces situations.
(3) Lorsque le véhicule dévie ou change de voie, la voie de son propre véhicule changera et la ligne de voie passera également à la ligne gauche/droite . Certaines méthodes d'attribution à l'avance de numéros de série fixes aux lignes de voie entraîneront une ambiguïté dans le processus de changement de voie.
sur