# Piria

PiRiA (acronyme pour "Programme d'Indexation et de Recherche d'Images par Affinité") est un moteur de recherche d'images similaires, qui analyse le contenu visuel des images afin de les ordonner par similarité.
En ce sens la description du contenu visuel sous la forme d'un ensemble de valeurs numérique de taille plus réduite que la taille initiale de l'image correspond à une compression informatique. Cet ensemble de valeurs est appelé signature de l'image. Un ensemble de signatures constitue un index dans le jargon CBIR (Content Base Image Retrieval), il est à différencier des véritables index des bases de données (même si un moteur peut stocker ses signatures via une telle base). On parle aussi de vecteur pour désigner la signature de l'image.
La phase de création des signatures est en général peu critique en termes de temps. En revanche, la seconde phase, dite phase de recherche consiste à parcourir les signatures calculées durant la phase précédente (différentes façons existent ; exhaustive ou non avec différentes stratégies et organisations suivant les types de données utilisés) afin de calculer une similarité entre les signatures. La similarité est souvent réduite à un calcul de distance lui-même souvent réduit à une distance euclidienne. Cette phase est critique en temps, on désire qu'elle soit la plus courte possible afin de délivrer à l'utilisateur une réponse le plus rapidement possible sur plusieurs centaines de millions d'éléments.
Créé au CEA LIST, le programme, écrit en C++, s'appuie fortement sur les STL, mais utilise aussi l'assembleur, est en fait un moteur multimédia qui permet l'indexation et la recherche par le contenu des images, des vidéos et du texte mono lingue. La plupart des formats d'images présents sur le web sont supportés (BMP, JPEG, TIFF, PNG, GIF, et PGM). Le moteur fonctionne sous Windows et Linux (32 et 64bits). Actuellement le taux de recherche de PiRiA est de l'ordre de trois millions de signatures par seconde en phase de recherche sur un portable (2008).

## Descripteurs

Le moteur dispose de plusieurs descripteurs (>10) caractérisant le contenu des images en termes de couleur (11 modèles), de texture et de formes (silhouette) de manière globale ou locale. Les 11 modèles de couleurs sont :
* RGB, HSL, HSV, HSI, YCrCb, XYZ, Lab, Luv, YUV, YIQ, Lar.
Les descripteurs globaux sont ceux qui sont calculés sur la totalité de l'image. Ce sont les plus anciennement connus s'ils sont relativement simples et rapides à calculer, ils souffrent d'un manque d'invariance aux transformations affines (due à la difficulté de la segmentation) et donc ils manquent de sémantique face aux descripteurs locaux plus complexes et aussi plus consommateurs de temps calcul.
Le corellogramme, le local binary pattern et Border Interior Content donnent les meilleurs résultats.
Plusieurs distances, environ une dizaine, sont disponibles dont L1, L2, Riemannienne, Logarithmique et Quadratique.
Il est possible de fusionner plusieurs descripteurs pour ne donner finalement qu'un seul résultat.
Riemannienne, Logarithmique et Quadratique.
Il est possible de localiser et de comptabiliser les visages (de face) présents dans les images. Enfin, des annotations textuelles automatiques peuvent être générées.

## Index

Les index sont portables, c'est-à-dire qu'ils sont indépendants de la plateforme qui a servi à les calculer. Un index calculé sur une machine peut être recopié puis être utilisé tel quel sur une autre machine quels que soient son architecture et son système d'exploitation.

## Performances

* 2009 PiRiA associé à la base de données XediX a indexé l'équivalent de 10 ans de vidéo (130 millions d'images avec 3 descripteurs soit presque 400 millions de signatures) en quelques jours, la recherche s'effectue en 10 secondes.
* 2008 Performance record dans une base de 22 millions d'images$^,$, établi en février 2008.
* La version MPI v2 de PiRiA permet de profiter de l'architecture multi cœurs des processeurs modernes (Intel et AMD)$^,$.
* 2018 La version hybride : FRAMSTIM (multithreads openMP + MPI v3. (RDMA)) a permis d'analyser 1 milliard d'images (description globale (CIME:Histogramme couleur global) et locale (SURF) en moins de 30 jours sur 8 nœuds de calculs.