Skip to main content

Entrainement de mask-RCNN modifié

Et comparaison des performances entre mask-RCNN et notre version
Created on August 18|Last edited on December 16

Losses

Comme dans la majorité des problèmes utilisant des réseaux de neurones, le but va être pour le réseau de minimiser des fonctions de perte dites des losses.
Mask-RCNN, ainsi que notre version modifiée possède 5 losses, en pratique on va également rajouter la loss totale qui est la somme des 5 autres pour avoir une vision globale de l'évolution du modèle :

Loss classifier :

Cette loss représente la précision de la prédiction de la classe, il s'agit simplement d'une cross-entropie.

Loss box reg :

Cette loss représente à quel point une boite est pertinente, c'est une smooth L1.

Loss mask :

Cette représente à quel point un masque est bon, et est calculée ainsi :
1m21i,jm[yi,jlogy^ijk+(1yijlog(1y^ijk))]-\frac{1}{m²}\sum\limits_{1\leq i,j\leq m}[y_{i,j}logŷ^{k}_{ij}+(1-y_{ij}log(1-ŷ^{k}_{ij}))]

Avec yijy_{ij} la prédiction pour le pixel (i,j) et y^ijŷ_{ij} le masque réel qui est de classe kk et de taille mmm*m.

Loss objectness :

Cette loss représente à quel point une region a de chance de contenir un objet, cette loss est calculée dans le RPN et est une binary cross-entropy.

Loss RPN box reg :

Cette loss est calculée dans le RPN et est une smooth L1.

Expérience

Nous avons modifiés deux composantes dans le modèle, IoU/DIoU et NMS/soft-NMS, cela fait donc 4 combinaisons à tester.
Voici les résultats d'expérience conduite sur le dataset PIDray sur 3 epochs.

Run set
4

Ces graphiques montrent que globalement, les modèles utilisant soft-NMS ont de moins bonnes losses. Cependant cela ne veut pas dire qu'ils sont moins bons, cela peut venir du fait que le module soft-NMS entraîne simplement de plus grandes losses à performances équivalentes, il faut donc vérifier d'autres métriques.
On remarque que les losses on tendance à se stabiliser dès le milieu de l’entraînement, ce qu'on observe lorsque l'on calcul les loss de validation.

Run set
4

Maintenant on sait quels modèles prendre pour comparer les métriques, on prend le modèle à la fin de l'epoch ou val_losses est le plus faible.

Métriques :

Avant toute choses, il faut savoir que la plupart des métriques en segmentation sont calculées pour après avoir définis un seuil IoU. Ce seuil n'a aucun rapport avec le IoU utilisé dans le modèle, bien qu'il représente la même grandeur. Il sert à valider si le modèle à trouvé ou non un objet. En effet, s'il trace une boite autours d'un objet d'intérêt il y a en réalité aucune chance pour que cette boite soit exactement celle définie dans l'annotation. Le seuil IoU sert à dire "Si le modèle trouve une boite qui est assez proche de celle annotée (càd les deux boites on un IoU supérieur à X), alors on va dire que le modèle à bien trouvé la boite". C'est pour cela que certaines courbes sont annotées avec IoU=X, nous avons calculé nos métriques avec IoU=0.5, 0.6 et 0.7.
De plus, rappelons ce qu'on a modifié dans le mask-RCNN.
Il s'agit de IoU qui est devenu DIoU et NMS qui est devenu soft-NMS. Ce sont deux modifications qui sont sensé impacter seulement la détection.
C'est cohérent avec notre problème, puisqu'on a établis que la difficulté avec les images rayon x venait en grande partie de la détection d'objets qui se chevauchent, ou chevauchent d'autre objets.
Peut-être qu'un changement de performances de détection va impacter les performances de segmentation et classification. On peut imaginer que si on détecte surtout plus d'objets ambiguë et que donc la classification est moins bonne.
Vérifions donc d'abords que la segmentation et la classification restent globalement inchangée.


Run set
4

D'abord la matrice de confusion doit être normalisée car les modèles utilisant soft-nms trouvent plus d'objet, donc forcément plus de bonnes et de mauvais prédictions.
Une fois la matrice normalisée on s'aperçoit que les modèles sont relativement autant performants l'un que l'autre en terme de classification. Les 4 modèles on autours de 90% de précision dans leur classification. On remarque également que les objets sur lesquels il y a le plus de confusion sont les mêmes d'un modèle à l'autre.

Run set
4

Idem pour le score IoU qui est un indicateur de performance de la segmentation, de la précision des masques. On voit que les courbes sont relativement proches indépendamment du modèle.
C'est une assez bonne nouvelle, cela veut dire qu'il n'y a pas eu d'effets imprévus et indésirables causés par nos modifications.
Enfin regardons les effets de nos modifications sur les métriques de détection.

Run set
4

Là on peut voir une réelle différence sur les courbes PR en fonction des modèles. Pour rappel, les courbes PR affichent la précision en fonction du rappel. La précision étant la proportion de vrais positifs parmi les objets trouvés, et le rappel étant la proportion de vrais positifs parmi les objets existants.
On remarque sur ces courbes que les modèles avec soft-NMS on surtout un meilleur rappel sans perdre en précision, encore une fois c'est ce qu'on voulait étant donné la problématique d'images rayon x.
Une métrique utilisée pour comparer plus simplement ces courbes est le mAP qui est l'air sous les courbes et qui tend vers 1 au plus la précision et le rappel du modèle augmentent.
Voice les courbes mAP avec un seuil IoU fixé à 0.5

Run set
4

Le modèle mask-RCNN de base à un mAP50 de 0.67 alors que notre modèle modifié à un mAP50 de 0.83, on a une augmentation de performances de détection de 23%

Performances du mask-RCNN modifié


Run set
1

Pour comprendre les points où le modèle fait des erreurs, cela peut être judicieux de regarder de quoi est composé le dataset PIDray.
En effet, il est logique de se demander pourquoi le modèle prédit parfois une batterie externe (powerbank) lorsqu'on lui présente un baton électrique (baton), mais pas l'inverse.
Comme on peut le deviner en regardant cette matrice de confusion, nous avons décidé de mettre 100 objets de chaque classe dans notre ensemble de validation. Cependant, l'ensemble d’entraînement n'est pas du tout aussi équilibré.
Justement la classe baton est la moins représentée du dataset avec seulement 173 exemples, au contraire, la classe powerbank est la plus représentée avec 1147 exemples. Ainsi, le modèle a été bien plus entraîné à reconnaître des batteries externes que des batons électriques d'où le biais dans cette direction.
Quand on compare la liste des classes peu représentées (baton, gun, bullet, sprayer et handcuffs avec moins de 300 représentations) à la liste des classes les plus représentées (hammer, powerbank et lighter avec plus de 1000 représentations) on remarque que cela ne suffit pas à tout expliquer.
On a par exemple la classe couteau représentée 728 fois pour laquelle le modèle fait souvent de faux positif. Ces confusions en revanches viennent sûrement du fait que que des objets comme les couteaux, les munitions ont des formes assez proches.
Toutes ces explications ne suffisent pas à comprendre toutes les confusions des modèles, mais permettent d'éclairer certains points.