Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

L’informatique sans écran

Lors d’un Noël de ma tendre jeunesse pré-adolescente est arrivé un « ordinateur » dans le foyer. Ce PC (Intel 386) a été installé dans le bureau et a vite dégénéré en console de jeux. Puis les années passant c’est devenu une formidable source d’expérimentation informatique pour un geek en devenir. À cette époque on sensibilisait la jeunesse à ne pas passer trop de temps devant la télévision et la console de jeux, puis devant l’ordinateur et les jeux vidéo violents. Mais on ne parlait pas vraiment de l’écran.

Aujourd’hui les messages de sensibilisation se résument aux écrans :

  • « pas d’écran avant trois ans »
  • « nos jeunes passent leurs temps sur leurs écrans » (comme si les « vieux » n’y étaient pas non plus)
  • « attention les écrans fabriquent une génération de crétins »
  • « les écrans, les écrans, les écrans…»

Il est vrai qu’aujourd’hui l’informatique ne se résume presque plus qu’à un écran. De l’ordinateur avec clavier+souris+écran, voire crayon optique, on est passé aux tablettes et ordiphones qui n’ont plus que l’écran (tactile quand même).

Pour prendre le contre-pied de cette obsession des écrans, je me demandais donc s’il existait encore une informatique « sans écran ». La formidable multiplicité des activités que l’on peut avoir sur un ordinateur pourrait-elle se faire sans écran ? Dans quelle mesure peut-on coder, surfer sur le web, lire/envoyer des mails sans écran ? Cette informatique fantasmée par notre ex-ministre de l’éducation est elle une réalité ?

    Sommaire

    L’informatique, une histoire d’abord sans écran

    Si l’on date la naissance de l’ère de l’informatique avec Ada Lovelace, et qu’on estime l’arrivée des ordinateurs avec écrans à la fin des années 1970, alors on peut aisément dire que l’informatique a été plus longtemps sans écran qu’avec.

    Peinture d’Ada LovelaceMalgré son look cosplay de manga elle n’a pas subi trop d’écrans dans son enfance, elle.

    De même, il est raisonnable de considérer l’ordinateur comme l’outil principal pour faire de l’informatique. Il fut largement sans écran à ses débuts.

    Ken Thompson (assis) et Dennis Ritchie (debout) manipulant un DEC PDP-11
    Pas d’écran pour ces deux geeks qui ont développé UNIX et le langage C (source)

    L’altair8800, sorti en 1975 et sur lequel Microsoft a écrit son BASIC, se programmait avec des rubans perforées, voire avec des commutateurs, et l’affichage se faisait avec quelques diodes (DEL) en face avant.
    Les cartes à trous étant plutôt utilsées avec les gros ordinateurs (aka Big Iron).

    Vue de face de l’Altair8800Difficile de considérer ces deux lignes de diodes rouges comme l’écran de l’Altair8800

    L’écran ≠ la vue

    Pour faire sans écran, on pense instinctivement à utiliser d’autres sens que la vue comme l’ouïe ou le toucher (pour le goût ou l’odorat difficile d’imaginer la chose). Mais l’histoire de l’informatique nous montre que les premières interfaces homme-machine ne fonctionnaient pas avec des écrans, et pourtant utilisaient la vue (lumière, LED, imprimante, position mécanique…).

    Mais qu’appelle-t-on écran ?

    D’après la définition de Wikipédia, « un écran d’ordinateur est un périphérique de sortie vidéo d’ordinateur. Il affiche les images générées par la carte graphique de l’ordinateur. Grâce au taux de rafraîchissement d’écran élevé, il permet de donner l’impression de mouvement. »

    Donc si l’on s’en tient à wikipédia, un écran d’ordinateur c’est :

    • des images générées par une carte graphique d’ordinateur. Exit la télé cathodique avec un tuner analogique (qui devient rare aujourd’hui avec la TNT).
    • avec un taux de rafraîchissement élevé. Exit les liseuses et autres appareils utilisant un affichage type «  papier électronique ».
    • pas d’indication de résolutions.

    On peut sans doute rajouter les écrans (comme les télés) qui ne sont pas raccordés à une carte graphique dans la catégorie écran.

    Cela serait donc la résolution (définition et taille…) et le rafraîchissement (fréquence de balayage) du périphérique de sortie vidéo qui font un écran.

    La matrice 5 × 5 d’un micro:bit ne correspond pas à un critère de résolution suffisant, pas plus que les deux poussoirs ne pourraient prétendre à être un clavier.
    micro:bit Pourtant il affiche bien une « image » de cœur <3 !

    Les afficheurs 7 segments ne peuvent pas être considérés comme des écrans. Ils n’affichent que des chiffres et quelques symboles. Difficile de créer une impression de mouvement avec seulement des segments.
    Afficheur 7 segmentsEn faisant un effort, on arrive à reconstituer quelques lettres.

    En doublant le nombre de segments, on arrive à afficher l’ensemble des lettres de l’alphabet latin
    Afficheur 14 segmentsSans diacritiques, faut pas pousser

    Un « panel » LCD 20×4 et ses caractères de 8 pixels sur 5 forme un écran de 100 pixels sur 32, la résolution est déjà meilleure, même s’il est toujours prévu pour n’afficher que du texte. Néanmoins on se rapproche de l’idée que l’on se fait d’un « écran ».

    Du papier électronique ne peut pas être un écran. La résolution peut être excellente mais le rafraîchissement reste insuffisant.

    Finalement la définition de Wikipédia n’est guère rigoureuse ni efficace, entre l’unique LED du panneau de contrôle et l’écran haute résolution, il y a un continuum de périphériques de sortie utilisant des signaux lumineux pour former des images. Il faut peut-être alors chercher les systèmes informatiques qui, dans leur usage normal, utilisent d’autres périphériques de sortie ou pas de périphériques de sortie du tout.

    L’embarquée, une informatique massivement sans écran

    Bien sûr il faut définir le mot « informatique ». Si l’on se réfère à la définition de Wikipédia :

    L’informatique est un domaine d’activité scientifique, technique, et industriel concernant le traitement automatique de l’information numérique par l’exécution de programmes informatiques hébergés par des dispositifs électriques-électroniques : des systèmes embarqués, des ordinateurs, des robots, des automates, etc.

    Avec cette définition, le moindre dispositif électronique embarqué est de l’informatique. Lancer une machine à laver, programmer son four ou préparer une cafetière pour le lendemain est donc une forme de manipulation informatique… qu’on peut envisager sans écran.

    Cependant dès que vient le besoin de développer un système embarqué ou même de le réparer/déverminer, l’écran revient au galop. On a rapidement besoin d’un écran pour y connecter son environnement de développement et sa sonde de debug. Et même l’oscilloscope ou l’analyseur logique que l’on branche pour « voir » les signaux dispose d’un écran.

    En usage normal donc, certains dispositifs informatiques sont conçus pour ne pas nécessiter d’écran parce qu’ils disposent d’un autre périphérique de sortie. Certains centres commerciaux, certaines gares proposent des distributeurs d’histoires courtes : trois boutons comme périphérique d’entrée et une imprimante thermique comme périphérique de sortie. Appuyez et vous aurez de la lecture pour une, trois ou cinq minutes.

    Distributeur d’histoires courtes en gare de Lyon-PerracheSoyons optimistes : il n’y aura pas plus de cinq minute d’attente !

    Plus courant, une box Internet domestique est aussi un dispositif informatique sans écran.

    Livebox 6- Il est où l’écran ? - Dans ton… navigateur

    Il faut reconnaître que si l’usage courant, la connexion à l’Internet, ne nécessite pas d’écran sur la box, son paramétrage en utilise bien un : celui de l’ordinateur sur lequel tourne votre navigateur préféré.

    Les assistants vocaux sont des ordinateurs sans écran. Les principaux périphériques d’entrée comme de sortie sont audio : commande vocale, réponse également. Radio France fait d’ailleurs la publicité pour son offre pour enfants, une histoire et… Oli, sur cette absence d’écran, jouant, sans trop le dire, sur cette peur parentale des écrans.

    Pourrait-on pousser l’utilisation de ces ordinateurs pour faire du développement et «coder en vocal» ? Possible, il est tout à fait possible de programmer l’ouverture de ses volets, la lecture d’une musique ou le thermostat de sa chaudière avec. Mais ça n’est pas du développement.

    L’éducation numérique mais sans écran

    Il est largement possible d’apprendre l’informatique sans écran, et même sans ordinateur.

    La robotique pédagogique se développe depuis l’apparition de la tortue Logo. Actuellement, pour les plus jeunes dès l’école maternelle, c’est une abeille qui est proposée comme initiation à la programmation.

    Bee-Bot en actionSi, si, je suis bien un ordinateur

    La Bee-Bot se programme à l’aide de sept touches et les périphériques de sortie sont les moteurs de déplacement, un petit haut-parleur et en option un porte-crayon. Avec une interface HommeEnfant-Machine aussi simple, il s’agit plutôt d’une mémorisation de séquences de mouvements que de programmation à proprement parler et pour en utiliser toutes les capacités, un interfaçage avec une application ou un ordinateur plus conventionnel est possible, mais on y retrouve un écran ! De nombreux autres robots pédagogiques, un peu plus complexes et performants, existent mais ceux-ci utilisent un écran classique pour accéder à l’interface de programmation.

    Quitte à supprimer les écrans autant aller au bout de la démarche et supprimer l’ordinateur dans son ensemble. Des pédagogues ont ainsi inventé l’informatique déconnectée. Un papier, un crayon, ni écran ni matériel comme le jeu du robot idiot. Les esprits chagrins pourraient y voir une solution au manque de matériel des établissements scolaires.
    Plus que d’informatique il s’agit en fait d’initiation à l’algorithmie.

    Mais peut-on se passer d’écran pour développer ?

    Les plages braille

    Il existe une catégorie de population qui est contrainte de se passer d’écran pour se servir d’un ordinateur : les aveugles.

    Les personnes aveugles peuvent pourtant se servir d’ordinateur, notamment grâce à un clavier spécifiquement développé pour eux nommé « plage braille ». Grâce à ces plages brailles, les aveugles peuvent lire les caractères en braille en touchant une ligne munie de petites pointes pilotés.

    Le prix de ces appareils est assez prohibitif pour quelqu’un qui voudrait jouer avec sans en avoir réellement besoin (un geek quoi). C’est pourtant une bonne manière de faire de l’informatique sans écran. Pour le codage informatique, on utilise un braille à huit points au lieu des six habituels ce qui permet d’avoir 256 combinaisons, soit autant que la table ASCII. La table braille informatique actuelle a été approuvée à l’unanimité en 2007 par la Commission Évolution du Braille Français, elle porte le numéro TBFR2007.

    Que vaudrait un jeu vidéo développé pour une plage braille ? Et pourrait-on l’appeler jeu vidéo ?

    Avec du papier et un stylo/machine à écrire/carte perforé puis scanner

    On peut également faire beaucoup de choses un papier un crayon/stylo/pinceau puis le scanner pour qu’il soit utilisé dans l’ordinateur. Ça reste généralement qu’une étape du développement les programmes ne sont pas plus réalisés intégralement sur papier avant d’être intégré à l’ordinateur.

    Pour conclure

    Avec des écrits comme « la fabrique du crétin digital » et des propos comme ceux de notre ex-ministre de l’éducation, les écrans sont devenus la bête noire de tous les pédagogos.

    Mais l’important n’est-il pas de savoir ce que l’on fait avec un écran ? Faut-il vraiment s’acharner à s’en passer ?

    Sans doute pas.

    Il serait cependant intéressant d’apprendre à se servir d’outils réservés aux aveugles par exemple. Si nous n’avons plus besoin de la vue pour coder, nous pourrions être un peu plus multi-tâches et coder tout en… regardant la télé !

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Archiver ses vidéos : retour d’expérience.

    Préambule : ma vie (et peut-être aussi la vôtre)

    Comme probablement beaucoup d’entre vous, j’ai des milliers de photos et vidéos accumulées au cours des 20 dernières années. C’est très pratique de pouvoir stocker cela sur un seul disque dur. Mais cela pose trois problèmes majeurs :

    1. la pérennité du support ;
    2. le classement des fichiers pour pouvoir en retrouver un en particulier dans… très longtemps.
    3. la possibilité de lire des fichiers dans plusieurs années (je pense à des fichiers Publisher 2.0 que je ne suis plus parvenu à lire par la suite – et non : les versions ultérieures à Publisher 2.0 ne lisent pas ces fichiers.

    Ce texte s’adresse à toute personne qui se pose trois questions :

    1. Pourrai-je visionner mes fichiers vidéos dans 30 ans pour les montrer à mes petits-enfants ?
    2. Comment organiser/classer mes fichiers vidéos pour les retrouver rapidement ?
    3. Comment réencoder mes fichiers vidéos pour limiter la place occupée (ou, dit autrement : quel format utiliser) ?

    Après avoir lu cette dépêche, je vous recommande très fortement de vous reporter aux commentaires qui suivent car vous y trouverez probablement des précisions, liens, corrections ou suggestions qui l’enrichissent.

    • Pour le point 1., aucun support n’étant inaltérable/incassable, la règle tient en une phrase : « sauvegarder sur plusieurs supports (pour parer une éventuelle défaillance), dans différents endroits (en cas d’incendie, de vol, d’inondation…) et si possible en chiffrant ses disques (pour protéger votre vie privée en cas de vol : c’est incroyablement simple sous linux)
    • Pour le point 2., j’avais rédigé un document il y a fort fort longtemps où j’expliquais que le seul classement pérenne était le classement chronologique (je vous laisse vous reporter au document pour comprendre pourquoi l’utilisation de logiciels propriétaires est à proscrire). Pour résumer, je crée un dossier par année (2023) dans lequel il y a douze sous-dossiers (2023_01, 2023_02 etc.) et dans chacun d’eux, je crée un dossier par jour avec la date et le lieu (par exemple, 2023_06_25_saint_denis_la_reunion indique immédiatement où et quand ont été prises les photos et les vidéos à l’intérieur de ce dossier). Les photos sont renommées (et retournées si nécessaire) automatiquement avec l’instruction jhead -autorot -nf%Y_%m_%d__%H_%M_%S_ *.jpg. Les vidéos sont renommées manuellement sous la forme 2023_06_25__video_02_christophe_et_philippe_en_velo.mov 1
    • Pour le point 3., le format JPG étant ouvert, la lisibilité des photos est garantie dans le temps. Pour les vidéos, c’est un peu plus compliqué puisqu’en général, trois formats interviennent :
      • le codec vidéo pour l’image (comme h264, h265, av1, mjpeg…) ;
      • le codec audio pour le son (comme mp3)
      • le format de conteneur (comme avi, mp4, mts…)

    C’est là où on en revient à l’histoire de ma vie.


    1. note : je n’ai jamais trouvé comment récupérer les métadonnées des vidéos pour les utiliser dans le nom du fichier, comme je le fais avec jhead. 

      Sommaire

      I Il était une fois MA vie !

      Après plus de 20 ans de stockage, mon disque dur de 1 To frisait les 90 % de remplissage. Alors, oui, 1 To, c’est très commun aujourd’hui : il me suffisait d’acheter un disque de 4 To et le problème était réglé.

      Oui… mais non. Je n’aime pas occuper de la place. Je pense que c’est une mauvaise habitude que d’avoir des téraoctets disponibles ou des gigaoctets sur une carte SD pour son smartphone que l’on utilise sans se poser de questions en ayant l’impression d’un stockage illimité. Car un jour, cela nous revient dans les dents (carte SD/disque dur qui plante sans sauvegarde, réinstallation de tout le système, sauvegarde de ses milliers de photos que l’on se décide - un jour - de ranger dans un dossier A_RANGER1 puis A_RANGER2 puis A_RANGER3, etc. puis on abandonne).

      En ayant un espace de stockage limité, on doit apprendre à le gérer.

      Les plus anciens se souviennent peut-être des magnétoscopes : on achète des cassettes, on enregistre des films en se disant « je le regarderai un jour » et on se retrouve avec des centaines de cassettes qui prennent la poussière. Ben c’est pareil avec les disques durs : on a des téraoctets en pagaille et on se dit : « je garde, on ne sait jamais. Et un jour (qui n’arrivera jamais), je ferai le tri ! »
      J’en reviens donc à mon disque dur quasi plein. Je fais une recherche sur mes fichiers vidéos et regarde le débit binaire (bitrate par la suite) : 40 000 kb/s soit environ 5 Mo/s pour des vidéos FullHD et jusqu’à 100 Mb/s (12 Mo/s) pour des vidéos 4k (évidemment, cela dépend de l’appareil à l’origine de la vidéo). Voici les différents bitrate que j’ai pu rencontrer :
      • fichier mp4 4K drone : 100 Mb/s ;
      • fichier mp4 4K go pro : 60 Mb/s
      • fichier mov FullHD : environ 16Mb/s
      • ficher avi 640*480 : environ 15 MB/ (mjpeg et format son araw)
      • fichier avi 320*240 : entre 1 et 2,5 Mb/s

      Loin d’être un expert dans la compression vidéo, le poids des fichiers m’interpelle quand même. En effet, un site de téléchargement de films - que je n’ai jamais fréquenté car c’est illégal - a pour objectif d’optimiser le ratio qualité/poids et donc d’offrir une bonne qualité visuelle pour un poids réduit. Ainsi, un film en FullHD de 90 min a un poids de 1400 Mo soit un bitrate d’environ 2 Mb/s (250 ko/s avec le codec H264). Un film en 4K de 90 min a un poids de 4 Go soit un bitrate d’environ 4Mb (500 ko/s avec le codec H265). Et il paraît – je ne le sais pas directement car je n’ai jamais fréquenté ce site dont je ne connais même pas l’existence – que la qualité des films sur le site en question est bonne, visuellement parlant s’entend.

      Il était donc temps de se mettre au travail et de réencoder mes vidéos personnelles.

      L’objectif de ce document est donc triple (et permettra de répondre aux questions 1. et 3. que s’est posé le lecteur ou la lectrice dans le préambule :

      • ré encoder ses vidéos automatiquement via un script bash (en utilisant le logiciel libre ffmpeg ) sans perte de qualité visible  ;
      • réduire le poids des fichiers de façon notable (par notable, j’entends ici une réduction d’au moins 20 %, ce qui est totalement subjectif, mais j’assume) ;
      • s’assurer de la pérennité de ses vidéos (i.e. être capable de les visionner dans 20 ans) ;

      II Mon environnement

      • Le matériel : Lenovo V45 (payé 300 € environ avec un AMD A4-9125 radeon R3, 8Go de mémoire vive et un SSD Samsung de 1To, le tout sous kubuntu 22,04).
      • Les logiciels : ffmpeg version 4.4.2, vlc, krename (pour renommer ses fichiers par lot), kfind pour retrouver des fichiers avec des extensions précises (je ne maîtrise pas du tout l’outil en ligne de commande find), avidemux pour faire du montage vidéo basique (couper quelques minutes d’une vidéo par exemple), dolphin pour naviguer dans les fichiers et, surtout, indicator-cpufreq (qui permet de réduire la fréquence du processeur et éviter que le ventilateur ne tourne en permanence).

      III Les choix techniques

      Je ne devais utiliser que des logiciels libres et des formats ouverts. Pour les logiciels : mon choix s’est porté sur ffmpeg pour l’encodage car c’est LA référence pour la conversion de vidéos, même si l’usage de la ligne de commande peut rebuter cetains (mais vous verrez par la suite que les scripts simplifient grandement la vie). Pour les formats :

      • MP3 pour l’audio : il n’est plus protégé par un brevet depuis 2017 et me convenait parfaitement, en choisissant un débit de 250kb/s (ce qui est sûrement excessif mais la place occupée par le son dans une vidéo est faible par rapport à la vidéo). Je sais qu’il y a vorbis mais le mp3 me semble plus « universel », notamment si l’on regarde la vidéo sur un téléviseur
      • MKV pour le conteneur : c’est un format ouvert et qui est lu sur tous les téléviseurs sur lesquels j’ai pu le tester.
      • H265 pour le format vidéo : c’est un format sorti en 2013 soumis à brevet mais il est possible d’utiliser une bibliothèque libre (x265) pour effectuer l’encodage (c’est cette bibliothèque qu’utilise ffmpeg). Là encore, lorsque j’ai testé des vidéos encodées en h265 sur différents téléviseurs pas trop vieux, je n’ai jamais eu de problème. Sachez qu’il existe le format AV1, plus récent, plus efficace en termes de compression, libre et qui répond à mes besoins. Mais deux éléments m’ont fait renoncer à l’utiliser :
        • l’encodage (avec ma machine) est extrêmement lent (j’ai abandonné l’encodage de 30 secondes de vidéo quand, après une heure, il en était toujours à la première seconde !) ;
        • il n’est pas encore généralisé : peu de téléviseurs peuvent lire ce format (si vous en connaissez, je suis preneur). Il est fort probable que dans une dizaine d’années, je réencoderai mes vidéos en AV1, mais laissons cela pour plus tard.

      J’ai également choisi d’encoder mes vidéos en deux passes car cela me permet de décider du débit binaire (et donc de la taille du fichier finale) tout en ayant une meilleure qualité qu’en une passe.
      J’ai utilisé le programme indicator-cpufreq qui me permet de réduire au minimum la fréquence de mon processeur (ici 1,2 Gh) afin d’éviter que le ventilateur ne tourne sans arrêt (à noter qu’une mise en veille repasse la fréquence au maximum et il n’est plus possible de la réduire, sauf à redémarrer l’ordinateur). Avec une fréquence réduite au minimum, le ventilateur ne se déclenche que quelques secondes toutes les minutes et le processeur ne dépasse pas les 50°C (c’est hardinfo qui me le dit).

      IV Les problèmes rencontrés et les contraintes (spoiler : il faut du temps !)

      • L’encodage en deux passes permet d’obtenir une meilleure qualité visuelle (de ce que j’ai compris) mais au prix d’un temps de calcul doublé. Ainsi, une vidéo d’une minute (en FullHD) a nécessité environ 100 minutes d’encodage pour obtenir le fichier final. Autant vous dire que mon ordinateur a tourné pendant environ 5 mois près de 20 heures par jour en moyenne. En revanche, j’ai découvert comment arrêter un processus (kill - STOP numero_pid_util) lorsque j’avais besoin de retrouver toute la puissance du processeur et comment le reprendre plus tard (kill - CONT numero_pid_util). Par ailleurs, je n’ai pas trouvé comment utiliser la carte graphique pour le réencodage, car il paraît que c’est plus rapide
      • Je ne connais pas l’instruction ou l’option (si elle existe) de ffmpeg qui permet de conserver les métadonnées des vidéos. Ainsi, la conversion effectuée avec les scripts ci-dessous supprime toutes les métadonnées (pourtant, cela semble possible)
      • Je n’ai pas trouvé, malgré mes recherches, comment reprendre la première passe d’un encodage après une coupure ou un bug (ffmpeg génère un fichier log durant la première passe, fichier qu’il devrait être possible de réutiliser afin de reprendre là où il s’est arrêté). Il m’a donc fallu, parfois, reprendre l’encodage d’une vidéo à zéro.
      • La procédure avant encodage demande de l’organisation :
        • Rechercher toutes ses vidéos est relativement aisé et rapide : kfind permet d’effectuer une recherche sur de multiples formats. Ensuite, un copier-coller sur un autre disque dur permet de les isoler.
        • Il est nécessaire de connaître le bitrate de chacune d’elle. Une recherche Internet et hop, le script qui va bien (voir la partie sur les scripts) génère un fichier CSV pour nous faciliter le travail.
        • Il faut ensuite regrouper les vidéos par débit et définition : ainsi, une vidéo 640*480 de 10 Mb/s ne pouvait pas être dans le même répertoire qu’une vidéo en 320*240 de 5 Mb/s également puisque le bitrate final n’était pas le même. Là, pas de secret, il faut le faire manuellement. Mais rassurez-vous, bien souvent, les vidéos d’une même période ont toute le même bitrate.
        • L’étape suivante a consisté à choisir le débit final des vidéos suivant leur définition de façon à ce que la vidéo finale subisse une compression pas ou peu visible à l’œil par rapport à l’original (ce qui est très subjectif). J’ai donc choisi (en partant des débits de YiFY et un peu au doigt mouillé) :
          • 10 Mb/s pour de la 4K (porté très rarement à 12 Mb/s si la vidéo comportait beaucoup de mouvements) ;
          • 4 Mb/s pour de la FullHD ;
          • environ 2 Mb/s pour de la 640*480
          • 1 Mb/s pour de la 320*240
      • Un bug est apparu lors de la conversion des fichiers MJPEG directement en H265 : les couleurs finales étaient complètement différentes des originales. Je ne suis pas le seul à avoir subi ce qui semble être un bug. Au final, j’ai contourné ce désagrément en convertissant d’abord ces fichiers en xvid avec un gros bitrate pour limiter la perte de qualité (opération très rapide) puis les xvid en H265, ce qui a réglé le problème.
      • J’imagine que, comme beaucoup d’entre nous, je souhaite limiter mon impact environnemental. N’ayant pas de panneaux photovoltaïques, mon empreinte carbone est probablement élevée car j’ai été contraint de laisser tourner mon ordinateur jour et nuit en consommant de l’électricité pas toujours verte. En contrepartie, j’économise l’achat d’un nouveau disque dur. Cela me permet de me donner bonne conscience.

      V Les scripts utilisés

      Ces scripts (qui fonctionnent sous Linux. Pour Windows, il faudra adapter…) ont été écrits à partir de ce que j’ai trouvé sur Internet car ma maîtrise de ce genre d’outils est très fragile voire inexistante (j’ai donc pas mal bidouillé et ils peuvent sûrement être optimisés). Je vous dirais volontiers qu’ils sont sous licence libre ou dans le domaine public mais n’ayant pas noté mes sources, je les livre ci-dessous sans aucune garantie de quoi que ce soit (la seule chose que je peux garantir, c’est que j’ai fait pas mal de modifications par rapport aux scripts originaux).
      Je vous rappelle que pour utiliser ces scripts, vous devez faire un copier-coller du script dans un fichier texte (en utilisant kate par exemple), l’enregistrer puis le rendre exécutable. Ensuite, vous placez ce script dans le répertoire de vos vidéos, et, dans une console, vous tapez ./nom_du_script
      Je pense avoir mis suffisamment de commentaires pour comprendre ce que fait chaque script. Si cela n’était pas le cas, signalez les erreurs ou les suggestions dans les commentaires.
      Voici un résumé pour chacun d’eux :

      1. convertion_par_lot_videos_en_265 : c’est le script que j’ai le plus utilisé pour convertir des vidéos en H265 en choisissant une ou deux passes et le bitrate.
      2. convertion_par_lot_videos_en_265_une_passe_crf : convertir en une seule passe en choisissant la qualité voulue
      3. convertion_par_lot_videos_en_xvid : convertir des vidéos au format XVID, lorsque la conversion des MJPEG vers H265 pose problème
      4. convertion_vers_mkv_par_lot : convertir tous les formats de conteneur en MKV (j’ai eu parfois des problèmes avec certaines extensions, le passage en MKV réglait le problème) ;
      5. convertion_videos_en_son_par_lot : ne garder que le son (pour des vidéos youtube que l’on souhaite uniquement écouter par exemple) ;
      6. convertir_son_en_mp3_garder_video : réeconde uniquement le son en MP3, ne touche pas la vidéo
      7. extraire_image_precise_d_une_video : permet d’extraire une image précise (par exemple la 123) d’une ou plusieurs vidéos. Ce script m’a permis de comparer l’image d’origine et l’image réencodée. J’utilisais ensuite Gimp pour visualiser les différences entre les deux images.
      8. recuperer_bitrate_video_par_lot : récupère tous les bitrates des vidéos d’un même répertoire et l’exporte dans un fichier CSV (données séparées par une espace) ;
      9. recuperer_toutes_infos_video_par_lot : exporte dans un fichier csv les dimensions de l’image, le fps etc. mais pas le bitrate (je n’ai pas trouvé comment fusionner ce script avec le précédent)
      10. stabiliser_video_par_lot_en_testant_les_10_qualites : script pour stabiliser une vidéo avec une image « secouée » en testant les 10 qualités possibles automatiquement. Vous pouvez faire des tests, chez moi, ce n’était pas probant. Le script est à revoir probablement.
      11. stabiliser_video_par_lot_version : idem que ci-dessus mais vous choisissez le paramètre de la stabilisation.
      12. creer_video_cote_a_cote_par_lot : pour comparer deux vidéos en en créant une nouvelle avec les deux côte à côte (je l’utilise pour comparer la vidéo d’origine et la vidéo stabilisée).
      13. supprimer_bande_son_video : ne conserve que la vidéo, supprime le son (pour des vidéos où le son ne présente aucun intérêt). Et c’est parti !

      convertion_par_lot_videos_en_265

      #/bin/bash
      # conversion par lot de fichier video au format H265 avec audio en mp3 qualité 256k
      # nice -19 signifie que le programme aura la priorité la plus faible, ce qui ne devrait pas beaucoup ralentir l'exécution des autres programmes (en théorie tout au moins...)
      # si vous souhaitez interrompre le programme pour avoir accès à tout le processeur, tapez l'instruction top puis identifiez le PID UTIL des processeurs ffmpeg concernés puis tapez kill - STOP numero_pid_util. Pour relancer le processus, tapez kill - CONT numero_pid_util
      echo "Ce script va réencoder vos vidéos (MKV MP4 MTS AVI MOV WEBM FLV MPG MPEG WMV 3GP RM ASX VOB F4V MKS M4V OGV M2V MPV TS M2TS AVC HEVC M1V M2V MPV) en H265, le son en MP3 256k et au format de conteneur MKV en 1 ou 2 passes. Vous allez pouvoir choisir le bitrate d'encodage pour la vidéo, le codec et le nombre de passe. Les extensions des vidéos peuvent être en minuscules ou majuscules mais pas un mélange des deux. Les fichiers originaux seront déplacés dans le dossier originaux et les fichiers convertis dans le dossier convertis_x265"
      echo -n "Entrez le bitrate -sans espace - que vous souhaitez utiliser : (4000 recommandé pour de la video FullHD, 10000 pour de la 4K) "
      read bitrate
      # les lignes (rm x265_2pass.log / rm x265_2pass.log.cutree / rm x265_2pass.log.cutree.temp / rm x265_2pass.log.temp) suppriment les fichiers générés lors des deux passes
      # pour conserver l'audio, remplacer -c:a libmp3lame -b:a 256k par -c:a copy
      # pour réduire la qualité audio, remplacer le 256k dans "-c:a libmp3lame -b:a 256k" par un nombre plus petit (par exemple 128k ou 92k)
      echo -n "Souhaitez-vous une passe ou deux passes ? Taper 1 pour une passe (plus rapide mais de moins bonne qualité) ou 2 pour deux passes (plus lent mais la vidéo finale est de meilleure qualité) :  "
      read passe
      if [ "$passe" = "1" ] ; then
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir convertis_x265
      #crée un répertoire où seront déplacés les fichiers convertis
          for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
          nice -19 ffmpeg -i "$i" -c:v "libx265" -b:v "${bitrate}k" -"x265"-params pass=1 -c:a libmp3lame -b:a 256k "$i.mkv"
          mv "$i.mkv" ./convertis_x265
          #déplace les fichiers convertis
          mv "$i" ./originaux
          #déplace les fichiers originaux
          done
      elif [ "$passe" = "2" ]; then
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir convertis_x265
      #crée un répertoire où seront déplacés les fichiers convertis
          for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
          nice -19 ffmpeg -y -i "$i" -c:v "libx265" -b:v "${bitrate}k" -"x265"-params pass=1 -an -f null /dev/null && \
          #première passe
          nice -19 ffmpeg -i "$i" -c:v "libx265" -b:v "${bitrate}k" -"x265"-params pass=2 -c:a libmp3lame -b:a 256k "$i.mkv"
          mv "$i.mkv" ./convertis_x265
          #déplace les fichiers convertis
          mv "$i" ./originaux
          #déplace les fichiers originaux
      #les lignes suivantes suivantes suppriment les fichiers temporaires de la première passe en cas d'interruption.
          rm x265_2pass.log
          rm x265_2pass.log.cutree
          rm x265_2pass.log.cutree.temp
          rm x265_2pass.log.temp
          rm x264_2pass.log
          rm x264_2pass.log.cutree
          rm x264_2pass.log.cutree.temp
          rm x264_2pass.log.temp
          done
      else
          echo "Il faut taper 1 ou 2, rien d'autre. Relancez le script !"
      fi
          rm x265_2pass.log
          rm x265_2pass.log.cutree
          rm x265_2pass.log.cutree.temp
          rm x265_2pass.log.temp
          rm x264_2pass.log
          rm x264_2pass.log.cutree
          rm x264_2pass.log.cutree.temp
          rm x264_2pass.log.temp

      convertion_par_lot_videos_en_265_une_passe_crf

      #!/bin/bash
      # conversion par lot de fichier video au format H265 avec audio en mp3 qualité 320k
      # nice -19 signifie que le programme aura la priorité la plus faible, ce qui ne devrait pas beaucoup ralentir l'exécution des autres programmes.
      # si vous souhaitez interrompre le programme pour avoir accès à tout le processeur, tapez l'instruction top puis identifiez le PID UTIL des processeurs ffmpeg concernés puis tapez kill - STOP numero_pid_util. Pour relancer le processus, tapez kill - CONT numero_pid_util
      
      echo "Ce script va réencoder vos vidéos (MKV, MP4, MTS, AVI, MOV, WEBM FLV) en H265, le son en MP3 256k et au format de conteneur MKV en 1 passe. Vous allez pouvoir choisir CRF (constant rate factor) pour la vidéo. Les extensions des vidéos peuvent être en minuscules ou majuscules mais pas un mélange des deux."
      echo -n "Entrez le CRF que vous souhaitez utiliser : (entre 1 et 51 - 1 pour la meilleure qualité, 51 pour la plus mauvaise) - 28 est recommandé : "
      read crf
      
      echo -n "Entrez la vitesse que vous souhaitez utiliser : (ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow) - votre choix joue sur la vitesse de traitement et la qualité. Superfast sera très rapide mais de moins bonne qualité. medium est le choix recommandé. Votre choix : "
      read speed
      
      # on peut modifier le fichier de sortie en ajoutant un répertoire : "$i.mkv" devient "/home/perso/mon_repertoire/$i.mkv"
      # les lignes (rm x265_2pass.log / rm x265_2pass.log.cutree / rm x265_2pass.log.cutree.temp / rm x265_2pass.log.temp) suppriment les fichiers générés lors des deux passes
      # pour conserver l'audio, remplacer -c:a libmp3lame -b:a 256k par -c:a copy
      # pour réduire la qualité audio, remplacer le 256k dans "-c:a libmp3lame -b:a 256k" par un nombre plus petit (par exemple 128k ou 92k)
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir convertis_x265
      #crée un répertoire où seront déplacés les fichiers convertis
      
          for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ;
          do
          nice -19 ffmpeg -i "$i" -c:v libx265 -crf "$crf" -preset "$speed" -c:a libmp3lame -b:a 256k "$i.mkv"
      
          mv "$i.mkv" ./convertis_x265
          #déplace les fichiers convertis
      
          mv "$i" ./originaux
          #déplace les fichiers originaux
          done
      
      #les lignes suivantes suivantes suppriment les fichiers temporaires de la première passe en cas d'interruption.
          rm x265_2pass.log
          rm x265_2pass.log.cutree
          rm x265_2pass.log.cutree.temp
          rm x265_2pass.log.temp
          rm x264_2pass.log
          rm x264_2pass.log.cutree
          rm x264_2pass.log.cutree.temp
          rm x264_2pass.log.temp

      convertion_par_lot_videos_en_xvid

      #!/bin/bash
      # ce script balaie tous les fichiers d'un même répertoire et va convertir les AVI en XVID et conserver le son d'origine
      # nice -19 signifie que le programme aura la priorité la plus faible, ce qui ne devrait pas beaucoup ralentir l'exécution des autres programmes.
      # si vous souhaitez interrompre le programme pour avoir accès à tout le processeur, tapez l'instruction top puis identifiez le PID UTIL des processeurs ffmpeg concernés puis tapez kill - STOP numero_pid_util. Pour relancer le processus, tapez kill - CONT numero_pid_util
      
      echo "Ce script va réencoder vos vidéos AVI en XVID, conserver le son d'origine et au format de conteneur MKV en 2 passes. Les extensions des vidéos (AVI ou avi) peuvent être en minuscules ou majuscules mais pas un mélange des deux. La convertion directe de MJPEG vers 265 pose des problèmes de couleurs. Il faut donc passer par XVID d'abord (voir https://stackoverflow.com/questions/71397605/ffmpeg-mjpeg-h-265-smeared-color-on-output-video-file )"
      # on peut modifier le fichier de sortie en ajoutant un répertoire : "$i.mkv" devient "/home/perso/mon_repertoire/$i.mkv"
      # pour conserver l'audio, remplacer -c:a libmp3lame -b:a 256k par -c:a copy
      # pour réduire la qualité audio, remplacer le 256k dans "-c:a libmp3lame -b:a 256k" par un nombre plus petit (par exemple 128k ou 92k)
      
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      
      mkdir convertis_xvid
      #crée un répertoire où seront déplacés les fichiers convertis
      
          for i in *.avi *.AVI ; do
          nice -19 ffmpeg -y -i "$i" -c:v mpeg4 -vtag xvid -b:v 16000k -pass 1 -an -f avi /dev/null
          ffmpeg -i "$i" -c:v mpeg4 -vtag xvid -b:v 16000k -pass 2 -c:a copy "$i.mkv"
      
          mv "$i.mkv" ./convertis_xvid
          #déplace les fichiers convertis
      
          mv "$i" ./originaux
          #déplace les fichiers originaux
      
          done

      convertion_vers_mkv_par_lot

      #!/bin/bash
      # conversion par lot de fichiers vers mkv - mofifier l'extension si nécessaire - supprimer les extensions d'origine avec krename ensuite. Attention, s'il y a déjà des fichiers MKV, ils seront reconvertis en MKV
      
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir convertis_mkv
      #crée un répertoire où seront déplacés les fichiers convertis
      
          for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
      
      
      #    autre chose trouvé sur internet avec bug : ffmpeg -flags +genpts -i "$i" -c copy -sn "$i.mkv"
      
      nice -19 ffmpeg -y -i "$i" -c:v copy -c:a copy "$i.mkv"
        mv "$i.mkv" ./convertis_mkv
          #déplace les fichiers convertis
          mv "$i" ./originaux
          #déplace les fichiers originaux
      
      done

      convertion_videos_en_son_par_lot

      #!/bin/bash
      # conversion par lot de fichiers vers mkv - mofifier l'extension si nécessaire - supprimer les extensions d'origine avec krename ensuite. Attention, s'il y a déjà des fichiers MKV, ils seront reconvertis en MKV
      
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir convertis_mkv
      #crée un répertoire où seront déplacés les fichiers convertis
      
          for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
      
      
      #    autre chose trouvé sur internet avec bug : ffmpeg -flags +genpts -i "$i" -c copy -sn "$i.mkv"
      
      nice -19 ffmpeg -y -i "$i" -c:v copy -c:a copy "$i.mkv"
        mv "$i.mkv" ./convertis_mkv
          #déplace les fichiers convertis
          mv "$i" ./originaux
          #déplace les fichiers originaux
      
      done

      convertir_son_en_mp3_garder_video

      #!/bin/bash
      echo -n "Ce script va convertir le son des videos en mp3 sans toucher la video et ajouter l'extension .MKV à la fin du fichier. Choisissez la qualité mp3 (256 recommandé) : "
      read bitratemp3
      
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir convertis_mp3
      #crée un répertoire où seront déplacés les fichiers convertis
      
      
      for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
      
          nice -19 ffmpeg -i "$i" -c:v copy -c:a libmp3lame -b:a "${bitratemp3}k" "$i.mkv"
      
          mv "$i.mkv" ./convertis_mp3
          #déplace les fichiers convertis
          mv "$i" ./originaux
          #déplace les fichiers originaux
      done

      extraire_image_precise_d_une_video

      #!/bin/bash
      
      
      echo -n "Entrez le numéro de l'image que vous souhaitez extraire (attention, la numérotation commence à 0 donc si vous souhaitez la frame 536, il faut saisir 535) "
      read num_frame
      
      
      for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
      
      
      
      nice -19 ffmpeg -i "$i" -vf "select=eq(n\,$num_frame)" -vframes 1 screenshot_frame_"$num_frame"_"$i".png
      
      done

      recuperer_bitrate_video_par_lot

      #!/bin/bash
      
      #recherche le bitrate des videos de façon récursive
      find . \( -iname "*.mkv" -or -iname "*.mov" -or -iname "*.mts" -or -iname "*.mp4" -or -iname "*.mpg" -or -iname "*.mpeg" -or -iname "*.flv" -or -iname "*.avi" -or -iname "*.webm" -or -iname "*.wmv" -or -iname "*.3gp" -or -iname "*.rm" -or -iname "*.asx" -or -iname "*.vob" -or -iname "*.f4v" -or -iname "*.mks" -or -iname "*.m4v" -or -iname "*.ogv" -or -iname "*.m2v"  -or -iname "*.mpv" -or -iname "*.ts" -or -iname "*.m2ts" -or -iname "*.avc" -or -iname "*.hevc" -or -iname "*.m1v" -or -iname "*.m2v" -or -iname "*.mpv" \) -print0 | xargs -0 -i{} sh -c " echo -n '{} ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*bitrate: //p' " > result_bitrate.csv
      #ecrit le bitrate de toutes les videos d'un dossier dans le fichier result_mts.csv.
      # Ouvrir avec tableur et choisir séparateur ESPACE pour mieux visualiser les bitrate

      recuperer_toutes_infos_video_par_lot

      #!/bin/bash
      
      #recherche les informations des videos
      find . \( -iname "*.mkv" -or -iname "*.mov" -or -iname "*.mts" -or -iname "*.mp4" -or -iname "*.mpg" -or -iname "*.mpeg" -or -iname "*.flv" -or -iname "*.avi" -or -iname "*.webm" -or -iname "*.wmv" -or -iname "*.3gp" -or -iname "*.rm" -or -iname "*.asx" -or -iname "*.vob" -or -iname "*.f4v" -or -iname "*.mks" -or -iname "*.m4v" -or -iname "*.ogv" -or -iname "*.m2v"  -or -iname "*.mpv" -or -iname "*.ts" -or -iname "*.m2ts" -or -iname "*.avc" -or -iname "*.hevc" -or -iname "*.m1v" -or -iname "*.m2v" -or -iname "*.mpv" \) -print0 | xargs -0 -i{} sh -c " echo -n '{} ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*Video: //p' " > result_toutes_les_infos.csv
      
      
      #ecrit les informations toutes les videos d'un dossier dans le fichier result_toutes_les_infos.csv.
      #Ouvrir avec tableur et choisir séparateur ESPACE pour mieux visualiser les bitrate

      stabiliser_video_par_lot_version

      #!/bin/bash
      # stabiliser des videos par lot
      
      echo -n "Sélectionnez la stabilité de la vidéo que vous souhaitez : 1 (très stable) jusqu'à 10 (très instable)  "
      read stabilite
      
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir stabilisee
      #crée un répertoire où seront déplacés les fichiers convertis
      
      for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
      
          nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$stabilite:accuracy=15 -f null - && \
      
      #shakiness=10 peut etre modifié en mettant shakiness = nombre_entre_1_et_10 : 1 video stable, 10 video très instable
      
          nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$stabilite:accuracy=15 -f null -&& nice -19 ffmpeg -i "$i" -vf vidstabtransform=smoothing=30:input="transforms.trf" "stabilisee_$i"
      
      rm transforms.trf
      
      mv "stabilisee_$i" ./stabilisee
          #déplace les fichiers convertis
          mv "$i" ./originaux
          #déplace les fichiers originaux
      done

      creer_video_cote_a_cote_par_lot

      #!/bin/bash
      #ce script va créer une vidéo à partir de deux vidéos, l'une que l'on peut nommer ma_video.mkv et l'autre qui doit alors se nommer stabilisee_ma_video.mkv
      #les deux vidéos seront côte à côte, ce qui permet de les comparer
      for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB ; do
      
      
      # la video d'origine correspond à $i et l'autre video doit commencer par "stabilisee" mais il suffit de changer le prefixe si necessaire
      
          ffmpeg -i "$i" -i "stabilisee_$i" -filter_complex "[0:v]setpts=PTS-STARTPTS, pad=iw*2:ih[bg]; [1:v]setpts=PTS-STARTPTS[fg]; [bg][fg]overlay=w" "cote_a_cote_$i"
      
      
      done

      supprimer_bande_son_video

      #!/bin/bash
      #supprimer la bande son de toutes les videos (au format voir ci-dessous) d'un même répertoire et crée un fichier MKV sans bande son. Ne réencode pas la vidéo.
      
      mkdir originaux
      # crée un répertoire où seront déplacés les fichiers originaux après conversion
      mkdir sans_son
      #crée un répertoire où seront déplacés les fichiers convertis
      
      
          for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
          nice -19 ffmpeg -i "$i" -c copy -an "$i.mkv"
      
          mv "$i.mkv" ./sans_son
          #déplace les fichiers convertis
          mv "$i" ./originaux
          #déplace les fichiers originaux
      
      
          done

      stabiliser_video_par_lot_en_testant_les_10_qualites

      #!/bin/bash
      # test toutes les qualités de stabilisation pour un même fichier
      
      # test les 10 qualités de stabilité
      
              for qualite in 1 2 3 4 5 6 7 8 9 10 ; do
                  for i in *.mkv ; do
      
                  # nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$qualite:accuracy=15 -f null - && \
      
                  #shakiness=10 peut etre modifié en mettant shakiness = nombre_entre_1_et_10 : 1 video stable, 10 video très instable
      
                  nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$qualite:accuracy=15 -f null -&& nice -19 ffmpeg -i "$i" -vf vidstabtransform=smoothing=30:input="transforms.trf" "stabilisee_$i_$qualite.mp4"
      
                  rm transforms.trf
      
                  done
      
      
              done

      En conclusion

      Il faut du temps et de l’envie pour se lancer dans cette aventure, même si le CPU fait 80 % du travail. Mais les 20 % restant ne sont pas à négliger. Entre les copier-coller qu’il ne faut pas rater, le classement des vidéos par bitrate ou dimension, les vidéos réencondées qu’il faut visionner (en accéléré) pour s’assurer qu’elles sont correctes, etc. il faut vraiment rester concentré pour éviter d’oublier une vidéo ou, pire, de l’effacer alors qu’elle n’a pas été réencondée.

      Les avantages

      Mais je ne regrette pas tout ce temps, surtout pour avoir revisionné quasiment toutes mes vidéos, celle de mes enfants bébé (le coup de vieux en pleine figure), les moments en famille, les grands-parents disparus… Cela a été des moments vraiment agréables.

      Cela m’a également permis de ranger des vidéos qui n’étaient pas dans le bon répertoire ou de renommer celles qui comportaient une erreur dans leur nom.

      J’ai maintenant toutes mes vidéos avec le même format de conteneur (MKV), et les mêmes codec vidéo et audio, ce qui facilitera grandement un réencodage ultérieur.

      Et puis – c’était l’un des objectifs – le gain de place est très important puisque mon disque dur est passé de 90 % à 48 % d’occupation (j’ai fait aussi un peu de ménage donc ce gain ne provient pas que du réencodage des vidéos).

      Les inconvénients

      Est-ce une bonne idée de mettre tous ses œufs dans le même panier (un seul format de conteneur, un seul codec video, un seul codec audio) , même si ces formats sont libres et, pour H265, lisible avec des logiciels libres, ce qui est tout de même une bonne assurance pour l’avenir ?

      Du temps, du temps, et encore du temps : il faut en avoir pour ce projet (mais j’espère que les scripts vous permettront d’en gagner)

      Cela consomme de l’énergie et, si beaucoup de gens veulent réencoder leurs vidéos, l’impact environnemental ne sera pas négligeable.

      L’opération monopolise un ordinateur (nice -19 ne m’a pas paru très efficace quand je lançais trois encodages simultanément!). Mais cela peut être l’occasion d’en utiliser un qui dort dans un placard et qui pourrait ainsi resservir.

      Si c’était à refaire…

      • Je le referai, sans aucun doute !
      • J’essaierai de conserver les métadonnées (date, heure, coordonnées GPS) de mes vidéos (même si les informations les plus importantes sont dans leur nom) ;
      • Je tenterai d’utiliser le GPU pour le réencodage, ce qui réduirait le temps de calcul.

      Note pour le prochain confinement :

      [1] : je n'ai pas réussi à trouver l'équivalent de la commande jhead -autorot -nf%Y_%m_%d_%H%M_%S_ *.jpg pour les videos

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Cybersécurité - le texte du CRA a été finalisé

      10 janvier 2024 à 01:35

      Le texte final du CRA, projet de directive qui a pour objectif d’améliorer la cybersécurité des produits numériques en Europe, a été adopté par à l’issue du trilogue entre les institutions de l’Union Européenne. Il est probable qu’il sera adopté prochainement lors d’un vote au Parlement européen, et qu’il entrera en vigueur dans environ deux ans. À la clef, des pénalités très fortes pour les entreprises qui ne respecteront pas les critères.

      Le texte prévoit que la Commission doit préparer des guides, notamment à l’intention des PME :

      La Commission devra élaborer des guides pour aider les opérateurs économiques, en particulier les micro, petites et moyennes entreprises, à appliquer le présent règlement. Ces guides devront porter notamment sur le champ d’application du présent règlement, en particulier la notion de traitement des données à distance et les implications pour les développeurs de logiciels libres, l’application des critères utilisés pour déterminer la période de maintenance des produits comportant des éléments numériques, l’interaction entre le présent règlement et d’autres textes législatifs de l’Union et la notion de « modifications substantielles ».

      Par ailleurs, l’UE a chargé le CEN/CENELEC d’élaborer des normes de développement de logiciels sécurisés et invite les communautés du logiciel libre à contribuer à ce processus, directement ou indirectement:

      (6b) Lors de l’élaboration des mesures de mise en œuvre du présent règlement, la Commission consulte et tient compte des avis des parties prenantes concernées, tels que les autorités compétentes des États membres, le secteur privé, y compris les micro, petites et moyennes entreprises, la communauté des logiciels libres, les associations de consommateurs, le monde universitaire et les agences ou organes de l’Union compétents ou les groupes d’experts établis au niveau de l’Union.

      Le consensus des observateurs sur le document final semble être que celui-ci a « patché » les problèmes les plus graves qui ont été soulevés par les acteurs du logiciel libre au cours du processus législatif. Néanmoins il reste à la fois des problèmes de fond (le texte donne une définition des « logiciels libres et open source » qui se démarque sensiblement des définitions de la FSF et de l’OSI) dont l’impact juridique à long terme n’est pas encore connu, ainsi que toutes les questions pratiques de la mise en œuvre de la directive et des normes associées par les entreprises, avec un surcoût pour les PME qui reste estimé à 30% des coûts de développement.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Ouvrir le code des algorithmes ? — oui, mais… (2/2)

      22 mai 2023 à 05:42

      Voici le deuxième volet (si vous avez raté le premier) de l’enquête approfondie d’Hubert Guillaud sur l’exploration des algorithmes, et de son analyse  des enjeux qui en découlent.


      Dans le code source de l’amplification algorithmique : que voulons-nous vraiment savoir ?

      par Hubert GUILLAUD

      Que voulons-nous vraiment savoir en enquêtant sur l’amplification algorithmique ? C’est justement l’enjeu du projet de recherche qu’Arvind Narayan mène au Knight Institute de l’université Columbia où il a ouvert un blog dédié et qui vient d’accueillir une grande conférence sur le sujet. Parler d’amplification permet de s’intéresser à toute la gamme des réponses qu’apportent les plateformes, allant de l’amélioration de la portée des discours à leur suppression, tout en se défiant d’une réduction binaire à la seule modération automatisée, entre ce qui doit être supprimé et ce qui ne doit pas l’être. Or, les phénomènes d’amplification ne sont pas sans effets de bord, qui vont bien au-delà de la seule désinformation, à l’image des effets très concrets qu’ont les influenceurs sur le commerce ou le tourisme. Le gros problème, pourtant, reste de pouvoir les étudier sans toujours y avoir accès.

      Outre des analyses sur TikTok et les IA génératives, le blog recèle quelques trésors, notamment une monumentale synthèse qui fait le tour du sujet en expliquant les principes de fonctionnements des algorithmes (l’article est également très riche en liens et références, la synthèse que j’en propose y recourra assez peu).

      Narayan rappelle que les plateformes disposent de très nombreux algorithmes entremêlés, mais ceux qui l’intéressent particulièrement sont les algorithmes de recommandation, ceux qui génèrent les flux, les contenus qui nous sont mis à disposition. Alors que les algorithmes de recherche sont limités par le terme recherché, les algorithmes de recommandation sont bien plus larges et donnent aux plateformes un contrôle bien plus grand sur ce qu’elles recommandent à un utilisateur.

      La souscription, le réseau et l’algorithme

      Pour Narayan, il y a 3 grands types de leviers de propagation : la souscription (ou abonnement), le réseau et l’algorithme. Dans le modèle par abonnement, le message atteint les personnes qui se sont abonnées à l’auteur du message. Dans le modèle de réseau, il se propage en cascade à travers le réseau tant que les utilisateurs qui le voient choisissent de le propager. Dans le modèle algorithmique, les utilisateurs ayant des intérêts similaires (tels que définis par l’algorithme sur la base de leurs engagements passés) sont représentés plus près les uns des autres. Plus les intérêts d’un utilisateur sont similaires à ceux définis, plus il est probable que le contenu lui sera recommandé.

      À l’origine, les réseaux sociaux comme Facebook ou Twitter ne fonctionnaient qu’à l’abonnement : vous ne voyiez que les contenus des personnes auxquelles vous étiez abonnés et vous ne pouviez pas republier les messages des autres ! Dans le modèle de réseau, un utilisateur voit non seulement les messages créés par les personnes auxquelles il s’est abonné, mais aussi les messages que ces utilisateurs choisissent d’amplifier, ce qui crée la possibilité de cascades d’informations et de contenus “viraux”, comme c’était le cas de Twitter jusqu’en 2016, moment où le réseau introduisit le classement algorithmique. Dans le modèle algorithmique, la souscription est bien souvent minorée, le réseau amplifié mais surtout, le flux dépend principalement de ce que l’algorithme estime être le plus susceptible d’intéresser l’utilisateur. C’est ce que Cory Doctorow désigne comme « l’emmerdification  » de nos flux, le fait de traiter la liste des personnes auxquelles nous sommes abonnés comme des suggestions et non comme des commandes.

      Le passage aux recommandations algorithmiques a toujours généré des contestations, notamment parce que, si dans les modèles d’abonnement et de réseau, les créateurs peuvent se concentrer sur la construction de leur réseau, dans le « modèle algorithmique, cela ne sert à rien, car le nombre d’abonnés n’a rien à voir avec la performance des messages  » (mais comme nous sommes dans des mélanges entre les trois modèles, le nombre d’abonnés a encore un peu voire beaucoup d’influence dans l’amplification). Dans le modèle algorithmique, l’audience de chaque message est optimisée de manière indépendante en fonction du sujet, de la « qualité » du message et d’un certain nombre de paramètres pris en compte par le modèle.

      Amplification et viralité

      La question de l’amplification interroge la question de la viralité, c’est-à-dire le fait qu’un contenu soit amplifié par une cascade de reprises, et non pas seulement diffusé d’un émetteur à son public. Le problème de la viralité est que sa portée reste imprévisible. Pour Narayan, sur toutes les grandes plateformes, pour la plupart des créateurs, la majorité de l’engagement provient d’une petite fraction de contenu viral. Sur TikTok comme sur YouTube, 20 % des vidéos les plus vues d’un compte obtiennent plus de 70 % des vues. Plus le rôle de l’algorithme dans la propagation du contenu est important, par opposition aux abonnements ou au réseau, plus cette inégalité semble importante.

      Parce qu’il est particulièrement repérable dans la masse des contenus, le contenu viral se prête assez bien à la rétropropagation, c’est-à-dire à son déclassement ou à sa suppression. Le problème justement, c’est qu’il y a plein de manières de restreindre le contenu. Facebook classe les posts rétrogradés plus bas dans le fil d’actualité qu’ils ne le seraient s’ils ne l’avaient pas été, afin que les utilisateurs soient moins susceptibles de le rencontrer et de le propager. À son tour, l’effet de la rétrogradation sur la portée peut être imprévisible, non linéaire et parfois radical, puisque le contenu peut devenir parfaitement invisible. Cette rétrogradation est parfaitement opaque, notamment parce qu’une faible portée n’est pas automatiquement suspecte, étant donné qu’il existe une grande variation dans la portée naturelle du contenu.

      Amplification et prédiction de l’engagement

      Les plateformes ont plusieurs objectifs de haut niveau : améliorer leurs revenus publicitaires bien sûr et satisfaire suffisamment les utilisateurs pour qu’ils reviennent… Mais ces objectifs n’aident pas vraiment à décider ce qu’il faut donner à un utilisateur spécifique à un moment précis ni à mesurer comment ces décisions impactent à long terme la plateforme. D’où le fait que les plateformes observent l’engagement, c’est-à-dire les actions instantanées des utilisateurs, comme le like, le commentaire ou le partage qui permettent de classer le contenu en fonction de la probabilité que l’utilisateur s’y intéresse. « D’une certaine manière, l’engagement est une approximation des objectifs de haut niveau. Un utilisateur qui s’engage est plus susceptible de revenir et de générer des revenus publicitaires pour la plateforme.  »
      Si l’engagement est vertueux, il a aussi de nombreuses limites qui expliquent que les algorithmes intègrent bien d’autres facteurs dans leur calcul. Ainsi, Facebook et Twitter optimisent les « interactions sociales significatives », c’est-à-dire une moyenne pondérée des likes, des partages et des commentaires. YouTube, lui, optimise en fonction de la durée de visionnage que l’algorithme prédit. TikTok utilise les interactions sociales et valorise les vidéos qui ont été regardées jusqu’au bout, comme un signal fort et qui explique certainement le caractère addictif de l’application et le fait que les vidéos courtes (qui ont donc tendance à obtenir un score élevé) continuent de dominer la plateforme.

      En plus de ces logiques de base, il existe bien d’autres logiques secondaires, comme par exemple, pour que l’expérience utilisateur ne soit pas ralentie par le calcul, que les suggestions restent limitées, sélectionnées plus que classées, selon divers critères plus que selon des critères uniques (par exemple en proposant des nouveaux contenus et pas seulement des contenus similaires à ceux qu’on a apprécié, TikTok se distingue à nouveau par l’importance qu’il accorde à l’exploration de nouveaux contenus… c’est d’ailleurs la tactique suivie désormais par Instagram de Meta via les Reels, boostés sur le modèle de TikTok, qui ont le même effet que sur TikTok, à savoir une augmentation du temps passé sur l’application)… 

      « Bien qu’il existe de nombreuses différences dans les détails, les similitudes entre les algorithmes de recommandation des différentes plateformes l’emportent sur leurs différences », estime Narayan. Les différences sont surtout spécifiques, comme Youtube qui optimise selon la durée de visionnage, ou Spotify qui s’appuie davantage sur l’analyse de contenu que sur le comportement. Pour Narayan, ces différences montrent qu’il n’y a pas de risque concurrentiel à l’ouverture des algorithmes des plateformes, car leurs adaptations sont toujours très spécifiques. Ce qui varie, c’est la façon dont les plateformes ajustent l’engagement.

      Comment apprécier la similarité ?

      Mais la grande question à laquelle tous tentent de répondre est la même : « Comment les utilisateurs similaires à cet utilisateur ont-ils réagi aux messages similaires à ce message ?  »

      Si cette approche est populaire dans les traitements, c’est parce qu’elle s’est avérée efficace dans la pratique. Elle repose sur un double calcul de similarité. D’abord, celle entre utilisateurs. La similarité entre utilisateurs dépend du réseau (les gens que l’on suit ou ceux qu’on commente par exemple, que Twitter valorise fortement, mais peu TikTok), du comportement (qui est souvent plus critique, « deux utilisateurs sont similaires s’ils se sont engagés dans un ensemble de messages similaires  ») et les données démographiques (du type âge, sexe, langue, géographie… qui sont en grande partie déduits des comportements).

      Ensuite, il y a un calcul sur la similarité des messages qui repose principalement sur leur sujet et qui repose sur des algorithmes d’extraction des caractéristiques (comme la langue) intégrant des évaluations normatives, comme la caractérisation de discours haineux. L’autre signal de similarité des messages tient, là encore, au comportement : « deux messages sont similaires si un ensemble similaire d’utilisateurs s’est engagé avec eux ». Le plus important à retenir, insiste Narayan, c’est que « l’enregistrement comportemental est le carburant du moteur de recommandation  ». La grande difficulté, dans ces appréciations algorithmiques, consiste à faire que le calcul reste traitable, face à des volumes d’enregistrements d’informations colossaux.

      Une histoire des évolutions des algorithmes de recommandation

      « La première génération d’algorithmes de recommandation à grande échelle, comme ceux d’Amazon et de Netflix au début des années 2000, utilisait une technique simple appelée filtrage collaboratif : les clients qui ont acheté ceci ont également acheté cela ». Le principe était de recommander des articles consultés ou achetés d’une manière rudimentaire, mais qui s’est révélé puissant dans le domaine du commerce électronique. En 2006, Netflix a organisé un concours en partageant les évaluations qu’il disposait sur les films pour améliorer son système de recommandation. Ce concours a donné naissance à la « factorisation matricielle », une forme de deuxième génération d’algorithmes de recommandation, c’est-à-dire capables d’identifier des combinaisons d’attributs et de préférences croisées. Le système n’étiquette pas les films avec des termes interprétables facilement (comme “drôle” ou “thriller” ou “informatif”…), mais avec un vaste ensemble d’étiquettes (de micro-genres obscurs comme « documentaires émouvants qui combattent le système ») qu’il associe aux préférences des utilisateurs. Le problème, c’est que cette factorisation matricielle n’est pas très lisible pour l’utilisateur et se voir dire qu’on va aimer tel film sans savoir pourquoi n’est pas très satisfaisant. Enfin, ce qui marche pour un catalogue de film limité n’est pas adapté aux médias sociaux où les messages sont infinis. La prédominance de la factorisation matricielle explique pourquoi les réseaux sociaux ont tardé à se lancer dans la recommandation, qui est longtemps restée inadaptée à leurs besoins.

      Pourtant, les réseaux sociaux se sont tous convertis à l’optimisation basée sur l’apprentissage automatique. En 2010, Facebook utilisait un algorithme appelé EdgeRank pour construire le fil d’actualité des utilisateurs qui consistait à afficher les éléments par ordre de priorité décroissant selon un score d’affinité qui représente la prédiction de Facebook quant au degré d’intérêt de l’utilisateur pour les contenus affichés, valorisant les photos plus que le texte par exemple. À l’époque, ces pondérations étaient définies manuellement plutôt qu’apprises. En 2018, Facebook est passé à l’apprentissage automatique. La firme a introduit une métrique appelée « interactions sociales significatives  » (MSI pour meaningful social interactions) dans le système d’apprentissage automatique. L’objectif affiché était de diminuer la présence des médias et des contenus de marque au profit des contenus d’amis et de famille. « La formule calcule un score d’interaction sociale pour chaque élément susceptible d’être montré à un utilisateur donné  ». Le flux est généré en classant les messages disponibles selon leur score MSI décroissant, avec quelques ajustements, comme d’introduire de la diversité (avec peu d’indications sur la façon dont est calculée et ajoutée cette diversité). Le score MSI prédit la probabilité que l’utilisateur ait un type d’interaction spécifique (comme liker ou commenter) avec le contenu et affine le résultat en fonction de l’affinité de l’utilisateur avec ce qui lui est proposé. Il n’y a plus de pondération dédiée pour certains types de contenus, comme les photos ou les vidéos. Si elles subsistent, c’est uniquement parce que le système l’aura appris à partir des données de chaque utilisateur, et continuera à vous proposer des photos si vous les appréciez.

      « Si l’on pousse cette logique jusqu’à sa conclusion naturelle, il ne devrait pas être nécessaire d’ajuster manuellement la formule en fonction des affinités. Si les utilisateurs préfèrent voir le contenu de leurs amis plutôt que celui des marques, l’algorithme devrait être en mesure de l’apprendre ». Ce n’est pourtant pas ce qu’il se passe. Certainement pour lutter contre la logique de l’optimisation de l’engagement, estime Narayan, dans le but d’augmenter la satisfaction à long terme, que l’algorithme ne peut pas mesurer, mais là encore sans que les modalités de ces ajustements ne soient clairement documentés.

      Est-ce que tout cela est efficace ?

      Reste à savoir si ces algorithmes sont efficaces ! « Il peut sembler évident qu’ils doivent bien fonctionner, étant donné qu’ils alimentent des plateformes technologiques qui valent des dizaines ou des centaines de milliards de dollars. Mais les chiffres racontent une autre histoire. Le taux d’engagement est une façon de quantifier le problème : il s’agit de la probabilité qu’un utilisateur s’intéresse à un message qui lui a été recommandé. Sur la plupart des plateformes, ce taux est inférieur à 1 %. TikTok est une exception, mais même là, ce taux dépasse à peine les 5 %. »

      Le problème n’est pas que les algorithmes soient mauvais, mais surtout que les gens ne sont pas si prévisibles. Et qu’au final, les utilisateurs ne se soucient pas tant du manque de précision de la recommandation. « Même s’ils sont imprécis au niveau individuel, ils sont précis dans l’ensemble. Par rapport aux plateformes basées sur les réseaux, les plateformes algorithmiques semblent être plus efficaces pour identifier les contenus viraux (qui trouveront un écho auprès d’un grand nombre de personnes). Elles sont également capables d’identifier des contenus de niche et de les faire correspondre au sous-ensemble d’utilisateurs susceptibles d’y être réceptifs. » Si les algorithmes sont largement limités à la recherche de modèles dans les données comportementales, ils n’ont aucun sens commun. Quant au taux de clic publicitaire, il reste encore plus infinitésimal – même s’il est toujours considéré comme un succès !

      Les ingénieurs contrôlent-ils encore les algorithmes ?

      Les ingénieurs ont très peu d’espace pour contrôler les effets des algorithmes de recommandation, estime Narayan, en prenant un exemple. En 2019, Facebook s’est rendu compte que les publications virales étaient beaucoup plus susceptibles de contenir des informations erronées ou d’autres types de contenus préjudiciables. En d’autres termes, ils se sont rendu compte que le passage à des interactions sociales significatives (MSI) a eu des effets de bords : les contenus qui suscitaient l’indignation et alimentaient les divisions gagnaient en portée, comme l’a expliqué l’ingénieure et lanceuse d’alerte Frances Haugen à l’origine des Facebook Files, dans ses témoignages. C’est ce que synthétise le tableau de pondération de la formule MSI publié par le Wall Street Journal, qui montrent que certains éléments ont des poids plus forts que d’autres : un commentaire vaut 15 fois plus qu’un like, mais un commentaire signifiant ou un repartage 30 fois plus, chez Facebook. Une pondération aussi élevée permet d’identifier les messages au potentiel viral et de les stimuler davantage. En 2020, Facebook a ramené la pondération des partages à 1,5, mais la pondération des commentaires est restée très élevée (15 à 20 fois plus qu’un like). Alors que les partages et les commentaires étaient regroupés dans une seule catégorie de pondération en 2018, ils ne le sont plus. Cette prime au commentaire demeure une prime aux contenus polémiques. Reste, on le comprend, que le jeu qui reste aux ingénieurs de Facebook consiste à ajuster le poids des paramètres. Pour Narayan : piloter un système d’une telle complexité en utilisant si peu de boutons ne peut qu’être difficile.

      Le chercheur rappelle que le système est censé être neutre à l’égard de tous les contenus, à l’exception de certains qui enfreignent les règles de la plateforme. Utilisateurs et messages sont alors rétrogradés de manière algorithmique suite à signalement automatique ou non. Mais cette neutralité est en fait très difficile à atteindre. Les réseaux sociaux favorisent ceux qui ont déjà une grande portée, qu’elle soit méritée ou non, et sont récompensés par une plus grande portée encore. Par exemple, les 1 % d’auteurs les plus importants sur Twitter reçoivent 80 % des vues des tweets. Au final, cette conception de la neutralité finit par récompenser ceux qui sont capables de pirater l’engagement ou de tirer profit des biais sociaux.

      Outre cette neutralité, un deuxième grand principe directeur est que « l’algorithme sait mieux que quiconque ». « Ce principe et celui de la neutralité se renforcent mutuellement. Le fait de confier la politique (concernant le contenu à amplifier) aux données signifie que les ingénieurs n’ont pas besoin d’avoir un point de vue à ce sujet. Et cette neutralité fournit à l’algorithme des données plus propres à partir desquelles il peut apprendre. »
      Le principe de l’algorithme qui sait le mieux signifie que la même optimisation est appliquée à tous les types de discours : divertissement, informations éducatives, informations sur la santé, actualités, discours politique, discours commercial, etc. En 2021, FB a fait une tentative de rétrograder tout le contenu politique, ce qui a eu pour effet de supprimer plus de sources d’information de haute qualité que de faible qualité, augmentant la désinformation. Cette neutralité affichée permet également une forme de désengagement des ingénieurs.

      En 2021, encore, FB a entraîné des modèles d’apprentissage automatique pour classer les messages en deux catégories : bons ou mauvais pour le monde, en interrogeant les utilisateurs pour qu’ils apprécient des contenus qui leurs étaient proposés pour former les données. FB a constaté que les messages ayant une plus grande portée étaient considérés comme étant mauvais pour le monde. FB a donc rétrogradé ces contenus… mais en trouvant moins de contenus polémique, cette modification a entraîné une diminution de l’ouverture de l’application par les utilisateurs. L’entreprise a donc redéployé ce modèle en lui donnant bien moins de poids. Les corrections viennent directement en conflit avec le modèle d’affaires.

      Illustration par Jason Alderman « Those Algorithms That Govern Our Lives – Kevin Slavin« . (CC BY 2.0)

      Pourquoi l’optimisation de l’engagement nous nuit-elle ?

      « Un grand nombre des pathologies familières des médias sociaux sont, à mon avis, des conséquences relativement directes de l’optimisation de l’engagement », suggère encore le chercheur. Cela explique pourquoi les réformes sont difficiles et pourquoi l’amélioration de la transparence des algorithmes, de la modération, voire un meilleur contrôle par l’utilisateur de ce qu’il voit (comme le proposait Gobo mis en place par Ethan Zuckerman), ne sont pas des solutions magiques (même si elles sont nécessaires).

      Les données comportementales, celles relatives à l’engagement passé, sont la matière première essentielle des moteurs de recommandations. Les systèmes privilégient la rétroaction implicite sur l’explicite, à la manière de YouTube qui a privilégié le temps passé sur les rétroactions explicites (les likes). Sur TikTok, il n’y a même plus de sélection, il suffit de swipper.

      Le problème du feedback implicite est qu’il repose sur nos réactions inconscientes, automatiques et émotionnelles, sur nos pulsions, qui vont avoir tendance à privilégier une vidéo débile sur un contenu expert.

      Pour les créateurs de contenu, cette optimisation par l’engagement favorise la variance et l’imprévisibilité, ce qui a pour conséquence d’alimenter une surproduction pour compenser cette variabilité. La production d’un grand volume de contenu, même s’il est de moindre qualité, peut augmenter les chances qu’au moins quelques-uns deviennent viraux chaque mois afin de lisser le flux de revenus. Le fait de récompenser les contenus viraux se fait au détriment de tous les autres types de contenus (d’où certainement le regain d’attraits pour des plateformes non algorithmiques, comme Substack voire dans une autre mesure, Mastodon).

      Au niveau de la société, toutes les institutions sont impactées par les plateformes algorithmiques, du tourisme à la science, du journalisme à la santé publique. Or, chaque institution à des valeurs, comme l’équité dans le journalisme, la précision en science, la qualité dans nombre de domaines. Les algorithmes des médias sociaux, eux, ne tiennent pas compte de ces valeurs et de ces signaux de qualité. « Ils récompensent des facteurs sans rapport, sur la base d’une logique qui a du sens pour le divertissement, mais pas pour d’autres domaines ». Pour Narayan, les plateformes de médias sociaux « affaiblissent les institutions en sapant leurs normes de qualité et en les rendant moins dignes de confiance ». C’est particulièrement actif dans le domaine de l’information, mais cela va bien au-delà, même si ce n’est pas au même degré. TikTok peut sembler ne pas représenter une menace pour la science, mais nous savons que les plateformes commencent par être un divertissement avant de s’étendre à d’autres sphères du discours, à l’image d’Instagram devenant un outil de communication politique ou de Twitter, où un tiers des tweets sont politiques.

      La science des données en ses limites

      Les plateformes sont bien conscientes de leurs limites, pourtant, elles n’ont pas fait beaucoup d’efforts pour résoudre les problèmes. Ces efforts restent occasionnels et rudimentaires, à l’image de la tentative de Facebook de comprendre la valeur des messages diffusés. La raison est bien sûr que ces aménagements nuisent aux résultats financiers de l’entreprise. « Le recours à la prise de décision subconsciente et automatique est tout à fait intentionnelle ; c’est ce qu’on appelle la « conception sans friction ». Le fait que les utilisateurs puissent parfois faire preuve de discernement et résister à leurs impulsions est vu comme un problème à résoudre. »

      Pourtant, ces dernières années, la réputation des plateformes n’est plus au beau fixe. Narayan estime qu’il y a une autre limite. « La plupart des inconvénients de l’optimisation de l’engagement ne sont pas visibles dans le cadre dominant de la conception des plateformes, qui accorde une importance considérable à la recherche d’une relation quantitative et causale entre les changements apportés à l’algorithme et leurs effets. »
      Si on observe les raisons qui poussent l’utilisateur à quitter une plateforme, la principale est qu’il ne parvient pas à obtenir des recommandations suffisamment intéressantes. Or, c’est exactement ce que l’optimisation par l’engagement est censée éviter. Les entreprises parviennent très bien à optimiser des recommandations qui plaisent à l’utilisateur sur l’instant, mais pas celles qui lui font dire, une fois qu’il a fermé l’application, que ce qu’il y a trouvé l’a enrichi. Elles n’arrivent pas à calculer et à intégrer le bénéfice à long terme, même si elles restent très attentives aux taux de rétention ou aux taux de désabonnement. Pour y parvenir, il faudrait faire de l’A/B testing au long cours. Les plateformes savent le faire. Facebook a constaté que le fait d’afficher plus de notifications augmentait l’engagement à court terme mais avait un effet inverse sur un an. Reste que ce regard sur leurs effets à longs termes ne semble pas être une priorité par rapport à leurs effets de plus courts termes.

      Une autre limite repose sur l’individualisme des plateformes. Si les applications sociales sont, globalement, assez satisfaisantes pour chacun, ni les utilisateurs ni les plateformes n’intériorisent leurs préjudices collectifs. Ces systèmes reposent sur l’hypothèse que le comportement de chaque utilisateur est indépendant et que l’effet sur la société (l’atteinte à la démocratie par exemple…) est très difficile à évaluer. Narayan le résume dans un tableau parlant, où la valeur sur la société n’a pas de métrique associée.

      Graphique montrant les 4 niveaux sur lesquels les algorithmes des plateformes peuvent avoir des effets. CTR : Click Through Rate (taux de clic). MSI : Meaningful Social Interactions, interactions sociales significatives, la métrique d'engagement de Facebook. DAU : Daily active users, utilisateurs actifs quotidiens.

      Tableau montrant les 4 niveaux sur lesquels les algorithmes des plateformes peuvent avoir des effets. CTR : Click Through Rate (taux de clic). MSI : Meaningful Social Interactions, interactions sociales significatives, la métrique d’engagement de Facebook. DAU : Daily active users, utilisateurs actifs quotidiens.

      Les algorithmes ne sont pas l’ennemi (enfin si, quand même un peu)

      Pour répondre à ces problèmes, beaucoup suggèrent de revenir à des flux plus chronologiques ou a des suivis plus stricts des personnes auxquelles nous sommes abonnés. Pas sûr que cela soit une solution très efficace pour gérer les volumes de flux, estime le chercheur. Les algorithmes de recommandation ont été la réponse à la surcharge d’information, rappelle-t-il : « Il y a beaucoup plus d’informations en ligne en rapport avec les intérêts d’une personne qu’elle n’en a de temps disponible. » Les algorithmes de classement sont devenus une nécessité pratique. Même dans le cas d’un réseau longtemps basé sur l’abonnement, comme Instagram : en 2016, la société indiquait que les utilisateurs manquaient 70 % des publications auxquelles ils étaient abonnés. Aujourd’hui, Instagram compte 5 fois plus d’utilisateurs. En fait, les plateformes subissent d’énormes pressions pour que les algorithmes soient encore plus au cœur de leur fonctionnement que le contraire. Et les systèmes de recommandation font leur entrée dans d’autres domaines, comme l’éducation (avec Coursera) ou la finance (avec Robinhood).

      Pour Narayan, l’enjeu reste de mieux comprendre ce qu’ils font. Pour cela, nous devons continuer d’exiger d’eux bien plus de transparence qu’ils n’en livrent. Pas plus que dans le monde des moteurs de recherche nous ne reviendrons aux annuaires, nous ne reviendrons pas aux flux chronologiques dans les moteurs de recommandation. Nous avons encore des efforts à faire pour contrecarrer activement les modèles les plus nuisibles des recommandations. L’enjeu, conclut-il, est peut-être d’esquisser plus d’alternatives que nous n’en disposons, comme par exemple, d’imaginer des algorithmes de recommandations qui n’optimisent pas l’engagement, ou pas seulement. Cela nécessite certainement aussi d’imaginer des réseaux sociaux avec des modèles économiques différents. Un autre internet. Les algorithmes ne sont peut-être pas l’ennemi comme il le dit, mais ceux qui ne sont ni transparents, ni loyaux, et qui optimisent leurs effets en dehors de toute autre considération, ne sont pas nos amis non plus !

      Ouvrir le code des algorithmes ? — Oui, mais… (1/2)

      15 mai 2023 à 05:42

      Voici le premier des deux articles qu’Hubert Guillaud nous fait le plaisir de partager. Sans s’arrêter à la surface de l’actualité, il aborde la transparence du code des algorithmes, qui entraîne un grand nombre de questions épineuses sur lesquelles il s’est documenté pour nous faire part de ses réflexions.


      Dans le code source de l’amplification algorithmique : publier le code ne suffit pas !

      par Hubert GUILLAUD

      Le 31 mars, Twitter a publié une partie du code source qui alimente son fil d’actualité, comme l’a expliqué l’équipe elle-même dans un billet. Ces dizaines de milliers de lignes de code contiennent pourtant peu d’informations nouvelles. Depuis le rachat de l’oiseau bleu par Musk, Twitter a beaucoup changé et ne cesse de se modifier sous les yeux des utilisateurs. La publication du code source d’un système, même partiel, qui a longtemps été l’un des grands enjeux de la transparence, montre ses limites.

      un jeune homme montre une ligne d'une explication de l'encodage des algorithmes au rétroprojecteur

      « LZW encoding and decoding algorithms overlapped » par nayukim, licence CC BY 2.0.

      Publier le code ne suffit pas

      Dans un excellent billet de blog, le chercheur Arvind Narayan (sa newsletter mérite également de s’y abonner) explique ce qu’il faut en retenir. Comme ailleurs, les règles ne sont pas claires. Les algorithmes de recommandation utilisent l’apprentissage automatique ce qui fait que la manière de classer les tweets n’est pas directement spécifiée dans le code, mais apprise par des modèles à partir de données de Twitter sur la manière dont les utilisateurs ont réagi aux tweets dans le passé. Twitter ne divulgue ni ces modèles ni les données d’apprentissages, ce qui signifie qu’il n’est pas possible d’exécuter ces modèles. Le code ne permet pas de comprendre pourquoi un tweet est ou n’est pas recommandé à un utilisateur, ni pourquoi certains contenus sont amplifiés ou invisibilisés. C’est toute la limite de la transparence. Ce que résume très bien le journaliste Nicolas Kayser-Bril pour AlgorithmWatch (pertinemment traduit par le framablog) : « Vous ne pouvez pas auditer un code seulement en le lisant. Il faut l’exécuter sur un ordinateur. »

      « Ce que Twitter a publié, c’est le code utilisé pour entraîner les modèles, à partir de données appropriées », explique Narayan, ce qui ne permet pas de comprendre les propagations, notamment du fait de l’absence des données. De plus, les modèles pour détecter les tweets qui violent les politiques de Twitter et qui leur donnent des notes de confiance en fonction de ces politiques sont également absentes (afin que les usagers ne puissent pas déjouer le système, comme nous le répètent trop de systèmes rétifs à l’ouverture). Or, ces classements ont des effets de rétrogradation très importants sur la visibilité de ces tweets, sans qu’on puisse savoir quels tweets sont ainsi classés, selon quelles méthodes et surtout avec quelles limites.

      La chose la plus importante que Twitter a révélée en publiant son code, c’est la formule qui spécifie comment les différents types d’engagement (likes, retweets, réponses, etc.) sont pondérés les uns par rapport aux autres… Mais cette formule n’est pas vraiment dans le code. Elle est publiée séparément, notamment parce qu’elle n’est pas statique, mais qu’elle doit être modifiée fréquemment.

      Sans surprise, le code révèle ainsi que les abonnés à Twitter Blue, ceux qui payent leur abonnement, bénéficient d’une augmentation de leur portée (ce qui n’est pas sans poser un problème de fond, comme le remarque pertinemment sur Twitter, Guillaume Champeau, car cette préférence pourrait mettre ces utilisateurs dans la position d’être annonceurs, puisqu’ils payent pour être mis en avant, sans que l’interface ne le signale clairement, autrement que par la pastille bleue). Reste que le code n’est pas clair sur l’ampleur de cette accélération. Les notes attribuées aux tweets des abonnés Blue sont multipliées par 2 ou 4, mais cela ne signifie pas que leur portée est pareillement multipliée. « Une fois encore, le code ne nous dit pas le genre de choses que nous voudrions savoir », explique Narayan.

      Reste que la publication de la formule d’engagement est un événement majeur. Elle permet de saisir le poids des réactions sur un tweet. On constate que la réponse à tweet est bien plus forte que le like ou que le RT. Et la re-réponse de l’utilisateur originel est prédominante, puisque c’est le signe d’une conversation forte. À l’inverse, le fait qu’un lecteur bloque, mute ou se désabonne d’un utilisateur suite à un tweet est un facteur extrêmement pénalisant pour la propagation du tweet.

      Tableau du poids attribué en fonction des types d’engagement possibles sur Twitter.

      Ces quelques indications permettent néanmoins d’apprendre certaines choses. Par exemple que Twitter ne semble pas utiliser de prédictions d’actions implicites (comme lorsqu’on s’arrête de faire défiler son fil), ce qui permet d’éviter l’amplification du contenu trash que les gens ne peuvent s’empêcher de regarder, même s’ils ne s’y engagent pas. La formule nous apprend que les retours négatifs ont un poids très élevé, ce qui permet d’améliorer son flux en montrant à l’algorithme ce dont vous ne voulez pas – même si les plateformes devraient permettre des contrôles plus explicites pour les utilisateurs. Enfin, ces poids ont des valeurs souvent précises, ce qui signifie que ce tableau n’est valable qu’à l’instant de la publication et qu’il ne sera utile que si Twitter le met à jour.

      Les algorithmes de recommandation qui optimisent l’engagement suivent des modèles assez proches. La publication du code n’est donc pas très révélatrice. Trois éléments sont surtout importants, insiste le chercheur :

      « Le premier est la manière dont les algorithmes sont configurés : les signaux utilisés comme entrée, la manière dont l’engagement est défini, etc. Ces informations doivent être considérées comme un élément essentiel de la transparence et peuvent être publiées indépendamment du code. La seconde concerne les modèles d’apprentissage automatique qui, malheureusement, ne peuvent généralement pas être divulgués pour des raisons de protection de la vie privée. Le troisième est la boucle de rétroaction entre les utilisateurs et l’algorithme ».

      Autant d’éléments qui demandent des recherches, des expériences et du temps pour en comprendre les limites.

      Si la transparence n’est pas une fin en soi, elle reste un moyen de construire un meilleur internet en améliorant la responsabilité envers les utilisateurs, rappelle l’ingénieur Gabriel Nicholas pour le Center for Democracy & Technology. Il souligne néanmoins que la publication d’une partie du code source de Twitter ne contrebalance pas la fermeture du Consortium de recherche sur la modération, ni celle des rapports de transparence relatives aux demandes de retraits des autorités ni celle de l’accès à son API pour chercheurs, devenue extrêmement coûteuse.

      « Twitter n’a pas exactement ’ouvert son algorithme’ comme certains l’ont dit. Le code est lourdement expurgé et il manque plusieurs fichiers de configuration, ce qui signifie qu’il est pratiquement impossible pour un chercheur indépendant d’exécuter l’algorithme sur des échantillons ou de le tester d’une autre manière. Le code publié n’est en outre qu’un instantané du système de recommandation de Twitter et n’est pas réellement connecté au code en cours d’exécution sur ses serveurs. Cela signifie que Twitter peut apporter des modifications à son code de production et ne pas l’inclure dans son référentiel public, ou apporter des modifications au référentiel public qui ne sont pas reflétées dans son code de production. »

      L’algorithme publié par Twitter est principalement son système de recommandation. Il se décompose en 3 parties, explique encore Nicholas :

      • Un système de génération de contenus candidats. Ici, Twitter sélectionne 1500 tweets susceptibles d’intéresser un utilisateur en prédisant la probabilité que l’utilisateur s’engage dans certaines actions pour chaque tweet (c’est-à-dire qu’il RT ou like par exemple).
      • Un système de classement. Une fois que les 1 500 tweets susceptibles d’être servis sont sélectionnés, ils sont notés en fonction de la probabilité des actions d’engagement, certaines actions étant pondérées plus fortement que d’autres. Les tweets les mieux notés apparaîtront généralement plus haut dans le fil d’actualité de l’utilisateur.
      • Un système de filtrage. Les tweets ne sont pas classés strictement en fonction de leur score. Des heuristiques et des filtres sont appliqués pour, par exemple, éviter d’afficher plusieurs tweets du même auteur ou pour déclasser les tweets d’auteurs que l’utilisateur a déjà signalés pour violation de la politique du site.

      Le score final est calculé en additionnant la probabilité de chaque action multipliée par son poids (en prenant certainement en compte la rareté ou la fréquence d’action, le fait de répondre à un tweet étant moins fréquent que de lui attribuer un like). Mais Twitter n’a pas publié la probabilité de base de chacune de ces actions ce qui rend impossible de déterminer l’importance de chacune d’elles dans les recommandations qui lui sont servies.

      Twitter a également révélé quelques informations sur les autres facteurs qu’il prend en compte en plus du classement total d’un tweet. Par exemple, en équilibrant les recommandations des personnes que vous suivez avec celles que vous ne suivez pas, en évitant de recommander les tweets d’un même auteur ou en donnant une forte prime aux utilisateurs payants de Twitter Blue.

      Il y a aussi beaucoup de code que Twitter n’a pas partagé. Il n’a pas divulgué beaucoup d’informations sur l’algorithme de génération des tweets candidats au classement ni sur ses paramètres et ses données d’entraînement. Twitter n’a pas non plus explicitement partagé ses algorithmes de confiance et de sécurité pour détecter des éléments tels que les abus, la toxicité ou les contenus pour adultes, afin d’empêcher les gens de trouver des solutions de contournement, bien qu’il ait publié certaines des catégories de contenu qu’il signale.

       

      graphe des relations entre comptes twitter, tr-s nombreux traits bleus entre minuscules avatars de comptes, le tout donne une impression d'inextricable comlexité

      « 20120212-NodeXL-Twitter-socbiz network graph » par Marc_Smith ; licence CC BY 2.0.

       

      Pour Gabriel Nicholas, la transparence de Twitter serait plus utile si Twitter avait maintenu ouverts ses outils aux chercheurs. Ce n’est pas le cas.

      Il y a plein d’autres points que l’ouverture de l’algorithme de Twitter a documentés. Par exemple, l’existence d’un Tweepcred, un score qui classe les utilisateurs et qui permet de voir ses publications boostées si votre score est bon, comme l’expliquait Numerama. Ou encore le fait que chaque compte est clustérisé dans un groupe aux profils similaires dans lequel les tweets sont d’abord diffusés avant d’être envoyés plus largement s’ils rencontrent un premier succès… De même, il semblerait qu’il y ait certaines catégories d’utilisateurs spéciaux (dont une catégorie relative à Elon Musk) mais qui servent peut-être plus certaines statistiques qu’à doper la portée de certains comptes comme on l’a entendu (même s’il semble bien y avoir une catégorie VIP sur Twitter – comme il y a sur Facebook un statut d’exception à la modération)…

      Ouvrir, mais ouvrir quoi ?

      En conclusion de son article, Narayan pointe vers un très intéressant article qui dresse une liste d’options de transparence pour ceux qui produisent des systèmes de recommandation, publiée par les chercheurs Priyanjana Bengani, Jonathan Stray et Luke Thorburn. Ils rappellent que les plateformes ont mis en place des mesures de transparence, allant de publications statistiques à des interfaces de programmation, en passant par des outils et des ensembles de données protégés. Mais ces mesures, très techniques, restent insuffisantes pour comprendre les algorithmes de recommandation et leur influence sur la société. Une grande partie de cette résistance à la transparence ne tient pas tant aux risques commerciaux qui pourraient être révélés qu’à éviter l’embarras d’avoir à se justifier de choix qui ne le sont pas toujours. D’une manière très pragmatique, les trois chercheurs proposent un menu d’actions pour améliorer la transparence et l’explicabilité des systèmes.

      Documenter
      L’un des premiers outils, et le plus simple, reste la documentation qui consiste à expliquer en termes clairs – selon différentes échelles et niveaux, me semble-t-il – ce qui est activé par une fonction. Pour les utilisateurs, c’est le cas du bouton « Pourquoi je vois ce message » de Facebook ou du panneau « Fréquemment achetés ensemble » d’Amazon. L’idée ici est de fourbir un « compte rendu honnête ». Pour les plus évoluées de ces interfaces, elles devraient permettre non seulement d’informer et d’expliquer pourquoi on nous recommande ce contenu, mais également, permettre de rectifier et mieux contrôler son expérience en ligne, c’est-à-dire d’avoir des leviers d’actions sur la recommandation.

      Une autre forme de documentation est celle sur le fonctionnement général du système et ses décisions de classement, à l’image des rapports de transparence sur les questions de sécurité et d’intégrité que doivent produire la plupart des plateformes (voir celui de Google, par exemple). Cette documentation devrait intégrer des informations sur la conception des algorithmes, ce que les plateformes priorisent, minimisent et retirent, si elles donnent des priorités et à qui, tenir le journal des modifications, des nouvelles fonctionnalités, des changements de politiques. La documentation doit apporter une information solide et loyale, mais elle reste souvent insuffisante.

      Les données
      Pour comprendre ce qu’il se passe sur une plateforme, il est nécessaire d’obtenir des données. Twitter ou Facebook en ont publié (accessibles sous condition de recherche, ici pour Twitter,  pour Facebook). Une autre approche consiste à ouvrir des interfaces de programmation, à l’image de CrowdTangle de Facebook ou de l’API de Twitter. Depuis le scandale Cambridge Analytica, l’accès aux données est souvent devenu plus difficile, la protection de la vie privée servant parfois d’excuse aux plateformes pour éviter d’avoir à divulguer leurs pratiques. L’accès aux données, même pour la recherche, s’est beaucoup refermé ces dernières années. Les plateformes publient moins de données et CrowdTangle propose des accès toujours plus sélectifs. Chercheurs et journalistes ont été contraints de développer leurs propres outils, comme des extensions de navigateurs permettant aux utilisateurs de faire don de leurs données (à l’image du Citizen Browser de The Markup) ou des simulations automatisées (à l’image de l’analyse robotique de TikTok produite par le Wall Street Journal), que les plateformes ont plutôt eu tendance à bloquer en déniant les résultats obtenus sous prétexte d’incomplétude – ce qui est justement le problème que l’ouverture de données cherche à adresser.

      Le code
      L’ouverture du code des systèmes de recommandation pourrait être utile, mais elle ne suffit pas, d’abord parce que dans les systèmes de recommandation, il n’y a pas un algorithme unique. Nous sommes face à des ensembles complexes et enchevêtrés où « différents modèles d’apprentissage automatique formés sur différents ensembles de données remplissent diverses fonctions ». Même le classement ou le modèle de valeur pour déterminer le score n’explique pas tout. Ainsi, « le poids élevé sur un contenu d’un type particulier ne signifie pas nécessairement qu’un utilisateur le verra beaucoup, car l’exposition dépend de nombreux autres facteurs, notamment la quantité de ce type de contenu produite par d’autres utilisateurs. »

      Peu de plateformes offrent une grande transparence au niveau du code source. Reddit a publié en 2008 son code source, mais a cessé de le mettre à jour. En l’absence de mesures de transparence, comprendre les systèmes nécessite d’écluser le travail des journalistes, des militants et des chercheurs pour tenter d’en obtenir un aperçu toujours incomplet.

      La recherche
      Les plateformes mènent en permanence une multitude de projets de recherche internes voire externes et testent différentes approches pour leurs systèmes de recommandation. Certains des résultats finissent par être accessibles dans des revues ou des articles soumis à des conférences ou via des fuites d’informations. Quelques efforts de partenariats entre la recherche et les plateformes ont été faits, qui restent embryonnaires et ne visent pas la transparence, mais qui offrent la possibilité à des chercheurs de mener des expériences et donc permettent de répondre à des questions de nature causale, qui ne peuvent pas être résolues uniquement par l’accès aux données.

      Enfin, les audits peuvent être considérés comme un type particulier de recherche. À l’heure actuelle, il n’existe pas de bons exemples d’audits de systèmes de recommandation menés à bien. Reste que le Digital Service Act (DSA) européen autorise les audits externes, qu’ils soient lancés par l’entreprise ou dans le cadre d’une surveillance réglementaire, avec des accès élargis par rapport à ceux autorisés pour l’instant. Le DSA exige des évaluations sur le public mineur, sur la sécurité, la santé, les processus électoraux… mais ne précise ni comment ces audits doivent être réalisés ni selon quelles normes. Des méthodes spécifiques ont été avancées pour contrôler la discrimination, la polarisation et l’amplification dans les systèmes de recommandation.

      En principe, on pourrait évaluer n’importe quel préjudice par des audits. Ceux-ci visent à vérifier si « la conception et le fonctionnement d’un système de recommandation respectent les meilleures pratiques et si l’entreprise fait ce qu’elle dit qu’elle fait. S’ils sont bien réalisés, les audits pourraient offrir la plupart des avantages d’un code source ouvert et d’un accès aux données des utilisateurs, sans qu’il soit nécessaire de les rendre publics. » Reste qu’il est peu probable que les audits imposés par la surveillance réglementaire couvrent tous les domaines qui préoccupent ceux qui sont confrontés aux effets des outils de recommandations.

      Autres moteurs de transparence : la gouvernance et les calculs

      Les chercheurs concluent en soulignant qu’il existe donc une gamme d’outils à disposition, mais qu’elle manque de règles et de bonnes pratiques partagées. Face aux obligations de transparence et de contrôles qui arrivent (pour les plus gros acteurs d’abord, mais parions que demain, elles concerneront bien d’autres acteurs), les entreprises peinent à se mettre en ordre de marche pour proposer des outillages et des productions dans ces différents secteurs qui leur permettent à la fois de se mettre en conformité et de faire progresser leurs outils. Ainsi, par exemple, dans le domaine des données, documenter les jeux et les champs de données, à défaut de publier les jeux de données, pourrait déjà permettre un net progrès. Dans le domaine de la documentation, les cartes et les registres permettent également d’expliquer ce que les calculs opèrent (en documentant par exemple leurs marges d’erreurs).

      Reste que l’approche très technique que mobilisent les chercheurs oublie quelques leviers supplémentaires. Je pense notamment aux conseils de surveillance, aux conseils éthiques, aux conseils scientifiques, en passant par les organismes de contrôle indépendants, aux comités participatifs ou consultatifs d’utilisateurs… à tous les outils institutionnels, participatifs ou militants qui permettent de remettre les parties prenantes dans le contrôle des décisions que les systèmes prennent. Dans la lutte contre l’opacité des décisions, tous les leviers de gouvernance sont bons à prendre. Et ceux-ci sont de très bons moyens pour faire pression sur la transparence, comme l’expliquait très pertinemment David Robinson dans son livre Voices in the Code.

      Un autre levier me semble absent de nombre de propositions… Alors qu’on ne parle que de rendre les calculs transparents, ceux-ci sont toujours absents des discussions. Or, les règles de traitements sont souvent particulièrement efficaces pour améliorer les choses. Il me semble qu’on peut esquisser au moins deux moyens pour rendre les calculs plus transparents et responsables : la minimisation et les interdictions.

      La minimisation vise à rappeler qu’un bon calcul ne démultiplie pas nécessairement les critères pris en compte. Quand on regarde les calculs, bien souvent, on est stupéfait d’y trouver des critères qui ne devraient pas être pris en compte, qui n’ont pas de fondements autres que d’être rendus possibles par le calcul. Du risque de récidive au score de risque de fraude à la CAF, en passant par l’attribution de greffes ou aux systèmes de calculs des droits sociaux, on trouve toujours des éléments qui apprécient le calcul alors qu’ils n’ont aucune justification ou pertinence autres que d’être rendu possibles par le calcul ou les données. C’est le cas par exemple du questionnaire qui alimente le calcul de risque de récidive aux Etats-Unis, qui repose sur beaucoup de questions problématiques. Ou de celui du risque de fraude à la CAF, dont les anciennes versions au moins (on ne sait pas pour la plus récente) prenaient en compte par exemple le nombre de fois où les bénéficiaires se connectaient à leur espace en ligne (sur cette question, suivez les travaux de la Quadrature et de Changer de Cap). La minimisation, c’est aussi, comme l’explique l’ex-chercheur de chez Google, El Mahdi El Mhamdi, dans une excellente interview, limiter le nombre de paramètres pris en compte par les calculs et limiter l’hétérogénéité des données.

      L’interdiction, elle, vise à déterminer que certains croisements ne devraient pas être autorisés, par exemple, la prise en compte des primes dans les logiciels qui calculent les données d’agenda du personnel, comme semble le faire le logiciel Orion mis en place par la Sncf, ou Isabel, le logiciel RH que Bol.com utilise pour gérer la main-d’œuvre étrangère dans ses entrepôts de logistique néerlandais. Ou encore, comme le soulignait Narayan, le temps passé sur les contenus sur un réseau social par exemple, ou l’analyse de l’émotion dans les systèmes de recrutement (et ailleurs, tant cette technologie pose problème). A l’heure où tous les calculs sont possibles, il va être pertinent de rappeler que selon les secteurs, certains croisements doivent rester interdits parce qu’ils sont trop à risque pour être mobilisés dans le calcul ou que certains calculs ne peuvent être autorisés.

      Priyanjana Bengani, Jonathan Stray et Luke Thorburn, pour en revenir à eux, notent enfin que l’exigence de transparence reste formulée en termes très généraux par les autorités réglementaires. Dans des systèmes vastes et complexes, il est difficile de savoir ce que doit signifier réellement la transparence. Pour ma part, je milite pour une transparence “projective”, active, qui permette de se projeter dans les explications, c’est-à-dire de saisir ses effets et dépasser le simple caractère narratif d’une explication loyale, mais bien de pouvoir agir et reprendre la main sur les calculs.

      Coincés dans les boucles de l’amplification

      Plus récemment, les trois mêmes chercheurs, passé leur article séminal, ont continué à documenter leur réflexion. Ainsi, dans « Rendre l’amplification mesurable », ils expliquent que l’amplification est souvent bien mal définie (notamment juridiquement, ils ont consacré un article entier à la question)… mais proposent d’améliorer les propriétés permettant de la définir. Ils rappellent d’abord que l’amplification est relative, elle consiste à introduire un changement par rapport à un calcul alternatif ou précédent qui va avoir un effet sans que le comportement de l’utilisateur n’ait été, lui, modifié.

      L’amplification agit d’abord sur un contenu et nécessite de répondre à la question de savoir ce qui a été amplifié. Mais même dire que les fake news sont amplifiées n’est pas si simple, à défaut d’avoir une définition précise et commune des fake news qui nécessite de comprendre les classifications opérées. Ensuite, l’amplification se mesure par rapport à un point de référence précédent qui est rarement précisé. Enfin, quand l’amplification atteint son but, elle produit un résultat qui se voit dans les résultats liés à l’engagement (le nombre de fois où le contenu a été apprécié ou partagé) mais surtout ceux liés aux impressions (le nombre de fois où le contenu a été vu). Enfin, il faut saisir ce qui relève de l’algorithme et du comportement de l’utilisateur. Si les messages d’un parti politique reçoivent un nombre relativement important d’impressions, est-ce parce que l’algorithme est biaisé en faveur du parti politique en question ou parce que les gens ont tendance à s’engager davantage avec le contenu de ce parti ? Le problème, bien sûr, est de distinguer l’un de l’autre d’une manière claire, alors qu’une modification de l’algorithme entraîne également une modification du comportement de l’utilisateur. En fait, cela ne signifie pas que c’est impossible, mais que c’est difficile, expliquent les chercheurs. Cela nécessite un système d’évaluation de l’efficacité de l’algorithme et beaucoup de tests A/B pour comparer les effets des évolutions du calcul. Enfin, estiment-ils, il faut regarder les effets à long terme, car les changements dans le calcul prennent du temps à se diffuser et impliquent en retour des réactions des utilisateurs à ces changements, qui s’adaptent et réagissent aux transformations.

      Dans un autre article, ils reviennent sur la difficulté à caractériser l’effet bulle de filtre des médias sociaux, notamment du fait de conceptions élastiques du phénomène. S’il y a bien des boucles de rétroaction, leur ampleur est très discutée et dépend beaucoup du contexte. Ils en appellent là encore à des mesures plus précises des phénomènes. Certes, ce que l’on fait sur les réseaux sociaux influe sur ce qui est montré, mais il est plus difficile de démontrer que ce qui est montré affecte ce que l’on pense. Il est probable que les effets médiatiques des recommandations soient faibles pour la plupart des gens et la plupart du temps, mais beaucoup plus importants pour quelques individus ou sous-groupes relativement à certaines questions ou enjeux. De plus, il est probable que changer nos façons de penser ne résulte pas d’une exposition ponctuelle, mais d’une exposition à des récits et des thèmes récurrents, cumulatifs et à long terme. Enfin, si les gens ont tendance à s’intéresser davantage à l’information si elle est cohérente avec leur pensée existante, il reste à savoir si ce que l’on pense affecte ce à quoi l’on s’engage. Mais cela est plus difficile à mesurer car cela suppose de savoir ce que les gens pensent et pas seulement constater leurs comportements en ligne. En général, les études montrent plutôt que l’exposition sélective a peu d’effets. Il est probable cependant que là encore, l’exposition sélective soit faible en moyenne, mais plus forte pour certains sous-groupes de personnes en fonction des contextes, des types d’informations.

      Bref, là encore, les effets des réseaux sociaux sont difficiles à percer.

      Pour comprendre les effets de l’amplification algorithmique, peut-être faut-il aller plus avant dans la compréhension que nous avons des évolutions de celle-ci, afin de mieux saisir ce que nous voulons vraiment savoir. C’est ce que nous tenterons de faire dans la suite de cet article…

      ❌
      ❌