2017-09-13 2 views
2

J'ai récemment cherché à incorporer la version d'apprentissage machine pour les développeurs iOS avec mon application. Comme c'est la première fois que j'utilise tout ce qui est lié à ML, j'étais très perdue quand j'ai commencé à lire les différentes descriptions de modèles qu'Apple a mises à disposition. Ils ont le même but/description, la seule différence étant la taille réelle du fichier. Quelle est la différence entre ces modèles et comment sauriez-vous lequel est le mieux adapté?MobileNet vs SqueezeNet vs ResNet50 vs Inception v3 vs VGG16

Répondre

2

Les modèles Apple sont disponibles à des fins de démonstration simples. La plupart du temps, ces modèles ne sont pas suffisants pour une utilisation dans votre propre application.

Les modèles sur la page de téléchargement d'Apple sont formés dans un but très spécifique: la classification des images sur l'ensemble de données ImageNet. Cela signifie qu'ils peuvent prendre une image et vous dire quel est l'objet "principal" dans l'image, mais seulement si c'est l'une des 1 000 catégories de l'ensemble de données ImageNet.

Habituellement, ce n'est pas ce que vous voulez faire dans vos propres applications. Si votre application veut effectuer une classification d'image, vous voulez généralement former un modèle sur vos propres catégories (comme la nourriture ou les voitures ou autre). Dans ce cas, vous pouvez prendre quelque chose comme Inception-v3 (la version originale, pas la version Core ML) et la rééduquer sur vos propres données. Cela vous donne un nouveau modèle, que vous devez ensuite convertir en Core ML à nouveau. Si votre application souhaite faire autre chose que la classification d'images, vous pouvez utiliser ces modèles prédéfinis en tant que "extracteurs de caractéristiques" dans une structure de réseau neuronal plus large. Mais encore une fois cela implique de former votre propre modèle (généralement à partir de rien) et ensuite convertir le résultat en Core ML.

Ainsi, seulement dans un cas d'utilisation très spécifique - la classification d'images utilisant les 1 000 catégories d'ImageNet - ces modèles fournis par Apple sont utiles pour votre application.

Si vous souhaitez utiliser l'un de ces modèles, la différence est la vitesse par rapport à la précision. Les plus petits modèles sont les plus rapides mais aussi les moins précis. (À mon avis, VGG16 ne devrait pas être utilisé sur mobile, il est juste trop grand et n'est pas plus précis que Inception ou même MobileNet.)

+0

Merci, c'était une réponse très perspicace – notJenny

2

Les SqueezeNets sont entièrement convolutifs et utilisent des modules Fire qui ont une couche de compression de 1x1 circonvolutions. ce qui diminue énormément les paramètres car il peut limiter le nombre de canaux d'entrée de chaque couche. Cela rend SqueezeNets latence extrêmement faible, en plus du fait qu'ils n'ont pas de couches denses. Les réseaux mobiles utilisent des circonvolutions séparables en profondeur, très similaires à celles des tours initiales. Ceux-ci réduisent également le nombre de paramètres et donc la latence. Les MobileNets ont également des paramètres de rétrécissement de modèles utiles que vous pouvez appeler avant l'entraînement pour obtenir la taille exacte souhaitée. L'implémentation de Keras peut également utiliser des poids pré-formés ImageNet.

Les autres modèles sont très profonds, de grands modèles. Le nombre réduit de paramètres/style de convolution n'est pas utilisé pour une faible latence mais juste pour la capacité à former des modèles très profonds, essentiellement. ResNet a introduit des connexions résiduelles entre les couches qui, à l'origine, étaient considérées comme essentielles pour la formation de modèles très profonds. Ceux-ci ne sont pas visibles dans les modèles à faible latence mentionnés précédemment.