Ce projet est un fork du projet https://github.com/divamgupta/image-segmentation-keras : Implémentation de Segnet, FCN, UNet, PSPNet et d'autres modèles avec Keras.
Le projet a été réalisé par Valentin MAURICE dans le cadre du Projet Recherche et Développement (Projet de Fin d'Étude) de la troisième année du cycle ingénieur au département informatique de l'école Polytech Tours, lors de l'année 2019-20.
L'idée est d'utiliser l'implémentation des modèles et classes utilitaires du projet forké afin de proposer une interface répondant aux besoins de l'appel d'offre initial : Interactive Deep Learning : Application à la reconnaissance d’éléments archéologiques dans les images LiDAR. L'outil proposé peut néanmoins s'apparenter à un outil de segmentation d'image de toutes sortes, en utilisant des techniques de deep learning basée sur des réseaux CNN.
Le projet a été développé avec une distribution Python 3.6.0 (64bit) sur windows, et nécessite les dépendances suivantes (à retrouver dans requirements.txt) :
- tensorflow==1.5.0
- keras==2.2.5
- protobuf==3.6.0
- six (1.14.0)
- pillow (7.0.0)
- matplotlib (3.1.3)
- scikit-image (0.16.2)
- numpy (1.18.1)
- h5py (2.10.0)
- tqdm (4.43.0)
- pyqt5 (5.14.1)
- opencv-python (4.2.0.32)
- imgaug (0.4.0)
- sklearn (0.0)
Il suffit d'éxécuter skyeye_segmentation/entrypoint.py avec Python, l'application devrait s'ouvrir.
Le projet est structué de la manière suivante :
- html/ : contient la documentation générée avec pdoc
- keras_segmentation/ : sources du projet forké
- log/ : fichiers logs
- README/ : ressources de ce document
- skyeye_segmentation/ : source du projet
- test_keras_segmentation/ : tests unitaires du projet forké
- test_syeye_segmentation/ : tests unitaires du projet
Les modules pythons s'organisent de la manière suivante :
Le module view contient un fichier .ui généré avec Qt Designer, qui a été automatiquement traduit en .py grâce au convertisseur pyuic5 (contenu dans PyQt5) :
>>> pyuic5 main_window.ui > main_window.py
La documentation disponible dans html/ a été générée avec pdoc :
>>> pdoc skyeye_segmentation
Lancer les tests unitaires du module keras_segmentation (se placer dans test_keras_segmentation/) :
>>> pytest
Lancer les tests unitaires du module skyeye_segmentation (se placer dans test_skyeye_segmentation/) :
>>> pytest
Pour lancer une analyse statique du code avec PyLint (fichier de configureation : .pylintrc) :
>>> pylint --rcfile=.pylintrc skyeye_segmentation > pylint.txt
Le rapport PyLint est alors disponible et donne des indications sur la qualité du code analysé, ainsi qu'une note générale :
Voir le manuel d'utilisation
Télécharger l'archive de la dernière version ici.