GoogLeNet, renommé plus tard Inception v1, est un réseau de neurones convolutif (CNN) pour la vision par ordinateur introduit par des chercheurs de Google en 2014. Il a remporté le défi de reconnaissance visuelle à grande échelle ImageNet 2014 (ILSVRC14), réduisant considérablement le taux d'erreur dans la classification d'images. L'architecture était historiquement importante en tant que premier CNN qui sépare le tronc (ingestion de données), le corps (traitement des données) et la tête (prédiction), une conception qui persiste dans la plupart des architectures CNN modernes.
Le nom « GoogLeNet » rendait hommage à LeNet, le CNN de 1998 par Yann LeCun, car les deux sont des CNN. L'équipe l'a également appelé « Inception » en référence à un mème internet « we need to go deeper », une phrase du film Inception de 2010. Comme des versions ultérieures ont été publiées, l'architecture originale a été renommée « Inception v1 ». Les modèles et le code ont été publiés sous la licence Apache 2.0 sur GitHub.
Architecture et innovations clés
Inception v1 est un CNN profond composé de 22 couches, dont la plupart sont des « modules Inception ». L'article original décrivait les modules Inception comme un « aboutissement logique » de l'approche Network in Network et des travaux d'Arora et al. (2014). Chaque module Inception applique plusieurs filtres convolutifs de tailles différentes (1x1, 3x3, 5x5) et un pooling en parallèle, puis concatène leurs sorties, permettant au réseau de capturer des caractéristiques à différentes échelles.
En raison de sa profondeur, Inception v1 souffrait du problème du gradient qui s'estompe. L'équipe a résolu cela en insérant deux « classificateurs auxiliaires » à un tiers et deux tiers de la profondeur du réseau. La fonction de perte était une somme pondérée des trois classificateurs : L = 0,3 L_aux1 + 0,3 L_aux2 + L_real. Ces classificateurs auxiliaires étaient retirés après la fin de l'entraînement. Ce problème a ensuite été résolu de manière plus fondamentale par l'architecture ResNet.
L'architecture se compose de trois parties empilées les unes sur les autres :
- Le tronc (ingestion de données) : Les premières couches convolutives effectuent un prétraitement des données pour réduire les images à une taille plus petite.
- Le corps (traitement des données) : Les nombreux modules Inception suivants effectuent l'essentiel du traitement des données.
- La tête (prédiction) : La dernière couche entièrement connectée et softmax produit une distribution de probabilité pour la classification d'images.
Inception v2
Inception v2 a été publié en 2015, dans un article plus célèbre pour avoir proposé la normalisation par lots. Il comptait 13,6 millions de paramètres. Il améliorait Inception v1 en ajoutant la normalisation par lots et en supprimant le dropout et la normalisation de réponse locale, que les chercheurs ont jugés inutiles lorsque la normalisation par lots était utilisée.
Inception v3
Inception v3 a été publié en 2016. Il améliorait Inception v2 en utilisant des convolutions factorisées. Par exemple, une seule convolution 5x5 peut être factorisée en deux convolutions 3x3 empilées, toutes deux ayant un champ réceptif de taille 5x5. Le noyau 5x5 a 25 paramètres contre 18 dans la version factorisée, ce qui rend la version factorisée plus économe en paramètres. L'équipe a constaté empiriquement que les convolutions factorisées amélioraient les performances.
Il a également introduit une forme de réduction de dimension en concaténant la sortie d'une couche convolutive et d'une couche de pooling. Par exemple, un tenseur de taille 35x35x320 peut être réduit par une convolution avec pas de 2 à 17x17x320, et par un maxpooling avec une taille de pool 2x2 à 17x17x320, qui sont ensuite concaténés en 17x17x640.
Inception v3 a également supprimé le classificateur auxiliaire le plus bas pendant l'entraînement, constatant que la tête auxiliaire fonctionnait comme une forme de régularisation. De plus, il a proposé la régularisation par lissage des étiquettes : pour une image avec l'étiquette c, au lieu de prédire la distribution one-hot δ_c, le modèle prédit une distribution lissée (1 - ε)δ_c + ε/K, où K est le nombre total de classes.
Inception v4 et Inception ResNet
En 2017, l'équipe a publié Inception v4, Inception ResNet v1 et Inception ResNet v2. Inception v4 était une mise à jour incrémentale avec encore plus de convolutions factorisées et d'autres complications empiriquement trouvées pour améliorer les benchmarks. Inception ResNet v1 et v2 sont tous deux des modifications d'Inception v4, où des connexions résiduelles sont ajoutées à chaque module Inception, inspirées de l'architecture ResNet.
Xception
Xception (« Extreme Inception ») a été publié en 2017. C'est une pile linéaire de couches de convolutions séparables en profondeur avec des connexions résiduelles. La conception a été proposée sur l'hypothèse que, dans un CNN, les corrélations entre canaux et les corrélations spatiales dans les cartes de caractéristiques peuvent être entièrement découplées. L'entraînement de chaque réseau Xception a pris 3 jours sur 60 GPU K80, soit environ 0,5 pétaFLOP-jours.
La famille Inception a été très influente dans le développement du deep learning pour la vision par ordinateur, et ses principes architecturaux continuent d'informer la conception des CNN modernes.