Syndiquer le contenu
Mis à jour : il y a 21 heures 6 min

Multiseat avec des pilotes libres, non libres et systemd

5 juillet, 2017 - 13:17

Ou comment avoir deux utilisateurs simultanés sur un seul PC, avec deux écrans, deux clavier, deux souris et deux cartes graphiques (et deux chaises !), facilement et pour pas cher.

    Sommaire

    J’ai deux cartes graphiques : une NVIDIA GTX 750 Ti et une Radeon FirePro V3700. Problème : je veux utiliser les pilotes non libres NVIDIA (pour des meilleures performances). C‘était impossible jusqu’à la sortie (et mise à jour) de Fedora 25.
    Cette nouvelle version utilise la fonctionnalité GLVND qui permet de faire cohabiter deux pilotes OpenGL. Mes deux cartes graphiques peuvent désormais cohabiter sans avoir à utiliser uniquement les pilotes Mesa 3D (nouveau et radeon) pour les deux processeurs graphiques.

    Prérequis

    Au fil de vos essais, vous vous retrouverez peut‐être avec un système incapable de lancer une session graphique, ou même l’accès à la console sera impossible (peu probable). Je vous conseille d’installer un accès à distance SSH avant de vous lancer. Testez‐le avant et, si vous n’avez pas de deuxième ordinateur, des clients SSH sont disponibles pour les appareils mobiles sous Android et iOS.

    Fedora 25 utilise systemd comme système d’initialisation et implémente logind. Ce composant permet de gérer les sessions, les utilisateur connectés et les sièges (seat). Pour configurer plusieurs « sièges » sur un seul système, on peut utiliser logind qui automatise tout au lieu d’avoir à éditer à la main un fichier Xorg.conf !
    J’ai un système multi‐seat fonctionnel sous Fedora 25, cependant Debian 9 Stretch est peut‐être compilé avec GLVND. Si vous avez deux cartes graphiques identiques, vous pouvez utiliser n’importe quelles distributions pour peu qu’elle fonctionne avec systemd.

    Matériel requis

    Vous pouvez utiliser n’importe quel périphérique USB ou PS/2, mais essayez d’avoir une configuration logique (brancher l’écran avec la plus grande définition sur la carte graphique la plus puissante si vous souhaitez faire du jeu vidéo).
    Pour une expérience optimale, il est préférable d’avoir une carte son par utilisateur (et un ou deux casques audio pour éviter la cacophonie), sinon il est possible de configurer pulseaudio pour deux utilisateurs (non testé). Vous pouvez utiliser les sorties son HDMI de votre écran, ce, même si cet écran est utilisé pour un autre poste.
    Il est conseillé d’utiliser des périphériques USB de marques et modèles différents, comme ça leurs identificateurs USB seront différents (apparemment les périphériques USB ont tendance à s’échanger leur place).

    Configuration

    C’est très facile, mais après, bonne chance pour vous y retrouver avec tous les câbles ! Je vous conseille aussi de brancher les écrans aux cartes graphiques dès le début.

    Logiciels

    Tout d’abord, trouvez quel gestionnaire de sessions (desktop manager) vous utilisez (c’est ce qui crée l’écran de connexion). Si c’est GDM (pour GNOME), SDDM (pour Plasma 5), il va falloir changer, car ceux‐ci n’afficheront un écran de connexion que sur le premier siège. Je conseille LightDM, bien que XDM soit compatible multi‐seat :

    • installez LightDM : # dnf install lightdm ;
    • installez le thème de votre choix (greeter) : # dnf install slick-greeter (ou lightdm-gtk, lightdm-kde…) ;
    • désinstallez votre gestionnaire de sessions : # dnf remove gdm ;
    • redémarrez ou passez en console (Ctrl + Alt + F2) et relancez les services : # systemctl stop gdm, puis # systemclt start lightdm.
    Matériel Identifiez

    Ensuite, listez votre matériel, qui est par défaut entièrement alloué au siège initial seat0 : loginctl seat-status. Exemple (je liste deux sièges, car j’ai déjà assigné mon matériel ; si vous commencez vous n'aurez que seat0) :

    $ loginctl seat-status seat0 seat1--no-pager
    seat0
    Sessions: *2
    Devices:
    ├─/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
    │ input:input2 "Power Button"
    ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input8
    │ input:input8 "Video Bus"
    ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
    │ input:input0 "Power Button"
    ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1
    │ input:input1 "Sleep Button"
    ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card0
    │ [MASTER] drm:card0
    │ ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1
    │ │ [MASTER] drm:card0-HDMI-A-1
    │ └─/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-VGA-1
    │ [MASTER] drm:card0-VGA-1
    ├─/sys/devices/pci0000:00/0000:00:02.0/drm/renderD128
    │ drm:renderD128
    ├─/sys/devices/pci0000:00/0000:00:02.0/graphics/fb2
    │ [MASTER] graphics:fb2 "inteldrmfb"
    ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0
    │ sound:card0 "HDMI"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input14
    │ │ input:input14 "HDA Intel HDMI HDMI/DP,pcm=3"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input15
    │ │ input:input15 "HDA Intel HDMI HDMI/DP,pcm=7"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input16
    │ │ input:input16 "HDA Intel HDMI HDMI/DP,pcm=8"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input17
    │ │ input:input17 "HDA Intel HDMI HDMI/DP,pcm=9"
    │ └─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input18
    │ input:input18 "HDA Intel HDMI HDMI/DP,pcm=10"
    ├─/sys/devices/pci0000:00/0000:00:14.0/usb3
    │ usb:usb3
    │ ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/0003:046D:C05A.0002/input/input5
    │ │ input:input5 "Logitech USB Optical Mouse"
    │ └─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.1/0003:0603:00F2.0004/input/input7
    │ input:input7 "NOVATEK USB Keyboard"
    ├─/sys/devices/pci0000:00/0000:00:14.0/usb4
    │ usb:usb4
    ├─/sys/devices/pci0000:00/0000:00:1a.0/usb1
    │ usb:usb1
    │ └─/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1
    │ usb:1-1
    ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1
    │ sound:card1 "PCH"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input10
    │ │ input:input10 "HDA Intel PCH Rear Mic"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input11
    │ │ input:input11 "HDA Intel PCH Line"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input12
    │ │ input:input12 "HDA Intel PCH Line Out"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input13
    │ │ input:input13 "HDA Intel PCH Front Headphone"
    │ └─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input9
    │ input:input9 "HDA Intel PCH Front Mic"
    ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/drm/card2
    │ [MASTER] drm:card2
    ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/drm/renderD130
    │ drm:renderD130
    ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:06:00.1/sound/card2
    │ sound:card2 "NVidia"
    │ ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:06:00.1/sound/card2/input19
    │ │ input:input19 "HDA NVidia HDMI/DP,pcm=3"
    │ ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:06:00.1/sound/card2/input20
    │ │ input:input20 "HDA NVidia HDMI/DP,pcm=7"
    │ ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:06:00.1/sound/card2/input21
    │ │ input:input21 "HDA NVidia HDMI/DP,pcm=8"
    │ └─/sys/devices/pci0000:00/0000:00:1c.4/0000:06:00.1/sound/card2/input22
    │ input:input22 "HDA NVidia HDMI/DP,pcm=9"
    ├─/sys/devices/pci0000:00/0000:00:1d.0/usb2
    │ usb:usb2
    │ └─/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1
    │ usb:2-1
    ├─/sys/devices/platform/efi-framebuffer.0/graphics/fb0
    │ [MASTER] graphics:fb0 "EFI VGA"
    ├─/sys/devices/platform/i8042/serio0/input/input3
    │ input:input3 "AT Translated Set 2 keyboard"
    └─/sys/devices/virtual/misc/rfkill
    misc:rfkill

    seat1
    Sessions: *c1
    Devices:
    ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1
    │ [MASTER] drm:card1
    │ ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1/card1-DVI-I-1
    │ │ [MASTER] drm:card1-DVI-I-1
    │ └─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1/card1-DVI-I-2
    │ [MASTER] drm:card1-DVI-I-2
    ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD129
    │ drm:renderD129
    ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb1
    │ [MASTER] graphics:fb1 "radeondrmfb"
    ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:413C:3200.0001/input/input4
    │ input:input4 "Dell Dell USB Mouse"
    └─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0/0003:0603:00F2.0003/input/input6
    input:input6 "NOVATEK USB Keyboard"

    Il y a trois catégories qui vous intéressent : drm (carte graphique), graphics (framebuffer et écran) et input (clavier et souris). Notez ici que j’ai un iGPU Intel non utilisé, et que, faute aux pilotes NVIDIA, mon système utilise les framebuffers au lieu de l’interface moderne DRM (donc, pas de Wayland ici).
    Il vous faut donner à un siège :

    • un entrée clavier input:inputX ;
    • une entrée souris input:inputX ;
    • une carte graphique drm:cardX ;
    • un processeur graphique drm:renderXXX ;
    • un framebuffer (graphics:fbX _nom_du_pilote_).

    Pour identifier vos périphériques, référez‐vous à leur marque (Logitech USB Optical Mouse est une souris Dell par exemple…).

    Assignez

    Sélectionnez le chemin d’accès entier du périphérique (attention, ça peut dépasser de votre terminal), et collez‐le dans la commande suivante : # loginctl attach seatX chemin_du_matériel où X représente l’identifiant du siège (vous pouvez mettre 1, 2, A, B…).
    Par exemple, pour assigner mon clavier USB au siège 2, je tape
    sudo loginctl attach seat1 /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0/0003:0603:00F2.0003/input/input6.
    Si certaines touches de votre clavier ne fonctionnent pas (touches multimédias ou Windows, pavé numérique…), regardez si votre clavier n’est pas listé deux fois (deux lignes input:inputX avec le même nom), et rajoutez le second input au siège concerné.

    Utilisez

    Si un écran de connexion n’est pas apparu sur le(s) nouveau(x) siège(s), redémarrez votre gestionnaire de sessions ou votre système si vous êtes flemmard.
    systemctl restart lightdm (notez que cette commande fermera instantanément toute session graphique, donc sauvegardez vos documents ouverts).

    Post‐scriptum:

    Les ressources de votre système seront partagées entre les utilisateurs, donc il est préférable d’avoir un processeur multicœur, un disque dur rapide et suffisamment de mémoire vive (les environnements de bureau seront chargés plusieurs fois…). Si votre machine dispose de peu de ressources, envisagez de passer à XFCE au lieu de GNOME ou KDE. Vous pouvez aussi mettre le /home de chaque utilisateur sur un disque différent, ou encore mettre en place un RAID logiciel ou matériel si vous avez le matériel nécessaire. Pour le réseau, comme d’habitude, votre interface sera partagée entre les utilisateurs, alors attention aux téléchargements volumineux (comme dans le cas de plusieurs ordinateurs se partageant la connexion Internet d’une box).
    Pour la vie privée, l’autre utilisateur peut probablement regarder votre écran, donc débrouillez‐vous.
    Si vous utilisez GNOME, sachez qu’il refusera de se verrouiller s’il est lancé par un autre gestionnaire de sessions que GDM. Cependant, s’il est lancé avec startx -- -seat seatX le verrouillage fonctionne, mais vous perdrez la possibilité de connecter n’importe quel utilisateur sur n’importe quel siège.

    Soyez fiers de GNU/Linux

    Les solutions pour Windows sont toutes payantes, et toutes ne permettent pas d’avoir des performances graphiques natives. Ne parlons pas de macOS/OSX, Apple serait trop triste de ne pas vous vendre une seconde machine. :)
    Je sais qu’on peut acheter des dongles USB sur lesquels on branche écran, clavier et souris, et qui affichent automatiquement sous GNU/Linux un deuxième écran de connexion ; mais ça ne permet surement pas d’avoir de l’accélération 3D si utilisée dans les navigateurs et les effets de KDE.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Sortie de Proxmox VE 5.0

    5 juillet, 2017 - 11:29

    Proxmox Server Solutions GmbH vient de publier la nouvelle version 5.0 de la plate‐forme libre de virtualisation Proxmox Virtual Environment. Parmi les principales nouvelles fonctionnalités, un gestionnaire de la réplication de stockage et un nouvel outil en ligne de commande pour importer des machines virtuelles en provenance d’autres hyperviseurs. Proxmox VE 5.0 est basée sur Debian Stretch 9.0 avec un noyau Linux 4.10.

    Réplication de stockage avec Proxmox VE

    Proxmox VE 5.0 introduit un nouveau mode de réplication de stockage, permettant de mettre à jour de façon asynchrone deux stockages locaux via le réseau, configurables depuis l’interface graphique. Cette fonctionnalité est particulièrement étudiée pour les petites structures désirant une synchronisation de leurs machines virtuelles sans avoir recours à un NAS/SAN externe.

    L’ordonnanceur de réplication est basé sur le format de calendrier de systemd, permettant de définir des intervalles de réplication très fins, au minimum d’une minute. Enfin le système de réplication permet de réduire le temps de migration d’une machine virtuelle d’un serveur à un autre, l’essentiel des données étant mises à jour en tâche de fond avant le début de la migration.

    Ceph – prêt pour la montée en charge

    Avec la version 5.0 de Proxmox VE, Ceph Rados Block Device (RBD) devient le standard de stockage distribué pour Proxmox VE. Ceph est une solution « Software‐defined », incluse dans Proxmox VE depuis 2013. En combinant Ceph et Proxmox VE, il devient possible de créer une infrastructure « hyperconvergente », où chaque nœud de la grappe de serveurs (cluster) fournit à la fois des ressources processeur pour l’hébergement de machines virtuelles, ainsi que de l’espace disque à l’ensemble de la grappe de serveurs.
    Les paquets Ceph pour Proxmox VE sont maintenant directement fournis par l’équipe de développement de Proxmox, ce qui permettra des correctifs de bogues plus rapides.

    Autres nouveautés de cette version

    Promox VE 5.0 apporte les nouveautés suivantes :

    • un outil en ligne de commande pour importer facilement des images disques provenant d’autres hyperviseurs (VMware, Hyper-V, etc.) est désormais inclus dans Proxmox VE ;
    • il est maintenant également possible de migrer des machines virtuelles même sans stockage partagé ;
    • la console virtuelle NoVNC a été mise à jour et est à présent bien mieux intégrée à l’interface graphique ;
    • enfin, il est possible de faire des actions de masse sur un groupe de conteneurs ou de machines virtuelles, et de voir directement depuis l’interface Web les périphériques affectés en mode passthrough (accès direct) aux conteneurs et machines virtuelles.
    Disponibilité

    Proxmox VE 5.0 est disponible en téléchargement. Il est possible de mettre à jour depuis les versions 4.4 et 5.0 bêta en utilisant apt-get. Proxmox VE est un produit libre distribué sous licence GNU Affero GPL v3.

    La société Proxmox Server Solution propose en outre un support Entreprise à partir de 69,90 € par processeur et par an.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Recalage d’images, PIV et corrélation d’images — Les bases théoriques

    4 juillet, 2017 - 18:18

    Le recalage d’images est utilisé dans la communauté de l’analyse d’images médicales depuis très longtemps (Barnea & Silverman, 1972, Ledbetter et al. 1979), on peut même remonter plus loin dans le temps avec les travaux de Sidney Bertram, 1963 en fournissant tous les outils via des descriptions de circuits analogiques (vraiment impressionnant pour l’époque).
    En commençant à travailler sur des images issues d’IRM, j’ai été amené à faire une bibliographie sur les outils utilisés dans l’analyse d’images médicales. J’ai constaté que leurs techniques de recalage d’images étaient très similaires à celles utilisées dans les différents domaines de la mécanique. Après beaucoup de bibliographie, je suis parvenu à situer ce qui est fait en mécanique dans les cadres proposés en analyse d’images médicales.

    Cette dépêche est l’occasion pour moi de présenter ces techniques dans le détail.

    La prochaine dépêche présentera les logiciels utilisés dans les différentes communautés scientifiques.

    Sommaire Introduction

    Dans la recherche que nous conduisons, il y a beaucoup de techniques, et la méthode qui coordonne ces techniques est tout sauf agnostique. Ce qui nous motive tous est l’extraction de la physique de nos mesures.
    Le problème qui unit l’ingénieur et le chercheur réside dans cette image du monde que nous transmettent nos mesures car elle n’est jamais exempte de biais qui peuvent jusqu’à empêcher parfois l’extraction de la moindre information physique. Les moyens permettant de diminuer les biais des observations diffèrent en général en fonction des objectifs :

    • lorsque l’on connaît précisément les phénomènes physiques en jeu, il est possible d’introduire la physique en tant que régularisation de l’identification de la transformation ; cette technique est très utilisée en mécanique des solides ;
    • lorsque l’on cherche à comprendre les mécanismes régissant les phénomènes, il est plus délicat de régulariser en se servant de la physique régissant les phénomènes, car celle‐ci n’est pas toujours connue ; de plus, la notion de matériau peut laisser place à une structure mécanique en fonction de l’échelle avec laquelle on regarde (en mécanique, la notion de structure est relative à des matériaux de type hétérogène, ou d’un ensemble de matériaux assemblés).

    Le Laboratoire de mécanique de Lille, comme beaucoup d’autres, s’intéresse particulièrement aux mécanismes, que ce soit en tribologie, turbulence de paroi ou en mécanique des matériaux, le fil rouge de ce qui est présenté ici est cette volonté de se plier aux exigences des mécanismes.

    Platon a défini dans le livre VII de La République, une distinction entre le monde du sensible et le monde des idées : le monde du sensible ne serait que la projection du monde des idées, qui nous apparaîtrait déformé par notre propre nature ; ce monde du sensible est par essence ce que nous pouvons imager, sentir.
    Je considère que le travail premier d’un scientifique qui met en œuvre de l’expérimental est de savoir analyser les images des phénomènes observés pour ensuite essayer d’accéder au monde des idées. Ce point se heurte toujours au problème de la fidélité de ce que l’on observe par rapport à l’idée qui gouverne le phénomène. Le lecteur pourra se référer à l’allégorie de la caverne afin de bien illustrer ce propos.
    Tout l’enjeu du scientifique est donc d’être capable d’avoir des images du monde sensible en connaissant les inexactitudes qui y sont attachées afin de pouvoir se faire une idée de ce qui en est la cause la plus probable.
    Le monde de l’imagerie numérique nous donne accès à l’observation de l’hétérogénéité des phénomènes et nous permet de remettre en cause ce qui n’était observable jadis que par la variation durant le temps d’une ou plusieurs quantités ponctuelles. En tant que mécanicien, je me limiterai à l’étude des conséquences de la mise en mouvement de la matière, nous verrons dans une prochaine dépêche que, malgré cette limitation, le champ d’application de l’utilisation de l’imagerie avec le miroir de la mécanique permet d’étudier une grande diversité de sujets et d’accéder à une meilleure compréhension des phénomènes en jeu.

    Nous traiterons ici de données qui ne sont pas toutes directement associables à des lois a priori, de part la complexité des systèmes observés. Les outils que nous développons s’inscrivent donc dans une logique kantisée, mais elle se heurte malheureusement à également l’opposition des conatus des scientifiques.
    Pour faire simple, les méthodes numériques généralistes présentées ici peuvent être utilisées pour appuyer les idées de scientifiques plutôt d’obédience rationaliste mais peuvent tout aussi bien être utilisées par des expérimentateurs plus portés sur l’empirisme. Cette unité de méthode n’empêche pas que les choix techniques (bien qu’appartenant tous au cadre présenté dans cet article) conduiraient à une épistémologie radicalement différente des analyses scientifiques menées par ces deux groupes sur un même objet d’étude.

    Il convient donc de mettre en place une dialectique expérimentale propre à chaque problème traité.

    Comment approcher ou établir une loi ou idée le plus justement possible ?

    Au‐delà des problèmes de biais associés à toute mesure physique, se pose la question du but même de la mesure. Il y a, d’une part, les rationalistes, qui considèrent que toute idée doit être cause ou conséquence d’un enchaînement d’idées rationnelles ; ils chercheront donc à se servir de l’expérimental pour s’approcher de leur loi au travers d’une paramétrisation ad hoc ; et, d’autre part, les empiristes, qui considèrent que toute connaissance prend source dans une expérience sensible, qui chercheront eux à construire des lois au travers de ces observations. À ce titre, je trouve intéressante la citation de Pierre Duhem : « Une loi de physique n’est, à proprement parler, ni vraie ni fausse, mais approchée. » (Traité d’énergétique, 1911), car elle nous permet de discriminer ces courants de pensée expérimentale.
    L’analyse d’image en mécanique ne fait pas exception à cette dualité : il nous arrivera de mettre beaucoup d’_a priori
    dans la mesure elle‐même, la contraignant ainsi à se plier à notre vue, mais il sera aussi utile de trouver comment ne pas mettre du tout de physique dans la mesure, pour pouvoir construire nos idées. Ainsi, je présenterai dans cet article des approches que nous avons mises au point permettant d’utiliser la mécanique pour extraire au mieux une physique inaccessible sans cette dernière, telle que la corrélation d’images numériques (Digital Image Correlation, DIC) et la Particule Image Velocimetry (PIV), mais également des méthodes innovantes permettant la réjection de solutions aberrantes, telles que la régularisation par filtre médian dans le processus de DIC.

    Recalage d’images et flot optique

    Que ce soit en analyse d’image ou en mécanique, les techniques se réclamant du flot optique (ou flux optique) sont légion. Le flot optique recouvre énormément de techniques différentes. Beaucoup d’auteurs ont déjà fait des états des lieux de ces techniques (Galvin et al., 1998_, Corpetti et al., 2006_, Baker & Matthews, 2004_), cet article ne sera donc pas une nouvelle revue des techniques déterminant le flot optique. Il n’est cependant pas possible de comprendre les idées qui ont été développées sans situer le flot optique dans ce qui se fait dans la communauté.
    Il me semble cependant plus intéressant d’aborder la présentation de ces démarches au travers du concept de recalage d’images qui est un canevas plus général que celui du flot optique.
    Il existe plusieurs méthodes utilisées pour recaler des images, certaines se basent sur l’intensité lumineuse de l’image, d’autres cherchent à détecter l’écart informations de type géométrique (c.‐à‐d. la distance), d’autres encore se situent à mi‐chemin et sont appelées « iconiques ». Une classification a été donnée par Cachier et al., 2003, elle sera utilisée.

    Principes théoriques du recalage d’images, PIV et corrélation d’images numériques

    Le recalage d’images basé sur l’intensité des niveaux de gris est une technique permettant d’apparier des images entre elles au travers d’une transformation. Cette technique est indispensable dans deux domaines : la création de vues panoramiques à partir de plusieurs prises d’images et l’analyse d’images médicales. Nous allons aborder le second point, plus complexe, car il entraîne une description plus générale. Le recalage d’images médicales a pour but de pouvoir comparer deux images de modalités différentes entre elles ou de comparer plusieurs patients entre eux.

    La DIC (Digital Image Correlation) consiste à placer une caméra devant un essai (traction, compression, flexion, multi‐axial) où l’on ajoute une texture aléatoire.
    La PIV (Particule Image Velocimetry, vélocimétrie par image de particules) consiste à rajouter des particules dans un écoulement (soufflerie, cavité entraînée…) et à les éclairer avec une nappe laser afin de les filmer.
    Ces deux techniques ont pour objectif exclusif d’identifier les transformations.

    Comme ces méthodes sont basées sur la comparaison de deux images, il convient tout d’abord de savoir comment effectuer une telle comparaison.

    Prenons par exemple le cas d’une image d’un patient prise par un IRM et par un scanner. L’IRM repose sur le contraste de résonance magnétique nucléaire alors que le scanner repose sur un contraste d’atténuation des matériaux que traversent les rayons X. Il y a donc peu de chances que les constituants du corps du patient réagissent de la même manière avec ces deux modalités différentes. Ces images ne peuvent donc pas être recalées via le flot optique, il faudra pour garder l’heuristique du recalage trouver un moyen de comparer ces images, ce qui sera introduit par la suite par la notion de métriques.
    Là encore, beaucoup a déjà été écrit à ce sujet mais un point d’entrée intéressant se trouve dans l’article de Wachinger et Navab (2010) qui illustre de manière très pédagogique pourquoi une métrique telle que celle utilisée dans le milieu de la mécanique ne peut pas fonctionner dans ce cas précis. Nous allons nous placer dans un canevas développé par Insight Tool Kit (ITK) introduit dans (Yoo et al., 2002), détaillé dans le manuel d’utilisation (Ibanez et al., 2005), et utilisé dans le logiciel de recalage ElastiX (Klein et al., 2010). Cette démarche est présentée en figure 1 :

    Figure 1 : Principe du recalage d’image ITK et Elastix

    Par convention, on appellera l’image fixe, l’image de référence, et l’image mobile, l’image que l’on souhaite recaler par rapport à cette référence. Le principe est donc le suivant :
    L’image mobile est recalée par rapport à l’image fixe au travers d’une transformation. Pour identifier au mieux cette transformation, plusieurs étapes sont nécessaires. Il faut tout d’abord définir une métrique qui permettra de comparer les deux images. Cette métrique a comme variables d’entrée un type de transformation (Transformation) (rigide, affine similitude, B‐Spline…), l’image fixe et l’image mobile. Il faut ensuite choisir une stratégie d’optimisation (Optimiseur) dans l’algorithme du gradient (Cauchy, 1847), comme la Méthode du point col, Newton, gradient conjugué… Il est également possible de ne pas évaluer la fonctionnelle (métrique) sur toute l’image mais sur un certain nombre de points (échantillonnage) aléatoire, sur une grille ou total. Enfin, il faut appliquer la transformation à l’image mobile et ce à chaque itération, ce qui nécessite un interpolateur.
    Les techniques de type Besnard et al., 2006, Réthoré et al., 2007a, reposent également sur ce schéma mais ne sont qu’un cas particulier, ce qui sera détaillé par la suite.
    Le problème à résoudre se met en équation comme présenté :

    Dans cette équation : est la métrique, la transformation paramétrée par , l’image fixe et l’image mobile.

    Rappelons que :

    où est le vecteur des transformations comme elles seront détaillées par la suite.

    Ces méthodes étant basées sur un algorithme d’optimisation de descente suivant le gradient, elles peuvent converger vers un résultat faux car le résultat est un minimum local de la fonction objectif (métrique). Pour régler ce problème, une technique de résolution pyramidale est employée, comme l’illustre la figure 2 :

    Figure 2 : Principe de l’approche pyramidale, une transformation sur une image très moyennée est trouvée, puis interpolée pour être appliquée en initialisation de l’échelle plus résolue suivante, et ce, jusqu’à la dernière échelle.

    Nous allons détailler quelques points importants du cadre utilisé ici.

    Métrique C

    Ce qui est appelé ici « métrique », ne correspond pas à la définition mathématique, car il ne satisfait pas les critères imposés pour la définition d’une distance. Il serait plus exacte de l’appeler fonction objectif, mais la communauté du recalage d’image a choisi ce terme, aussi il sera conservé ici. La littérature en compte tellement qu’il est impossible d’en faire une liste exhaustive. Celles‐ci se classent dans deux catégories distinctes, les méthodes statistiques basées sur des probabilités jointes et les méthodes directes. Dans les méthodes directes il faut être en mesure de postuler d’un lien entre les évolutions des niveaux de gris de l’image fixe et ceux de l’image mobile. Par exemple, si le flot optique est conservé entre deux images alors la métrique naturelle est l’erreur quadratique moyenne. S’il y a une relation affine entre l’évolution des niveaux de gris des deux images, alors la métrique naturelle est l’inter‐corrélation normalisée. S’il n’y a pas de relation triviale entre les évolutions de niveaux de gris, alors il faut construire une relation propre à la paire d’images étudiée au travers d’une métrique de type statistique comme l’information mutuelle. Les paragraphes suivants présentent quelques‐unes des métriques utilisées en recalage d’images médicales et applicables dans tous les domaines.

    Erreur quadratique moyenne (C=SSD)

    L’erreur quadratique moyenne (ou Sum of Squared Differences, SSD aussi appelée mean squared error) correspond à un problème au moindre carré présenté par l’équation suivante :

    où est le domaine d’intégration, le nombre de pi(vo)xels (cardinal) pour une transformation donnée.

    Inter‐corrélation normalisée (C=NCC)

    L’inter‐corrélation normalisée (ou Normalized Cross Corrélation, NCC) est une technique utilisée dans beaucoup de codes de PIV ou DIC de type blockmatching (Limb et Murphy, 1975). Elle n’est pas sensible au changement de luminosité affine et permet donc de travailler sur des images dont l’éclairement de l’image change fortement entre deux positions. C’est notamment le cas de la PIV, où la nappe laser peut ne pas être parfaitement constante, il peut y avoir de forts reflets et des particules peuvent sortir du plan du laser. C’est également le cas en imagerie médicale où les organes peuvent sortir du plan d’observation. Il est donc impossible dans de telles conditions de respecter le flot optique. Il est de plus intéressant de rappeler qu’usuellement les chercheurs utilisant ces moyens pour la turbulence règlent le temps entre les deux lasers de manière à avoir 10 pixels de déplacement moyen, ce qui peut changer fortement l’illumination des particules. La métrique d’inter‐corrélation normalisée présentée par l’équation suivante est donc théoriquement un bon moyen de résoudre ces contraintes expérimentales :

    avec

    et

    On pourrait également parler de l’information mutuelle, mais je pense que cela nuirait à la concision de l’article.

    Échantillonnage

    L’échantillonnage est défini comme le domaine (c.‐à.‐d. l’ensemble de pixels) sur lesquels la fonction objectif sera évaluée : toute l’image, un masque, une grille, ou tirée aléatoirement. Likar et Pernuš, 2001, ont démontré que le ré‐échantillonnage d’une fonction objectif, telle que l’information mutuelle, lors de l’application de la transformation pouvait conduire à un bruitage important de . Beaucoup de solutions existaient avant ce travail mais elles passaient par l’utilisation de bases d’interpolation d’ordre élevé ce qui entraînait un surcoût en temps de calcul. L’idée de Likar et Pernuš, 2001, a été de n’évaluer la fonctionnelle que sur un nombre réduit de points définis par l’utilisateur et tirés aléatoirement à chaque itération de l’algorithme de descente. Dans la pratique cette stratégie se comporte assez bien sur les deux métriques présentées précédemment mais pas avec tous les optimiseurs. Il est également souvent utilisé une sous‐intégration sur une grille ou une intégration totale. La stratégie à choisir dépend beaucoup de l’objectif que l’on se fixe : si le but est d’avoir une mesure la plus fine possible, alors la sous‐intégration pose problème ; en revanche, si l’objectif est d’obtenir une évaluation rapide des paramètres pour, par exemple, envisager une rétroaction à partir de la transformation mesurée (cas du pilotage d’un essai en déformation homogène), alors l’échantillonnage est certainement un point à ne pas négliger.

    Transformation

    Le modèle de transformation est un autre point clef de la méthode, pour une quantité donnée d’information, nous souhaitons extraire les paramètres d’une transformation. On peut énoncer plusieurs types de transformations :

    Transformations globales

    Figure 3 : Illustration de déformation globale d’une image (rotation, translations, déformations homogènes)

    Elle sont souvent linéaires, telles que le mouvement de corps rigide, la transformation affine (figure 3), la similitude, la transformation projective, qui sont souvent utilisées dans l’analyse d’images médicales. Il existe aussi des transformations globales utilisées dans la communauté de la mécanique des matériaux, telles que celles associées à la fissuration (Hamam et al., 2007, Hild et Roux, 2006) ou celles associées aux poutres (Hild et al., 2011).

    Transformations élastiques (non rigides)

    Figure 4 : Illustration des transformations élastiques d’une image (utilisation d’une base quadrangle bilinéaire)

    Il existe également une gamme de transformations appelée « élastique » dans la communauté de l’analyse d’images médicales. Elle comprend toutes les transformations qui assurent la partition de l’unité, comme les transformations basées sur les polynômes de Lagrange souvent appelées éléments finis (Besnard et al., 2006, figure 4), mais aussi les grilles de type B-Splines (Klein et al., 2010, Réthoré et al., 2010) et les méthodes étendues de type X-FEM (Réthoré et al., 2007b). Il est important de noter que ce terme « élastique » n’est pas accepté dans la communauté de la mécanique car une déformation élastique a une signification en mécanique : ainsi, il est possible d’avoir une déformation qui respecte la partition unité, mais qui n’est pas élastique (endommagement, plasticité, viscosité, etc.). Les mécaniciens du solide ne distinguent pas cette catégorie et rangent ces méthodes de transformation dans les méthodes globales (car il faut une résolution globale pour accéder à la transformation). On pourra utiliser de manière moins ambiguë la notion de « transformation non rigide ».

    Transformations locales

    Figure 5 : Illustration des transformations locales d’une image (seules les translations sont ici identifiées)

    Ces transformations, présentées en figure 5 s’appliquent à une sous‐partie de l’image et ne cherchent pas à résoudre un problème global comme les deux autres. Elles n’ont pas la nécessité de respecter la partition de l’unité. La plus connue et ancienne (Barnea et Silverman, 1972) est la recherche des translations sur chaque imagette par inter‐corrélation. Il est à noter que la méthode la plus rapide est incontestablement la technique d’inter‐corrélation, qui n’est pas un problème itératif et peut être accélérée en utilisant la FFT. Une amélioration présentée par Sutton et al., 1983, est de calculer la translation ainsi que les déformations de l’imagette. Elle est utilisée dans la plupart des logiciels commerciaux de PIV et DIC. Les transformations locales diffèrent des autres transformations de part le fait que chaque zone d’intérêt (Zone of Interest, ZOI) est traitée indépendamment. Dans la communauté de l’analyse d’images, ce problème a été résolu très tôt par Lucas et Kanade, en 1981, qui détermine le flot optique sur des ZOI. Cette méthode est de loin la plus intéressante car elle permet d’utiliser les transformations définies précédemment, mais à l’échelle locale. C’est de plus la seule méthode de blockmatching qui trouve sa place dans le canevas présenté.

    Interpolateur

    L’interpolateur sert à évaluer la valeur de et lors de l’évaluation de la métrique. En effet, les déplacements sont recherchés à une précision inférieure au pixel, il faut donc aller interpoler les valeurs au voisinage de la position définie. Beaucoup d’interpolateurs sont utilisés dans la littérature mais les B‐splines prédominent fortement. Une excellente revue de l’impact d’un interpolateur sur l’image est faite par Getreuer, 2011.

    Figure 6 : Impact des étapes successives d’interpolation d’une rotation en fonction de l’interpolateur choisi (Getreuer, 2011).

    La figure 6 illustre le fait que si l’on cumule des successions de transformations (ici une rotation), alors le choix de l’interpolateur devient fondamental. Sur cette figure, seule une B‐spline d’ordre 11 parvient à ne pas modifier fortement la structure de l’image. Cela montre aussi qu’il est fondamental de ne pas cumuler les interpolations, aussi la stratégie utilisée ici est de toujours travailler avec (la transformation totale est appliquée à l’image mobile initiale) et non avec des successions d’images interpolées de manière cumulative (comme présenté figure 6).

    Optimiseur Dérivation de C

    Il convient de rappeler que les méthodes d’optimisation utilisées ici sont toutes des méthodes basées sur le calcul du gradient de . Le procédé est détaillé sur un exemple en calculant le gradient de l’erreur quadratique moyenne définie précédemment en utilisant la composition des dérivées.

    Pour chaque métrique utilisée il faut calculer le gradient de la fonctionnelle.

    Algorithme du gradient Formalisation mathématique

    Une fois le calcul du gradient de la fonction objectif effectué, il faut trouver une stratégie pour converger vers son minimum.

    Le principe de la minimisation de la fonctionnelle est défini par l’équation suivante :

    La taille du pas de l’algorithme de gradient est pilotée par la valeur de qui peut être constante ou remise à jour à chaque itération suivant différentes méthodes.

    Soit :

    Un point fondamental dans une descente suivant le gradient est de déterminer quelle direction de recherche utiliser. Ce choix se fait au travers de ou itérativement par choix des (gradient conjugué et stochastique), nous présenterons ici les principales méthodes utilisées en optimisation.

    • descente suivant le gradient :
    • Newton avec la matrice hessienne, telle que  :
    • Gauß‐Newton :
    • Levenberg‐Marquardt :
    • quasi‐Newton (BFGS) :
    • gradient conjugué :
    • gradient stochastique :

    Pour les transformations de type élastique, ces relations sont vraies mais doivent être appliquées au niveau de l’élément (FEM, X-FEM) ou à l’échelle du patch (B‐splines).

    Discussion des méthodes d’optimisation

    Il est possible de construire l’opérateur :

    en se servant de la moyenne des gradients de l’image fixe et mobile ce qui permet d’accélérer la procédure d’optimisation. Lorsque cette moyenne est appliquée à la méthode de Gauß‐Newton la méthode s’appelle ESM pour Efficient Second order Minimization, elle a été inventée par Benhimane et Malis, 2004, qui prouvèrent qu’elle avait une excellente convergence pour la , et validée sur d’autres métriques par Wachinger et Navab, 2009. Cette méthode a également été utilisée dans notre communauté par Réthoré et al., 2007a. Il est important de noter que certains auteurs choisissent de ne pas mettre à jour ce terme en le calculant à partir de l’image fixe, dans ce cas on identifie la transformation opposée. Cette technique a l’avantage de ne calculer qu’une seule fois la dérivée de l’image et la matrice Hessienne (pour ), ce qui permet un gain de calcul important dans le cas de la méthode de (quasi ou Gauß) Newton. Ceci peut être très avantageux pour le gradient conjugué, s’il stocke les vecteurs construits au fur et à mesure jusqu’à ce que la base approchée soit stationnaire. Cette base pourrait être utilisée sur l’image suivante d’une séquence comme initialisation, ce qui crée un gain de temps notable et, à partir d’un certain nombre d’itérations, il ne rajoute plus de vecteurs à la base à chaque nouvelle itération du processus d’optimisation. Le principal problème des méthodes de type Newton ou quasi‐Newton est la sensibilité au choix des paramètres initiaux. Si les paramètres sont éloignés, alors il est probable que l’algorithme converge vers un minimum local. S’il est vrai que la technique pyramidale présentée ici permet d’estimer des paramètres à des échelles plus grossières évitant ainsi le piège local, il arrive que cette approche ne suffise pas. D’un autre côté, les méthodes de descente suivant le gradient permettent un écart plus grand par rapport aux paramètres initiaux mais convergent plus lentement. La méthode de Marquardt, 1963, permet de profiter des avantages des deux méthodes mais le choix du et son évolution au cours du temps peut entraîner une convergence faible au niveau de l’optimum.

    Une des méthodes les plus performantes pour résoudre ce système est la méthode quasi‐Newton de type Broyden‐Fletcher‐Goldfarb‐Shanno où les vecteurs et sont des vecteurs de rang 1 de base différente. Les détails de la création des vecteurs et sont disponibles sur Wikipédia. Un point important est qu’il est possible de déterminer explicitement l’inverse de l’approximation de la Hessienne (Sherman et Morrison, 1950). De ce fait, cette méthode peut également être utilisée efficacement conjointement avec l’ESM.
    Une attention toute particulière doit être apportée à la méthode de type gradient stochastique. Cette technique d’optimisation a été développée pour résoudre des problèmes de grande taille dans le domaine de l’apprentissage automatique. Lorsque les systèmes deviennent très gros, il est délicat de calculer l’inverse de la hessienne du problème, voire parfois impossible. Il reste alors comme possibilité de l’approximer (Gauß‐Newton, quasi‐Newton). Le coût numérique étant alors assez élevé, il est alors possible de faire une simple descente suivant le gradient, mais les propriétés de convergence sont alors beaucoup moins bonnes qu’avec une méthode de Newton, car la direction de recherche n’étant pas bonne, il faut beaucoup plus d’itérations. L’idée du gradient stochastique est de ne pas évaluer la fonctionnelle sur toutes les données mais seulement sur un échantillonnage tiré aléatoirement. Bottou et Bousquet, en 2008, ont montré que dans ce cas, l’utilisation de la Hessienne n’améliorait pas la vitesse de convergence et que cette méthode converge plus vite (en termes de temps et non d’itérations) pour les problèmes de grande taille que les méthodes qui approximent la matrice Hessienne. Cette méthode permet donc de s’affranchir du calcul de la matrice hessienne, assure une convergence vers un minimum global dans le cas d’une fonctionnelle convexe et vers un minimum local pour une fonctionnelle non convexe. Klein et al., en 2005, présente une accélération d’un facteur 500 par rapport à un échantillonnage complet. Il a de plus été montré dans la sous‐section échantillonnage que le sous‐échantillonnage permet de lisser la fonction objectif. Nous rappelons que l’obtention d’une fonctionnelle convexe est assurée par le processus pyramidal.

    Stratégie de régularisation

    La stratégie la plus utilisée en ce qui concerne la régularisation est celle mise en œuvre par Tikhonov et Glasko, en 1965, et présentée dans l’équation suivante ; elle consiste à favoriser les solutions dont les normes des inconnues sont petites :

    Dans notre cas :
    en fonction de la stratégie d’optimisation choisie et est égal à la dérivée de la dérivée de . La matrice peut quand à elle être l’identité ou n’importe quel opérateur linéaire tel que, par exemple, la matrice de raideur d’un système à élément finis ou alors une matrice représentant un filtre passe‐bas peut être utilisée pour éliminer les variations rapides qui sont non différentiables du bruit de mesure.

    Après de longues réflexions, nous avons décidé de ne pas implémenter ce canevas pour la régularisation dans nos outils. Bien qu’apparemment séduisantes, les régularisations de Tikonov ne permettent que d’utiliser des normes , car les méthodes d’optimisations implémentées nécessitent une fonctionnelle convexe. Cela entraîne, par exemple, que les régularisations de type (qui conservent les discontinuités) ne nous sont pas accessibles. Il est possible de formuler le problème différemment, Cachier et al, 2003 ont montré qu’il est possible de formuler le problème de recalage d’image iconique de type démon en tant que problème de flot optique au travers d’une minimisation alternée.
    Ainsi, ils formulent le problème de recalage de la manière suivante :

    Les termes et sont les transformations, c’est‐à‐dire des translations pixel à pixel, il n’y a donc pas de base de transformation ici, la cohérence spatiale étant assurée par les énergies de pénalisation pondérées par les coefficients et  ; représente une énergie de pénalisation telle que le laplacien du déplacement en mécanique des fluides ou en mécanique du solide.

    La méthode itérative de résolution est la suivante :

    • d’abord résoudre l’équation suivante en utilisant un algorithme de descente au gradient en version ESM :
    • puis, résoudre l’équation suivante :

    Cette équation pourrait se résoudre également via un algorithme de descente au gradient, mais il existe un moyen de la résoudre par convolution comme démontré en annexe de Cachier et al., 2003_.

    Nous nous sommes inspirés de cette idée, mis à part le fait que nous ayons généralisé cette méthode de régularisation à n’importe quelle méthode de filtrage et non plus à une simple convolution. Après différents tests, nous avons constaté que le filtre médian était l’outil de régularisation le plus efficace dans la plupart des cas.

    La prochaine dépêche présentera les logiciels utilisés dans les différentes communautés scientifiques.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Revue de presse de l’April pour la semaine 26 de l’année 2017

    4 juillet, 2017 - 17:35

    La revue de presse de l’April est régulièrement éditée par les membres de l’association. Elle couvre l’actualité de la presse en ligne, liée au logiciel libre. Il s’agit donc d’une sélection d’articles de presse et non de prises de position de l’Association de promotion et de défense du logiciel libre.

    Sommaire

    Dernière revue de presse avant la pause estivale. À bientôt en septembre !

    [Next INpact] Vie privée et sécurité de nos données : comment mieux soutenir, informer et protéger ?
    Par David Legrand, le jeudi 29 juin 2017. Extrait :

    « De nombreux outils qui assurent le fonctionnement du Web et la sécurité de nos échanges, ou même la protection de notre vie privée, dépendent d’un mode de financement assez particulier : le don. Mais voilà, les efforts en la matière sont assez éclatés, ce qui mène parfois à une efficacité limitée. Et si l’on pensait les choses autrement ? »

    [LaTeleLibre.fr] La Guerre des Civic Tech
    Par la rédaction, le mardi 27 juin 2017. Extrait :

    « S’impliquer, voter, cliquer. Voilà la recette de la démocratie version 2.0. Simon est parti à la rencontre des Civic-tech, ces acteurs qui permettent à cette démocratie d’éclore. Mais, entre start-up, associations, partisans du logiciel libre et défenseurs du Fermé, le monde des Civic Tech ne rime pas forcément avec participation citoyenne. »

    [ZDNet France] Microsoft / Éducation Nationale : la CNIL émet des réserves
    Par Louis Adam, le mardi 27 juin 2017. Extrait :

    « Dans une lettre obtenue et publiée aujourd’hui par NextInpact, la CNIL revient sur le projet de charte en cours de préparation entre l’Éducation nationale et Microsoft. La Commission y pointe plusieurs manques en matière de protection des données personnelles. »

    [Numerama] L’inventeur du Web livre un plaidoyer en faveur de la neutralité du Net
    Par Julien Lausson, le lundi 26 juin 2017. Extrait :

    « Tim Berners‐Lee, le principal inventeur du Web, signe une tribune pour appeler à la défense de la neutralité du Net, dont le principe est gravement remis en cause aux États‐Unis. »

    Télécharger ce contenu au format Epub

    Lire les commentaires

    OpenConcerto 1.5

    4 juillet, 2017 - 13:00

    La version 1.5 du logiciel OpenConcerto vient de sortir. OpenConcerto est un logiciel complet de gestion d’entreprise incluant : gestion commerciale, comptabilité (dont l’analytique) et paye. Il dispose aussi d’une interface de caisse pour les points de vente et d’un système de préparation de commandes (picking).
    Modulaire, le logiciel propose des greffons pour la DSN, la gestion de prospects, planning, SAV, GED…

    OpenConcerto est disponible pour GNU/Linux, macOS et Windows. Une version Cloud est proposée pour une solution clef en main.

    Le logiciel, sous licence GPL, est téléchargeable dès maintenant en version 1.5 sur toutes les plates‐formes prises en charge en versions monoposte et multiposte. La version 1.5 est l’occasion d’inaugurer la gestion de documents intégrée, ainsi qu’une refonte de l’interface de caisse.

    À la différence des solutions habituelles du secteur que l’on peut trouver dans les logiciels libres, OpenConcerto n’est pas une application Web, mais une application riche. Avec l’ajout de modules spécifiques, OpenConcerto constitue un PGI (ERP) véloce et adaptable. Il est actuellement utilisé en production dans des sociétés avec plus de 150 utilisateurs simultanés.

    Cette application écrite en Java repose sur des bases de données libres, dont PostgreSQL et H2.

    OpenConcerto est un progiciel de gestion intégré (PGI, ERP en anglais pour Enterprise Resource Planning) proche en architecture de Microsoft Dynamics Nav. Au niveau des fonctionnalités, vous trouverez les grands classiques des produits « en boîte », mais également les éléments d’un PGI complet, comme la gestion multi‐société, multi‐poste, multi‐utilisateur ou encore la traçabilité.

    Devis, factures, avoirs, commandes, règlements et bons de livraison, tout y est. Le logiciel permet de gérer facilement clients, fournisseurs, achats, ventes, articles et stocks. La gestion commerciale est directement liée à la comptabilité (norme française), ce qui évite les doubles saisies.

    L’accent est porté pour l’instant sur le retour utilisateur, afin de pouvoir fournir une base la plus complète possible. Le logiciel s’adresse à un public large :
    * l’auto‐entrepreneur, qui y trouvera de quoi réaliser devis, factures, paye et comptabilité ;
    * la petite entreprise, qui y verra une solution multiposte complète ;
    * la moyenne entreprise qui, économisant un coût de licence, pourra investir dans la création de modules spécifiques à son activité.

    En plus de la résolution attendue des bogues de la version 1.4, et d’un grand nombre d’améliorations de l’interface, OpenConcerto 1.5 apporte principalement :

    • une refonte de l’interface de caisse ;
    • le prise en charge des nouveaux afficheurs LCD et douchettes ;
    • la gestion de taxes spécifiques (Codifab, par exemple) ;
    • la saisie par douchette (BL) ;
    • la gestion électronique de documents ;
    • de nouveaux modules : SAV, impression d’étiquettes.

    Il est à noter que sont proposés pour une utilisation professionnelle : formation, manuel et contrat de maintenance.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    L’heure du test — fork 2 — Qubes OS

    4 juillet, 2017 - 11:36

    L’heure du test est un rendez‐vous pour les tests et guides d’installation de distributions, en exposant leurs avantages et inconvénients. Ce fork présente Qubes OS, un système d’exploitation libre qui prétend ne pas être une distribution !

    Qubes OS est un système d’exploitation focalisé sur la sécurité. Il se situe à mi‐chemin entre une distribution classique et un hyperviseur. Il s’appuie sur l’hyperviseur Xen et propose un système sécurisé basé sur l’isolation.

    Sommaire Prérequis matériels

    D’un point de vue matériel, Qubes OS est compatible avec la plupart des composants. Cependant, si vous avez du matériel très récent ou très ancien, l’installation peut être compliquée ou impossible. En cas de doute, consultez la table de compatibilité matérielle et / ou le fil de discussion des utilisateurs.

    Pour résumer, votre processeur doit être du type x86-64 et devrait avoir des fonctionnalités dédiées à la virtualisation (Intel VT-x / AMD-v). Vous devez également disposer d’au moins 4 Gio de mémoire vive (8 Gio devraient être largement suffisants pour la plupart des utilisateurs) et 32 Gio d’espace disque. Il est recommandé d’utiliser un SSD et une puce graphique Intel intégrée.

    Installation

    Avant d’installer Qubes OS, vérifiez les paramètres de votre BIOS. Les réglages exacts vont dépendre de votre matériel. Le conseil général est d’activer toutes les options liées à la virtualisation et de désactiver toutes les options liées à l’UEFI. En cas de problèmes, consultez le fil de discussion des utilisateurs.

    L’installation est relativement classique, et on trouve sur YouTube de très bons tutoriels. Par exemple, pour l’installation de Qubes OS 3.2, il y a ce tutoriel en anglais. Il y a également un tutoriel en français pour l’installation de Qubes OS 3.1.

    Configuration

    Lors de l’installation, on peut choisir d’installer la configuration par défaut. Elle est très utile pour prendre en main Qubes OS. Et comme toute configuration générique, vous vous rendrez vite compte qu’elle convient mal à vos usages. On présente ici certaines spécificités de Qubes, ainsi qu’une configuration typique, et une configuration plus avancée.

    Dom0

    C’est le chef d’orchestre. Dans la version 3.2, il est basé sur Fedora et contrôle l’hyperviseur, l’interface graphique et les périphériques d’entrée (clavier, souris…). Pour des raisons de sécurité, il a un accès au réseau qui est filtré et limité aux mises à jour.

    Les modèles

    Les modèles (templates), correspondent à des distributions GNU/Linux. On y accède uniquement en ligne de commande pour gérer les paquets installés. L’équipe de développement de Qubes OS propose trois modèles :

    • Fedora, le modèle par défaut, on est actuellement sur la version 24 ;
    • Fedora-minimal, une version minimaliste du modèle par défaut ;
    • Debian, on est actuellement sur la version 8 (Jessie).

    La communauté propose également des modèles pour Whonix, Ubuntu et Archlinux.

    Les machines virtuelles (VM) basées sur un modèle

    De nombreuses machines virtuelles peuvent être basées sur un même modèle. Pour chaque machine virtuelle, on spécifie un maximum de mémoire vive et d’espace disque accessible. Une machine virtuelle basée sur un modèle dispose de quelques répertoires en propre :

    • /home ;
    • /usr/local ;
    • /rw/config.

    Toute modification des fichiers présents dans les autres répertoires est faite avec une copie à la volée (copy on write) et n’est pas pérenne, elle sera détruite lorsque la machine virtuelle va être éteinte ou redémarrée.

    Les machines virtuelles « classiques »

    On peut également créer des machines virtuelles « classiques » qui ne sont pas basées sur un modèle. On leur associe un maximum de mémoire vive et d’espace disque accessible, et l’on peut y installer une distribution GNU/Linux ou BSD classique, ou bien Windows.

    Les machines virtuelles « jetables »

    Elles s’appuient sur le modèle par défaut défini par l’utilisateur, se lancent en quelques secondes et ne disposent d’aucun stockage pérenne. Elles permettent d’ouvrir des fichiers douteux sans compromettre la machine virtuelle d’origine.

    Par exemple, depuis Thunderbird, un clic droit sur une pièce jointe de type PDF propose d’ouvrir le document dans une machine virtuelle jetable. On peut également utiliser un navigateur Internet dans une machine virtuelle « jetable » pour explorer un site qui n’est pas de confiance.

    Configuration typique

    Dans une configuration typique, on va avoir trois modèles et une série de machines virtuelles :

    • Un modèle A, Fedora minimaliste complété par des pilotes réseau :
      • une machine virtuelle, on lui attribue en exclusivité la ligne PCI reliée à la carte réseau ;
    • un modèle B, Fedora minimaliste :
      • une machine virtuelle, elle fera office de pare‐feu entre la machine virtuelle « Internet » et les autres machines virtuelles ;
    • un modèle C, Fedora classique avec tous les logiciels utilisés régulièrement :
      • une machine virtuelle « secret », jamais connectée au réseau, pour stocker des données confidentielles,
      • une palanquée de machines virtuelles connectées au réseau à travers le pare‐feu ; idéalement, chaque machine virtuelle va correspondre à un usage spécifique : « travail », « banque », « réseaux sociaux », etc.,
      • une machine virtuelle dédiée aux visio‐conférences, on lui attribue un accès exclusif au micro et à la webcam.
    Configuration atypique

    De nombreux ordinateurs portables ont deux cartes réseau, une filaire et une sans‐fil. On aura alors deux machines virtuelles réseau, chacune avec un accès exclusif à l’une des cartes, et un pare‐feu dédié. On pourra également créer un pare‐feu qui fera office de réseau privé virtuel (VPN). Chaque machine virtuelle pourra alors utiliser :

    • le pare‐feu relié à la connexion réseau filaire ;
    • le pare‐feu relié à la connexion réseau sans‐fil ;
    • le pare‐feu du réseau privé virtuel, relié à l’une des connexions réseau.

    On pourra dédier une machine virtuelle à la gestion des périphériques USB, ces derniers étant une valeur sure en termes d’infections. On pourra également dédier une machine virtuelle à la gestion du chiffrement GPG, de sorte que les clefs privées ne sortent pas de cette machine virtuelle.

    Avantages et inconvénients

    L’avantage principal de Qubes OS, c’est le niveau de sécurité plus élevé qu’il procure. On peut très simplement attribuer à une machine virtuelle un accès exclusif à un périphérique. De plus, si une machine virtuelle a une activité suspecte, on peut la détruire et en générer une nouvelle en quelques clics. Et ce, sans interférer avec les autres machines virtuelles.

    Le pendant de cette sécurité plus élevée, c’est une utilisation plus complexe. L’installation d’un logiciel supplémentaire dans un modèle se fait en ligne de commande, ce qui rebutera plus d’un néophyte. De plus, il faut une certaine discipline ou hygiène dans l’utilisation quotidienne. Ainsi, lorsque l’on est sur le navigateur de la machine virtuelle « banque », il faut éviter d’ouvrir compulsivement un onglet pour aller sur YouTube ou Facebook…

    Globalement, Qubes OS n’est pas accessible au grand public. Néanmoins, après un bref apprentissage, toute personne ayant déjà vu un terminal s’y retrouve. L’ergonomie est relativement bonne. On peut copier‐coller des éléments sélectionnés entre machines virtuelles simplement (Ctrl + C puis Ctrl + Maj + C, suivi de Ctrl + Maj + V puis Ctrl + V). Et depuis le navigateur de fichiers, un clic droit sur un dossier ou un fichier permet de le copier ou de le déplacer vers une autre machine virtuelle.

    Un inconvénient majeur de Qubes OS est la gestion du ou des processeurs graphiques. Lorsqu’il n’y a qu’un processeur graphique sur la machine, Dom0 en a une utilisation exclusive. Les machines virtuelles disposent alors d’une accélération graphique limitée, ce qui est pénalisant pour jouer ou regarder des vidéos en haute définition. Il serait possible d’utiliser simultanément plusieurs processeurs graphiques, mais c’est complexe et risqué.

    Un avantage majeur de Qubes OS est la machine virtuelle « jetable ». Elle est intégrée dans Thunderbird et dans le gestionnaire de fichiers et se lance en quelques secondes, ce qui permet d’ouvrir sereinement des liens et des fichiers douteux.

    On notera que Qubes OS intègre nativement Whonix et se trouve donc dans la lignée de TAILS ou Subgraph OS : c’est un outil qui permet de renforcer la sécurité et la confidentialité des données et de leurs échanges. Ce qui est probablement inestimable pour certains utilisateurs.

    Remarques

    La version 4.0 de Qubes devrait arriver prochainement. Les spécifications matérielles vont changer et il faudra utiliser du matériel implémentant la virtualisation de second niveau (SLAT).

    La majorité des membres de l’équipe de développement sont liés à Invisible Things Lab. C’est l’entreprise qui a financé le projet lors de son lancement.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    GDPR : les actions indispensables de conformité (étude longue)

    3 juillet, 2017 - 09:48

    Le site Données personnelles publie une étude assez complète sur le règlement européen en matière de protection des données personnelles qui entrera en vigueur en mai 2018 (le GDPR / RGPD) et qui va révolutionner la protection de la vie privée. Les nouvelles sanctions, en particulier, vont inciter les organisations (les entreprises et l’État) à appliquer cette règlementation. Le règlement est long (100 pages — 99 articles de loi…), mais voici en substance onze actions pratiques qui peuvent être mises en œuvre pour se préparer au règlement :

    1. minimiser les données personnelles collectées ;
    2. s’assurer du fondement juridique du traitement ;
    3. éviter de traiter des données sensibles ;
    4. afficher les mentions légales ;
    5. respecter le droit à la portabilité des données ;
    6. mettre en place un registre de conformité ;
    7. assurer la sécurité des données personnelles ;
    8. créer un registre de violations de données personnelles ;
    9. nommer un délégué à la protection des données ou data privacy officer (DPO) ;
    10. mettre en place une évaluation d’impact sur la vie privée ou privacy impact assessment (PIA) pour les traitements les plus sensibles ;
    11. s’assurer de ne pas transférer des données personnelles hors union européenne.

    À méditer !

    Télécharger ce contenu au format Epub

    Lire les commentaires