Technologie

Reconnaître la profondeur de la conduite autonome

Reconnaître la profondeur de la conduite autonome


Cet article décrit certaines des méthodes les plus récentes en matière de prédiction approfondie des séquences d’images capturées par des véhicules qui permettent de développer de nouveaux modèles de conduite autonome sans utiliser de caméras ni de capteurs supplémentaires.

1*t Jj4Pwtx8H82eavWNOhiA - Reconnaître la profondeur de la conduite autonome

Comme mentionné dans mon précédent article «Comment fonctionne la conduite autonome? Une introduction au SLAM », de nombreux capteurs sont utilisés pour capturer des informations pendant la conduite d'un véhicule. La variété de mesures capturées comprend la vitesse, la position, la profondeur, la thermique, etc. Ces mesures sont introduites dans un système de rétroaction qui s'entraîne et utilise des modèles de mouvement que le véhicule doit respecter. Cet article porte sur la prévision de la profondeur qui est souvent capturée par un capteur LiDAR. Un capteur LiDAR capture la distance d'un objet à l'aide d'un laser et mesure la lumière réfléchie avec un capteur. Cependant, un capteur LiDAR n'est pas abordable pour le conducteur de tous les jours, alors comment pourrions-nous mesurer la profondeur autrement? Les méthodes de pointe que je vais décrire sont des approches d'apprentissage en profondeur non supervisées qui utilisent la disparité, ou la différence de pixels, d'une image à l'autre pour mesurer la profondeur.

  • Notez les légendes des images, car la plupart des images sont extraites des papiers d'origine référencés et ne sont pas un produit ou une création personnelle.

Auteurs en [1] a développé une méthode qui utilise une combinaison de profondeur et de réseaux de pose pour prédire la profondeur dans une seule image. Ils le font en formant leur architecture sur une séquence de trames et plusieurs fonctions de perte pour former les deux réseaux. Cette méthode ne nécessite pas de jeu de données de vérité au sol pour la formation. Au lieu de cela, ils utilisent des trames temporelles consécutives dans une séquence d'images pour fournir un signal d'apprentissage. Pour aider à limiter l'apprentissage, ils utilisent un réseau d'estimation de la pose. Le modèle est formé à la différence entre l'image d'entrée et l'image reconstruite à partir de la sortie du réseau de pose et du réseau en profondeur. Le processus de reconstruction sera décrit plus en détail ultérieurement. Les principales contributions de [1] sont:

  1. Une technique de masquage automatique pour supprimer le focus sur les pixels sans importance
  2. Modification de l'erreur de reconstruction photométrique avec des cartes de profondeur
  3. Estimation de profondeur multi-échelle

Architecture

L’approche de cet article utilise un réseau en profondeur et un réseau en pose. Le réseau de profondeur est un classique U-Net [2] architecture codeur-décodeur. Le codeur est un modèle ResNet pré-formé. Le décodeur de profondeur est similaire aux travaux précédents dans lesquels il convertit la sortie du sigmoïde en valeurs de profondeur.

Exemple d'image de U-Net [2].
6-DoF. Image de Wikipedia.

Les auteurs utilisent un réseau de poses à partir d’un ResNet18 modifié pour prendre deux images colorées en entrée afin de prédire une pose ou une rotation et une translation relatives à 6 DoF. Le réseau de poses utilise les images temporelles comme la paire d'images plutôt que comme la paire stéréo typique. Il prédit l'apparence d'une image cible du point de vue d'une autre image de la séquence, une image avant ou une image après.

Entraînement

La figure ci-dessous illustre le processus de formation de l'architecture.

Images prises de KITTI et [1].

Erreur de reconstruction photométrique

L'image cible est à l'image 0 et les images utilisées pour notre processus de prédiction peuvent être l'image avant ou l'image suivante, donc image + 1 ou image-1. La perte est basée sur la similarité entre l'image cible et une image cible reconstruite. Le processus de reconstruction commence par calculer la matrice de transformation à partir de la trame source, soit la trame + 1, soit la trame-1, à l'aide du réseau de pose. Cela signifie que nous calculons la correspondance entre l'image source et l'image cible en utilisant des informations sur la rotation et la translation. Nous utilisons ensuite la carte de profondeur prédite à partir du réseau de profondeur pour l'image cible et la matrice de transformation à partir du réseau de pose pour la projection dans une caméra à matrice intrinsèque K afin d'obtenir une image cible reconstruite. Ce processus nécessite d’abord de transformer la carte de profondeur en un nuage de points 3D, puis d’utiliser les éléments intrinsèques de la caméra pour transformer les positions 3D en points 2D. Les points résultants sont utilisés comme grille d'échantillonnage pour effectuer une interpolation bilinéaire à partir de l'image cible.

Le but de cette perte est de réduire la différence entre l’image cible et l’image reconstruite, dans laquelle pose et profondeur sont nécessaires.

Fonction de perte photométrique de [1].
Avantage d'utiliser une erreur photométrique minimale. La zone de pixels entourée est occluse. Image de [1].

Généralement, des méthodes similaires font la moyenne de l’erreur de reprojection dans chacune des images sources, par ex. frame + 1 et frame-1. Toutefois, si un pixel n'est pas visible dans l'une de ces images, mais dans l'image cible, car il est proche de la limite de l'image ou obstrué, la pénalité d'erreur photométrique sera injustement élevée. Pour résoudre les problèmes liés à cela, ils prennent à la place l'erreur photométrique minimale sur toutes les images source.

Masquage automatique

La perte photométrique finale est multipliée par un masque qui résout les problèmes liés à une modification de l'hypothèse selon laquelle la caméra se déplace dans une scène statique, par ex. un objet se déplace à une vitesse similaire à celle de l'appareil photo ou celui-ci s'est arrêté pendant que d'autres objets se déplacent. Le problème avec cette situation est que la carte de profondeur prédit une profondeur infinie. Les auteurs abordent cette question avec un méthode de masquage automatique qui filtre les pixels qui ne changent pas d'apparence d'une image à l'autre. Ils génèrent leur masque à l'aide de valeurs binaires dans lesquelles il est égal à 1 si l'erreur photométrique minimale entre l'image cible et l'image cible reconstruite est inférieure à l'erreur photométrique minimale de l'image cible et de l'image source, et à 0 sinon.

Génération de masquage automatique dans [1] où Iverson crochet retourne 1 si vrai et 0 si faux.

Lorsque l'appareil photo est statique, tous les pixels de l'image sont masqués. Lorsqu'un objet se déplace à la même vitesse que l'appareil photo, les pixels des objets fixes dans l'image sont masqués.

Estimation multi-échelle

Les auteurs combinent les pertes individuelles à chaque échelle. Ils suréchantillonnent les cartes de profondeur de résolution inférieure à la résolution d'image d'entrée supérieure, puis représesventent, rééchantillons et calculent l'erreur photométrique à la résolution d'entrée supérieure. Les auteurs affirment que cela contraint les cartes de profondeur à chaque échelle à viser le même objectif, une reconstruction précise à haute résolution de l'image cible.

Autres pertes

Les auteurs utilisent également une perte de lissage sensible aux contours entre les valeurs de la carte de profondeur inverse normalisée moyenne et l'image d'entrée / cible. Cela encourage le modèle à apprendre les arêtes vives et à atténuer les bruits.

La fonction de perte finale devient:

La fonction de perte finale dans [1] qui est une moyenne sur chaque pixel, échelle et lot.

Résultats

Les auteurs ont comparé leur modèle sur trois jeux de données contenant des séquences de conduite. Leur méthode a surpassé presque toutes les autres méthodes dans toutes les expériences. Un exemple de leur performance est dans l'image suivante:

Image de [1] Dépôt GitHub: https://github.com/nianticlabs/monodepth2/

Pour plus de détails sur leurs résultats, veuillez vous reporter à l'article original «Creuser dans une estimation de profondeur monoculaire auto-supervisée».

Modélisation de mouvement d'objet

Les auteurs de Google cerveau publiés [3] qui étend Monodepth2 encore plus loin. Ils améliorent le réseau de poses d’avant avec des motions de prédiction de objets individuels au lieu de l'image entière dans son ensemble. Ainsi, au lieu que les images reconstruites ne constituent qu'une seule projection, il s'agit désormais d'une séquence de projections qui sont ensuite combinées. Ils le font à travers deux modèles, un modèle de mouvement d'objet Et un réseau ego-motion (semblable au réseau de pose décrit dans les sections précédentes). Les étapes sont les suivantes:

Exemple de sortie pour le masque R-CNN [2]. Image de [2].
  1. Un masque pré-formé R-CNN [2] est appliqué pour capturer la segmentation d'objets potentiellement en mouvement.
  2. Un masque binaire est utilisé pour supprimer ces objets potentiellement en mouvement des images statiques (image -1, image 0 et image +1).
  3. L'image masquée est envoyée au réseau ego-motion et la matrice de transformation entre les images -1 et 0 et les images 0 et +1 est émise.
Le processus de masquage pour extraire l'arrière-plan statique suivi de la matrice de transformation ego-motion sans objets en mouvement. Équation de [3].
  1. Utilisez la matrice de transformation du mouvement du moi obtenue à l'étape 3 et appliquez-la aux images -1 et +1 pour obtenir une image déformée 0.
  2. Utilisez la matrice de transformation ego-motion obtenue à l'étape 3 et appliquez-la aux masques de segmentation de l'objet potentiellement en déplacement dans les images -1 et +1 afin d'obtenir un masque de segmentation déformé pour l'image 0, tous par objet.
  3. Un masque binaire est utilisé pour conserver les pixels associés au masque de segmentation déformé.
  4. Les images masquées sont combinées aux images déformées et transmises au modèle de mouvement d'objet qui génère le mouvement d'objet prédit.
Le modèle de mouvement d'objet pour un objet. Équation de [3].

Le résultat est une représentation de la manière dont la caméra devrait se déplacer pour "expliquer" le changement d'aspect des objets. Nous souhaitons ensuite déplacer les objets en fonction des modèles de mouvement obtenus à l'étape 4 du processus de modélisation du mouvement des objets. Enfin, nous combinons les mouvements d’objets déformés avec l’arrière-plan statique déformé pour obtenir le gauchissement final:

Équation de [3].

Échelle d'objet d'apprentissage

Alors que Monodepth2 aborde les problèmes d'objets statiques ou d'objets se déplaçant à la même vitesse que la caméra par le biais de leur technique de masquage automatique, ces auteurs proposent en fait de former le modèle à la reconnaissance de la taille de l'objet afin d'améliorer la modélisation du mouvement d'un objet.

Image de Struct2Depth. La colonne du milieu montre le problème de l'affectation d'une profondeur infinie aux objets se déplaçant à la même vitesse que la caméra. La troisième colonne montre que leur méthode améliore cela.

Ils définissent une perte pour l'échelle de chaque objet en fonction de la catégorie de l'objet, par exemple. une maison. Il vise à limiter la profondeur en fonction de la connaissance de l'échelle des objets. La perte est la différence entre la carte de profondeur de sortie de l'objet dans l'image et la carte de profondeur approximative calculée à l'aide de la distance focale de la caméra, de la hauteur a priori en fonction de la catégorie de l'objet et de la hauteur réelle de l'objet segmenté dans l'image. , tous deux mis à l'échelle par la profondeur moyenne de l'image cible:

La formulation de la perte qui aide le modèle à apprendre l’échelle de l’objet. Équations de [3].

Résultats

Les extensions décrites dans [3] ont été comparés directement au modèle Monodepth2 et ont montré une amélioration significative.

La rangée du milieu montre les résultats de [3] tandis que la vérité au sol est montrée dans la troisième rangée. Image de [5].

Les méthodes courantes d'estimation de la profondeur en conduite autonome consistent à utiliser une paire d'images stéréo nécessitant deux caméras ou un capteur de profondeur LiDAR. Cependant, ceux-ci sont coûteux et pas toujours disponibles. Les méthodes décrites ici permettent de former des modèles d'apprentissage en profondeur qui prédisent la profondeur d'une image et ne suivent qu'une séquence d'images. Ils affichent de bonnes performances et un avenir prometteur pour la recherche en conduite autonome.

Pour essayer les modèles vous-même, les deux documents ont des dépôts situés ci-dessous:

Monodepth2: https://github.com/nianticlabs/monodepth2

Struct2Depth: https://github.com/tensorflow/models/tree/master/research/struct2depth

[1] Godard, C., Mac Aodha, O., Firman, M. et Brostow, G. (2018). Creuser dans une estimation de profondeur monoculaire auto-supervisée. préimpression arXiv arXiv: 1806.01260.

[2] Olaf Ronneberger, Philipp Fischer et Thomas Brox. U-Net: Réseaux convolutifs pour la segmentation d'images biomédicales. InMICCAI, 2015.

[3] Vincent Casser, Soeren Pirk, Reza Mahjourian, Anelia Angelova: Prédiction de la profondeur sans les capteurs: Structure optimisée pour un apprentissage non supervisé à partir de vidéos monoculaires. Trente-troisième Conférence AAAI sur l’intelligence artificielle (AAAI’19).

[4] He, K., Gkioxari, G., P. Dollár et R. Girshick (2017). Masque r-cnn. Dans Actes de la conférence internationale de l'IEEE sur la vision par ordinateur (pp. 2961–2969).

[5] Vincent Casser, Soeren Pirk, Reza Mahjourian, Anelia Angelova: Apprentissage non supervisé de la profondeur monoculaire et de l'ego-motion avec structure et sémantique. Atelier CVPR sur les applications d'odométrie visuelle et de vision par ordinateur sur la base d'indices d'emplacement (VOCVALC), 2019

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer