765 views
--- title: INFO001 (Main) Traitement et Analyse d'Image avancé --- INFO001 Traitement et Analyse d'Image avancé === > M2 CMI Info > [name=Jacques-Olivier Lachaud][time=Novembre 2023][color=#907bf7] ###### tags: `info001` Suite de [INFO911 Traitement et analyse d'image](https://codimd.math.cnrs.fr/s/UE_B59gMy) [TOC] # Objectifs L'objectif du cours est de développer les connaissances et compétences théoriques et pratiques propres au Traitement et à l'Analyse des Images (TAI). Il s'agit non seulement d'aborder de nouveaux thèmes, algorithmes et méthodes par rapport au module [INFO911](https://codimd.math.cnrs.fr/s/UE_B59gMy), mais aussi de comprendre les modèles mathématiques, lire et comprendre des articles de recherche, synthétiser et transmettre aux autres des concepts et méthodes, et mettre en oeuvre des méthodes pointues. # Organisation et évaluation 1. Projet "intégrateur" : améliorer le projet segmentation temps-réel en combinant des outils classiques de traitement et d'analyse d'image. 2. Présentation de points techniques d'une chaîne de traitement d'images utilisant l'apprentissage (métriques, différentiation automatique et algorithme de back-propagation, entrainement et optimisation, types de réseaux (CNN, DenseNet, ResNet, U-Net, encodeur/décodeur...)) 3. Lecture d'articles de recherche sur des sujets variés (flot optique, détection d'objets, segmentation, classification, colorisation, débruitage, super-résolution, etc) et restitution 4. Mise en oeuvre complète d'une chaîne de traitement ou d'analyse d'image avec apprentissage profond. L'évaluation tiendra compte de l'avancée de tous ces points à la fin du module. ## 1. Projet de développement "intégrateur" Il s'agit de développer des compétences techniques en TAI et `C++`, et d'exploiter les connaissances vues en cours pour résoudre un problème concret. - améliorer le mini-projet [Segmentation temps-réel semi-supervisée par distance d’histogramme de couleurs](https://codimd.math.cnrs.fr/s/vq-al56ul) - résumer les histogrammes de couleurs via des distributions normales multi-variées - utiliser la distance de Battacharrya. - éliminer/fusionner les distributions trop proches. - filtrer les blocs isolés, par exemple par relaxation ou par filtre morphologique - identifier de meilleurs contours (sans doute via ligne de partage des eaux et marquage) - exploiter la cohérence temporelle (e.g. flot optique, filtre de Kalman) - sauvegarder/restaurer une distribution ## 2. Traitement et analyse d'image basé apprentissage On s'intéresse ici à acquérir une "culture" scientifique liée au domaine de l'apprentissage pour le TAI, et de comprendre les principaux termes, concepts, modèles et bibliothèques utilisées. Cela simplifiera à tout le monde la compréhension et la mise en oeuvre d'algorithmes d'IA pour le TAI. Le travail demandé ici est une page codimd résumant chaque sujet, avec les références utilisées pour la construire. Chaque étudiant choisi un (ou plusieurs) sujet(s) et le développe. Il le présente ensuite aux autres étudiants. ### 2.1 Exposés des années précédentes * Introduction à l'apprentissage automatique * [Introduction à l'apprentissage automatique par réseaux de neurones](https://codimd.math.cnrs.fr/s/l4BaTcFGY) [JOL] * [Apprentissage automatique supervisé, semi ou non supervisé](https://codimd.math.cnrs.fr/s/CgtU8RJ0M) [Simon Léonard] * [Apprentissage supervisé, architecture de réseaux de neurones, optimisation et back-propagation du gradient](https://codimd.math.cnrs.fr/s/PYL9ayApI) [JOL] * Fondements de l'apprentissage automatique * [Machines à Vecteur de Support (SVM), classification, régression](https://codimd.math.cnrs.fr/s/ZffkwbsL4) [Matteo Luque] * [Inférence bayesienne et classification dans les réseaux](https://codimd.math.cnrs.fr/s/O4P6M9BUH) [JOL] * [Réseaux de neurones superficiels (shallow neural networks)](https://codimd.math.cnrs.fr/s/uGZw1zvJW) [JOL] * Architectures, loss et coût, optimisation * [Réseaux de calcul, loss et coût, gradient stochastique, différentiation automatique, optimisation par back-propagation](https://codimd.math.cnrs.fr/s/5EK3ag7NS) [Simon Pichenot, Hugo Rey] * [Optimisation, époques, batch, learning rate](https://codimd.math.cnrs.fr/s/bghecxw5T) [Florian Dufaure] * Métriques et validation en Traitement et Analyse d'Image * [Métriques utilisées en traitement et analyse d'image](https://codimd.math.cnrs.fr/s/mRSLRlaAq) [Romain Negro] * [Validation des méthodes d'apprentissage en TAI](https://codimd.math.cnrs.fr/s/EAm6DAACI) [Enzo Mauti] * [Technologies pour l'apprentissage automatique](https://codimd.math.cnrs.fr/s/GZew2EVK5) [Romain Pajean] * Applications en Traitement et Analyse d'Image - [colorisation, transport de couleur](https://codimd.math.cnrs.fr/s/DJZQGclhi) [Enzo Mauti] - [flot optique](https://codimd.math.cnrs.fr/s/UM77ZbX2n) [Matteo Luque] ### 2.2 Thèmes à développer * comprendre et présenter les différentes formes d'apprentissage automatique * apprentissage supervisé (classification, régression, apprentissage actif) :heavy_check_mark: * apprentissage non supervisé (clustering, IA générative, espaces latents) * apprentissage semi-supervisé * apprentissage par renforcement * comprendre et présenter un réseau de calcul : principes des couches linéaires/activation, couches classiques avec illustrations et dénominations, architectures classiques (CNN, U-Net, ResNet, DenseNet, autoencodeurs, etc) * l'algorithme ADAM d'optimisation du gradient stochastique * Réseaux de neurones superficiels, autoencoder et décomposition en valeurs singulières * comprendre et présenter les évolutions des algorithmes et réseaux de neurones pour résoudre un tâche donnée, e.g. - reconnaissance d'objets et classification d'image - détection d'objets (R-CNN et suites, YOLO et variantes [v8](https://docs.ultralytics.com), etc) - super-résolution - colorisation, transport de couleur [Enzo Mauti](https://codimd.math.cnrs.fr/s/DJZQGclhi) - flot optique **Matteo Luque** - génération d'image à partir de texte - détection et suivi de visages / expressions * identifier des bases de données annotées (publiques), et les organiser par tâches, taille, type: [COCO](https://cocodataset.org/#home), Pascal, ImageNET, see [this list](https://www.v7labs.com/blog/computer-vision-datasets) * Quelques ressources vidéo utiles/sympas: * [What is a neural network, ch. 1 - 3blue1brown](https://www.youtube.com/watch?v=NrO20Jb-hy0) * [And all the lectures on machine learning, ch. 1 to 9 - 3blue1brown](https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi) * [Underfitting/overfitting problem and double descent - Welch Labs](https://www.youtube.com/watch?v=z64a7USuGX0) * [Back-propagation algorithm - Welch Labs](https://www.youtube.com/watch?v=VkHfRKewkWw) * [Problem of local minima in machine learning optimization - Welch Labs](https://www.youtube.com/watch?v=NrO20Jb-hy0) * [Why deep learning works so well: example of geometry learning - Welch Labs](https://www.youtube.com/watch?v=qx7hirqgfuU) ## 3. Lecture d'articles de recherche L'objectif est d'acquérir une connaissance plus pointues des modèles utilisés en TAI, leurs formalismes mathématiques, la manière de rédiger un article scientifique, de suivre une bibliographie, de comprendre les résultats obtenus, les qualités et défauts d'une méthode, l'évolution d'un état de l'art, pointer l'impact du papier, et de synthétiser ce travail sous forme d'un exposé. On pourra aussi dans certains cas illustrer les méthodes en testant les codes associés. Les thèmes et articles proposés sont ci-dessous (et ne sont pas forcément lié à l'apprentissage profond): - [Enzo MAUTI](https://codimd.math.cnrs.fr/s/GsY_fLFbG) -> F. Pitié, A.C. Kokaram et Rozenn Dahyot (2005) [N-Dimensional Probability Density Function Transfer and its Application to Colour Transfer](https://www.researchgate.net/publication/4193994_N-Dimensional_Probability_Density_Function_Transfer_and_its_Application_to_Colour_Transfer) In Proceedings / IEEE International Conference on Computer Vision. IEEE International Conference on Computer Vision 2:1434 - 1439 Vol. 2 - [Simon LEONARD](https://codimd.math.cnrs.fr/s/QfCsejalV#) -> Lin, T. Y., et al. (2014). [Microsoft COCO: Common Objects in Context](https://arxiv.org/pdf/1405.0312.pdf). In Computer Vision–ECCV 2014: 13th European Conference, Zurich, Switzerland, September 6-12, 2014, Proceedings, Part V 13 (pp. 740-755). Springer International Publishing. - [COCO home](https://cocodataset.org/#home) - `annotated image database` `learning` - [Romain Pajean](https://codimd.math.cnrs.fr/s/T7L8FguBg) -> Zhang, R., Isola, P., & Efros, A. A. (2016). [Colorful image colorization](https://arxiv.org/pdf/1603.08511.pdf). In Computer Vision–ECCV 2016: 14th European Conference, Amsterdam, The Netherlands, October 11-14, 2016, Proceedings, Part III 14 (pp. 649-666). Springer International Publishing. - [Open CV DNN colorization](https://docs.opencv.org/4.x/d6/d39/samples_2dnn_2colorization_8cpp-example.html), [Zhang's github](https://github.com/richzhang/colorization) - `image colorization` `deep learning` - Jam, J. et al. (2021). [A comprehensive review of past and present image inpainting methods](https://drive.google.com/file/d/1_8xa65kNwLpeygQbopg6Ky5gy_ZgxfY2/view). Computer vision and image understanding, 203, 103147. - `inpainting` `survey` - [Simon Pichenot](https://codimd.math.cnrs.fr/s/p6kdPD3zh#) -> Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). [You only look once: Unified, real-time object detection](https://arxiv.org/pdf/1506.02640.pdf). In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 779-788). - [OpenCV tutorial (YOLO v3)](https://opencv-tutorial.readthedocs.io/en/latest/yolo/yolo.html), [pyimagesearch tutorial (YOLO v7)](https://pyimagesearch.com/2018/11/12/yolo-object-detection-with-opencv/), [Ultralytics (YOLO v8)](https://docs.ultralytics.com) - `object detection` `segmentation` `deep learning` - Ren, S., He, K., Girshick, R., & Sun, J. (2015). [Faster r-cnn: Towards real-time object detection with region proposal networks](https://proceedings.neurips.cc/paper_files/paper/2015/file/14bfa6bb14875e45bba028a21ed38046-Paper.pdf). Advances in neural information processing systems, 28. - [pyimagesearch tutorial](https://pyimagesearch.com/2023/11/13/faster-r-cnns/), [tryolab tutorial](https://tryolabs.com/blog/2018/01/18/faster-r-cnn-down-the-rabbit-hole-of-modern-object-detection) - `ROI detection` `object detection` `deep learning` - Uijlings, J. R., Van De Sande, K. E., Gevers, T., & Smeulders, A. W. (2013). [Selective search for object recognition](http://www.eecs.qmul.ac.uk/~sgg/_ECS795P_/papers/WK09_SelectiveSearch_Uijlings_IJCV2013.pdf). International journal of computer vision, 104, 154-171. - `ROI detection` `classification` `SVM` - [Romain NEGRO](https://codimd.math.cnrs.fr/s/vib0YFegV) -> Goodfellow, I. ... & Bengio, Y. (2014). [Generative adversarial nets (original paper)](https://proceedings.neurips.cc/paper_files/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf). Advances in neural information processing systems, 27. Goodfellow, I. et al. (2020). - [Papier ACM plus introductif)](https://dl.acm.org/doi/pdf/10.1145/3422622). Communications of the ACM, 63(11), 139-144. - `GAN` `deep learning` - Wang, Z., Chen, J., & Hoi, S. C. (2020). [Deep learning for image super-resolution: A survey](https://arxiv.org/pdf/1902.06068.pdf). IEEE transactions on pattern analysis and machine intelligence, 43(10), 3365-3387. - `super-resolution` `deep learning` `survey` - [Hugo Rey](https://codimd.math.cnrs.fr/s/dMb3Soo9m#) -> Liang, J., Cao, J., Sun, G., Zhang, K., Van Gool, L., & Timofte, R. (2021). [SwinIR: Image restoration using swin transformer](https://openaccess.thecvf.com/content/ICCV2021W/AIM/papers/Liang_SwinIR_Image_Restoration_Using_Swin_Transformer_ICCVW_2021_paper.pdf). In Proceedings of the IEEE/CVF international conference on computer vision (pp. 1833-1844). - [IPOL demo for super-resolution](http://www.ipol.im/pub/art/2022/430/), [Comparaison avec une méthode géométrique](https://ipolcore.ipol.im/demo/clientApp/demo.html?id=280) - `image restoration` `super resolution` `deep learning` - [Florian Dufaure](https://codimd.math.cnrs.fr/s/IivoYgXqJ#) -> Brown, M., & Lowe, D. G. (2007). [Automatic panoramic image stitching using invariant features](https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=44bd549524fb17e3e806723fef2a18ffe9cfba87). International journal of computer vision, 74, 59-73. - [OpenCV stitching](https://docs.opencv.org/4.x/d8/d19/tutorial_stitcher.html), [pyimage tutorial](https://pyimagesearch.com/2018/12/17/image-stitching-with-opencv-and-python/) - `image stitching` `feature extraction` Chaque étudiant choisit un article, l'étudie ainsi qu'éventuellement certaines références bibliographiques, et nous restitue son travail lors d'un exposé. Vous pouvez proposer aussi un autre article à étudier (en vérifiant avce moi qu'il est bien dans les thèmes et attendus du cours). A côté des ressources fournies par les bibliothèques, quelques pointeurs très utiles pour faire des recherches bibliographiques: * [Scholar Google](https://scholar.google.fr) * [ResearchGate](https://researchgate.net) * [MashSciNet](https://mathscinet.ams.org/mathscinet) (plus math) * [Springer](https://www.springerlink.com) (accès via USMB) * [Elsevier Sciencedirect](https://www.sciencedirect.com) (accès via USMB) * SciHub lorsqu'on ne trouve pas ## 4. Mise en oeuvre d'une chaîne de TAI avec apprentissage profond. Il s'agit ici de proposer son propre modèle de réseau de neurones pour résoudre un problème de TAI, de le mettre en oeuvre, de l'optimiser sur une base de données d'image, de vérifier comment l'améliorer et le faire évoluer via des métriques. * colorisation d'images * inpainting (combler des trous) * super-résolution et/ou dépixelisation * génération/compression d'images par encodeurs/décodeurs * détection de zones/objets d'intérêt * classification * optical character recognition (OCR), i.e. image to text Selon le temps, ce projet pourra se poursuivre avec PROJ001_CMI # Divers - [Fourre-tout à idées](https://codimd.math.cnrs.fr/s/6nKvt7oud)