5
votes

Classer des images avec des caractéristiques très similaires appartenant à différentes classes

 exemple d'image

J'ai un ensemble de données dans lequel j'ai besoin de classer certains ensembles d'images étiquetées. Actuellement, cela est fait par des experts humains, donc l'ensemble de données disponible est de bonne qualité. Les images ont des caractéristiques très similaires.

Pour donner un exemple, nous pourrions supposer que la quantité de pourriture d'une pomme ou d'une tomate est classée comme très faible, faible, moyenne, élevée et très élevée (5 classes) et des images très similaires existent dans les paires de classes adjacentes à savoir; (très bas et bas, bas et moyen, moyen et haut, haut et très haut)

Y a-t-il un moyen de surmonter cela?

Cela semble difficile car la différenciation entre les classes adjacentes est très complexe et déroutante car une image très similaire existe dans plus d'une classe.


10 commentaires

Avez-vous essayé quelque chose ou spéculez-vous simplement?


Les images similaires sont évidemment plus difficiles à différencier que les classes d'images qui ont des caractéristiques très différentes. J'ai peur qu'il n'y ait pas de solution magique à votre problème, une tâche de classification difficile sera difficile à résoudre quels que soient les fonctionnalités ou le classificateur que vous choisissez.


@BlackBear J'ai essayé d'utiliser un ResNet50 en gelant l'architecture du modèle de base et en ne formant que les couches denses que j'ai ajoutées ci-dessous (essayé avec BatchNorm et Dropout également), en utilisant un optimiseur SGD (essayé différents taux d'apprentissage allant de 0,1 à 0,001). Le résultat était que la précision de la formation et la perte de formation ont bien augmenté à 78%, mais la précision de validation a simplement cessé d'augmenter après 53%.


@TA Je comprends le fait que c'est évidemment très difficile, mais je voulais seulement comprendre si pour le moment c'est juste difficile ou pratiquement impossible? Si c'est juste difficile, quelle approche suggéreriez-vous? Est-ce que segmenter les pixels pourris et les transmettre à un classificateur aiderait?


Combien d'images avez-vous? Plus il y en a, mieux c'est. Vous pouvez peut-être réduire le nombre de cours. Essayez également d'utiliser la régression ordinale, par ex. kaggle.com/c/diabetic-retinopathy-detection/discussion/13115 < / a>


@BlackBear J'ai près de 500 images par classe. J'ai un ensemble de données plus grand qui n'a pas encore été étiqueté, ce qui représenterait près de 20 000 images dans toutes les classes. Au fait, votre suggestion semble vraiment attrayante et intuitive. Tous les liens utiles pour m'aider à mettre en œuvre la classification ordinale pour les ensembles de données d'image. Toutes les implémentations que j'ai pu trouver concernaient des données tabulaires à partir de fichiers CSV.


Vous devriez voir une amélioration significative avec 40x les données :) quant à l'implémentation, voir par ex. github.com/JHart96/keras_ordinal_categorical_crossentropy


@BlackBear Merci pour le partage. Je ne savais même pas qu'il y avait quelque chose comme la classification ordinale. Si vous connaissez de bons blogs qui expliquent l'intuition derrière cela, laissez-moi savoir. Je sors de Google et j'en ai trouvé quelques-uns: cs.waikato .ac.nz / ~ eibe / pubs / ordinal_tech_report.pdf cs.uu.nl/docs/vakken/b3dar/ordinal-dict.pdf


@BlackBear vous venez d'ouvrir une fenêtre dans un endroit où j'étais coincé. Merci beaucoup monsieur.


@NiranjanA heureux d'entendre :) bonne chance!


3 Réponses :


0
votes

Je vous recommande de n'utiliser qu'une seule valeur de score (par exemple 0,0 ~ 1,0) comme "score pourri" et de classer la valeur en fonction du résultat du score de pourriture.

Par exemple: 0,0 ~ 0,2: pourriture très faible 0,2 ~ 0,4: faible pourriture 0,4 ~ 0,6: pourriture moyenne 0,6 ~ 0,8: pourriture élevée 0.8 ~ 1.0: pourriture très élevée


0 commentaires

0
votes

Les CNN apprennent des fonctionnalités triviales tandis que les couches FC plongent encore plus profondément. Ceci vous devez ajouter des couches plus profondes pour une meilleure précision dans ce cas


0 commentaires

0
votes

La similitude visuelle n'est pas nécessairement un problème. De manière générale, si les humains ne parviennent pas à se classer, les CNN échouent probablement aussi. En guise d'indication approximative de la difficulté, vous pourriez demander à un ami de classer quelques échantillons difficiles, si elle / il a du mal (ou vous-même), cela pourrait être pratiquement impossible. Je ne pense pas que l'exemple que vous montrez soit extrêmement difficile, mais je pourrais voir que les humains ont également des difficultés à bien séparer les classes et un examen des données et de leur étiquetage pourrait le révéler.


0 commentaires