Résumé
Avec des données compatibles, nos codecs peuvent s'intégrer efficacement dans une architecture Big Data, avec une réduction de la taille des données pour le stockage et la transmission, et une réduction de la mémoire utilisée pour les traitements si ces derniers utilisent le domaine des fréquences.
Le Big Data
Le Big data (ou Mégadonnées, ou encore Données Massives) est un des thèmes les plus chauds en ce moment en informatique.
Pour les données qui peuvent être compressées avec pertes, les codecs VLC et VLR sont compatibles avec les algorithmes du Big Data comme MapReduce, les systèmes de stockage comme NoSQL, et s'intègrent parfaitement bien dans des architectures comme Hadoop ou Spark.
Pour plus d'informations sur ces sujets, voir aux adresses suivantes:
MapReduce
Hadoop
Spark
NoSQL
Les Codecs VLC et VLR
Nous allons parler dans ce document de la recherche du plus proche voisin à l'aide des méthodes appelées kNN (ou k-NN, k-Nearest Neighbor) ou ANN (Approximate Nearest neighbor).
Nous commençons par rappeler brièvement ici les principales caractéristiques des codecs VLC et VLR:
- codecs audio basés entièrement sur FFT (Fast Fourier Transform en Anglais), utilisant deux plans: l'avant plan constitué des plus grands points (ou des points de plus grande magnitude), et l'arrière plan constitué des bandes les plus énergétiques (et excluant les point de l'avant plan).
- On peut n'utiliser que les plus grands pics locaux au lieu des plus grands points.
- L'avant plan est constitué des magnitudes et des phases. On peut aussi travailler directement avec les amplitudes des sinus et les amplitudes des cosinus.
- Le codage de l'arrière plan est moins précis que celui de l'avant plan. Les phases dans l'arrière plan peuvent se réduire à seulement un bit de signe.
- Dans l'arrière plan, on peut effectuer des décimations qui consistent à prendre le plus grand point sur N (N=2, 3, 4, ...) et à mémoriser sa position locale.
- L'arrière plan est particulièrement redondant surtout si on peut augmenter la taille des tampons FFT (données non audio). On peut encore effectuer des compressions additionnelles sans perte sur les bandes de l'arrière plan et augmenter les taux de compression.
- Contrairement à l'arrière plan, le nombre de points de l'avant plan n'est pas proportionnel à la taille des tampons FFT, mais dépend seulement de la nature du signal.
- Le codage des magnitudes ou des amplitudes peut s'effectuer avec le logarithme ou un algorithme de transformation binaire plus rapide, sur 8 bits ou moins.
- Si on prend une zone contiguë de l'arrière plan, il n'y a pas besoin de calculer les énergies dans les bandes et de les trier. Il n'y a pas besoin non plus de transmettre leurs positions.
Pour des informations complémentaires, voir aux adresses suivantes:
Algorithmes
VLR++
VLB
L'utilisation avec le Big Data
Des données très volumineuses sont divisées en tampons de taille constante.
Chaque tampon est compressé à l'aide des méthodes décrites ci-dessus. Ces tampons compressées sont envoyés à des serveurs de traitements (serveurs locaux ou distants).
Les serveurs de traitement recherchent dans une ou plusieurs bases, le vecteur des magnitudes et le vecteur des position (ou les vecteurs des amplitudes et des positions) le plus proche. Toute la trame compressée est représentée par un entier (ou quelques entiers).
Les bases de données sont construites à l'aide des algorithmes de partitionnement des données (data clustering en Anglais), comme l'algorithme des k-moyennes, ou l'algorithme LGB, ou un algorithme équivalent.
Pour des informations complémentaires sur la version codebook des codecs (avec la voix), voir à l'adresse suivante:
Version Codebook
A partir de données très volumineuses, on se retrouve avec un ensemble restreint d'entiers, qui peuvent servir de signature, pour réaliser des opération rapides de détection, d'alignement ou de classification.
En outre, pour une visualisation rapide, ou pour obtenir un original approximatif, à partir d'un entier (ou de quelques entiers), il suffit de demander les vecteurs des magnitudes (ou des amplitudes) et des positions, puis d'effectuer un iFFT (FFT inverse).
Pour une corrélation croisée rapide ou une convolution rapide, à partir d'un entier (ou de quelques entiers), il suffit de demander les vecteurs nécessaires et d'effectuer une multiplication de vecteurs dans le domaine des fréquences, puis d'effectuer un iFFT (FFT inverse).
Enfin, comme en général les magnitudes des points sont négligeables vers les fréquences supérieures, si on limite la plage des fréquences, on peut diminuer considérablement la quantité de mémoire nécessaire pour le stockage des vecteurs et pour les traitements. Tout peut se passer avec une mémoire réduite, même si la taille des tampons FFT choisie pour la compression est très grande.
Notes
- Si les échantillonnages ne sont pas réguliers, il faut faire des interpolations pour avoir des échantillonnages réguliers avant FFT.
- On peut rechercher plusieurs plus proches voisins (k-NN) au lieu d'un seul (1-NN). On peut alors traiter facilement les problèmes de classification (classification k-NN) et les problèmes de régression (régression k-NN).
- LSH (Locality-Sensitive Hashing en Anglais) est un algorithme efficace de recherche des plus proches voisins.
Pour plus d'informations:
LSH
- Les exemples de ce document supposent qu'on veut juste compresser très fortement, pour des utilisations ultérieures, effectuer un filtrage, ou qu'on veut utiliser quelques trames.
Avec les données qui conviennent, toutes les opérations qu'on peut mettre en parallèle peuvent être envisagées.
- Les modèles de données, très simples ou très complexes, mais qui ont tendance à se répéter conviennent particulièrement bien, car dans le domaine des fréquences, la majeure partie de leur énergie se trouvent dans des harmoniques, donc dans des pics locaux.
- Avec les pics locaux seulement, l'utilisation mémoire est particulièrement optimisée pour les traitements ayant lieu dans le domaine des fréquences (les valeurs des magnitudes ou des amplitudes sont contiguës, les fréquences se trouvent dans les vecteurs de positions).
- Les méthodes décrites dans ce document conviennent particulièrement bien à l'analyse des immenses masses de données provenant de l'Internet des Objets (IoT, ou Internet of Things en Anglais).
- A cause de la compression, il est souvent nécessaire d'avoir recours à un recouvrement de trames (50% ou moins) pour assurer la continuité des données après iFFT (inverse FFT). Dans ce cas, la base de données contenant le codebook doit être construite également avec un recouvrement de trames.