【Lecture de papier】CenterNet

Titre de la thèse : Les objets comme points (CVPR2019)

Adresse papier : https://arxiv.org/pdf/1904.07850.pdf

Heure de sortie : 2019.4.16

Établissement : UT Austin, UC Berkeley

Code : https://github.com/xingyizhou/CenterNet

【papier】

Introduction

1. La plupart des méthodes de détection d'objets sont basées sur des cases, répertoriant toutes les cases à cocher possibles et effectuant un post-traitement et un filtrage pour une faible consommation. En une étape : l'ancre (diapositive/boîte possible) est directement classée ; en deux étapes : calcule les caractéristiques de l'image des boîtes pour classer les caractéristiques, puis NMS définit des seuils IoU pour toutes les boîtes possibles afin d'effectuer un traitement répété (entraînant un traitement final). jusqu'à la fin de la formation), bien que le post-traitement soit plus compliqué, l'effet est toujours bon.

2. Cet article CenterNet

①présenter une nouvelle représentation des objets : sous forme de points.

②Trouve les centres d'objets et régresse à leur taille.Trouvez d'abord le centre cible, puis revenez aux autres attributs
③L'algorithme est simple, rapide, précis et différenciable de bout en bout sans aucun post-traitement NMS.
illustrer:
La taille du cadre de délimitation et d'autres propriétés de l'objet sont déduites de l'entité de point clé au centre.

Nous transmettons simplement l'image d'entrée à un réseau entièrement convolutif qui génère une carte thermique . Les pics de cette carte thermique correspondent aux centres des objets . Les caractéristiques de l'image à chaque pic prédisent la hauteur et le poids du cadre de délimitation des objets . ( Générez une carte thermique via un FC, sélectionnez les pics comme centre de l'objet cible, puis renvoie d'autres attributs en fonction de chaque caractéristique de l'image de pointe. Anchor-Free )
Tous les résultats sont produits directement à partir de l'estimation des points clés sans avoir besoin d'un NMS basé sur IoU ou d'un autre post-traitement.
3. travaux connexes (en résumé, CenterNet ne nécessite pas d'opérations de regroupement/post-traitement/complexes, il est donc simple et efficace)

Classification des régions : classification des régions/fonctionnalités : toutes basées sur le RPM

Ancres implicites (implicites) : définissez le seuil de jugement du premier plan ou non, et classez à nouveau la région et multi-classez. CenterNet est similaire mais présente quelques différences : ① La détermination des objets est uniquement basée sur la position plutôt que sur le degré de chevauchement (pas besoin de définir un seuil de filtrage) ; ② Un objet est prédit, il n'est donc pas nécessaire que NMS filtre les objets cibles redondants en double. ; ③ Résolution de sortie plus grande (les autres pas de sortie sont de 16 et 4). Il positionne simplement l'objet en une seule fois sans aucun post-traitement gênant (image ci-dessous).

Estimation des points clés : CornerNet et ExtremeNet, qui ont été travaillés par des chercheurs précédents, ont tous deux une étape de regroupement après la détection des points clés.

Détection de cible monoculaire 3D (monoculaire tridimensionnelle)

CentreNet

1. Estimation des points clés

 Image d'entrée I , carte thermique des points clés en sortie Y ˆ (1 point clé 0 arrière-plan)

①Les types de points clés incluent C = 17 articulations humaines dans l'estimation de la pose humaine , ou C = 80 catégories d'objets dans la détection d'objets②  Nous utilisons plusieurs réseaux codeurs-décodeurs entièrement convolutifs différents pour prédire Y ˆà partir d'une image I : Un réseau de sablier empilé, jusqu'à des réseaux résiduels convolutifs (ResNet) et agrégation de couches profondes (DLA)

2、Objets en tant que points

utiliser un seul réseau pour prédire les points clés Yˆ, le décalage Oˆ et la taille Sˆ. (L'implémentation spécifique et les détails seront révélés dans le code)

Détails de mise en œuvre des deux applications :

(1) Détection 3D : profondeur scalaire, dimension 3D, orientation (ajouter une tête séparée pour chacun d'eux)

(2) Estimation de la posture du corps humain :

3、Mise en œuvre

(1)expérimentation avec 4 architectures : ResNet-18, ResNet-101, DLA-34 (couches de convolution déformables修改) et Hourglass-104 tel quel.
Sablier  : sous-échantillonne l'entrée de 4 × , suivi de deux modules de sablier séquentiels. Chaque module de sablier est un réseau convolutif symétrique vers le bas et vers le haut à 5 couches avec des connexions sautées. 5 couches en dessous et 5 couches en haut avec connexion])
ResNet : (Modification : Utiliser le canal de sortie et ajouter une convolution 3x3déformable et une interpolation bilinéaire devant)
Deep Layer Aggregation (DLA) : Il s'agit d'un réseau de classification d'images avec des connexions hiérarchiques. (Modification : augmentez la résolution de la carte des caractéristiques et remplacez la convolution d'origine par une convolution déformable 3x3 pour chaque couche de suréchantillonnage)

(2) Formation : entrée 512x512 => sortie 128x128, amélioration des données, époque/lr/modèle de pré-entraînement,

         Raisonnement (trois renforts tests) : pas de renfort, renfort retourné, retourné et multi-pieds

Expériences

jeu de données : MS COCO=118ktrain+5kval+20ktest (L'annexe complète les expérimentations sur le jeu de données PascalVOC)

Métriques : FPS, précision moyenne AP (sous différents seuils de filtrage IoU),

1. Détection de cible

(1) Utilisez le modèle pré-entraîné pour tester le temps d'exécution de chaque modèle sur le même appareil :
https://github.com/facebookresearch/Detectron
https://github.com/pjreddie/darknet

(2) Comparaison avec SOTA

CenterNet se comporte comme un détecteur classique, juste plus rapidement.

(3) Expériences supplémentaires

①a : Les points centraux des différents objets coïncident : comptez d'abord la fréquence d'apparition, puis expérimentez différentes méthodes pour voir l'effet (nous ferions mieux)

②NMS n'est pas nécessaire dans CenterNet : comme post-traitement (l'amélioration de 0,5 % est trop faible et inutile)

③Résolution de la formation et des tests : train-512x512, test-image originale et zéro-pad (l'image originale est légèrement meilleure, 512 est OK, 384 n'est pas OK)

④c : Perte de régression : L1 est bien meilleur que SmoothL1

⑤b : Sensibilité de λsize : les grandes valeurs AP diminuent plus rapidement, et une explication est donnée

⑥d : Temps d'entraînement : de combien d'époques lr diminue-t-il par rapport à la durée d'entraînement par rapport à AP ?

(4) Expériences sur le jeu de données PascalVOC en annexe (détection de petites cibles)

Ensemble de données : 16551train+4962test (20 catégories)

Métriques : mAP (seuil IoU 0,5)

Modèle : ResNet-18, ResNet-101, résolution DLA-34x2

2. Détection 3D

ensemble de données : scène de conduite KITTI

3. Estimation de la posture

ensemble de données : MS COCO (remplacer IoU dans la méthode de la boîte par la similarité des points clés cibles)

Modèle : DLA34, Hourglass104 convergent à différents moments ; perte de poids = 1, d'autres super paramètres sont cohérents avec la détection de la cible

Tableau 5 Quantitatif Fig5 Visualisation qualitative

4. Analyse d'erreur supplémentaire

remplacer chaque tête de sortie par sa vérité terrain.
Pour la carte thermique du point central, nous utilisons la carte thermique de vérité terrain gaussienne rendue.
Pour la taille de la boîte englobante, nous utilisons la taille de vérité terrain la plus proche pour chaque détection.
tandis que les gains de la carte centrale sont beaucoup plus importants.

[autres traductions, analyse papier] 

CenterNet pour la détection de cibles : La détection de cibles appartenant à la série Anchor-free, par rapport au précédent CornerNet, utilise des points centraux pour représenter les objets, améliorant ainsi sa capacité à percevoir les informations internes .

Le détecteur d'objets CenterNet est un réseau d'estimation de points clés qui trouve les centres des objets et régresse leurs dimensions . Également en tant que méthode sans ancrage, CenterNet propose une méthode d'estimation des points centraux pour résoudre le problème de la sémantique interne manquante dans CornerNet .

Introduction : La méthode de cet article présente la cible via le point central , convertissant ainsi le problème de détection de cible en un problème d'estimation de point clé . Une carte thermique est obtenue par extraction, et le point culminant de la carte thermique est le point central. La position du point culminant est utilisée pour prédire les informations de largeur et de hauteur de la cible. Cette approche simple permet également à CenterNet d'atteindre des vitesses élevées.

Travaux connexes : La méthode décrite dans cet article est proche de la méthode en une étape basée sur l'ancrage, mais il existe quelques différences. Tout d'abord, CenterNet définit les points d'ancrage en fonction de la position plutôt que du chevauchement des cases, et ne définit pas manuellement les seuils de classification du premier plan et de l'arrière-plan. Deuxièmement, il n'y a qu'un seul point d'ancrage positif sur chaque cible, le traitement NMS n'est donc pas requis et seuls les points de pointe locaux de la carte thermique des points clés sont extraits . Troisièmement, par rapport aux détecteurs d'objets traditionnels, une image de sortie de plus grande résolution est utilisée, de sorte que plusieurs points d'ancrage ne sont pas nécessaires. Il existe déjà des méthodes basées sur l'estimation des points clés. Par exemple, CornerNet proposé par Detecting Objects as Paired Keypoints dans ECCV2018 a appliqué pour la première fois une méthode de détection de cible orientée estimation des points clés, et a également inclus la détection d'objets ascendante par Grouping Extreme. dans CVPR 2019. ExtremeNet proposé dans et Center Points. Cependant, ces méthodes nécessitent toutes une étape de regroupement combinatoire après détection des points clés .

 Implémentation : L'auteur a expérimenté quatre structures : ResNet-18, ResNet-101, DLA-34, Hourglass-104. Parmi eux, les couches de convolution déformables sont utilisées pour modifier ResNet et DLA-34 , et Hourglass est utilisé tel quel.



Une brève analyse et implémentation de CenterNet sans ancre : CenterNet n'utilise rien de sophistiqué, mais utilise des idées de points clés et des structures d'encodeur-décodeur dans les tâches de détection de cible . Le sentiment le plus important de tout l'article est : propre . Chaque fois que j'ai une petite tâche, je donnerai la priorité à son utilisation à la place de YOLO.Après tout, cela m'évite de régler la boîte d'ancrage. [L'auteur a également fourni son propre code de projet, mais avec des modifications, ResNet18/SPP/512x512]

Idées YOLO dans CenterNet :

(1) Détection des points centraux : La caractéristique de YOLO est que seuls les points centraux sont considérés comme des échantillons positifs. Dans YOLO, seuls les points de la grille où se trouvent les points centraux seront pris en compte, et les autres sont considérés comme des exemples négatifs , tandis que CenterNet ne les élimine pas directement. Les points environnants reçoivent des poids plus petits. Le calcul du poids consiste simplement à utiliser la fonction gaussienne (le code de CornerNet est utilisé pour déterminer la variance de la sélection du point central. Par défaut, les deux variances sont les mêmes, et la zone gaussienne dessinée est un cercle [Arrondir vers le bas])

On peut voir à partir de la fonction gaussienne que le poids du point central est de 1 et diminue progressivement autour de lui, atteignant ainsi l'objectif du « seuil doux » . Pour ajouter un autre point, ce seuil est pour la carte thermique du point central. Quant à l'apprentissage du décalage et du wh, seul l'échantillon positif du point central régressera le décalage et le wh, et les autres échantillons adoucis ne régresseront pas le décalage et le wh. Par conséquent, cette méthode de « seuil souple » concerne uniquement la position du point central lui-même. (Déterminez le point central en fonction du seuil, puis régressez les autres quantités en fonction du point central .) CenterNet détecte les entités avec une résolution plus grande. Par rapport à la méthode de seuil strict de YOLO pour déterminer le point central, la prédiction sur cette fonctionnalité de résolution à grande échelle nécessite un meilleur adoucissement.

(2) Décalage du biais d'apprentissage : comme YOLO, étant donné que les coordonnées du sous-échantillonnage et de la carte des caractéristiques sont des nombres entiers, les coordonnées du point central calculées dans la carte des caractéristiques sont toutes des nombres entiers et les points décimaux sont arrondis, donc lors d'une solution inverse, il y aura un grande déviation. Cette déviation augmentera avec l'augmentation de la foulée. Par conséquent, CenterNet doit également apprendre cette déviation. C'est la même chose que YOLO, mais YOLO n'a pas souligné cela à l'époque, alors que CenterNet l'a mentionné dans le document. J'ai pris je l'ai dit et je l'ai dit, et ça a toujours l'air bien. Selon le code officiel de CenterNet, ce décalage est appris à l'aide de la fonction de sortie linéaire + perte L1, en suivant la méthode YOLO. Comme le décalage est compris entre 01, la fonction sigmoïde est naturellement choisie, et BCE est naturellement .

D'un autre côté, CenterNet lui-même est une méthode sans boîte d'ancrage, c'est-à-dire qu'il n'utilise aucune boîte a priori et renvoie directement le wh de la boîte englobante. Il n'utilise pas de boîte a priori, ce qui signifie qu'il ne peut pas être utilisé. via la boîte précédente comme la méthode basée sur la boîte d'ancrage. Les informations d'échelle du cadre d'inspection lui-même peuvent être automatiquement attribuées à chaque échelle du FPN. Par conséquent, si vous souhaitez utiliser FPN, vous devez réfléchir à la manière de mettre en place une méthode de prise de décision et d'attribuer chaque case à chaque échelle , comme FCOS, FoveaBox, etc. Cependant, CenterNet ne veut pas être aussi gênant, car il considère le problème OD comme une régression de points clés, il utilise donc la méthode encodeur-décodeur pour effectuer une régression sur une grande carte de fonctionnalités. , une carte de caractéristiques aussi grande est en fait très détaillée et la plupart des petites informations sur la cible peuvent être renvoyées. CenterNet utilise Deconv pour le suréchantillonnage et les fonctionnalités de différentes échelles ne sont pas fusionnées. En fait, vous pouvez , utilisant l'opération de suréchantillonnage + fusion pour obtenir une carte de caractéristiques à grande résolution.

L'idée de CenterNet est différente de celle de nombreux détecteurs traditionnels tels que RetinaNet, FCOS et YOLO. Cette dernière est une méthode diviser pour régner , c'est-à-dire utiliser plusieurs cartes caractéristiques de différentes échelles pour détecter des objets de différentes échelles. Différentes échelles sont équivalentes à différentes distances focales, se concentrant ainsi sur des objets de différentes tailles . // CenterNet est une méthode de combinaison et de traitement . Nous utilisons une carte de caractéristiques aussi grande pour effectuer une régression. Il peut y avoir à la fois de petits objets et de grands objets. Ce n'est pas grave si les informations d'échelle de tous les objets se trouvent sur une seule carte de caractéristiques. Ceci est similaire à TridentNet, mais TridentNet a fini par se ramifier. Avant qu'il n'y ait une explication théorique fiable, les résultats expérimentaux sont très convaincants. D'après les performances de CenterNet sur COCO, nous pouvons voir que cette méthode de détection en une seule étape de fusion et de conquête est complètement différente de la méthode de détection en plusieurs étapes de division et de conquête. La méthode est pire et le cadre général est plus simple. sur

Lors de l'inférence, CenterNet n'utilise pas d'opérations NMS. Au lieu de cela, il utilise un noyau de pooling maximum 3 × 3 pour filtrer la carte contenant tous les points de pointe sur la carte de sortie, puis utilise cette carte pour correspondre à la carte de sortie. est mappé . La raison en est que lors du filtrage, la taille du pas est de 1, alors le même point de crête apparaîtra à différents endroits. Par conséquent, celui filtré ne peut pas être utilisé et doit être cohérent avec la sortie d'origine. La carte doit être cartographiés (l'auteur préfère utiliser un noyau de pooling 5x5). Cependant, cette méthode présente toujours une redondance, en particulier pour les gros objets.Il est facile de filtrer plusieurs points de pointe avec un noyau de pooling aussi petit.Par conséquent, il est toujours avantageux d'ajouter NMS plus tard.Cela peut également être vu à partir des résultats dans le papier qu'il n'y a aucune perte à utiliser NMS, mais que l'amélioration est négligeable, car il n'est pas nécessaire d'ajouter NMS. (S'il y a beaucoup d'objets volumineux dans votre ensemble de données et que vous ne pouvez pas tolérer des images répétées, je recommande quand même d'ajouter NMS)

Schéma du réseau de code auteur
Schéma de réseau CenterNet implémenté par l'auteur à l'aide de ResNet18

 Processus expérimental : ① À propos du traitement de deux topk ; ② La version de ResNet18 n'est pas assez puissante et les trames répétées sont assez graves, il est donc nécessaire de supprimer nms, et la surcharge de temps est presque négligeable ; ③ Conv2d, DeConv2d et Code SPP ; ④production d'étiquettes☆et comparaison des effets 2/2a⑤

"Détection de cible"-Chapitre 23-CenterNet-plus

à ajouter :

1. NMS (non_max_suppression) : Le nom complet d'IoU est Intersection over Union. Il calcule le rapport entre l'intersection et l'union de la "frontière prédite" et de la "frontière réelle". (Habituellement utilisé dans la phase de test)         Dans la tâche de prédiction, il y aura de nombreuses boîtes de prédiction redondantes, et l'opération NMS peut supprimer efficacement les résultats de détection redondants. La suppression non maximale (NMS), comme son nom l'indique, supprime les éléments qui ne sont pas des valeurs maximales et recherche les valeurs maximales locales . Cette partie représente un quartier, et le quartier a deux paramètres variables, l'un est la dimension du quartier et l'autre est la taille du quartier. Le seuil IoU est un paramètre optimisable, généralement compris entre 0 et 0,5. La validation croisée peut être utilisée pour sélectionner le paramètre optimal.

Pour toute trame de détection, définissez le seuil IoU des deux trames comme base pour juger s'il convient de fusionner les deux, et effectuez une opération NMS pour supprimer les trames de détection redondantes. ( Pour une seule catégorie ) Par exemple, dans la détection des piétons, une fois les caractéristiques extraites de la fenêtre coulissante et classées et reconnues par le classificateur, chaque fenêtre obtiendra un score. Cependant, les fenêtres coulissantes feront que de nombreuses fenêtres contiendront ou croiseront principalement d'autres fenêtres. À l’heure actuelle, le NMS doit être utilisé pour sélectionner les quartiers ayant les scores les plus élevés (la plus forte probabilité d’être piétons) et supprimer les fenêtres ayant des scores faibles.

Une démonstration intuitive de        précision est la proportion d'échantillons positifs que vous pensez être en réalité des échantillons positifs, et le rappel est le nombre d'échantillons réellement positifs que vous avez trouvés (ce qui peut refléter la situation de détection manquée). [Les instructions sur mAP sont dans le lien]

2. Conv2d et DeConv2d et code SPP

class Conv2d(nn.Module):
    def __init__(self, in_channels, out_channels, ksize, padding=0, stride=1, dilation=1, leakyReLU=False):
        super(Conv2d, self).__init__()
        self.convs = nn.Sequential(
            nn.Conv2d(in_channels, out_channels, ksize, stride=stride, padding=padding, dilation=dilation),
            nn.BatchNorm2d(out_channels),
            nn.LeakyReLU(0.1, inplace=True) if leakyReLU else nn.ReLU(inplace=True)
        )

    def forward(self, x):
        return self.convs(x)

class DeConv2d(nn.Module):
    def __init__(self, in_channels, out_channels, ksize, stride=2, leakyReLU=False):
        super(DeConv2d, self).__init__()
        # deconv basic config
        if ksize == 4:
            padding = 1
            output_padding = 0
        elif ksize == 3:
            padding = 1
            output_padding = 1
        elif ksize == 2:
            padding = 0
            output_padding = 0

        self.convs = nn.Sequential(
            nn.ConvTranspose2d(in_channels, out_channels, ksize, stride=stride, padding=padding, output_padding=output_padding),
            nn.BatchNorm2d(out_channels),
            nn.LeakyReLU(0.1, inplace=True) if leakyReLU else nn.ReLU(inplace=True)
        )

    def forward(self, x):
        return self.convs(x)

class SPP(nn.Module):
    """
        Spatial Pyramid Pooling
    """
    def __init__(self):
        super(SPP, self).__init__()

    def forward(self, x):
        x_1 = F.max_pool2d(x, 5, stride=1, padding=2)
        x_2 = F.max_pool2d(x, 9, stride=1, padding=4)
        x_3 = F.max_pool2d(x, 13, stride=1, padding=6)
        x = torch.cat([x, x_1, x_2, x_3], dim=1)

        return x

【Code】


【Être lu】


CenterNet-plus (discussion dans la zone de commentaires)

Sablier

Volume 1-Introduction au didacticiel scientifique populaire sur la détection de cibles

Comment appliquer le noyau de diffusion gaussienne dans la carte thermique GT dans le code Cornernet/Centernet

Amélioration des données N méthodes avec code , tramage des couleurs, amélioration des données

Supongo que te gusta

Origin blog.csdn.net/sinat_40759442/article/details/128335788
Recomendado
Clasificación