Méthode de détection de cible en une étape

Algorithme de la série YOLO

De la recommandation régionale au bout en bout

La méthode et l'idée de base de la série RCNN sont les suivantes : découvrez d'abord la zone où l'objet peut exister, puis confirmez l'existence de l'objet

Ce type de réflexion remonte à la source, qui provient de l'algorithme traditionnel de détection de cible.

Afin de résoudre la méthode de la fenêtre glissante dans la méthode traditionnelle, pour découvrir la zone où la cible peut exister, afin d'améliorer l'efficacité de la détection.

Bien que cette méthode ait atteint d'excellentes performances, il y a un problème clé : la lenteur

Une façon de penser plus directe : de bout en bout

Pour le processus de recherche de la zone cible d'abord, puis de prédiction, nous pouvons adopter une méthode plus directe : laisser le modèle identifier automatiquement la cible finale.

Après avoir fourni une règle initiale pour le modèle, nous pouvons laisser la machine identifier automatiquement l'emplacement cible.

En fait, l'essence de la transformation de la pensée mentionnée ci-dessus vient de la transformation de la définition du problème.

Dans la méthode de détection de cible précédente, le problème de détection était considéré comme une combinaison de deux problèmes : la classification et la régression (la classification est le problème principal)

Cependant, dans le problème de bout en bout, le problème de détection est considéré comme un modèle de régression typique.

Maintenant qu'il s'agit d'un modèle de régression, il est nécessaire de prédire un ensemble de nombres pouvant décrire la position et la catégorie de la cible dans l'image.

Ensuite, nous utilisons la combinaison de position ordonnée et le vecteur de catégorie onehot comme sortie attendue pour obtenir une détection de cible fiable.

Qu'est-ce qui devrait être produit de bout en bout ?

Comment devrions-nous spécifier la sortie de YOLO afin que nous puissions obtenir directement la position cible ?

Afin de détecter la sortie de la cible, elle doit contenir les éléments suivants :

  • Position de la boîte (4 points définissent une boîte)
  • Catégorie d'objet (vecteur chaud unidimensionnel à n dimensions)
  • Confiance (à quel point cette case et cette catégorie sont-elles confiantes)

Pour l'ensemble de données VOC, pour chaque boîte, nous pouvons obtenir un vecteur de longueur (4 + 1 + 20 = 25) comme vérité terrain.

Imaginez que nous puissions générer un vecteur à 25 dimensions à partir du cadre d'une image et utiliser CNN pour prédire ces vecteurs. Après avoir analysé les résultats, l'emplacement cible et la catégorie peuvent être obtenus.

Cependant, cela crée un nouveau problème : les cases de chaque image peuvent ne pas être cohérentes, il faut donc prévoir différentes tailles de sortie.

De toute évidence, cela ne fonctionne pas dans les CNN.

Format de sortie de YOLO v1

La sortie de yolo v1 est un vecteur tridimensionnel de N×N×M.

Spécifiquement:

Première étape : définir l'image en N×N régions, comme suit :

Étape 2 : Chaque région générera deux propositions

Etape 3 : Pour chaque proposition, il y a :

* 置信度:1维向量
* 框坐标:4维向量
* 分类值:20维向量

Par conséquent, la valeur de classification d'une proposition est 1+4+20=25.

Cependant, puisque deux boîtes sont générées dans une zone, la proposition est (1+4)*2 + 20 = 30

En supposant qu'une image est divisée en 7*7 zones, la taille de sortie finale est : 7×7×30 (2 ancres)

Détails de l'algorithme de YOLO v1

  1. Une fois l'image entrée, après des étapes telles que la mise en commun des convolutions, une carte de caractéristiques 7 × 7 × 1024 est obtenue
  2. Une fois la carte des caractéristiques liée à fc, un vecteur à 4096 dimensions est obtenu
  3. Après que le vecteur de 4096 entre fc, un vecteur propre de 1470 est obtenu
  4. Après remodelage de la fonction, un vecteur de 7 × 7 × 30 est obtenu

prédire

Dans l'étape de prédiction, après la saisie d'une image, un tenseur 7 × 7 × 30 est obtenu

Pour chaque vecteur à 30 dimensions, deux boîtes englobantes peuvent être obtenues.

Chaque cadre de délimitation a un niveau de confiance, définissez un seuil et supprimez le cadre avec un niveau de confiance inférieur

Le cadre restant est dessiné dans l'image, il y a :

Parmi eux, plus le cadre est épais, plus la confiance est élevée.

Coloriez la catégorie 7*7 à l'image, il y a

Enfin, utilisez NMS pour supprimer les trames similaires, et la trame finale est la suivante

former

La fonction de perte est le problème le plus important dans la mise en œuvre de la régression.

Pour une telle sortie, quelle fonction de perte doit être définie ?

Perte de fonctionnalité de segmentation

Pour différents contenus dans un vecteur, différentes fonctions de perte doivent être définies.

premier article :

Perte du point central : mise en œuvre à l'aide de l'erreur quadratique moyenne

Deuxième article :

Perte d'échelle : mise en œuvre par erreur quadratique moyenne, afin d'unifier les résultats de différentes cibles d'échelle, la méthode de la racine carrée est utilisée pour normaliser

Le troisième article :

Contient la perte de confiance de la cible, attribue un poids plus important et augmente l'influence de la zone cible sur la confiance

Quatrième article :

Perte de confiance sans la cible, étant donné un poids plus petit, réduisant l'impact des zones non cibles sur la confiance

Cinquième article :

perte de classement

Autres détails

Comment convertir la vérité terrain en sortie de yolo?

Pour faciliter la régression, les coordonnées de la boîte cible sont transformées en valeurs de 0 à 1.

Pour x, y : est le point central du cadre cible, au rapport dans la zone correspondante.

Par exemple, le coin supérieur gauche de la zone correspondante est l'origine (0, 0)

Ensuite, le rapport entre le point central du cadre cible et le décalage par rapport à l'origine est la valeur xy

Concernant la confiance :

Toutes les zones contenant la cible sont considérées comme 1 et les autres zones sont considérées comme 0. (processus d'étiquetage)

Défauts de YOLO v1

  1. Mauvaise performance de détection pour les objets qui se chevauchent/petits ;
  2. Seules les entrées d'image de même taille sont prises en charge ;
  3. Pour les objets avec des échelles différentes, il y a une erreur dans la position du cadre de détection

YOLO v2

Amélioration 1 : Modèle

  1. Supprimer tous les abandons, ajouter une norme de lot

  2. Changez l'entrée de l'image d'entraînement en 448*448 au lieu de 224*224 dans la v1

  1. boîtes d'ancrage

Dans le rcnn plus rapide, l'ancre utilise 3 échelles fixes et 3 ratios fixes.

Bien que ceux-ci aient été déterminés en examinant l'ensemble de données, ils étaient imprécis.

Dans YOLOv2, une nouvelle méthode est utilisée pour déterminer la taille de la boîte de modèle

将voc中每种框的wh列出来,作为一个数据,然后进行聚类处理。(kmeans)

Alors, combien de catégories y a-t-il? Réglages manuels (hyperparamètres)

Si le nombre de catégories est très grand, cela entraînera une augmentation du calcul

Si le nombre de catégories est très petit, il ne sera pas assez précis.

Les résultats expérimentaux montrent que le choix de 5 boîtes d'ancrage produira l'équilibre optimal.

Notez que la formule de distance entre les cases ici (pas la distance euclidienne) est 1−IOU

  1. fusion de fonctionnalités

La régression directe de la sortie de la carte d'entités par la dernière couche posera un problème : elle n'est pas assez conviviale pour les objets à petite échelle.

L'une des mesures pour résoudre la détection de petites cibles : utilisez un champ de vision plus large pour la détection.

YOLO v3 : plus rapide et plus précis

Amélioration 1 : Détection multi-échelles

Trois échelles sont testées

Alors, comment feriez-vous de cette façon?

  • Pyramide d'images ?
  • Pyramide des fonctionnalités ?

Remarque : Combien d'ancres sont générées de cette manière ?

Amélioration 2 : Ignorer la connexion de la couche (resnet)

Amélioration 3 : Structure du réseau

Résumer:

Yolov1 est un algorithme de détection de cible basé sur l'apprentissage en profondeur dont les principales caractéristiques sont rapides et efficaces. Voici quelques-unes des essences de Yolov1 :

  1. Yolov1 utilise un seul réseau de neurones pour la détection et la classification d'objets en même temps, plutôt que d'exiger plusieurs réseaux comme d'autres algorithmes.

  2. Yolov1 utilise un réseau neuronal entièrement convolutif qui peut traiter des images d'entrée de différentes tailles.

  3. Yolov1 divise l'image d'entrée en grilles S x S et prédit B boîtes englobantes pour chaque grille et la confiance et la probabilité de classe de chaque boîte englobante.

  4. Yolov1 utilise la suppression non maximale (NMS) pour éliminer les boîtes englobantes qui se chevauchent.

  5. L'ensemble de données de formation Yolov1 utilise des techniques d'amélioration des données, notamment le recadrage aléatoire, la rotation, la mise à l'échelle, etc.

Voici quelques liens sur Yolov1 :

  1. Article Yolov1 : https://arxiv.org/abs/1506.02640

  2. Implémentation du code Yolov1 : darknet/src au maître pjreddie/darknet GitHub

  3. Démo vidéo Yolov1 : https://www.youtube.com/watch?v=9s_FpMpdYW8

  4. Les résultats de Yolov1 sur le jeu de données COCO : COCO - Common Objects in Context

V1 : problème de classification --> problème de régression (CNN+reshape)

perte : ajouter le signe racine objectif : atténuer le problème d'échelle

Les exemples positifs et négatifs de perte sont calculés séparément, et les exemples négatifs sont multipliés par λ (0<<1). La raison : la plupart des images sont des exemples négatifs (90 %) afin de maintenir l'équilibre de la prédiction du modèle. représentation d'exemples positifs et négatifs.

V2 : la couche fc est supprimée et la taille de l'image d'entrée n'est pas limitée

Regroupement : Distance utilisée : 1-IOU

26*26 : haute résolution ; 13*13 : basse résolution, ce qui améliore la précision de la détection des petites cibles.

V3:

Pyramide des fonctionnalités (fonctionnalités haute résolution (détail)) + suréchantillonnage (fonctionnalités avec une meilleure généralisation) --> meilleures cibles de reconnaissance (grandes, moyennes et petites)

Je suppose que tu aimes

Origine blog.csdn.net/qq_54809548/article/details/130870060
conseillé
Classement