Métier

Actualités métiers

Nos experts parlent des technologies qu'ils affectionnent, apportent leur regard technique et professionnel.

Actualités métiers - Lire la suite…

2014

Archive du blog de Makina Corpus l'année 2014
Using KeyTable and DataTables with multiple tables on the same page Par Gaël Pegliasco — Dernière modification 20/03/2014 10:14
Some years ago, when DataTables and KeyTables where respectivly at version 1.5.2 and 1.0.4 I had to implement multiples tables in a same page using each both plugins. The final work was a bit more complicated because each table was also using jEditable.
Rien que pour vos yeux Par Patrick Moreno — Dernière modification 29/12/2014 11:50
Les causes, conséquences et préventions du travail sur écran.
Drupal 7: Utiliser Scald et Bootstrap pour gérer vos slideshows Par Raphael Apard — Dernière modification 17/02/2016 16:07
Scald est une alternative au fameux module Media, avec une approche différente. Il permet de gérer une médiathèque et de glisser/déposer les médias dans un champ Drupal ou dans un éditeur WYSIWYG.
Butinage n°21 Par Simon Georges — Dernière modification 10/11/2015 16:30
Vingt-et-unième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité de nos métiers.
Introduction à Node.js Par Jean-Michel François — Dernière modification 08/02/2014 20:07
Cet article présente Node.js et NPM. Vous y apprendrez ce qu'est Node.js, comment il est utilisé et comment l'installer.
OSM Mirror Par Mathieu Leplatre — Dernière modification 09/01/2014 11:50
OSM Mirror Par Mathieu Leplatre — Dernière modification 09/01/2014 21:23
Rendre son code compatible avec Python 3 Par Alex Marandon — Dernière modification 06/10/2014 15:49
Comment rendre son projet compatible avec Python 2 et Python 3
grilletuiles.jpg Par Mathieu Leplatre — Dernière modification 14/01/2014 10:29
leaflet_dvf_01 Par Sylvain Beorchia — Dernière modification 14/01/2014 12:31
leaflet_dvf_02 Par Sylvain Beorchia — Dernière modification 14/01/2014 12:42
leaflet_dvf_03 Par Sylvain Beorchia — Dernière modification 14/01/2014 12:48
Butinage n°22 Par Simon Georges — Dernière modification 10/11/2015 16:29
Vingt-deuxième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité de nos métiers.
ODE - API et agrégateur de données événementielles Par Alex Marandon — Dernière modification 11/11/2015 12:32
Un besoin récurrent que nous rencontrons dans nos projets est la gestion de données événementielles : conférences, concerts, festival, etc. Nous avons conçu une API web Open Source pour adresser ce besoin : Open Data Events, abrégé en ODE.
SaltStack: Manage entries in unmanaged files with File Blockreplace Par Régis Leroy — Dernière modification 31/05/2015 14:28
This is a presentation on how to use the saltstack's core file.blockreplace
SaltStack: using the buildout modules Par Mathieu Le Marec - Pasquet — Dernière modification 20/01/2014 16:55
This is a thorough presentation on how to use the buildout modules in saltstack's core.
SaltStack: How to detect Jinja error: global name 'l_.*' is not defined Par Mathieu Le Marec - Pasquet — Dernière modification 20/01/2014 16:55
SaltStack: How to detect Jinja error: global name 'l_.*' is not defined explanation
2014 Par Jean-Michel François — Dernière modification 30/05/2016 16:40
Butinage n°23 Par Simon Georges — Dernière modification 10/11/2015 16:28
Vingt-troisième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité de nos métiers.
SaltStack: Use file.accumulated accumulators with file.managed and file.blockreplace Par Régis Leroy — Dernière modification 31/05/2015 14:29
This is a detailled example of salt-stack's file.accumulated usage.
SaltStack: merge dictionaries of settings with grains.filter_by Par Régis Leroy — Dernière modification 05/02/2014 17:41
Useful in formulas and macros, and now featuring a default attribute.
Butinage n°24 Par Simon Georges — Dernière modification 10/11/2015 16:27
Vingt-quatrième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité de nos métiers.
talend_xml_to_tabular_xml_file Par Gaël Pegliasco — Dernière modification 04/02/2014 10:03
XML Source file
Talend Tutorial - Advanced XML transformation – Part 1 - XML to table rows Par Gaël Pegliasco — Dernière modification 11/11/2015 16:27
One difficult point when using Talend Data Integration is working with XML data. Why? Because Talend DI has a "tabular" approach to data based on records, similar to SQL. But XML represents data as a tree, which is ideal to store hierarchical data, lists of lists and such. Moving from a two-dimensional tabular data representation to a tree representation is not so easy. But fortunately, Talend DI provides great tools for this. One of these is the tXMLMap that we propose to discover in this tutorial.
SaltStack: Use more than ascii7 on sls files with yaml_utf8 option Par Régis Leroy — Dernière modification 11/11/2015 17:59
If using special characters breaks your salt execution, yaml_utf8 new option should be enabled
Managing major legal change with Plomino Par Eric Brehault — Dernière modification 05/02/2014 09:31
A Plomino business case reported by JUDr. Jakub Šváb, Senior Corporate Counsel at J&T BANK, a.s.
Record CasperJS tests using Resurrectio Par Eric Brehault — Dernière modification 12/02/2015 14:50
Resurrectio is a Chrome extension allowing to record a sequence of browser actions and to produce the corresponding CasperJS script.
Butinage n°25 Par Simon Georges — Dernière modification 04/02/2016 20:05
Vingt-cinquième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité de nos métiers.
Gérer sa newsletter avec Drupal Par Simon Georges — Dernière modification 09/10/2019 15:30
Drupal offre plusieurs plusieurs possibilités pour mettre en place une newsletter.
Building a newsletter with Drupal Par Simon Georges — Dernière modification 27/01/2016 13:52
Let's discuss the different possibilities to build a newsletter with Drupal.
GRASS_01.png Par Célian Garcia — Dernière modification 13/02/2014 15:59
copy_of_GRASS_01.png Par Célian Garcia — Dernière modification 13/02/2014 16:02
GRASS_14.jpeg Par Célian Garcia — Dernière modification 13/02/2014 16:10
GRASS_02.jpeg Par Célian Garcia — Dernière modification 13/02/2014 16:21
GRASS_14.png Par Célian Garcia — Dernière modification 13/02/2014 16:47
GRASS_20.png Par Célian Garcia — Dernière modification 13/02/2014 17:03
GRASS_21.jpeg Par Célian Garcia — Dernière modification 13/02/2014 17:09
GRASS_22.jpeg Par Célian Garcia — Dernière modification 13/02/2014 17:10
GRASS_23.jpeg Par Célian Garcia — Dernière modification 13/02/2014 17:11
GRASS_19.jpeg Par Célian Garcia — Dernière modification 13/02/2014 17:16
GRASS_18.jpeg Par Célian Garcia — Dernière modification 13/02/2014 17:33
GRASS_06.jpeg Par Célian Garcia — Dernière modification 13/02/2014 17:38
GRASS_09.jpeg Par Célian Garcia — Dernière modification 13/02/2014 17:39
Butinage n°26 Par Simon Georges — Dernière modification 10/11/2015 16:19
Vingt-sixième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité de nos métiers.
Segmentation Dynamique Modelisation Par Mathieu Leplatre — Dernière modification 17/02/2014 15:26
lr0.jpg Par Mathieu Leplatre — Dernière modification 17/02/2014 15:30
lr3.jpg Par Mathieu Leplatre — Dernière modification 17/02/2014 15:36
lr2.jpg Par Mathieu Leplatre — Dernière modification 17/02/2014 15:36
lr4.jpg Par Mathieu Leplatre — Dernière modification 17/02/2014 15:37
copy_of_lr0.jpg Par Mathieu Leplatre — Dernière modification 17/02/2014 15:38
lr5.jpg Par Mathieu Leplatre — Dernière modification 17/02/2014 15:39
lr6.jpg Par Mathieu Leplatre — Dernière modification 17/02/2014 15:44
lr7.jpg Par Mathieu Leplatre — Dernière modification 18/02/2014 08:44
lr8.jpg Par Mathieu Leplatre — Dernière modification 18/02/2014 08:45
Q2THREE_10.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:06
Q2THREE_18.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:12
Q2THREE_15.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:13
Q2THREE_16.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:19
Q2THREE_13.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:21
Q2THREE_14.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:23
Q2THREE_17.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:31
Q2THREE_04.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:33
Q2THREE_05.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:34
Q2THREE_06.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:36
Q2THREE_03.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:37
Q2THREE_07.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:44
Q2THREE_19.jpeg Par Célian Garcia — Dernière modification 20/02/2014 10:58
Q2THREE_12.jpeg Par Célian Garcia — Dernière modification 20/02/2014 11:24
Slection_001.jpeg Par Célian Garcia — Dernière modification 20/02/2014 11:28
Comment éviter que le datepicker de webshims ne sorte de la fenêtre du navigateur ? Par Yann Fouillat — Dernière modification 11/11/2015 16:22
La bibliothèque webshims permet de simuler certaines fonctionnalités HTML5 dans les navigateurs ne les supportant pas encore nativement. Une de ces fonctionnalités est l'ajout d'un datepicker sur les champs date HTML5. Malheureusement, ce datepicker est fixe et a tendance à sortir de la fenêtre quand il manque de place. Cet article montre comment corriger ce problème.
Un serveur OpenStreetMap pour votre ville Par Mathieu Leplatre — Dernière modification 12/11/2015 07:56
La mise en place d'un serveur de cartes OSM en une seule commande
Stocker un MBTiles volumineux sur une carte SD Par Mathieu Leplatre — Dernière modification 27/01/2016 16:45
Combiner une authentification LDAP et l'authentification classique Django Par Florent Lebreton — Dernière modification 05/02/2014 17:56
Comment mixer une authentification LDAP et l'authentification classique Django pour pouvoir garder la possibilité d'avoir des utilisateurs seulement dans Django et pouvoir pallier une éventuelle défaillance de l'annuaire LDAP ?
Afficher des graphiques (charts) avec Leaflet DVF Par Sylvain Beorchia — Dernière modification 14/01/2014 15:05
Afficher des graphiques en rapport aux données attributaires sur une carte Leaflet
Stockage de tuiles : comprendre WMTS et TMS Par Isabelle Vallet — Dernière modification 12/11/2015 07:56
Le stockage des tuiles sous forme z/x/y peut se faire selon deux schémas, qui infuent sur la valeur en ordonnées.
The state of localize.drupal.org in 2014 Par Sébastien Corbin — Dernière modification 06/07/2017 11:37
A summary about the current situation of the Drupal localization project.
Un workflow Git efficace pour les projets à moyen/long terme Par Florent Lebreton — Dernière modification 28/01/2016 01:57
Une présentation d'un workflow Git testé et approuvé dans le cadre du développement, du déploiement et de la maintenance de produit GMAO JOB de Makina Corpus par une équipe de plusieurs développeurs.
Présentation du Petit déjeuner "Alternatives libres à GoogleMaps" du 11 février 2014 Par Simon Garric — Dernière modification 12/02/2014 15:42
Nantes - Sylvain Beorchia
Créer facilement un plugin CKEditor 4 Par Yannick Chabbert — Dernière modification 16/02/2016 15:30
Une API bien fournie et documentée avec des exemples concrets vous permettront de parvenir à la création d'un plugin CKEditor en quelques minutes !
Butinage n°27 Par Simon Georges — Dernière modification 10/11/2015 16:18
Vingt-septième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité web.
cron.present & cron.absent contributions to saltstack Par Mathieu Le Marec - Pasquet — Dernière modification 21/02/2014 00:08
Some highlights about our recent contributions in SaltStack core toward cron
salt-call can now return your job information mr.watson Par Mathieu Le Marec - Pasquet — Dernière modification 11/11/2015 12:28
SaltStack is cool, very versatile, you can act on both ways of your pipe, from the minion or the master, and it is even more transparent now !
Butinage n°28 Par Simon Georges — Dernière modification 10/11/2015 16:17
Vingt-huitième exemplaire de la veille régulière réalisée par Makina Corpus sur l'actualité web.
POSTGRES_QLBABYLON_01.jpeg Par Célian Garcia — Dernière modification 03/03/2014 15:47
POSTGRES_QLBABYLON_02.jpeg Par Célian Garcia — Dernière modification 03/03/2014 15:48
POSTGRES_QLBABYLON_03.jpeg Par Célian Garcia — Dernière modification 03/03/2014 15:49
Talend Tutorial - Advanced XML transformation – Part 2 - table rows to XML Par Gaël Pegliasco — Dernière modification 21/11/2014 12:11
One difficult point when using Talend Data Integration is working with XML data. Why? Because Talend DI has a "tabular" approach to data based on records, similar to SQL. But XML represents data as a tree, which is ideal to store hierarchical data, lists of lists and such. Moving from a two-dimensional tabular data representation to a tree representation is not so easy. But fortunately, Talend DI provides great tools for this. One of these is the tAdvancedFileOutputXML that we propose to discover in this tutorial.
talend_tabular_to_xml Par Gaël Pegliasco — Dernière modification 03/03/2014 16:36
Images et fichiers du tutorial
POSTGRES_QLBABYLON_06.png Par Célian Garcia — Dernière modification 03/03/2014 16:13
animation-simplification-geom Par Frédéric Bonifas — Dernière modification 03/03/2014 16:17
Mise en place d'un site Drupal 7 éditorial multilingue Par Simon Georges — Dernière modification 15/01/2016 19:20
Etapes de transformation d'un site Drupal monolingue en site multilingue.
Construire un MBTiles le long d'un itinéraire Par Mathieu Leplatre — Dernière modification 12/11/2015 07:57
Avec Landez, la zone couverte d'un fichier MBTiles peut suivre une ligne!
Visualiser en 3D un Modèle Numérique de Terrain avec NVIZ sous QGIS Par Célian Garcia — Dernière modification 12/11/2015 07:57
La segmentation dynamique Par Mathieu Leplatre — Dernière modification 12/11/2015 07:58
Introduction au référencement linéaire et ses applications
Développer sur le cloud, ou comment tout construire à partir de rien Par Simon Garric — Dernière modification 11/11/2015 19:13
Présentation du petit déjeuner du 11 février à Toulouse
Visualiser en 3D un Modèle Numérique de Terrain avec Qgis2threejs Par Célian Garcia — Dernière modification 12/11/2015 07:58
Ce plugin QGIS permet de visualiser des données en 3D dans le navigateur, grâce à WebGL via Three.js
Réduire le poids d'un GeoJSON Par Frédéric Bonifas — Dernière modification 04/03/2014 10:46
Présentation de plusieurs techniques pour diminuer la taille d'un GeoJSON
Affichage d'un Modèle Numérique de Terrain avec Babylon.js à partir de données PostgreSQL Par Célian Garcia — Dernière modification 05/03/2014 10:20
Récupération et exploitation de données depuis PostGIS dans le but de visualiser un Modèle Numérique de Terrain avec Babylon.js .
Salt Cloud can now spawn LXC Containers, or how SaltStack made lxc containers management easy Par Mathieu Le Marec - Pasquet — Dernière modification 06/03/2014 21:48
Drupal_langages.jpeg Par Simon Georges — Dernière modification 06/03/2014 09:59

2013

Archive du blog de l'année 2013

2013 - Lire la suite…


Image dans sa taille originale : 45.8 KB | Voir l'image Voir Télécharger l'image Télécharger

grid-exemple

Exemple de grille au pixel sous photoshop
grid-exemple
Image dans sa taille originale : 15.8 KB | Voir l'image Voir Télécharger l'image Télécharger

Super Santa Bros

Pixel art de mario en père noël
Super Santa Bros
Image dans sa taille originale : 28.8 KB | Voir l'image Voir Télécharger l'image Télécharger

drupman

Drupman
drupman
Image dans sa taille originale : 76.2 KB | Voir l'image Voir Télécharger l'image Télécharger

status settings

status settings
Image dans sa taille originale : 94.8 KB | Voir l'image Voir Télécharger l'image Télécharger

taiga-backlog

taiga-backlog
Image dans sa taille originale : 123.5 KB | Voir l'image Voir Télécharger l'image Télécharger

filtres tickets

filtres tickets
Image dans sa taille originale : 84.5 KB | Voir l'image Voir Télécharger l'image Télécharger

filtres tickets2

filtres tickets2
Image dans sa taille originale : 81.5 KB | Voir l'image Voir Télécharger l'image Télécharger

visio

visio
Image dans sa taille originale : 120.2 KB | Voir l'image Voir Télécharger l'image Télécharger

visio

visio
Image dans sa taille originale : 120.2 KB | Voir l'image Voir Télécharger l'image Télécharger

Créer un projet sous taiga

Créer un projet sous taiga
Image dans sa taille originale : 13.4 KB | Voir l'image Voir Télécharger l'image Télécharger

taiga-ajout-story

taiga-ajout-story
Image dans sa taille originale : 39.2 KB | Voir l'image Voir Télécharger l'image Télécharger

ajout story dans taiga

ajout story dans taiga
Image dans sa taille originale : 50.3 KB | Voir l'image Voir Télécharger l'image Télécharger

Taiga backlog filtres

Taiga backlog filtres
Image dans sa taille originale : 63.1 KB | Voir l'image Voir Télécharger l'image Télécharger

taiga bulk taks

PS document icon taiga-bulk-tasks.png.ai — PS document, 192 kB (197 225 bytes)

taiga bulk tasks

taiga bulk tasks
Image dans sa taille originale : 140.4 KB | Voir l'image Voir Télécharger l'image Télécharger

Taiga issues filters

Taiga issues filters
Image dans sa taille originale : 60.7 KB | Voir l'image Voir Télécharger l'image Télécharger

admin attributes

admin attributes
Image dans sa taille originale : 115.0 KB | Voir l'image Voir Télécharger l'image Télécharger

taiga roles droits

taiga roles droits
Image dans sa taille originale : 130.1 KB | Voir l'image Voir Télécharger l'image Télécharger

taiga produits externes

taiga produits externes
Image dans sa taille originale : 56.1 KB | Voir l'image Voir Télécharger l'image Télécharger

taiga bulk tasks

taiga bulk tasks
Image dans sa taille originale : 129.7 KB | Voir l'image Voir Télécharger l'image Télécharger

capture_ajax_form.gif

capture_ajax_form.gif
Image dans sa taille originale : 210.4 KB | Voir l'image Voir Télécharger l'image Télécharger

monmodule.png

monmodule.png
Image dans sa taille originale : 18.0 KB | Voir l'image Voir Télécharger l'image Télécharger

SICOVAL MNT

SICOVAL MNT
Image dans sa taille originale : 79.4 KB | Voir l'image Voir Télécharger l'image Télécharger

SICOVAL MNT 100%

SICOVAL MNT 100%
Image dans sa taille originale : 30.5 KB | Voir l'image Voir Télécharger l'image Télécharger

SICOVAL Ombrage

SICOVAL Ombrage
Image dans sa taille originale : 96.4 KB | Voir l'image Voir Télécharger l'image Télécharger

SICOVAL MNT-carte

SICOVAL MNT-carte
Image dans sa taille originale : 124.5 KB | Voir l'image Voir Télécharger l'image Télécharger

Mapbox terrain détail

Mapbox terrain détail
Image dans sa taille originale : 5.0 KB | Voir l'image Voir Télécharger l'image Télécharger

Mapbox terrain

Mapbox terrain
Image dans sa taille originale : 37.5 KB | Voir l'image Voir Télécharger l'image Télécharger

SICOVAL RGB

SICOVAL RGB
Image dans sa taille originale : 21.8 KB | Voir l'image Voir Télécharger l'image Télécharger

SICOVAL courbes de niveau

SICOVAL courbes de niveau
Image dans sa taille originale : 173.7 KB | Voir l'image Voir Télécharger l'image Télécharger

BD ALTI ombrage

BD ALTI ombrage
Image dans sa taille originale : 142.9 KB | Voir l'image Voir Télécharger l'image Télécharger

BD ALTI ombrage et carte

BD ALTI ombrage et carte
Image dans sa taille originale : 196.7 KB | Voir l'image Voir Télécharger l'image Télécharger

BD ALTI overzoom

BD ALTI overzoom
Image dans sa taille originale : 78.3 KB | Voir l'image Voir Télécharger l'image Télécharger

Rotation carte MNT

Rotation carte MNT
Image dans sa taille originale : 4.1 MB | Voir l'image Voir Télécharger l'image Télécharger

Rotation carte Ombrage

Rotation carte Ombrage
Image dans sa taille originale : 2.3 MB | Voir l'image Voir Télécharger l'image Télécharger

Cesium tuiles 3D

Cesium tuiles 3D
Image dans sa taille originale : 135.8 KB | Voir l'image Voir Télécharger l'image Télécharger

Cesium dense mesh

Cesium dense mesh
Image dans sa taille originale : 366.3 KB | Voir l'image Voir Télécharger l'image Télécharger

Cesium quantized mesh

Cesium quantized mesh
Image dans sa taille originale : 207.9 KB | Voir l'image Voir Télécharger l'image Télécharger

Cesium tin-terrain

Cesium tin-terrain
Image dans sa taille originale : 258.5 KB | Voir l'image Voir Télécharger l'image Télécharger

Cesium, sans et avec ombres

Cesium, sans et avec ombres
Image dans sa taille originale : 253.5 KB | Voir l'image Voir Télécharger l'image Télécharger

segmentation sémantique

Extrait de l'article [L’IA… Et le véhicule fut autonome !](https://medium.com/france-school-of-ai/lia-et-le-v%C3%A9hicule-fut-autonome-2abd8a348eb5) de Jeremy Cohen.
segmentation sémantique
Image dans sa taille originale : 161.6 KB | Voir l'image Voir Télécharger l'image Télécharger

Observatoire photographique du paysage Martinique

Observatoire photographique du paysage Martinique
Image dans sa taille originale : 8.4 MB | Voir l'image Voir Télécharger l'image Télécharger

randomwalk_ui.png

randomwalk_ui.png
Image dans sa taille originale : 82.7 KB | Voir l'image Voir Télécharger l'image Télécharger

bureau-de-vote-0-001-andernos

bureau-de-vote-0-001-andernos
Image dans sa taille originale : 83.5 KB | Voir l'image Voir Télécharger l'image Télécharger

bureau-de-vote-0-003-ambares

bureau-de-vote-0-003-ambares
Image dans sa taille originale : 62.6 KB | Voir l'image Voir Télécharger l'image Télécharger

Série d'articles, 4ème article : le cas concret d'un réseau de neurones siamois

4ème article de la série 'Ces innovations qui permettent à l'IA de sortir des laboratoires !'
Série d'articles, 4ème article : le cas concret d'un réseau de neurones siamois

Pour conclure cette série d'articles, nous souhaitions vous présenter un cas concret inspiré de l'un des projets réalisés pour nos clients. Il s'agit d'un réseau de neurones siamois entraîné pour distinguer si un mot correspond à une variante, mal orthographiée, d'un mot correct.

Principe général de ce réseau

schema reseau siamoi

Illustration n°1 : Schéma général du réseau de neurones utilisé : chaque mot est transformé en vecteur numérique, puis les deux vecteurs numériques sont analysés avant de réaliser une prédiction

Quelques exemple :  emmbbrassa -> embrassa d'ailleurê -> d ailleurs voudrass -> voudrais

Les mots ont été extraits de la nouvelle «Candide» de Voltaire. Les mots d'au moins six caractères ont été conservés ce qui donne un peu plus de 3000 mots dont nous pouvons apprendre les variantes.

Dans un premier temps, une vérité terrain à partir de 1000 mots de référence a été créée avec environ 500 modifications par mot : lettres supprimées, permutées, insérées. Un réseau avec ces données a été entraîné et ensuite analysé pour comprendre comment lui permettre de progresser.

Erreurs, apprentissage actif et capacités d'apprentissage

Si le réseau obtient un excellent score sur les données d'apprentissage (plus de 98% de réussite), il reste globalement moins bon, (avec un score proche de 97%) sur les données qui permettent de tester sa capacité à généraliser. Ces données sont généralement nommées «données de test» : chez Makina Corpus nous préférons les qualifier de «données de contrôle».

Ce cas de figure est fréquent et normal. Cependant, nos experts se sont demandés si à partir de ces données posant problème au réseau, il était possible de faire progresser le réseau de neurones sans tomber dans l'oubli catastrophique. Effectivement, les tests ont montré qu'en poursuivant l'entraînement du réseau avec les données de contrôle sur lesquelles il a commis les erreurs les plus importantes, cela ne dégrade pas ses performances sur les données d'apprentissage.

Ce résultat indique que la capacité d'apprentissage du réseau n'est pas saturée et qu'il est capable d'intégrer les spécificités des nouvelles données.

Ajout de nouveaux mots avec leurs variantes

Ensuite, notre modèle a été entraîné avec 1000 nouveaux mots. L'entraînement du réseau a été poursuivi uniquement avec la vérité terrain pour ces mots ajoutés, sans intégrer les données liées aux 1000 mots précédents. Cette fois-ci, le réseau de neurones a commencé à souffrir d'oublis catastrophiques avec des scores qui chutent à 95% pour les données d'apprentissage et de contrôle des 1000 premiers mots, tandis que des scores proches de 98% sont obtenus avec les nouveaux mots.

Nous voulions tester une méthode d'apprentissage continue parmi celles présentées dans l'article Continual Lifelong Learning with Neural Networks: A Review rédigé par les chercheurs G. I. Parisi, R. Kemker, J. L. Part, C. Kanan et S. Wermter. Les conclusions de l'article ainsi que notre expérience, nous ont conduit à nous intéresser à la méthode présentée dans le papier Progressive Neurla Networks décrite par A. A. Rusu, N. C. Rabinowitz, G. Desjardins, H. Soyer, J. Kirkpatrick, K. Kavukcuoglu, R. Pascanu et R. Hadsell.

Le schéma suivant donne le principe des réseaux de neurones progressifs. Les couches 1.1, 1.2 et 1.3 appartiennent à un premier réseau entraîné à résoudre un premier problème à partir d'une ou plusieurs données en entrée. Lorsqu'un autre problème se présente - qui peut être lié à de nouvelles données d'apprentissage ou au besoin d'extraire une information différente des données précédentes - un deuxième réseau est greffé sur le premier. Ici, il correspond aux couches 2.1, 2.2 et 2.3. Chaque couche de ce réseau reçoit en entrée la sortie de la couche précédente et les sorties des couches précédentes des réseaux de neurones antérieurs.

reseau neurone progressif

Illustration n°2 : principe des réseaux de neurones progressifs.

Les réseaux progressifs permettent de résoudre complètement le problème de l'oubli catastrophique et assure que l'architecture du réseau de neurones reste adaptée à la complexité des problèmes à résoudre. Il s'agit d'une des techniques d'apprentissage continue les plus efficaces. Elle a cependant le défaut de faire grossir rapidement la structure du réseau de neurones final.

Notre équipe n'a pas réalisé une implémentation stricte du papier de Rusu et al. : la partie analyse uniquement a été dupliquée afin de réduire les problèmes de passage à l'échelle.

schema reseau neurone progressif

Illustration n°3 : réseau de neurones de mise en correspondance adapté pour devenir progressif.

Cette nouvelle architecture donne de très bons résultats, permettant un score de plus de 98% de réussite sur chacun des groupes de 1000 mots.

Perspectives

Le réseau de neurones progressif obtient de bons scores lorsqu'il s'agit de mettre en un mot en correspondance à un ou plusieurs mots de référence. Pourtant, Il reste beaucoup à faire avant de l'intégrer dans une véritable application. L'un des points dont Makina Corpus aura peut-être l'occasion de vous parler prochainement concerne l'analyse des prédictions fournies par le réseau de neurones progressifs. Chaque sous réseau qui s'ajoute au premier réseau de neurones fournit une nouvelle prédiction. Il convient de sélectionner celle qui correspond bien au résultat que nous cherchons à prédire. En effet, l'un des désavantages des modèles de mise en correspondance est de produire de nombreux faux positifs lorsqu'ils se retrouvent face à une chaîne de caractère qui ne correspond à aucune des données de référence connue. Afin de résoudre ce problème, nous pensons qu'une approche statistique, basée sur l'analyse et la caractérisation des probabilités obtenues pour un mot comparé à l'ensemble des données de référence, permettrait d'obtenir des résultats fiables.

Une fois cette brique entièrement fonctionnelle, nous pourront réfléchir à comment l'intégrer dans une ou plusieurs applications pouvant avoir des objectifs variés. Ce sont ces objectifs ainsi que la volonté d'offrir un confort maximal aux utilisateurs qui guideront nos choix en matière de design. Les choix qui seront réalisés en matière d'interaction homme/machine ou de développement logiciels seront tout aussi cruciaux pour garantir la viabilité de ces applications.

Conclusion

Entre la validation scientifique d'une IA dans un contexte de recherche et son utilisation concrète au sein d'un processus métier, la route reste longue. Nous avons souhaité vous présenter dans cette série d'articles les concepts de base qui guide le travail de Makina Corpus sur cette problématique.

Si vous souhaitez échanger avec nous sur le sujet nous vous recommandons l'une de nos formation en Deep Learning pour les férus de techniques ou sur la Valorisation des données dormantes pour ceux qui souhaitent une approche de plus haut niveau.

Articles liés à cette série

Formations

Web mapping : comparaison des serveurs de tuiles vectorielles depuis Postgres / PostGIS

Un ensemble de serveurs de tuiles vectorielles basés sur la fonction ST_AsMVT() de PostGIS sont disponibles. Makina Corpus vous propose un tour d’horizon des spécificités des différentes solutions.
Web mapping : comparaison des serveurs de tuiles vectorielles depuis Postgres / PostGIS

Tuiles vectorielles

Les cartes sur le web sont constituées de tuiles, c’est-à-dire de morceaux de cartes qui sont chargées au fur et à mesure du déplacement de la carte ou de l'utilisation du zoom. Ces morceaux peuvent être des images, nommées "raster", ou des géométries - point, ligne, polygones - nommées "vecteur". Les cartes composées de tuiles vecteurs représentent une technique plus récente et offrent plus de fluidité et d’interactivité. Cela est dû au fait que les données composant la carte sont dans le navigateur et pas seulement une représentation image de celles-ci.

Un service de tuiles vectorielles peut-être décrit par un TileJSON. C’est un fichier de méta-information qui donne notamment la liste des couches attendues dans les tuiles ainsi que les listes d’attributs disponibles sur les objets. Le TileJSON donne également les plages d’application des couches : zone géographique et niveaux de zooms disponibles.

Technique de production de tuiles vectorielles

Nous nous intéressons ici aux données cartographiques stockées en base de données que nous souhaitons présenter sur le web sous forme de tuiles vectorielles. Le type de base de données utilisé pour faire cela est essentiellement Postgres avec son extension de données spatiales PostGIS.

Pour une vision plus large et l’intégration de ces serveurs de tuiles à un écosystème vous pouvez également consulter l’article Tour d’horizon des serveurs de tuiles vectorielles pour fond de carte.

Historiquement pour une tuile, des requêtes sont faites en base de données. Les données - géométries et attributs - sont récupérées, puis traitées par le programme appelant. Dans le cas de tuiles rasters, les données sont dessinées dans une image puis envoyées au navigateur web. Dans le cas de tuiles vectorielles, elles sont converties au format binaire Mapbox Vector Tile (MVT), puis envoyées au navigateur web.

PostGIS a dans ces dernières versions implémenté, puis optimisé, le support des tuiles vectorielles MVT. Auparavant, il était possible de produire du GeoJSON ou du SVG. Aujourd'hui, le support du format MVT implémenté directement en base de données simplifie les choses. Servir des tuiles ne consiste plus alors qu’à récupérer le MVT et à l’envoyer au navigateur web.

Les tuiles MVT utilisent des coordonnées à valeurs entières pour représenter les géométries. PostGIS se charge de la simplification des géométries, de la discrétisation en valeurs entières et des problèmes de cohérence que cela peut engendrer. Elles peuvent être composées de plusieurs couches, par exemple les cours d’eau, une frontière, la voirie…

Toute une série de logiciels sont progressivement apparus pour produire et servir des tuiles MVT depuis une base Postgres / PostGIS. Ces logiciels permettent de servir en HTTP des tuiles dont le contenu est défini par des requêtes SQL. Ils ont tous en commun d’être construis sur la fonction ST_AsMVT() de PostGIS.

SELECT
    ST_AsMVT(*)
FROM (
    SELECT
        ST_AsMVTGeom(
            geom,
            ST_TileEnvelope(12, 513, 412),
            extent => 4096,
            buffer => 64
        ) AS geom,
        name,
        description
    FROM
        points_of_interest
    WHERE
        geom && ST_TileEnvelope(12, 513, 412, margin => (64.0 / 4096))
) AS t

Utilisation de ST_AsMVT() et de ST_AsMVTGeom().

Ces logiciels sont bâtis pour répondre à deux objectifs un peu distincts :

  • produire des tuiles pour fond de carte,
  • produire des tuiles de données « métiers » qui vont venir être affichées en complément d’un fond de carte.

Serveur de tuiles vectorielles pour fond de carte

Ce type de serveurs retourne des tuiles qui dépendent seulement des cordonnées des tuiles (x, y) et du niveau de zoom (z). Typiquement ces tuiles contiennent beaucoup de couches de données.

Postserv

Postserv est un serveur très simple qui fait partie de l’outillage du projet OpenMapTiles. Il est décrit comme n’étant pas taillé pour de la production.

Il a l’avantage d’utiliser une description des couches au format tm2source (du yaml). Il s'agit d'un format répandu pour lister des couches utilisées dans un fond de carte. Le tm2source inclut une requête SQL par couche. Le SQL peut contenir des variables pour ajuster le comportement, notamment le niveau de zoom.

- Datasource:
    dbname: openmaptiles
    geometry_field: geometry
    max_size: 512
    srid: 900913
    table: (SELECT geometry, ref, class FROM layer_aeroway(!bbox!, z(!scale_denominator!)))
      AS t
  id: aeroway
  properties:
    buffer-size: 4

Postile

Postile est une solution proche de Postserv. Il est taillé pour de la production tout en prenant un tm2source comme liste des couches à servir.

Il offre en plus l’accès aux couches une par une. Il permet également d’utiliser une archive MBTiles de tuiles pré-calculées plutôt que de les construire à la demande.

Tilekiln

Réalisé par Paul Norman, Tilekiln est un projet qui n’est pas encore mature. Celui-ci a la particularité d’utiliser des templates jinja2 pour paramétrer les requêtes SQL dans le logiciel avant de les envoyer à Postgres.

SELECT
    ST_AsMVTGeom(ST_PointOnSurface(way), {{bbox}}, {{extent}}) AS way
  FROM planet_osm_polygon
  WHERE way && {{bbox}}
    AND boundary = 'administrative'
    AND admin_level = '2'
    AND name IS NOT NULL
{% if zoom <= 12 %}
    AND way_area > {{tile_area}}*0.05^2
{% endif %}
    AND osm_id < 0

Le projet est capable de produire un descripteur TileJSON depuis sa configuration.

T-rex

T-rex fait parti des serveurs de sa catégorie le plus abouti. Ce serveur peut, en plus de PostGIS, utiliser des sources de données GDAL. La définition SQL des calques se fait dans un fichier de configuration au format toml. Des variables - comme le zoom - peuvent être injectées dans le code SQL.

[[tileset.layer]]
name = "buildings"
datasource = "buildings"
geometry_field = "geometry"
geometry_type = "POLYGON"
buffer_size = 10
simplify = true
  [[tileset.layer.query]]
  sql = """
    SELECT name, type, 0 as osm_id, ST_Union(geometry) AS geometry
    FROM osm_buildings_gen0
    WHERE geometry && !bbox!
    GROUP BY name, type
    ORDER BY sum(area) DESC"""

Le serveur fournit un descripteur TileJSON et une interface web de test.

Tegola

Tegola est également une solution très aboutie. Tegola peut utiliser des données depuis PostGIS ou en GeoPackage. cette solution peut servir plusieurs définitions de tuiles et offre un accès par couche. De plus, Tegola possède un système de cache de tuiles et d’invalidation de ce cache.

Ce serveur fournit également un descripteur TileJSON et une interface web de test.

Serveur de tuiles vectorielles en surcouche de données

Les serveurs fournissant des surcouches de données n’incluent que la couche demandée dans la tuile. Certains serveurs autorisent des arguments en paramètre d’URL des tuiles. Ces paramètres sont envoyés à la requête SQL pour influencer sur le contenu des tuiles produites : par exemple filtrer les données par date, par utilisateur…

Ce type de serveur ne s’occupe par des requêtes SQL, ils accèdent à des tables ou des fonctions retournant des enregistrements déjà en place.

Des fonctions retournant des tuiles peuvent être définies en SQL. Ellles peuvent être considérées comme des vues prenant des paramètres.

CREATE OR REPLACE FUNCTION tile_source(z integer, x integer, y integer, query_params json) RETURNS bytea AS $$
DECLARE
  mvt bytea;
BEGIN
  SELECT INTO mvt ST_AsMVT(tile, 'public.function_source', 4096, 'geom') FROM (
    SELECT
      ST_AsMVTGeom(ST_Transform(geom, 3857), TileBBox(z, x, y, 3857), 4096, 64, true) AS geom
    FROM public.table_source
    WHERE geom && TileBBox(z, x, y, 4326)
  ) as tile WHERE geom IS NOT NULL;
  RETURN mvt;
END
$$ LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE;

Exemple de fonction retournant des tuiles.

Dirt

dirt-simple-postgis-http-api permet d’obtenir le contenu d’une table en tuiles vectorielles ou dans d’autres formats comme le GeoJSON. Il permet aussi d’appliquer certaines fonctions simples, comme obtenir le centroïde des géométries tout en utilisant des filtres.

Il ne permet pas de définir ces propres requêtes SQL.

pg_tileserv

pg_tileserv est un jeune projet, développé par l’emblématique Paul Ramsey (entre autres le créateur de PostGIS). Le projet contient déjà toutes les bonnes idées pour ce type de serveur : données depuis une table ou une fonction retournant des enregistrements, des paramètres pour filtrer les données, des paramètres pour ajuster la création des tuiles vectorielles…

Martin

Martin est un projet plus mature qui a servi de modèle à pg_tileserv. Il peut lui aussi utiliser une table ou une fonction comme source de données et supporte les paramètres pour filtrer les données.

Vue d’ensemble

Postserv Postile Tilekiln T-rex Tegola
Compagnie / Projet / Auteur OpenMapTiles Oslandia Paul Norman Sourcepole Go-spatial
Objectif fond de carte fond de carte / couche fond de carte fond de carte fond de carte
Dépôt https://github.com/openmaptiles/openmaptiles-tools/blob/master/bin/postserve https://gitlab.com/Oslandia/postile https://github.com/pnorman/tilekiln https://github.com/t-rex-tileserver/t-rex/ https://github.com/go-spatial/tegola
Langage python python python rust go
Configuration service - - yaml toml toml
Configuration layer tm2source (yaml) tm2source (yaml) sql / jinja2 sql / toml sql / toml
TileJSON - - x x x
Depuis d’autres sources - MBTiles - GDAL GPKG
Filtre depuis URL - - - - -
Depuis fonction Postgres - - - - -
Interface web de test - x - x x
Remarques Pas fait pour de la production Non mature Support des projections Plusieurs définitions de tuiles
Cache de tuiles
dirt-simple-postgis-http-api Martin pg_tileserv
Compagnie / Projet / Auteur - Urbica (Yandex) CrunchyData, Paul Ramsey
Objectif couche couche dynamique couche dynamique
Dépôt https://github.com/tobinbradley/dirt-simple-postgis-http-api https://github.com/urbica/martin https://github.com/CrunchyData/pg_tileserv
Langage js rust go
Configuration service json yaml toml
Configuration layer - yaml -
TileJSON - par couche par couche
Depuis d’autres sources - - -
Filtre depuis URL - x x
Depuis fonction Postgres - x x
Interface web de test - - -
Remarques Non mature

Les fonctionnalités des différentes solutions présentées sont proches, en particulier pour les projets les plus avancés. Elles offrent cependant des petites différences qui peuvent pousser à les choisir pour certains cas d’usages. Par exemple :

  • seul T-rex permet de choisir la projection,
  • seul Postserv et Postile peuvent utiliser un tm2source,
  • tous les serveurs n’offrent pas de descripteur TileJSON,
  • seul Martin et pg_tileserv produisent de la tuile paramétrable par URL.

A retenir, Postserv et Postile pour du fond de carte générique (utilisable avec OpenMapTiles par exemple), T-rex et Tegola pour la richesse de leurs fonctionnalités pour du fond de carte sur-mesure. Pour de la couche de tuiles de données à la demande et paramétrable par URL, Martin est la solution la plus accomplie mais le nouveau pg_tileserv est prometteur.

Formations en lien

QGIS : le nouveau support des tuiles rasters et vectorielles

La dernière version de QGIS 3.14 apporte deux nouveaux types de calques : les tuiles rasters et les tuiles vectorielles.
QGIS : le nouveau support des tuiles rasters et vectorielles

Il était déjà possible d’afficher des fonds de carte basés sur des tuiles rasters dans QGIS via des plugins, en particulier avec le plugin « OpenLayers ». L’affichage de tuiles vectorielles peut aussi être réalisé avec le plugin « Vector tiles reader », mais moins connu. Aujourd'hui, plus besoin de ces plugins puisque la nouvelle version de QGIS apporte une solution intégrée.

Les deux nouveaux types de calques sont tous deux basés sur le concept de tuiles : cartes découpées en morceaux réguliers (carrés) et par niveau d’échelle, permettant de ne charger les morceaux de cartes qu’au fur et à mesure de sa navigation. Les nouveaux types de calques sont :

  • Vector Tiles : pour des tuiles vectorielles
  • XYZ Tiles : pour des tuiles raster, pré-configurées avec des exemples issus d’OpenStreetMap et d'autres sources

Pour ajouter une source de tuiles, il suffit d’avoir l’URL générique de ces tuiles de la forme suivante:

http://tile.openstreetmap.org/{z}/{x}/{y}.png

{z}, {x} et {y} sont remplacés par les coordonnées des tuiles. Par exemple, il est possible d'aller en piocher dans le catalogue raster d’OpenStreetMap.

Les tuiles vectorielles sont des tuiles de données et non pas des images. Il n’y a donc pas de style graphique associé. Pour autant, ce type de couche a l’avantage d’être un calque de données qui peuvent être interrogées et reprojetées.

Les tuiles vectorielles peuvent provenir d'un fournisseur habituel (comme Mapbox, MapTiler, Jawg Maps…) ou même d’un serveur local de tuiles vectorielles.

https://api.maptiler.com/tiles/v3/{z}/{x}/{y}.pbf?key=[key]

Exemple d’URL générique de tuiles vectorielles.

Il existe également un nouveau plugin « MapTiler » qui remplace « Vector tile reader ». MapTiler permet de charger un style de carte vectorielle au format Mapbox GL. Celui-ci charge les tuiles vectorielles et convertit le style au format QGIS.

Exemple d’import du style Mapbox GL MapTiler Streets.

Les tuiles vectorielles et leur style dans QGIS sont conservés lors de l’export en PDF et de l’impression. Par nature, l'approche vectorielle permet le redimensionnement d'un dessin sans perte dans la qualité en sortie, quelle que soit la taille d'impression. C'est un bon moyen de réaliser des impressions de fond de carte basées sur OpenStreetMap.

Export PDF de l’Île-d'Aix

QGis 3.14 offre donc un meilleur support des tuiles rasters et vectorielles. Les styles Mapbox GL peuvent être importés avec le plugin MapTiler, ce qui permet notamment de réaliser des impressions de qualité.

Formations en lien

qgis-3.14-vector

qgis-3.14-vector
Image dans sa taille originale : 432.2 KB | Voir l'image Voir Télécharger l'image Télécharger

qgis-3.14-mapbox-gl

qgis-3.14-mapbox-gl
Image dans sa taille originale : 311.4 KB | Voir l'image Voir Télécharger l'image Télécharger

qgis-3.14-pdf

qgis-3.14-pdf
Image dans sa taille originale : 73.7 KB | Voir l'image Voir Télécharger l'image Télécharger

qgis-3.14-export-pdf

PDF document icon msm.pdf — PDF document, 576 kB (589 914 bytes)

ABONNEZ-VOUS À LA NEWSLETTER !