Comment ajouter des fonctionnalités sans image le long des images latérales en tant qu'entrée des CNN

14

J'entraîne un réseau neuronal convolutionnel pour classer les images sur les conditions de brouillard (3 classes). Cependant, pour chacune des 150 000 images environ, j'ai également quatre variables météorologiques disponibles qui pourraient aider à prévoir les classes d'images. Je me demandais comment je pourrais ajouter les variables météorologiques (par exemple la température, la vitesse du vent) à la structure CNN existante afin qu'elle puisse aider dans la classification.

Une façon dont je peux déjà penser est de créer un autre (petit) réseau neuronal à action directe aux côtés du CNN, puis de concaténer les sorties des couches CNN et les couches cachées du réseau neuronal non image les unes aux autres au niveau de la couche dense.

La deuxième façon dont je pourrais penser est simplement de mettre ces éléments en contact avec la couche dense. Cependant, dans ce cas, les variables non-image ne pourront (je pense) que faire des prédictions linéaires.

Existe-t-il d'autres (meilleures) façons d'inclure les fonctionnalités non liées à l'image dans le modèle? Et quelle serait la méthode recommandée compte tenu de la quantité de données dont je dispose?

Une autre question que je me pose est de savoir si je dois ou non dégeler les couches convolutives tout en m'entraînant avec ces fonctionnalités non liées à l'image? Ces couches d'un Resnet-18 (qui ont été initialisées comme pré-entraînées sur ImageNet) ont déjà été affinées à l'aide des images. Je suppose que je devrais les garder figés et ne dégeler que la couche dense, car ce n'est qu'ici que les éléments non liés à l'image entrent en «contact» avec les éléments d'image (pas plus tôt dans le CNN). Si je me trompe, dites-le!

Tim
la source
vous pouvez modéliser la distribution des jointures entre les fonctions supplémentaires et les images via un modèle génératif comme GAN, VAE. alors vous pourriez obtenir les variables latentes et les utiliser avec un critère supervisé
Fadi Bakoura
Je suis moi-même dans une situation similaire. J'utilise une pile d'images du ciel depuis 15 minutes pour essayer de prédire la sortie de panneaux solaires près de la caméra dans 15 minutes. J'ai récemment décidé de mettre en jeu plusieurs fonctionnalités météo (une pour chaque image comme dans votre cas). Votre première suggestion a fonctionné beaucoup mieux que la seconde (en ajoutant directement des caractéristiques non graphiques à la couche dense). Pour être précis, la deuxième suggestion a entraîné des problèmes de normalisation. J'ai trouvé que pour une raison que je ne peux pas encore expliquer, la couche Batchnorm n'a pas pu normaliser le graphique fea
Vignesh Venugopal
@VigneshVenugopal merci de me mentionner dans les commentaires sinon je ne pourrai pas être prévenu. Quelle est votre question? :)
Media
Comment concaténer la vitesse, l'accélérateur et l'angle de direction à mes réseaux? Pourriez-vous s'il vous plaît expliquer à propos de dense combien ajouter dense? Qu'est-ce qui en dépend?
Nasrinzaghari

Réponses:

10

Ma solution est comme votre première recommandation, mais avec de légers changements.

  1. Construisez vos couches convolutives et empilez-les jusqu'à la couche aplatie. Ce réseau doit être alimenté avec les données d'image.
  2. Mettez à plat vos cartes d'activation
  3. Construisez un réseau entièrement connecté avec le nombre souhaité de neurones et de couches.
  4. Concaténer les sorties de la couche aplatie du réseau convolutionnel et du réseau entièrement connecté.
  5. ajoutez des couches denses et connectez-les à la dernière couche qui représente vos classes.

Vous pouvez utiliser des fonctions de coût habituelles pour cette architecture.

Médias
la source
À Keras, pouvez-vous le faire avec des Concatenate()calques?
Leevo
Oui. Vous devez les concaténer pour les mettre côte à côte.
Média
Dois-je utiliser des couches Concatenate()ou concatenate()? Je ne peux pas faire la différence
Leevo
Cela dépend de la façon dont vous souhaitez créer votre réseau. Au fait, vous pouvez voir la liste des arguments de chacun. Ils diffèrent. Vous pouvez également jeter un œil ici .
Média