La Segmentation d'images avec TensorFlow
Je suis en train de voir la faisabilité de l'utilisation de TensorFlow pour identifier les caractéristiques de mes données d'image. J'ai 50x50px images en niveaux de gris de noyaux que je voudrais avoir segmenté - la sortie désirée serait un 0 ou 1 pour chaque pixel. 0 pour le fond, 1 comme le noyau.
Exemple d'entrée: premières données d'entrée
Exemple d'étiquette (ce que le "label"/la vraie réponse serait): sortie de données (étiquette)
Est-il même possible d'utiliser TensorFlow pour effectuer ce type de machine learning sur mon dataset? Je pourrait avoir des milliers d'images pour l'ensemble de la formation.
Beaucoup d'exemples ont une étiquette correspondent à une même catégorie, par exemple, à 10 numéro de tableau [0,0,0,0,0,0,0,0,0,0,0] pour le manuscrit chiffres de l'ensemble de données, mais je n'ai pas vu beaucoup d'exemples de la sortie d'un ensemble plus grand. Je suppose que je le label serait une 50x50 tableau?
Aussi, toutes les idées sur le traitement de temps PROCESSEUR pour ce moment de l'analyse?
Voir github.com/Russell91/TensorBox
OriginalL'auteur J_K | 2016-04-04
Vous devez vous connecter pour publier un commentaire.
Oui, c'est possible avec TensorFlow. En fait, il existe de nombreuses façons de l'aborder. Voici une très simple:
Considèrent que c'est une tâche de classification binaire. Chaque pixel doit être classé comme de premier plan ou d'arrière-plan. Choisissez un ensemble de caractéristiques par lesquelles chaque pixel sera classé. Ces caractéristiques pourraient être les caractéristiques locales (comme un patch autour du pixel en question) ou global (comme le pixel dans l'image). Ou une combinaison des deux.
Puis former un modèle de votre choix (comme un NN) sur ce jeu de données. Bien sûr, vos résultats seront très dépendant de votre choix de fonctionnalités.
Vous pouvez également prendre un graph-cut approche si vous pouvez représenter que le calcul comme un calcul graphique en utilisant les primitives qui TensorFlow fournit. Vous pouvez ensuite soit de ne pas faire usage de TensorFlow de l'optimisation des fonctions telles que backprop ou si il y a quelques dérivable variables dans votre calcul que vous pourriez utiliser TF de l'optimisation des fonctions pour optimiser ces variables.
SoftmaxWithLoss()
seulement accepter[batch_size class_num]
d'entrée qui n'est évidemment pas utile à l'OP cas. Depuis l'OP accepté votre réponse, j'espère qu'il pourrait expliquer comment il s'approche de son problème.OriginalL'auteur rafaelcosman
SoftmaxWithLoss() fonctionne pour votre problème de la segmentation d'images, si vous remodeler la prédiction de l'étiquette et de la véritable étiquette de la carte à partir de [lot, la hauteur, la largeur du canal] [N, channel].
Dans votre cas, votre dernier prédit que la carte seront channel = 2, et après remodelant, N = lothauteurlargeur, alors vous pouvez utiliser SoftmaxWithLoss() ou similaire, la perte de fonction dans tensorflow pour exécuter l'optimisation.
Voir cette question qui peuvent vous aider.
OriginalL'auteur Wei Liu
Essayez d'utiliser les filtres de convolution pour le modèle. Un empilement de convolution et de sous-échantillonnage des couches. L'entrée devrait être normalisé pixel de l'image et de sortie doit être le masque. La dernière couche doit être un softmaxWithLoss. HTH.
OriginalL'auteur user1533097