Description
Date depot: 12 avril 2023
Titre: Performance et Généricité des Approches Top-Down Homogènes
Directeur de thèse:
Didier VERNA (LRE)
Encadrant :
Edwin CARLINET (LRE)
Domaine scientifique: Sciences et technologies de l'information et de la communication
Thématique CNRS : Programmation et architecture logicielle
Resumé: Ce projet de recherche se situe dans la continuité de la thèse de Baptiste Esteban (projet de recherche doctoral n.7730) qui entre dans sa troisième et dernière année. Dans le travail de Baptiste Esteban, il est question du développement d’algorithmes de débruitement d’image grâce à des techniques de morphologie mathématique [1]. Le cahier des charges impose des caractéristiques de « performance et généricité » aux algorithmes et structures de données résultant: performance, afin de pouvoir traiter des images de grande taille en un temps raisonnable, et généricité afin de pouvoir spécifier les algorithmes de façon indépendante des types d’images (ou de leurs caractéristiques) sur lesquels ils s’appliquent.
L’approche utilisée dans ce travail peut être caractérisée de « bottom-up hétérogène ». Tout d’abord, elle est bottom-up car dans un soucis de performance, on choisi de partir de l’existant, c’est-à-dire de se baser sur une bibliothèque écrite en C++ et utilisant des techniques de polymorphisme statique pour offrir la généricité requise sans sacrifier la performance [2]. L’inconvénient de cette approche est qu’elle n’est ni adaptée au prototypage rapide, ni à l’expérimentation, un contexte dans lequel on préfère en général travailler avec des langages dynamiques et interactifs comme Python [3]. C’est pourquoi l’infrastructure écrite en C++ est exposée à Python au travers d’un pont statique / dynamique, et c’est ce qui rend cette approche hétérogène: la plate-forme finale est constituée de deux langages différents.
Le but de ce nouveau projet de recherche est de prendre le contre-pied du précédent, en explorant les vertus d’une ou plusieurs approches « top-down homogènes ». On se propose de capitaliser sur le sujet précédent en repartant du travail effectué, c’est-à-dire du même domaine applicatif, incluant les algorithmes et structures de données développés pour l’occasion. Cette fois cependant, le point de départ sera la réécriture intégrale de la plate-forme dans un langage dynamique et interactif, afin de privilégier l’utilisabilité plutôt que la performance. C’est dans ce sens que cette nouvelle approche peut être considérée comme « top-down ».
Contrairement aux idées reçues cependant, être dynamique et interactif n’implique pas nécessairement une perte critique de performance [4,5]. Deux langages dynamiques en particulier le prouvent, Common Lisp, et Julia, qui offrent tous deux des fonctionnalités avancées permettant de combiner généricité et performance. Common Lisp comme Julia disposent de compilateurs Just-In-Time vers du code natif. Tous deux sont multi-paradigmes (impératifs, fonctionnels, et dans une moindre mesure pour Julia, orientés objet). Tous deux offrent des techniques de méta-programmation poussées qui aident également à la généricité (systèmes de macros évolués, multi-méthodes, etc.). Enfin, en sus de la dynamicité par défaut, tous deux offrent des fonctionnalités leur permettant de rivaliser avec les langages statiques en termes de performance (annotations de type pour Lisp, inférence pour Julia, etc.). En conséquence, il n’est pas forcément nécessaire d’introduire un deuxième langage de programmation dans la boucle pour rester performant. C’est en cela que cette approche sera considérée comme « homogène »: aucun « pont statique / dynamique » n’est requis.
On se propose donc, dans ce nouveau projet, d’étudier les possibilités paradigmatiques offertes par ces deux langages pour l’implémentation d’algorithmes de débruitage d’image génériques et performants, ainsi que de comparer in fine cette nouvelle plate-forme à la précédente, en termes d’utilisabilité, de flexibilité, et de performance.
Références
[1] B. Esteban, G. Tochon, E. Carlinet, and D. Verna (2022). Estimation of the Noise Level Function for Color Images Using Mathematical Morphology and Non-Parametric Statistics. In Proceedings of the 26th International Conference on Pattern Recognition (ICPR 2022), Montréal, Québec.
[2] M. Roynard (2022). Generic programming in modern C++ for Image Processing (Doctoral dissertation, Sorbonne université).
[3] B. Esteban, E. Carlinet, G. Tochon, and D. Verna (2022). The Cost of Dynamism in Static Languages for Image Processing. In Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE 2022). Association for Computing Machinery, New York, NY, USA, 172–178. https://doi.org/10.1145/3564719.3568693
[4] D. Verna (2006). Beating C in Scientific Computing Applications. In Proceedings of the 3rd European Lisp Workshop (ELW’06), Nantes, France.
[5] D. Verna (2009). CLOS efficiency: Instantiation. In Proceedings of the International Lisp Conference (ILC’09), Cambridge, MA, USA, 76-90.
Résumé dans une autre langue: This research project is the continuation of Baptiste Esteban's Ph.D. thesis (PRD #7730) which is entering its final, third, year. This work is about the development of image denoising algorithms thanks to mathematical morphology techniques [1]. There are requirements of "performance and genericity" on the resulting algorithms and data structures: performance, in order to be able to process large images in a reasonable time, and genericity, in order to be able to specify algorithms independently from the types of the targeted images (or their internal characteristics).
The approach used in this work may be labeled as "bottom-up / heterogeneous". It is bottom-up because out of the concern for performance, we choose to start from something that already exists: a C++ library using static polymorphism techniques to offer genericity without sacrificing performance [2]. The drawback of this approach is that it is not very well suited to rapid prototyping or experimentation, a context in which it is generally preferable to work with dynamic and interactive languages such as Python [3] . This is why the C++ infrastructure is exposed to Python through a Static / Dynamic bridge, and this is precisely what makes this approach heterogeneous: the final platform is composed of two different languages.
The purpose of this new project is to take the opposite view, that is, to explore the virtues of one or several "top-down / homogeneous" approaches. We propose to start from the previous work: same application domain, same algorithms, same data structures. Only this time, the platform will be completely rewritten in a dynamic and interactive language, in order to give precedence to usability over performance. It is in that sense that this approach may be labeled as "top-down".
Contrary to popular belief, interaction and dynamicity do not necessarily entail a critical loss in performance [4,5]. Two dynamic languages in particular, Common Lisp and Julia, prove that by offering advanced features for combining the two. Common Lisp and Julia are both equipped with Just-In-Time compilers to native code. Both are multi-paradigm languages (imperative, functional, and to a lesser extent for Julia, object-oriented). Both offer advanced meta-programming techniques which help achieve genericity (poiwerful macro systems, multi-methods, etc.). Finally, on top of being dynamic by default, both languages offer facilities that make them rival with statically typed languages in terms of performance (static type annotations in Lisp, type inference in Julia, etc.). Consequently, it is not necessary anymore to introduce a second programming language in the loop in order to remain efficient. This is why this approach may be labeled as "homogeneous": no Static / Dynamic bridge is required.
In short, with this new research project, we propose to study the paradigmatic opportunities offered by these two languages to implement generic and efficient image denoising algorithms, and to compare this new platform with the previous one, in terms of usability, flexibility, and performance.
Bibliography
[1] B. Esteban, G. Tochon, E. Carlinet, and D. Verna (2022). Estimation of the Noise Level Function for Color Images Using Mathematical Morphology and Non-Parametric Statistics. In Proceedings of the 26th International Conference on Pattern Recognition (ICPR 2022), Montréal, Québec.
[2] M. Roynard (2022). Generic programming in modern C++ for Image Processing (Doctoral dissertation, Sorbonne université).
[3] B. Esteban, E. Carlinet, G. Tochon, and D. Verna (2022). The Cost of Dynamism in Static Languages for Image Processing. In Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE 2022). Association for Computing Machinery, New York, NY, USA, 172–178. https://doi.org/10.1145/3564719.3568693
[4] D. Verna (2006). Beating C in Scientific Computing Applications. In Proceedings of the 3rd European Lisp Workshop (ELW’06), Nantes, France.
[5] D. Verna (2009). CLOS efficiency: Instantiation. In Proceedings of the International Lisp Conference (ILC’09), Cambridge, MA, USA, 76-90.