Yah sous-titre est correct, FPN est une méthode très simple qui peut être utilisée avec presque tous les modèles pour améliorer les résultats. Nous allons sauter dans les détails techniques de l’article bientôt, mais pour ce blog, il y a quelques pré-requis. Vous devez avoir une idée générale de ce qui suit : Fast RCNN, Faster RCNN, anchor boxes, la connaissance de SSD sera utile. J’ai des blogs pour tous ces articles, vous pouvez les consulter (liens à la fin de ce blog). FPN est un relativement plus simple si vous comprenez bien tous les prérequis.
Des pyramides d’images(plusieurs images de plusieurs échelles) sont souvent utilisées au moment des prédictions pour améliorer les résultats. Mais le calcul des résultats à l’aide des architectures modernes d’apprentissage profond est souvent un processus coûteux en termes de calcul et de temps.
La NFP est basée sur l’exploitation de la hiérarchie pyramidale multi-échelle inhérente au CNN profond. Il est analogue à la différence entre RCNN et Fast RCNN, RCNN est un détecteur d’objets basé sur la région dans lequel nous trouvons d’abord les ROI’s en utilisant un algorithme tel que la recherche sélective, puis nous rognons ces ROI’s (environ 2000) de l’image et les alimentons dans CNN pour obtenir des résultats et dans Fast RCNN les couches initiales de CNN sont partagées pour l’image complète et le rognage ROI est fait sur la carte de caractéristiques extraites, ce qui permet de gagner beaucoup de temps. Dans le cas du FPN, la recherche est basée sur l’exploitation de la nature multi-échelle interne, et la pyramide d’images est en quelque sorte implémentée en interne à l’architecture et au partage de la plupart des parties du réseau. Nous allons sauter dans les détails techniques maintenant.
CNN est basé sur la structure hiérarchique dans laquelle la résolution de la carte des caractéristiques est réduite après chaque couche, mais la sémantique capturée par chaque couche plus profonde est plus forte que la couche précédente. Les caractéristiques sémantiquement plus fortes sont spatialement plus grossières en raison du sous-échantillonnage. FPN crée une architecture où les caractéristiques sémantiquement plus fortes sont fusionnées avec les caractéristiques des couches précédentes(qui sont sous-échantillonnées moins de fois et ont donc des informations de localisation plus précises).
L’architecture se compose de deux voies :
- Voie ascendante (CNN feed-forward normal)
- Voie descendante (Nouvelle architecture utilisée pour la fusion des caractéristiques)
- Il s’agit de l’architecture normale du CNN feed-forward. Dans cet article, les auteurs ont utilisé l’architecture Resnet pour l’évaluation des performances. Nous nommerons d’abord les couches C2, C3, C4, C5 qui sont Conv 2,3,4 et 5 couches dans l’architecture Resnet. La taille de la carte de caractéristiques après l’application de C2 est imagesize/4 et cette dimension spatiale est sous-échantillonnée par un facteur de 2 après chaque couche.
Piste descendante (pyramide droite dans l’image ci-dessus)
Dans cette voie, les caractéristiques plus profondes sont fusionnées avec les caractéristiques inférieures en utilisant des connexions latérales. Comme le nombre de canaux des couches dans la voie ascendante n’est pas le même, une convolution 1*1 est appliquée d’abord pour obtenir un nombre fixe de canaux pour chaque couche(cette dimension est conservée 256 dans le papier). La taille spatiale étant également différente, nous sur-échantillonnons (2x) les caractéristiques les plus profondes afin que la taille spatiale de cette caractéristique corresponde à une carte de caractéristiques à plus haute résolution de la couche précédente dans la voie descendante. Maintenant, les dimensions de deux cartes de caractéristiques sont les mêmes et elles sont fusionnées par addition par élément.
Nous pouvons comprendre cela avec un exemple. Disons que la taille de notre image est de 512*512, maintenant la taille de la carte de caractéristiques après chaque couche de convolution(C2, C3, C4, C5) sera . Le nombre de canaux de sortie de chaque couche est de . Maintenant, nous appliquons une convolution 1*1 (avec un nombre de canaux en sortie = 256) sur les sorties de C2, C3, C4, C5 pour obtenir un nombre égal de canaux. Nous appellerons ces caractéristiques intermédiaires avec le même nombre de canaux de sortie S2, S3, S4, S5 correspondant à C2, C3, C4, C5. Maintenant, S5 est sur-échantillonné à 32*32 et fusionné avec S4 en utilisant l’addition par éléments. Cette sortie sera ensuite suréchantillonnée à 64*64 et fusionnée avec S3 et ainsi de suite. Nous appellerons les sorties de cette étape T2, T3, T4, T5.
Pour réduire l’effet d’aliasing dû au suréchantillonnage, une convolution 3*3 est appliquée sur T2, T3, T4, T5 pour obtenir nos cartes de caractéristiques finales P2, P3, P4, P5 correspondant à C2, C3, C4, C5. Ces caractéristiques sont utilisées pour générer les scores finaux de classification et de régression (bbox). Les paramètres de la tête peuvent être partagés et la tête séparée ne donne aucun avantage supplémentaire.
C’est tout dans la théorie de FPN. Mais nous allons voir comment le FPN peut être mis en œuvre pour Faster RCNN et Fast RCNN.
FPN pour Faster RCNN
Faster RCNN utilise le réseau de proposition de région. RPN est utilisé pour générer des propositions de bounding box et ces propositions sont ensuite utilisées pour générer des prédictions finales. RPN est un petit réseau qui est implémenté sur les caractéristiques extraites de la dernière couche(C5). Une convolution 3*3 est appliquée à cette caractéristique extraite suivie de deux couches de convolution 1*1 similaires (une pour la classification et l’autre pour la régression).
RPN est adapté ici en remplaçant simplement une carte de caractéristiques à échelle unique par FPN. Ainsi, maintenant RPN est implémenté pour P2-P5 et non C5 seul. Pour l’entraînement de RPN, des boîtes d’ancrage de plusieurs échelles sont utilisées. Mais puisque le multi-échelle est maintenant inhérent à la caractéristique extraite, il n’est pas nécessaire d’avoir des boîtes d’ancrage multi-échelle sur aucun des niveaux. Au lieu de cela, une boîte d’ancrage à échelle unique est attribuée à chaque niveau. La taille des boîtes d’ancrage utilisées dans cet article est {32², 64², 128², 256², 512²} pour {P2, P3, P4, P5, P6}. P6 est introduit ici afin qu’une boîte d’ancrage de grande taille puisse être utilisée. P6 est sous-échantillonné à partir de P5 avec un pas de 2. Les boîtes d’ancrage de rapports d’aspect {1:1, 1:2, 2:1} sont utilisées.
Ces boîtes d’ancrage sont appariées avec les boîtes de vérité terrain et le modèle est entraîné de bout en bout.
FPN pour le RCNN rapide
L’implémentation du FPN dans le RCNN rapide est très simple. Le RCNN rapide utilise des techniques de proposition de régions telles que la recherche sélective pour générer le ROI et utilise la mise en commun du ROI sur la carte de caractéristiques à échelle unique pour obtenir les résultats finaux. En appliquant le FPN, nous aurons plusieurs cartes de caractéristiques de différentes échelles et nous avons besoin d’une stratégie pour affecter un ROI donné à la carte de caractéristiques(maintenant nous avons plusieurs cartes de caractéristiques, quelle carte de caractéristiques utiliser pour un ROI donné ?).
La carte de caractéristiques utilisée est calculée en utilisant :
Ici 224 est la taille d’entraînement de l’image dans le jeu de données imagenet(resnet utilisé est conservé sur imagenet). k0 est la carte de caractéristiques à laquelle le ROI de taille 224 est attribué, w et h sont la largeur et la hauteur du ROI. La tête a des paramètres partagés pour chaque carte de caractéristiques.