Archives de
Category: Conférences découverte L1

La voiture autonome

La voiture autonome

Basiquement, le terme de voiture autonome désigne une automobile capable de fonctionner sans conducteur, autrement dit, capable de se déplacer d’un point A à un point B sans intervention humaine.

Historique :

On assiste aux prémices de la voiture autonome au début du XXème siècle, même si on est bien loin de ce que l’on peut connaître aujourd’hui. Dans les années 1920, l’homme est capable de conduire à distance depuis un autre véhicule par radio.

D’autres prototypes sont développés durant les décennies suivantes.

Au cours des années 1980, ces prototypes roulent sur des routes sans trafic, guidés par le système LiDAR (capteurs laser permettant de cartographier un environnement en 3D).

Durant les années 1990, on voit naître des véhicules circulant en contrôle automatique à 98% sur des routes avec trafic, exploités sur des circuits prédéfinis.

Tout s’accélère depuis les années 2000 avec l’intervention de l’armée américaine et ses grands challenges, notamment avec l’organisation d’une course durant laquelle les véhicules doivent parcourir plus de 200km à la frontière de la Californie et Nevada. En 2004, seulement 11.78 kilomètres sont parcourus, alors qu’en 2005, la course est terminée par cinq participants dont un en moins de sept heures.

En 2007, la course, devenue un parcours de 96 kilomètres dans un environnement urbain initialement d’une durée de moins de six heures, est finie en un peu plus de quatre heures par trois équipes, dans le respect du code de la route

Terminologie sur la notion d’autonomie :

Il existe plusieurs niveaux d’autonomie concernant la voiture :

 Niveau d’autonomie 
Niveau 0Aucun élément autonome sur la voiture
Niveau 1La voiture peut assurer 1 tâche autonome à la fois, comme par exemple un freinage automatique.
Niveau 2La voiture dispose d’au moins 2 éléments autonomes
Niveau 3Autonomie conditionnelle, le conducteur peut détourner son attention mais doit quand même être capable de reprendre la main en cas d’urgence.
Niveau 4Le conducteur peut relâcher son attention et même dormir
Niveau 5Voiture sans conducteur

Des défis et des problèmes :

Face à l’essor des voitures plus ou moins autonomes, de nombreux défis se dressent face au développement de cette technologie. En effet, ces véhicules fonctionnant sur des modèles, nécessitent une grande quantité d’images et de vidéos de tout ce qu’ils pourraient rencontrer durant leur utilisation. Il faut aussi trouver un moyen d’éviter les inclusions de règles comme par exemple « si x se produit, alors faire y« , type de raisonnement qui ne convient pas aux situations de la vie courante et de la route. La compréhension de l’environnement et de toutes les entités entourant le véhicule reste aussi un défi. Enfin, ces véhiculent doivent être capables de réagir dans des situations jamais rencontrées et non implémentées dans le modèle.

La voiture autonome pose aussi problème sur le plan éthique. En effet, imaginons une situation d’accident tuant soit les passagers, soit d’autres usagers de la route, la voiture doit dans cette situation faire un choix. Cela pose aussi problème sur le plan juridique car on ne sait pas qui blâmer dans ce cas-là ? Le fabriquant ? L’ingénieur qui a développé l’algorithme ? le client ?

Le plan de la sécurité est aussi impacté car qui dit voiture autonome dit informatique, et qui dit informatique dit piratage. Ces voitures pourraient être les cibles de pirates et mettre en danger leur utilisateur et/ou les autres usagers de la route.

Le développement de la voiture autonome continue donc d’être un sujet complexe, à aborder de manière consciencieuse et minutieuse afin d’assurer la sécurité de tous.

« Hacker » un jeu vidéo

« Hacker » un jeu vidéo

Un atelier pour la Fête de la Science 2022

Derrière ce titre volontairement accrocheur, se cache une initiation ludique à la programmation en Python, qui s’adresse à des élèves de collège et lycée. Il s’agira de faire fonctionner et de modifier une version écrite en Python, d’un des premiers jeux vidéo dits « d’arcade » (Blockade, 1976, voir photo).

  • Date : vendredi 14 octobre 2022
  • Lieu : CERI, salle stat 9
  • Horaires : 9h15 – 16h
  • Animateurs : Pierre Jourlin & Jarod Duret

Procédure :

  • Se connecter sur l’ordinateur avec l’identifiant et mot de passe donné sur papier par vos animateurs
  • Ouvrir un « terminal » (CTRL+ALT+T)
  • tapez « python3 -m pip install -U pygame --user » et appuyez sur <entrée>
  • tapez « geany & » appuyez sur <entrée>
  • copiez le code source suivant dans la fenêtre de l’éditeur :
import pygame
import time
import random
 
pygame.init()
 
# Définition des couleurs en composante (Rouge, Vert, Bleu) 
blanc = (255, 255, 255)
jaune = (255, 255, 102)
noir = (0, 0, 0)
rouge = (213, 50, 80)
vert = (0, 255, 0)
bleu = (50, 153, 213)
 
largeur_plateau = 600
hauteur_plateau = 400
 
plateau = pygame.display.set_mode( ( largeur_plateau, hauteur_plateau ) )
pygame.display.set_caption("Le Serpent Numérique du LIA")
 
horloge = pygame.time.Clock()
 
taille_bloc = 20
vitesse_serpent = 5
 
style_caractères = pygame.font.SysFont("bahnschrift", 25)
style_scores = pygame.font.SysFont("comicsansms", 35)
 
 
def votre_score(score):
    valeur = style_scores.render("Votre Score: " + str(score), True, jaune)
    plateau.blit(valeur, [0, 0])
 
def notre_serpent(taille_bloc, corps_serpent):
    for x in corps_serpent:
        pygame.draw.rect(plateau, noir, [x[0], x[1], taille_bloc, taille_bloc])
 
def message(msg, color, décalage=0):
    mesg = style_caractères.render(msg, True, color)
    plateau.blit(mesg, [largeur_plateau / 6, hauteur_plateau / 3+décalage])
 
def boucle_jeu():
    fin_jeu = False
    ferme_jeu = False
 
    x1 = largeur_plateau / 2
    y1 = hauteur_plateau / 2
 
    x1_change = 0
    y1_change = 0
 
    corps_serpent = []
    longueur_serpent = 1
 
    repas_x = round(random.randrange(0, largeur_plateau - taille_bloc) / taille_bloc) * taille_bloc
    repas_y = round(random.randrange(0, hauteur_plateau - taille_bloc) / taille_bloc) * taille_bloc
 
    while not fin_jeu:
 
        while ferme_jeu == True:
            plateau.fill(bleu)
            message("Zut ! Vous avez perdu !", rouge)
            message("Appuyez sur J pour jouer encore", jaune, 20)
            message("ou sur Q pour quitter le jeu.", jaune, 40)
            votre_score(longueur_serpent - 1)
            pygame.display.update()
 
            for évènement in pygame.event.get():
                if évènement.type == pygame.KEYDOWN:
                    if évènement.key == pygame.K_q:
                        fin_jeu = True
                        ferme_jeu = False
                    if évènement.key == pygame.K_j:
                        boucle_jeu()
 
        for évènement in pygame.event.get():
            if évènement.type == pygame.QUIT:
                fin_jeu = True
            if évènement.type == pygame.KEYDOWN:
                if évènement.key == pygame.K_LEFT:
                    x1_change = -taille_bloc
                    y1_change = 0
                elif évènement.key == pygame.K_RIGHT:
                    x1_change = taille_bloc
                    y1_change = 0
                elif évènement.key == pygame.K_UP:
                    y1_change = -taille_bloc
                    x1_change = 0
                elif évènement.key == pygame.K_DOWN:
                    y1_change = taille_bloc
                    x1_change = 0
 
        if x1 >= largeur_plateau or x1 < 0 or y1 >= hauteur_plateau or y1 < 0:
            ferme_jeu = True
        x1 += x1_change
        y1 += y1_change
        plateau.fill(bleu)
        pygame.draw.rect(plateau, vert, [repas_x, repas_y, taille_bloc, taille_bloc])
        tête_serpent = []
        tête_serpent.append(x1)
        tête_serpent.append(y1)
        corps_serpent.append(tête_serpent)
        if len(corps_serpent) > longueur_serpent:
            del corps_serpent[0]
 
        for x in corps_serpent[:-1]:
            if x == tête_serpent:
                ferme_jeu = True
 
        notre_serpent(taille_bloc, corps_serpent)
        votre_score(longueur_serpent - 1)
 
        pygame.display.update()
 
        if x1 == repas_x and y1 == repas_y:
            repas_x = round(random.randrange(0, largeur_plateau - taille_bloc) / taille_bloc) * taille_bloc
            repas_y = round(random.randrange(0, hauteur_plateau - taille_bloc) / taille_bloc) * taille_bloc
            longueur_serpent += 1
        horloge.tick(vitesse_serpent)
    pygame.quit()
    quit()
  • Les animateurs vont vous expliquer rapidement ce code source
  • Enregistrez le fichier sous le nom « serpent.py » et revenez au terminal
  • Dans le terminal, tapez « python3 serpent.py« 
  • Jouez 2 ou 3 parties 🙂
  • Modifiez quelques paramètres élémentaires du jeu :
    • Les couleurs
    • Taille du plateau
    • Textes
    • Taille Serpent
    • Vitesse serpent
    • Style des caractères
  • Ajoutez quelques fonctions :
    • Changer longueur initale du serpent
    • Repas vert -> allongement de 1
    • Repas jaune -> allongement de 2
    • Repas rouge -> allongement de 3
    • allongement -> augmentation/réduction vitesse
    • Création d’un hall of Fame
    • 2 joueurs (difficile)
  • A tout moment, n’hésitez pas à demander de l’aide aux animateurs
  • A vous de jouer et à vous de créer !
Explainable Artificial Intelligence (XAI)

Explainable Artificial Intelligence (XAI)

Au cours de ces dernières années, l’intelligence artificielle a vu son utilisation croître de façon exponentielle. Si celle-ci est présente dans de nombreux domaines,  c’est un aspect particulier de l’Intelligence Artificielle qui va nous intéresser ici : l’ XAI (explainable AI). Ce principe désigne la capacité d’une IA ne pas s’intéresser uniquement à l’acuité des décisions qu’elle propose mais également aux raisons qui ont amené cette décision. Cela dans le but de donner à l’utilisateur les moyens de comprendre et d’analyser les résultats. Ce domaine présente, en majorité, deux grandes dimensions : l’interprétabilité et l’explicabilité.

l’explicabilité donne des informations sur le « raisonnement » de l’algorithme de Machine Learning et sur les données qu’il a utilisées. Ces informations sont destinées prioritairement aux experts de l’IA, car elle nécessitent une compréhension des éléments techniques du modèle et de l’analyse des données.

L’interprétabilité pour sa part a pour rôle de fournir l’informations dans un format compréhensible par tous. Il s’agit souvent de « traduire » les explications en éléments « interprétables » par une personne travaillant dans le domaine considéré mais sans connaissances spécifiques en IA.

Notons que ces deux termes sont souvent associés, mais qu’il est important de bien savoir dissociés les Notons que la frontière entre ces deux catégories n’est pas très précise et leurs dénominations sont même parfois inversées. Il est important cependant de garder à l’esprit les différences en termes de cible visée : expert de l’IA ou non.

Pourquoi avons-nous besoin de l’interprétabilité et de l’explicabilité? Ces éléments permettent en premier de renforcer, ou d’instaurer, la confiance des utilisateurs envers l’IA, en montrant sur quels éléments sont prises les décisions et en démystifiant les erreurs des systèmes. Mais ces éléments permettent aussi de répondre aux questions de conformité réglementaire : différents textes réglementaires sont en effet rentrés en vigueur, en Europe et en France notamment, qui imposent des règles sur le traitement des données, pour des raisons éthiques le plus souvent (respect des informations personnelles, lutte contre les discriminations, etc.). Ceux-ci incluent parfois directement la nécessité de pouvoir expliquer sur quels éléments sont basés les décisions. Dans tous les cas, pour pouvoir démontrer le respect, ou non, de ces textes, une approche de type XAI est indispensable.

On distingue trois étapes dans l’explicabilité de l’IA :

En premier lieu, l’explication de la pré-modélisation. Celle-ci permet de comprendre et de décrire les données utilisées pour développer le modèle.

On a ensuite la modélisation explicable qui permet de développer des modèles dits intrinsèques simples.

Enfin, la post-modélisation permet d’extraire des explications afin de décrire les modèles presque développés.

À titre d’exemple, on peut citer les Local Interpretable Model-Agnostic Explanations, autrement dit les LIME. Ces derniers, expliquent une décision donnée (aspect « local ») en modélisant autour de cette donnée les décisions du système IA étudié par un modèle simple et intrinsèquement interprétable. Cela permet « d’expliquer » le comportement du système autour de l’instance (la donnée) d’intérêt.

Pour finir, il faut évoquer SHAP (shapley additive explanations) qui est une approche issue de la théorie des jeux. Cette approche est également « model agnostic » : elle permet d’expliciter les sorties de n’importe quel modèle d’apprentissage automatique. Cette approche est basée sur les valeurs de Shapley. Pour une instance précise qui a amené une décision donnée, les valeurs de Shappley calculent l’importance de chaque « feature » (les caractéristiques de l’entrée) dans la décision. Précédemment cité, les valeurs de Shapley proviennent donc de la théorie des jeux de coalition. Et cette méthode a pour but d’expliquer certaines prédictions individuelles. Finalement, Shapley présente plusieurs propriétés intéressantes telles que l’efficacité ou la symétrie.

Article rédigé suite à une conférence découverte recherche en L1 au CERI.

Les voitures autonomes : rouler sans permis et sans risque

Les voitures autonomes : rouler sans permis et sans risque

/

Qu’est ce qu’une voiture autonome

Pour commencer, un dispositifs autonome est un dispositif fonctionnant de manière indépendante c’est à dire avec une intervention humaine partiel ou inexistante.

Les voitures autonomes sont des véhicules capables de garder la voiture sur la route, respecter les limites de vitesses ainsi que de freiner d’urgence. Tout cela est rendu possible grâce à un dispositif présent sur les nouvelles voitures. Il existe plusieurs niveaux d’autonomies allant du niveau 0 jusqu’au niveau 5:
-niveau 0:Déclenchement d’avertissements
-niveau 1: Aide à la conduite (hand on)
-niveau 2 : Autonomie partielle (hand off)
-niveau 3 : Autonomie conditionnelle (eyes off)
-niveau 4 : Haute autonomie (mind off)
-niveau 5 : Autonomie complète (sans volant)

L’histoire de la voiture autonome

Depuis les années 1920 la conduite à distance est rendu possible depuis une autre voiture par radio. Dans les années 50 que les premiers prototypes interagissant avec des câbles magnétiques apparait dans la soude d’un circuit. En 2005 le cap des 200 kilomètres est franchit, en 2007, la voiture est capable de parcourir 96 km en moins de 6h tout en respectant les règles de circulation. Mais c’est à partir de 2010 que tout s’accélère avec les tests de système autonome, une aide financière importante de la part des plus grands pays du monde comme la Chine ou encore les États-Unis. De nouvelle concurrence apparait avec entre autre Google et Tesla.

Comment fonctionne une voiture autonome

Plusieurs domaine intervienne dans le fonctionnement d’une voiture autonome: la vision par ordinateur, la fusion des capteurs, la localisation.

La vision par ordinateur permet de représenter l’environnement de la voiture en mouvement grâce à de la détection visuelle, à l’aide de caméras, de radars, de capteurs d’ultra son et de LidaR (laser).
Le vision des capteurs combine plusieurs informations différentes issus de plusieurs sources.
La localisation rends plus précis le positionnement de la voiture grâce à l’aide de l’utilisation du GPS précis d’un à deux mètres ainsi que des capteurs mesurant la distance exacte par rapport à des repères (utilisation de la trilatération). De plus, la localisation utilise un modèle d’apprentissage profond, il est préférable de posséder un gros modèle plutôt que des erreurs en cascade.

L’impact social de ces voitures

La création de ces voitures ont un impact important sur la société actuelle ainsi que sur l’industrie automobile. En effet, elle entraine des changements technologiques majeurs et une stagnation du nombre de voiture par personne, un utilisateur garde sa voiture de plus en plus longtemps.
Il y a un impact sur la santé et le quotidien des usagers, Tout d’abord le nombre d’accident mortel diminuerai fortement mais en contre partie, on pourrait observer une augmentation du trafic. Ceci entrainerait une forte augmentation de la pollution ainsi que des nuisances sonores mais aussi une augmentation du sédentarisme car moins d’effort physique pour les usagers (marche, vélo). Enfin, il pourrait y avoir un problème d’éthique; prenons un exemple: une voiture autonome roulant très vite, une voiture qui bloque un coté de la route, et des piétons marchant sur l’autre coté. La voiture doit faire le choix de soit s’écraser violemment contre la voiture à l’arrêt et ainsi tuer les passagers en son bord au bien protéger les passagers de la voiture et écraser, faire un écart pour éviter la voiture à l’arrêt et ainsi écraser les piétons.
Il y aura un impact sur la planification urbaine . En effet les voitures étant autonomes il y aurait moins de signalisation sur les routes et une baisse radicale des stationnement.
En ce qui concerne la sécurité, la collecte d’information sur le trajet serait un impact sur la vie privée des utilisateurs et impacterait en conséquent leur vulnérabilité.

Article écrit par Erwan VINET, Akram OUMIMOUNE et Théo ARMAGHAN

Reconnaissance du locuteur : Etat de l’art

Reconnaissance du locuteur : Etat de l’art

I- Le signal de parole 

D’après Fourier, un signal est la somme des cosinus et des sinus. En effet, tout en décomposant un signal periodique, les sinus et les cosinus qui le composent vont signaler une fréquence précise, caractéristique d’un son.

Ceci montre qu’il y a de nombreuses fréquences différentes caractérisant le son de divers objets. À titre d’exemple, la fréquence d’échantillonnages : large bande 16000 valeurs par seconde (permet de garder une bonne qualité, quelques centaines de hertz à 8 kHz), le téléphone (bande étroite) 8000 valeurs par seconde etc.

Nota bene: un signal d’une seule seconde correspond à 1600 valeurs.

II- Le spectrogramme et la paramétrisation acoustique

  1. Le spectrogramme:
Exemple d’une partie d’un spectrogramme ( tirer de : https://www.researchgate.net)

Le spectrogramme est une représentation  qui montre la variation du signal en fonction de temps : ce qui se passe c’est quelque chose de reconnaissable qui correspond à une réalité statistique.

La représentation est divisée en plusieurs parties, normalement au bout de chaque signal ( 10 ms) et les amplitudes de fréquences -qui permettent la caractérisation de son (ils se diffèrent en chaque point) -qui le composent seront analysées . 

2. La paramétrisation acoustique:

 Toutes les 10 ms on extrait le spectre du spectrogramme , assez court (pas de coïncidence entre deux secondes) mais assez long pour qu’il y ai de l’information.

Une transformée de Fourrier (passage de temps vers les fréquences) aura lieu avant l’utilisation d’une échelle de barque.

Actuellement, un système end-to-end est adopté : Il utilise directement le signal de parole.

III- La reconnaissance du locuteur

Dans le but d’identifier l’identité d’un locuteur, une signature de base est utilisée. Par la suite, il y aura une comparaison avec un autre locuteur, selon les deux signatures, et une décision est prise (rejeter ou accepter, selon une distance de similarité, supérieur ou inférieur à un seuil).

Aperçu historique: Jusqu’aux années 2000, il y avait des systèmes statistiques insuffisant.  Il y avait uniquement une approche avec un vecteur de taille variable. L’idée révolutionnaire était de transformer le signal de vecteur en taille variable en un vecteur de taille fixe. Ainsi, dans le but d’identifier le locuteur, un calcul de la distance séparant les deux vecteurs.

Depuis 2010, les réseaux de neurones prennent les vecteurs et les mettent dans une multitude de couche (convolutions1 munie d’un résiduelle permettant d’augmenter le nombre de paramètre tout en apprenant) ; il arrive à une couche de vecteur fixe représentant le locuteur. Il y a un passage par un classifieur là où il passe le vecteur fixe. Les lost functions maximises les bonnes probabilités et diminuent les mauvaises probabilités sur chaque session ainsi que sur la somme.

Apres ces étapes, un calcul de distance entre les deux vecteurs fixes permet de comparer les similarités: si les similarités sont grandes alors c’est le même locuteur, sinon ce n’est pas le même .

1- Convolution : on prend un filtre et on calcul chaque réseau et puis on se déplace, ainsi de suite. Maintenant, on prend de chaque case un résumé/ minimum…  Chaque filtre passe à chercher une différente caractéristique.  L’initialisation est aléatoire et chaque itération fait une tâche différente. Il y a un pulling  à la fin.

Article écrit par Kinda CHAMMA, suite à une conférence avec un enseignant-chercheur du CERI, Driss MATROUF.

Objets connectés. Du rêve à la réalité…

Objets connectés. Du rêve à la réalité…

Le terme « Objet connecté » est apparu pendant les années 90 pour désigner des objets du quotidien comme une montre, un vêtement, un meuble, une fenêtre ou tout objet n’étant pas un périphérique informatique ou une interface WEB, mais qui peuvent quand même échanger des données digitales de petites tailles. Ils sont reliés à des capteurs qui récupèrent diverses informations et des actionneurs qui s’activent ou se désactivent selon les données reçues.

Le premier calculateur informatique, E.N.I.A.C., a été construit en 1945 et couvrait 167m², pour faire 100 000 opérations à la seconde. À peine plus que le premier microprocesseur commercialisé en 1971, le Intel 4004 avec ses 92 600 opérations à la seconde. Ce dernier pesait moins de 10 grammes et mesurait 12mm². Grâce à la miniaturisation des composants électroniques, et plus particulièrement des transistors, des composants fondamentaux gravés sur les plaques des circuits électroniques, on a pu construire des circuits de plus en plus complexes – et efficaces – sur des surfaces de taille similaire avec le temps.
En particulier la Loi de Moore, qui n’est pas plus une loi qu’un postulat, nous dit que tous les deux ans nous serons capables de graver le double de transistors sur la même surface. Ce postulat a jusqu’ici été particulièrement précis.

Conçus pour nous simplifier la vie, les objets connectés sont – comme leur nom l’indique – connectés ensemble dans des réseaux qu’on appelle Internet des Objets qui regroupent vos objets connectés entre et votre ordinateur ou téléphone entre eux. Par le biais de l’internet des objets, les objets connectés vous communiquent des informations, comme l’Apple Watch qui peut mesurer la fréquence cardiaque de son porteur ou détecter les chutes et faire des appels d’urgence.

Cependant les objets connectés font face à des problèmes importants : Il faut pouvoir faire le tri entre les informations pertinentes et les informations indésirables afin d’éviter l’infobésité, c’est-à-dire l’excès d’information au point où on ne distingue plus les informations importantes dans la masse.
Il faut aussi trouver un moyen de protéger les données sensibles les objets connectés, car ces derniers ne sont actuellement pas sécurisés.

Pour résoudre ces problèmes on pourrait ajouter des algorithmes pour sécuriser la connexion, trier les informations ect… mais ces solutions ont des limites. Pour pouvoir ranger ces algorithmes dans les circuits électroniques de l’objet connecté, il faudrait plus de transistors dans les circuits électroniques des objets connectés. Selon la Loi de Moore on saura créer des transistors plus petits sur les circuits électroniques, il suffit de donner le temps et les ressources necéssaires à ces innovations pour se développer.

Conférence de Ph. Gozlan de l’université d’Avignon, le 09/11/2021

TALN : Traitement Automatique de la Langue Naturelle

TALN : Traitement Automatique de la Langue Naturelle

Le traitement automatique de langue et l’information textuelle est un domaine multidisciplinaire impliquant la linguistique, l’informatique ainsi que l’intelligence artificielle, et vise à créer des outils de traitement de langue naturelle pour diverses applications.

Dans la visée de « résumé » les textes, la compression de phrase permet d’éliminer les constituants non essentiels à la compréhension de la phrase. Cet acte permet de participer à résoudre de grand problème a l’échelle mondial, notamment avec l’augmentation de nombre des pages web indexées de 10 milliards en 2008 à 43 milliards en 2013.

De nombreuses difficultés sont présentes : le nombre de langues des documents, la classification des documents par sujet, le regroupement des documents, l’extraction d’informations jusqu’à finalement le résumé automatique.

Pour ce dernier, on fait en sorte que les algorithmes seront capables de traiter toutes les langues de la même façon. Pour cela, on s’ appui sur les statistiques plutôt que la linguistique.

L’un des personnages historique du résumer de textes est Joseph Joubert (1754-1824) qui  « est un homme tourmenté par la maudite ambition de mettre tout un livre dans une page, toute une page dans une phrase, et tout une phrase dans un mot. » (Citation de Joubert lui même).

Article écrit suite à une conférence avec l’enseignant-chercheur du CERI : Juan-Manuel TORRES