Quand j'ai rédigé ma thèse de fin d'études, j'ai fait une segmentation sémantique avec pytorch, mais j'ai beaucoup de problèmes, je vais donc la résumer sous forme de mémorandum.
IoU Il y a quelque chose qui s'appelle box_iou dans Torchvision, mais j'ai eu des ennuis car je n'ai pas pu trouver un gars pour la segmentation J'ai fini par utiliser cette implémentation
torch.nn.CrossEntropyLoss Ce mec est vraiment ennuyeux En regardant document, il dit $ Input: [Minibatch, C, d_1 ...] $, donc le résultat inféré et le masque des données de réponse correctes Quand j'ai créé la forme de l'expression one-hot comme [nombre de lots, nombre de classes, H, W], j'ai eu un nombre infini d'erreurs et suis resté bloqué pendant un jour ou deux.
En fait, la forme du résultat de l'inférence est bonne comme ci-dessus, mais les données de réponse correctes semblent être $ target: [Minibatch, d_1 ...] $, la forme est [nombre de lots, H, W] et chaque pixel a une étiquette. Il semble que la réponse soit correcte. BinaryCrossEntropy avait la même forme pour l'entrée et la cible, donc je me suis mis en colère quand je les ai trouvés. ~~ Vérifiez-le correctement ~~
De plus, la cible semble devoir faire correspondre l'étiquette de chaque pixel avec l'index de la classe d'entrée. En d'autres termes, s'il y a 20 classes, l'étiquette cible doit avoir une valeur comprise entre 0 et 19.
Recommended Posts