50
1 Merci de votre attention Références : dicomlibrary.com slicer.org tensorflow.org 06/03/2018

Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

1

Merci de votre attention

Références :

dicomlibrary.com

slicer.org

tensorflow.org

Pytorch.org

Niftynet.io

06/03/2018Colin Treal, Zaidong Zhang, Stiven Morvan

Page 2: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Contexte1

Page 3: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Histoire du projet● Réseaux de neurones convolutifs : révolution pour le domaine de la santé● Permets la détection et caractérisation de tumeurs● Aider les radiologues à détecter les tumeurs● Cancer du foie de plus en plus présent● Suite d’un projet transversal de l’année précédente

3

Page 4: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Histoire de l’entreprise● Startup Incepto Medical● Co-fondé par Gaspard d’Assignies, porteur du projet et radiologue● Création d’outils permettant la détection et caractérisation de tumeurs● Travail en collaboration avec le CHU de Nantes et Rennes

4

Page 5: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Les outils utilisés

● Appear.in / Google Hangout => Discussion avec la MOA

● Discord / Messenger => Discussion au sein de la MOE

● Trello, liste des tâches en cours/ à effectuer● Google drive, stockage des rapports non

informatiques et de divers documents interne à la MOE

● GitLab, stockage du code informatique

5

Page 6: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

A ce stade

3

Page 7: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Planning

7

1Développem

ent du

module

2Veille

technologique

3Développem

ent du

réseau

4Optim

isation des

perform

ances

5Finalis

ation, é

valuation

du modèle

Page 8: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

8

Page 9: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Module Slicer

● Accompagnement des radiologues dans la création du dataset

● Modification du module slicer: MPReview

● Grand nombre de données : nécessite un fonctionnement simple et ergonomique

● Assurer une correspondance stable entre fichier de sortie et série de données pour un patient

● Résultat doit être sous forme d’une structure comportant l’orientation, l’origine ou encore la résolution du volume

9

Page 10: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Planning

10

1Développem

ent du

module

2Veille

technologique

3Développem

ent du

réseau

4Optim

isation des

perform

ances

5Finalis

ation, é

valuation

du modèle

Page 11: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Fournir un outil pour la création du jeu de données. (17 Novembre - 17 décembre)

11

1

Page 12: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Veille technologique(17/12 - 28/01)

● Compréhension du deeplearning par l’équipe (Stanford University CS231n)

● Analyse de l’état de l’art dans la reconnaissance des cancer avec des réseaux de neurones

● Comparaison des frameworks (PyTorch - Tensorflow)

12

2

Page 13: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Choix du framework● Rapport comparatif entre TensorFlow et Pytorch

● Features similaires entre les deux

● Pytorch : semble plus adapté pour un projet de

recherche

13

2

Page 14: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Architectures de réseaux de neurones

R-CNN

Yolov3

U-Net

14

2

Page 15: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Planning

15

1Développem

ent du

module

2Veille

technologique

3Développem

ent du

réseau

4Optim

isation des

perform

ances

5Finalis

ation, é

valuation

du modèle

Page 16: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

R-CNN

16

Page 17: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Faster R-CNN

17

● Un réseaux de détection d’objet développé à partir de

R-CNN, Fast R-CNN, mais beaucoup plus rapide

● Utilise couches de base conv + relu + pooling pour

extraire des feature map (partagé ultérieure) d’image

● Le réseau RPN est utilisé pour générer des

propositions de région, déterminer et corriger

● Roi Pooling collecte les feature map et les

propositions, extrait les informations

● Calcule la catégorie de la proposition, obtenir la

position précise finale du cadre de détection

Page 18: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Faster R-CNN : Entraînement

18

● Entraîner le réseau RPN sur un modèle pré-entraîné

● Collecter les propositions à l'aide du réseau RPN

● Entraîner le réseau Fast RCNN

● Entraîner le RPN pour la deuxième fois

● Collecter les propositions à l'aide du réseau RPN

pour la deuxième fois

● Entraîner le réseau Fast RCNN pour la deuxième

fois

basée sur modèles pré-entraîné (ici resnet101)

Page 19: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Prétraitement

19

Décomposition :

● Image 3D => 2D

● 131 volumes => 60000 images

Modification des labels :

● La nécessité d’avoir un bounding-box

● Chercher les contours en utilisant cv2

Forme de Pascal VOC :

● Générer les labels sous la forme de xml

● Segmentation du dataset (train, valid, test)

Page 20: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Résultats

20

Quelque résultats qui semblent correct :

Quelque résultats n’a pas de sens du tout :

Page 21: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

YOLO

21

Page 22: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Yolo : principe● Réseau entièrement convolutif● Un seul réseau de neurone sur l’image complète● Sous-échantillonnage avec la méthode des strides :

- Avec Yolov3 : découpage à plusieurs échelles : 13x13, 26x26, 52x52 cellules afin d'améliorer la détection de petits objets.

● Score de confiance pour chaque cellule : prediction feature map

22

Page 23: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Yolo : principe

● Chaque cellule peut prédire un nombre fixe de bounding-boxes

● Pas de prédiction de la taille des bounding boxes : on utilise un système appelé Anchor

● C’est la cellule centrale qui est responsable de la détection de l’objet

● Premier filtrage avec le score de cette bounding box

● Second filtrage avec la méthode MNS pour éviter la détection multiple du même objet

23

Page 24: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

24

Page 25: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

YOLOv3 : Entraînement● Adaptation du dataset :

Adaptation du dataset de segmentation

en dataset de détection.

Le dataset est composé de 58 630 images

25

Page 26: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

YOLOv3 : Résultats- Résultats médiocre

- Peut s’expliquer du fait que l’on entraine pas le réseau avec des images sans labels, le réseau se retrouve donc en grande difficulté lorsqu’il n’y a pas de labels.

26

Page 27: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

U-NET

27

Page 28: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

28

U-Net: Convolutional Networks for Biomedical Image SegmentationOlaf Ronneberger, Philipp Fischer, Thomas Brox(Submitted on 18 May 2015)

Page 29: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

29

Page 30: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

30

OutilsPyTorchMedicalTorchTorchVisionMatplotlibScipyNumpyTensorboardX

Page 31: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Premier réseau : Détection du foie

31

Page 32: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Amélioration du premier réseau : Element connexe

32

Page 33: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Amélioration du premier réseau : Morphologie mathématique

33

Page 34: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

U-Net 3D

34

MedicalTorch- MRI3DSegmentationDataset- NormalizeInstance3D- RandomRotation3D- RandomReverse3D- Unet3D

- MRI3DSubVolumeSegmentationDataset

Page 35: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

35

Page 36: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Problème de puissance

36

Optimiser les ressources(i5 - 8Go Ram - 4Go VRam - gtx 970 )Caches

Plusieurs tests de batch, résolutions

Page 37: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

37

Page 38: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

38

Page 39: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

39

Page 40: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Détection du cancer avec U-Net 2D:

40

Page 41: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Deuxième réseau : Détection du cancer

41

Page 42: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Pipeline de prédiction

42

Page 43: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

43

COMPARAISONDES

ARCHITECTURES

Page 44: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

● Dice et IoU : indicateur de similarités entre deux échantillons

● Precision et Recall : ratios indiquant les vrai positifs sur les Vrai Positifs + Faux Négatif ou Faux Positif

44

Calcul de différents indicateurs

Page 45: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Interprétation des résultats

45

● R-CNN propose les meilleurs résultats, cependant c’est encore loin d’être parfait● U-Net a proposé des résultat assez mauvais : surement lié a un manque d'entraînement● Yolo possède des résultats catastrophique

Page 46: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Gestion de projet

4

Page 47: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

Suite

47

1Développem

ent du

module

2Veille

technologique

3Développem

ent du

réseau

5Finalis

ation, é

valuation

du modèle

4Optim

isation des

perform

ances

Page 48: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

48

Gantt

Page 49: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

49

Merci de votre attention

Références :

dicomlibrary.com

slicer.org

tensorflow.org

Pytorch.org

Niftynet.io

Page 50: Références - Stiven Morvan · Chercher les contours en utilisant cv2 Forme de Pascal VOC : Générer les labels sous la forme de xml Segmentation du dataset (train, valid, test)

50

Bibliographie :

https://arxiv.org/abs/1506.02640https://arxiv.org/abs/1505.04597https://arxiv.org/abs/1506.01497https://pytorch.org/https://medicaltorch.readthedocs.io/