Professional Documents
Culture Documents
Dr. Carlos Alberto Brizuela Rodríguez Dr. José Alberto. Fernández Zepeda
Miembro del Comité Miembro del Comité
TESIS
que para cubrir parcialmente los requisitos necesarios para obtener el grado de
MAESTRO EN CIENCIAS
Presenta:
FERNANDO LUQUE SUÁREZ
________________________________
Dr. Edgar Leonel Chávez González
Director de Tesis
RESUMEN
La representación perceptual de objetos multimedia ha evolucionado
considerablemente los últimos años. Este avance permite tener representaciones
de objetos robustas a deformaciones; sin embargo los métodos de búsqueda en
repositorios han quedado rezagados y el avance es mínimo. El desarrollo de
índices multimedia y su relación con la representación robusta de objetos da como
resultado la recuperación de información en multimedia (MIR).
Los resultados obtenidos son: Una plataforma de la cual se puede partir para
realizar aplicaciones que requieren la búsqueda por similitud de objetos
multimedia utilizando el contenido, un índice para espacios que son secuencias de
bits bajo la distancia de Hamming.
ABSTRACT
Dedicatorias
A mis padres
iv
Agradecimientos
Un agradecimiento especial a mi director de tesis Dr. Edgar Chávez González, por todo el
apoyo proporcionado en la realización de este trabajo. Gracias.
A mis compañeros Javier Velarde, Daniel Hernández, Raúl Loredo, Orlando Barrera,
Fermín Armenta, Vanessa Miranda, Iveth Corona, Jorge Álvarez, Rene Navarro, Jorge
Cortez, Marco Sánchez, Martin Mancilla, Amador Velázquez, por la buena vibra y el
apoyo durante estos dos anos. Gracias.
Al Centro de Investigación Científica y Educación Superior de Ensenada
Al Consejo Nacional de Ciencia y Tecnología (CONACYT) por apoyarme económicamente
con mis estudios de posgrado. Gracias.
v
Contenido
Página
RESUMEN ..........................................................................................................................i
ABSTRACT....................................................................................................................... ii
Dedicatorias ...................................................................................................................... iii
Agradecimientos................................................................................................................iv
Contenido............................................................................................................................ v
LISTA DE FIGURAS ..................................................................................................... vii
LISTA DE TABLAS ..........................................................................................................x
CAPITULO I Recuperación de objetos complejos en espacios métricos ..................... 1
I.1 Introducción ..........................................................................................................1
I.2 Búsquedas por similitud........................................................................................ 8
I.3 Recuperación de objetos multimedia ....................................................................9
I.4 Representación perceptual de objetos multimedia.............................................. 10
I.5 Objetivos ............................................................................................................. 13
I.5.1 Objetivo General ........................................................................................... 13
I.5.2 Objetivos Particulares .................................................................................... 14
I.6 Motivación ..........................................................................................................14
I.6 Metodología de investigación ............................................................................. 17
1.7 Organización de la tesis ..................................................................................... 18
CAPITULO II Caso de estudio ...................................................................................... 19
II.1 Introducción .......................................................................................................19
II.2 Escenario de aplicación ..................................................................................... 21
II.3 Características del caso de estudio ....................................................................25
CAPITULO III Estado del arte. ..................................................................................... 29
III.1 Introducción .....................................................................................................29
III.2 Extracción de características de la señal .......................................................... 31
III.3 Modelado de las características ........................................................................33
III.4 Búsquedas en espacios métricos ......................................................................35
III.5 Aplicaciones .....................................................................................................40
III.5.1 Shazam ........................................................................................................40
CAPITULO IV Propuesta de solución...........................................................................47
IV.1 Introducción .....................................................................................................47
IV.2 Técnica de obtención de AFPs .........................................................................48
IV.2 Librería Natix ...................................................................................................52
IV.2 Técnica de indización. ..................................................................................... 55
vi
Contenido (continuación)
LISTA DE FIGURAS
Página
Figura
LISTA DE TABLAS
Tabla Página
I.1 Introducción
Figura 1. Tabla relacional con estructura definida para alamcenar datos estructurados.
Si se requiere hacer una búsqueda de alguna ficha en particular o realizar un filtro sobre
el contenido de la tabla que se muestra en la Figura 1, el proceso a seguir es generar una consulta
alfanumérica, que dependiendo del resultado deseado se compone de cierta sintaxis propia del
objetivo de la consulta. Por ejemplo, si se quiere obtener la ficha de José, se tiene que someter a
búsqueda una consulta como la siguiente: “ select * from table where Nombre=’José’ ”, con esta
consulta bajo el criterio de búsqueda exacta, el manejador de base de datos busca aquellos
registros que en la columna “Nombre” que tengan como contenido “José” y como respuesta a la
consulta retorna la lista de registros. Si bien este enfoque funciona en conjuntos de datos
estructurados o de contenido homogéneo, la presencia de millones de datos heterogéneos
alrededor del mundo incrementa la necesidad de poder realizar búsquedas sobre cualquier tipo de
conjuntos de datos electrónicos.
todos los elementos que lo conforman. Por esta razón, las técnicas tradicionales de búsquedas en
bases de datos no se aplica a conjuntos de datos no estructurados o de contenido heterogéneo.
buscando la expresión anterior. Este proceso de barrido de texto puede ser un proceso efectivo
tomando en cuenta las velocidades de los procesadores actuales. Si consideramos un libro que
cuenta con un millón de palabras, con un proceso de este tipo podría ser suficiente, pero resulta
insuficiente cuando se consideran otros propósitos como lo son:
La manera de evitar la realización un barrido lineal al texto para realizar una consulta y
poder cumplir con los propósitos que se mencionaron anteriormente, es estableciendo con
anterioridad una estructura o índice de los documentos. El concepto más importante de
recuperación de información en texto libre es el índice invertido. La idea básica de un índice
invertido se muestra en la Figura 3, donde se cuenta con un conjunto de términos, para este caso,
un diccionario de palabras que aparecen en cada una de las obras. Después, para cada uno de los
términos o palabras se asigna una lista que cuenta con aquellos documentos o para este caso
obras en las que se incluye el término o palabra. Cada una de estas listas se llama lista invertida.
Luego de hacer las listas invertidas, el diccionario de términos se ordena así como las listas
invertidas. El algoritmo genérico para crear un índice invertido es el siguiente:
Figura 3. Representación de un índice invertido o archivo invertido aplicado en texto libre (Manning et al., 2008).
Una vez creado el índice, existen varios enfoques para realizar búsquedas sobre este tipo
de estructuras, el más básico es el enfoque booleano. Tome en cuenta el ejemplo de la Figura 3,
si se quisiera encontrar la siguiente consulta “Brutus y Calpurnia”, el proceso es el siguiente:
primero encontrar las listas invertidas del término “Brutus” y la del término “Calpurnia”.
Después realizar una intersección entre ambas listas. Para el ejemplo anterior el documento
recuperado es el 31, el único miembro que aparece en ambas listas invertidas.
Utilizando este enfoque booleano, uno puede obtener siempre todos aquellos documentos
que sean relevantes a una consulta de una colección, el tiempo en la respuesta al utilizar
este enfoque en las búsquedas depende del número de elementos en la colección, con
esto, este método no escala en colecciones muy grandes, al tener que realizar operaciones
de acuerdo al tamaño de la entrada. Por otra parte, existen enfoques de búsquedas como
el vectorial o el probabilístico que sacrifican la precisión en las respuestas por obtener un
tiempo de respuesta constante que escale en colecciones de millones de documentos.
y por otro lado el conjunto de los documentos recuperados. En un sistema perfecto estos dos
conjuntos son iguales o equivalentemente, recuperar solo aquellos documentos que son
relevantes. Pero en la realidad, los sistemas de recuperación de información, traen en su
respuesta muchos documentos que no son relevantes a una consulta y para medir la eficiencia de
estos sistemas de recuperación se utilizan dos parámetros: la precisión y el recall.
Figura 4. Conjuntos de elementos relevantes recuperados, recuperados y relevantes (Grossman y Frieder, 2004).
1
0.9
0.8
0.7
0.6
Presición
0.5 comportamiento
0.4 típico
0.3 comportamiento
0.2 óptimo
0.1
0
0 0.2 0.4 0.6 0.8 1
Recall
Figura 5. Gráfica de presición en varios puntos del recall (Grossman y Frieder, 2004).
El motivo por el cual no se pueden utilizar los métodos que actualmente se usan para el
texto libre en recuperación de información en los casos de datos o documentos anteriormente
mencionados, se basa en que la recuperación de texto, hace uso de diccionarios de términos que
8
no varían a través de los documentos. En cambio en datos más complejos, como cadenas de
ADN, video, imágenes, audio, etc., no se pueden definir una lista de términos estáticos, debido a
las modificaciones que estos tipos de datos sufren. Es decir no se puede definir un diccionario de
manera directa donde se incluyan todos los posibles casos de solución a futuras consultas.
Por lo anterior y por la gran cantidad de áreas de las ciencias de la computación donde
uno puede llegar a enfrentarse con el mismo problema pero en diferentes escenarios, se ha
introducido un concepto que intenta unificar estos escenarios. Este concepto es el de búsquedas
por similitud que se basa en la siguiente idea: dado un conjunto, se busca encontrar los elementos
del conjunto más cercanos o similares al elemento de una consulta. Entonces, las búsquedas
dentro de un conjunto de objetos complejos, requieren de una manera de evaluar el nivel de
similitud entre los elementos del conjunto. Para ello se utiliza el concepto de función distancia (o
métrica) (Chávez et al., 2001).
Positiva.
Reflexiva. ,
Simétrica.
Dependiendo del conjunto al que se apliquen, estas funciones distancia pueden tomar un
pequeño conjunto de valores o la cantidad de los valores que pueden tomar puede ser infinita.
Dependiendo de lo anterior se pueden diferenciar entre discretas (si el conjunto de valores es
finito o numerable) y continuas (si el conjunto de valores es un intervalo de números reales)
(Chávez et al., 2001).
9
Una vez que se han definido los elementos del conjunto y la manera en la que van a ser
comparados (es decir, se ha definido la distancia d), generalmente son tres los tipos de consultas
que se utilizan en el contexto de espacios métricos.
Búsquedas por Rango . Considera todos aquellos elementos del conjunto que
están a una distancia menor o igual que r del elemento q, esto es, los elementos del conjunto
.
Búsqueda del vecino más cercano. . Considera los elementos más cercanos a q
en , esto es . En algunos casos la búsqueda se satisface
con un elemento, normalmente esto sucede en espacios que son continuos. Además, se puede
definir un umbral como distancia máxima y se puede dar el caso de no encontrar el elemento más
cercano en el radio correspondiente al umbral, entonces la respuesta es que no existe ningún
elemento que satisface la condición.
Considere el siguiente ejemplo: suponga que se cuenta con un repositorio con millones de
canciones y se quiere obtener información en este repositorio de la canción “19 días y 500
noches”. Se podría utilizar el enfoque tradicional de bases de datos para poder llevar a cabo la
recuperación de un objeto, pero entonces, primero hay que representar con metadatos a cada uno
de los elementos del repositorio. Un metadato es información adjunta a un documento que
describe alfanuméricamente el contenido del documento. Para después hacer una estructura de
10
columnas y campos con los metadatos, tarea que es bastante costosa dado que a un profesional le
lleva alrededor de 30 minutos el etiquetar una canción y además la consulta que se aplica para
este caso y con este enfoque, requiere de un conocimiento previo de la canción que se quiere
recuperar, en este caso el nombre de la canción. Por otra parte, una consulta más natural sería el
someter un fragmento, un silbido o un tarareo de la canción y comparar todos aquellos elementos
en el repositorio no por una descripción de éstos, sino directamente por el contenido de
información que tienen las señales de audio.
Ahora supongamos que el mismo problema se llevara a un escenario real. Imagine que
va manejando por la carretera y de pronto escucha que se transmite por la radio una canción que
tiene años queriendo saber su nombre. Lo ideal sería grabar 10 segundos de esta canción con el
teléfono celular y someterlo como consulta a un sistema de recuperación de audio, para obtener
como resultado información de la canción. Si bien pareciera ser el mismo problema anterior, las
deformaciones que sufren las señales en escenarios reales afectan directamente a la información
que arroja el contenido de éstas. En particular, en este caso podría darse una combinación de
deformaciones por regrabación con pérdida por compresión, tal vez con un poco de
desplazamiento, etc., y es la recuperación de objetos multimedia a pesar de las deformaciones
que sufren los elementos los que definen qué tan robusto es un sistema de recuperación
multimedia.
metadatos y por otra parte, se construyen las representaciones de los objetos que están asociados
cada uno a un objeto del conjunto generando un índice con las representaciones. Entonces, las
búsquedas por contenido se realizan primero obteniendo la representación de la consulta y
comparándola con las representaciones de los objetos multimedia en la base de datos, para
después obtener información útil del objeto original o de sus metadatos.
Las ventajas de utilizar las representaciones de los objetos multimedia en vez de usar el
contenido de la señal directamente son:
Hasta este punto, uno podría confundirse con las funciones hash conocidas en el área de
criptografía. Una función hash mapea un objeto multimedia normalmente grande a su
representación hash pequeña normalmente, haciendo posible comparar dos objetos
comparando solamente los valores hash . Pero solamente si los objetos son
estrictamente iguales los valores hash también lo son con una probabilidad de error muy baja.
Este tipo de funciones se pueden usar para buscar un objeto que está contenido en un conjunto de
objetos multimedia, pero solo si el objeto está sin ninguna deformación, en el conjunto (Haitsma
y Kalker, 2003).
Suponga que dentro de una biblioteca digital de música se cuenta con la versión original
de la canción de Joaquín Sabina “nos sobran los motivos”. Con calidad de grabación de estudio a
128 Kb suena igual o muy parecido a la misma canción grabada en vivo en un auditorio, pero el
contenido que arrojan los espectros de ambas canciones son distintos. Por esto, las funciones
12
hash no pueden decidir si dos canciones son perceptualmente iguales y peor aún, las funciones
hash son altamente sensitivas por lo que un cambio en un bit en el objeto resulta en una
representación totalmente distinta.
Ahora el por qué no se pueden realizar representaciones exactamente iguales para objetos
multimedia que son perceptualmente iguales, es porque la percepción de similitud no se puede
modelar matemáticamente ya que no cuenta con la propiedad de transitividad. Esto es, si un par
de objetos son perceptualmente similares a , y por otro lado también son similares
esto no implica que sean similares (Haitsma y Kalker, 2003).
Lo que se busca entonces es encontrar una función que represente los objetos que
pueda discriminar entre objetos multimedia, es decir, si los objetos son distintos entonces las
representaciones también deben ser distintas. Si se define un umbral , si dos objetos son
similares entonces , de lo contrario .
Se puede observar que se trata de una función tal que de un espacio métrico se mapean
los objetos a otro espacio métrico buscando que los objetos mantengan su similitud perceptual
(robustez), fiabilidad, tamaño, velocidad en las búsquedas y escalabilidad.
Una vez que se representan los objetos multimedia y la manera en cómo se van a
comparar estos objetos, el siguiente paso es ver cómo reducir el número de comparaciones entre
representaciones para dar respuesta a una consulta. Esto regularmente se hace mediante el uso de
un índice, que es una estructura de datos que tiene como tarea lo anterior.
I.5 Objetivos
En esta sección se presenta el objetivo general del presente trabajo de investigacion, así
como los objetivos epecíficos planteados.
Generar un marco de trabajo1, que sirva como base para poder desarrollar aplicaciones
que se desenvuelvan en escenarios donde se requiera solucionar el problema de búsqueda de
objetos multimedia por contenido.
1
En el desarrollo de software, un marco de trabajo es una estructura conceptual y tecnológica de soporte definida,
normalmente con artefactos o módulos de software concretos, con base en la cual otro proyecto de software puede
ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje
interpretado entre otros programas para ayudar a desarrollar y unir los diferentes componentes de un proyecto.
14
Generación del API2 de consulta necesario para recibir y dar respuesta a consultas
multimedia por contenido.
I.6 Motivación
Los tipos de datos como imágenes, audio, video, etc., también llamados multimedia, no
pueden se pueden buscar en el sentido del enfoque tradicional de búsquedas exactas. No solo
porque no se pueden ordenar, sino porque el sentido perceptual de igualdad no se puede
comparar de manera exacta. No es importante encontrar un segmento de audio que sea
exactamente el mismo de una consulta, lo que si importa es encontrar segmentos cercanos que
sean muy parecidos a la consulta, aun si el segmento ha sufrido deformaciones.
2
. Interfaz de programación de aplicaciones o API (del inglés Application Programming Interface) es el conjunto de
propiedades y metodos, que ofrece cierta librería de programación para ser utilizada por otro software como una
capa abstracción.
3
La interfaz de usuario es el medio con que el usuario puede comunicarse con una máquina, un equipo o
una computadora, y comprende todos los puntos de contacto entre el usuario y el equipo, normalmente suelen ser
fáciles de entender y fáciles de accionar.
15
El problema de buscar objetos multimedia de un conjunto los cuales son más cercanos a
una consulta dada bajo algún criterio de similitud o métrica, tiene un gran número de
aplicaciones.
Detección de duplicación. Para determinar si dentro de una base de datos, dos archivos de
audio tienen el mismo contenido. Aunque muchas veces los objetos no son exactamente iguales,
corresponden a la misma canción. Esta herramienta es de gran utilidad para mantener la
integridad de la base de datos multimedia.
Búsquedas con ejemplos. Se utiliza un pequeño fragmento del audio para reconocer una
canción en particular. En la actualidad Shazam es la aplicación que ha obtenido mejores
resultados en esta clase de búsquedas.
16
Filtrado de redes p2p. Cuando la música se transmite en redes de tipo punto a punto, los
“fingerprints” pueden se pueden obtener con los paquetes y buscados en una base de datos que
contenga los que están protegidos por derechos de autor.
17
La metodología utilizada para el desarrollo de este trabajo consta de seis etapas, las
cuales se muestran en la Figura 7. A continuación se describen las actividades llevadas a cabo en
cada una de las diferentes etapas durante el desarrollo de esta investigación.
Figura 7. Metodología de investigación aplicada en la generación de un marco de trabajo para la búsqueda de objetos
multimedia por contenido.
Etapa 1. Primero se realizó una revisión de bibliografía para conocer los alcances y limitaciones
que se tienen en el área de estudio.
Etapa 2. Se realizaron estudios de las diferentes maneras que se aplican en la actualidad para
representar el contenido de las señales. En esta etapa se eligió una técnica adecuada para el caso
de estudio.
Etapa 3. En esta etapa, se estudiaron las distintas estructuras aplicadas a la búsqueda de objetos
multimedia con el fin de escoger una que se pudiera acoplar con la representación de señales
elegida.
Etapa 4. Se desarrolló una interfaz de consulta que es capaz de recibir consultas por contenido y
buscar información de canciones similares a la consulta.
En el Capítulo III se presenta el estado del arte en recuperación de audio. En esta parte se
llevara a cabo una recopilación de formas de representar una señal y formas de indexar un
conjunto de representaciones de señales. Para después mostrar algunas aplicaciones que realizan
la tarea de recuperación de audio en algunos escenarios.
En el Capítulo VII se presentan las conclusiones en base a los resultados obtenidos, las
aportaciones al estado del arte y el trabajo a futuro con respecto a la línea de investigación que se
siguió en este trabajo.
19
CAPITULO II
Caso de estudio
II.1 Introducción
toma el preparar una biblioteca digital de música que contiene toda la información necesaria para
realizar búsquedas basadas en metadatos. Para el caso de una biblioteca digital de música de un
millón de canciones, realizar los metadatos tomaría aproximadamente 50 años.
Los metadatos son el conductor para los sistemas de MIR. Por ello, existen servicios
dedicados a brindar metadatos confiables para bibliotecas digitales de música. La mayoría de los
usuarios que escuchan música, utilizan metadatos en los ambientes de reproducción que utilizan.
Para que un sistema de metadatos funcione, las descripciones deben ser precisas y el
significado del vocabulario de los metadatos debe ser comprensible. El realizar este proceso por
contribución de usuarios, asegura que por lo menos una comunidad obtenga información
consistente, pero diferencias culturales, de caracteres especiales, distintos alfabetos, etc. hacen
aun más difícil mantener consistentes las bases de datos de metadatos para todas las
comunidades.
Además de la descripción que brindan los metadatos a las canciones, el contenido de las
señales de audio se puede utilizar para ayudar a los usuarios a buscar música. Lo interesante de
los métodos que se basan en el contenido de la música es que identifican lo que los usuarios
desean encontrar, aun sin que éstos conozcan completamente lo que están buscando.
Por lo anterior, se puede pensar que una manera de obtener información que sea fiable
para las canciones de una biblioteca digital, es utilizando el contenido mismo de las canciones.
La idea central se muestra en la Figura 8, donde se puede observar que al tener una colección
con miles de canciones que cuentan con metadatos fiables, se pueden compartir metadatos con
señales que son musicalmente similares con algún elemento en la colección. El poder encontrar
un elemento de dicha colección se basa en buscar características similares entre un elemento que
no pertenece a la colección y el contenido de los elementos de la colección.
En la actualidad, el medio principal para acceder a las bibliotecas digitales de música son
los reproductores multimedia, que en general, presentan los metadatos de cada canción y
permiten hacer búsquedas y filtros sobre dicha información. Básicamente, el enfoque que se
sigue al hacer uso de estos buscadores, es el enfoque clásico de bases de datos relacionales,
donde para poder hacer comparaciones entre canciones, primero se tienen que verter en una
estructura definida, en este caso dividida en campos, para después hacer estas comparaciones con
el valor de los campos. Supongamos el ejemplo de la Figura 8. Para todas las canciones de la
colección se tienen que extraer los metadatos para después organizarlos e insertarlos en una
tabla; esto con el fin de poder hacer comparaciones de elementos alfanuméricos que representan
a las canciones en dicha tabla.
22
Si bien se pueden encontrar elementos usando este enfoque, el hacer búsquedas sobre
estructuras clásicas como las tablas de bases de datos tradicionales es un método que no escala
para colecciones muy grandes. Por otra parte, para poder hacer una consulta sobre una
representación alfanumérica de una canción, se debe tener un conocimiento previo de lo que se
está buscando, es decir, para poder encontrar la canción “Nos sobran los motivos”, se tiene que
conocer previamente ese nombre de canción. En este caso la consulta tradicional sería de esta
forma “select * from tabla where canción=Nos sobran los motivos”, y como resultado regresaría
el registro de la tabla que cumple con esta condición.
Los escenarios de aplicación del caso de estudio en el que se enfoca el presente trabajo
son muchos y se van incrementando; esto debido primeramente por la cantidad de música
alrededor del mundo, no tan solo de orígenes fiables como un disco compacto realizado en un
estudio de grabación, sino por todas aquellas grabaciones que se realizan por personas ajenas a la
industria musical. Sumado a lo anterior, en la actualidad una colección significativa de canciones
23
sin metadatos, son las transmisiones que se hacen en internet. Son muchas las fuentes de música
alrededor del mundo, pero muy pocas cuentan con información que se puede considerar fiable.
En esta tesis son dos los escenarios de aplicación de interés. El escenario que se muestra
en la Figura 9 se desarrolla cuando de pronto alguien escucha en algún medio como la radio, la
televisión, el mismo internet o cualquier medio de reproducción de canciones, una canción que le
es familiar, del gusto o interesante al oído. Aunque los deseos pueden ser adquirirla y hacerla
parte de la colección de música personal o simplemente conocer el nombre de la canción para
tener información de esta canción que es particular a la persona de alguna manera, utilizando
métodos de búsquedas tradicionales, sin conocimiento previo de la canción no se puede realizar
otra actividad más que escucharla en el momento. Pero utilizando el contenido de la canción y
haciendo uso de algún dispositivo de captura como un micrófono, un teléfono celular, un
reproductor mp3, etc., se podría grabar un trozo de la canción para someterla como consulta a
una búsqueda y obtener como resultado una canción similar a la que recién se escuchó. Con esto,
el que ha escuchado la canción de la cual no tenía conocimiento, agranda las posibilidades de
conocer más acerca de la canción o en futuro disponer de esta canción.
24
propuestos. La interfaz que permite la interacción de un usuario con las bibliotecas digitales de
música es el reproductor multimedia de uso cotidiano, este tipo de interfaces por lo general,
como se mencionó anteriormente, cuentan con las herramientas necesarias para realizar
búsquedas, navegación y filtrado sobre metadatos. Aprovechando las ventajas que brindan los
reproductores multimedia en la actualidad, en nuestro caso de estudio, serán estos la interfaz de
interacción con usuarios finales.
Dentro de la interfaz que hace que un usuario interactúe con la biblioteca digital, debe
incorporarse una nueva forma de búsqueda por contenido. La manera más sencilla es agregando
al reproductor de uso cotidiano la funcionalidad de buscador. Este buscador debe ser capaz de
aceptar consultas que utilicen el contenido de las canciones y dar como resultado información o
metadatos fiables, que posteriormente el manejador de bibliotecas digitales de música en este
caso el reproductor de música, pueda hacer uso de de estos.
27
Una vez definida la interfaz de consulta, para este caso el reproductor multimedia, las
búsquedas por contenido se llevarán a cabo dentro de éste. Para el primer escenario el proceso es
el siguiente: como se muestra en la Figura 12, la obtención de una consulta se hace utilizando el
micrófono, del cual se graban 10 segundos de una canción que como ya se mencionó
anteriormente puede provenir de fuentes diversas. Esto con el fin de obtener desde medios ajenos
al manejador de bibliotecas digitales de música, información de posibles canciones de interés de
un usuario.
los metadatos necesarios para etiquetar con esta información las canciones que anteriormente
contaban con metadatos genéricos. Este escenario lo motivan las colecciones de miles de
canciones de música que se encuentran desorganizadas, por no contar con metadatos.
Resolviendo el problema de reconocimiento de música por contenido en este escenario se brinda
una solución para mantener organizadas las bibliotecas digitales de música.
CAPITULO III
III.1 Introducción
La búsqueda en conocimiento digital comenzó hace varias décadas cuando los medios
para la digitalización de información era ya algo común, pero en realidad, los libros seguían
siendo el principal medio para conservar y transmitir el conocimiento. Previo a la existencia del
campo de investigación en recuperación de información multimedia, se realizó una reunión de
una comunidad científica, donde se hicieron contribuciones de una gran cantidad de campos ya
existentes de distintas áreas. Desde una perspectiva teórica como la inteligencia artificial,
optimización teórica, visión por computadora, y reconocimiento de patrones, hicieron
contribuciones significativas para las bases matemáticas fundamentales de las búsquedas
multimedia por contenido.
En la Figura 14, se muestra cómo son en la actualidad las etapas del proceso para realizar
una aplicación de recuperación de audio por contenido. La primera etapa es la obtención de las
representaciones de las señales de audio o AFPs; en esta etapa son varias las decisiones que se
debe tomar. Primero cuál es la característica perceptual que se tomará en cuenta para representar
la señal. Una vez tomada esta decisión, implícitamente se decide en cuál dominio se trabajará, si
bien existen técnicas como la utilizada por (Kurth y Scherzer, 2003), que trabajan directamente
en el dominio amplitud-tiempo, la mayoría de las técnicas realizan una transformación de
dominio para trabajar con la frecuencia de la señal.
Una vez extraída la característica de la señal que se toma en cuenta, el siguiente paso es
cómo representar o modelar esa característica, es decir, cómo insertar esa característica en una
estructura de datos que mejore el rendimiento de la técnica. Son varias las técnicas de modelado
de características y se han utilizado estructuras como vectores, vectores binarios, estadísticas de
las propias características extraídas, etc. Más adelante se describirán con más detalle las técnicas
que se utilizan en la actualidad para modelar las características de una señal.
30
Figura 14. Flujo de preguntas para generar una técnica de recuperación de objetos multimedia.
Una vez que se ha definido el espacio métrico, la siguiente etapa es encontrar la forma en
la que las búsquedas puedan responder de manera eficiente. En esta etapa es donde entran las
técnicas de recuperación de información, particularmente la creación de índices. Con estos
31
índices se realiza una estructura con la cual se mejora el tiempo que se requeriría comparar el
elemento por elemento para dar una respuesta a una búsqueda.
El tono de la señal, es una medida de las altas frecuencias con las que cuenta la señal,
como ejemplo el poner las manos en la boca cuando se quiere hablar disminuye el brillo del
sonido como el volumen también. Se calcula como el centroide del espectro magnitud después
de aplicar la transformada rápida de Fourier.
32
La característica ancho de banda es la magnitud del promedio de los valores del espectro
y el centroide del mismo. Por ejemplo, una señal simple como la senoidal tiene un ancho de
banda cero, pero una que cuenta con mucho ruido tiene un alto ancho de banda.
Existen otras características que han sido tomadas en cuenta, algunas como Spectral
Flatness Measure (SFM) (Herre et al., 2002), Spectral Crest Factor (SCF) (Herre et al., 2002),
Spectral Sub-Bands Centroids (SSC) (Seo et al., 2005), Spectral Sub-Band Moments (SSM) (Kim
y Yoo, 2007), el signo de la energía en la segunda derivada (Haitsma y Kalker, 2003) y valores
croma (Pauws, 2004).
En (Seo et al., 2005) se muestra cómo con la normalización de los SCC se tiene una
técnica más robusta que los MFCC. En (Kim y Yoo, 2007) se mostró que la normalización de
JAMF es más robusta que estimados en el espectro para compresión y ecualización.
En (Herre et al., 2002) se reporto que SFM es más robusta que el volumen y también que
SCF. Por ello SFM lo adoptó el estándar MPEG-7 con fines utilizarse en AFPs.
33
Una vez escogida la característica a ser tomada en cuenta dentro del contenido de la
señal, el siguiente paso con fines de AFPs es modelar esas características en una estructura para
compararse posteriormente. Algunas estructuras que se utilizan, se enlistan a continuación.
Cadenas (Strings). Las trayectorias pueden ser cadenas grandes de enteros usando la
cuantificación de vectores. Con esto se tratan a las señales como texto para usar técnicas un poco
más flexibles en las búsquedas (Guo y Siegelmann, 2004).
Una vez representadas las señales con los conjuntos de características a partir de alguna
propiedad del contenido, entonces se pueden realizar comparaciones utilizando dichos conjuntos.
Para realizar estas comparaciones, se utiliza una medida de similitud, propia de la técnica
35
utilizada. Una medida de similitud entre una consulta y una señal de audio de la base de datos
indica el parecido entre ambas mediante algún valor o porcentaje según sea el caso.
En el caso general de espacios métricos la única información que se puede obtener del
conjunto es la distancia entre los elementos del conjunto, pero evaluar distancias es costoso
computacionalmente. El enfoque al hacer uso de espacios métricos es ser capaz de realizar de
manera eficiente y precisa una búsqueda sobre los elementos de dicho espacio. Son algunos los
avances que se han hecho en el caso general de espacios métricos, los mejores resultados utilizan
índices cuyo objetivo es evaluar el mínimo número de distancias en una consulta.
En cuanto a las distancias que pueden definir en el espacio, se pueden clasificar en dos
tipos. Por un lado están las discretas que son funciones que toman solamente un conjunto finito o
numerable de valores predefinidos. Un ejemplo de este tipo de funciones es la siguiente:
Considerar un conjunto arbitrario no vacío y la función definida por
Se puede comprobar fácilmente que esta función cumple con los axiomas necesarios para
tomarse en cuenta como métrica o distancia, además solamente puede tomar dos valores, por lo
que el espacio formado se llama espacio métrico discreto.
Por otra parte están las continuas, funciones cuyo conjunto de posibles valores es un
intervalo infinito. Un ejemplo de este tipo de funciones conocidas como , las cuales se definen
para vectores en y se definen de la siguiente manera.
36
Además de poder clasificar las técnicas por el tipo de distancia que se utiliza para
comparar elementos, también se pueden clasificar las técnicas de acuerdo al tipo de algoritmo
utilizado en la indexación. Por un lado están los algoritmos basados en pivotes; en estos
algoritmos se escogen arbitrariamente un subconjunto de elementos que se utilizan como
referencia para dar una respuesta rápida a una consulta. El otro enfoque es el de los algoritmos
que realizan particiones compactas del espacio.
Son varios los algoritmos usados para realizar búsquedas en espacios métricos que se
basan en pivotes, como el BKT Tree (BKT) (Burkhard y Keller, 1973), Fixed Query Tree (FQT)
(Baeza-Yates et al., 1994), Fixed Height Query Tree (FHQT) (Baeza-Yates, 1997), Fixed
Queries Array (FQA) (Chávez, 1999), Vantage Points Tree (VPT) (Yianilos, 1993), Multi
37
Vantage Point Tree (MVPT) (Bozkaya y Ozsoyoglu, 1997), Excluded Middle Vantage Forest
(VPF) (Yianilos, 1999) y Approximating Elimating Search Algorithm (AESA) (Ruiz, 1986).
Figura 16. División del espacio tomando como pivote u11 (Chávez et al., 2001).
Por otra parte, existen las técnicas que utilizan algoritmos que como base tratan de dividir
el espacio en particiones o zonas lo más compacta posibles. Cada zona guarda un objeto
representativo al que se le llama centro, además de información que permite descartar una zona
completa al momento de realizar una consulta, sin tener que realizar las evaluaciones de los
objetos en la zona con el objeto de consulta. Cada zona se puede particionar recursivamente en
más zonas induciendo una búsqueda jerárquica. Existen dos criterios para realizar las particiones:
Voronoi partition y covering radius.
El diagrama Voronoi de una colección de objetos, es una partición del espacio en celdas,
donde cada una se compone de los objetos más cercanos a un centro que de cualquier otro. Un
subconjunto de m centros se seleccionan y los demás objetos se asignan a una zona por el centro
que se encuentre más cercano. Dada una consulta de rango , las distancias entre y los centros
se procesan. Suponga que es el centro más cercano a q. Para toda zona se satisface
38
Figura 17. Ejemplo de primer nivel de BST o GHT y una consulta q (Chávez et al., 2001) .
Algunas técnicas que utilizan el criterio covering radius son Bisector Tree (BST)
(Kalantari y McDonald, 2006), Monotonous Bisector Tree (MBST) (Noltemeier et al., 1992),
Voronoi Tree (VT) (Dehne y Noltemeier, 1987), M-Tree (MT) (Ciaccia et al., 1997).
39
Figura 18. Ejemplo del primer nivel de un GNAT (Chávez et al., 2001).
40
III.5 Aplicaciones
III.5.1 Shazam
Shazam es un sistema de recuperación de audio, que tiene como objetivo brindar una
herramienta para conectar a la gente con el ambiente de reconocimiento de música haciendo uso
del contenido de las señales. La técnica de recuperación de audio que utiliza en este sistema, se
mostro en (Wang, 2003), es robusta ante ruido ambiental y desplazamiento en el tiempo, además,
las búsquedas se realizan en el orden de milisegundos sobre una base de datos de más de dos
millones de canciones.
Esta aplicación tiene como objetivo tomar consultas de 15 segundos con un dispositivo
móvil. Estos 15 segundos se toman como consulta y se obtiene como resultado el candidato más
cercano a la consulta dentro de una colección de canciones, esto con el fin de dar al usuario la
opción de comprar la canción que se obtuvo como resultado. Los 15 segundos de consulta viajan
a través de internet y se realiza la búsqueda en servidores en donde se encuentra una colección de
canciones indexada.
Esta aplicación utiliza técnicas de extracción de AFPs para representar las señales de
audio, tanto las consultas como las canciones de la colección se someten al mismo análisis. El
análisis del cual se extraen valores de las señales las cuales se llaman valores hash. La respuesta
se obtiene encontrando un emparejamiento entre los valores hash que se obtienen de una canción
desconocida y las canciones de la colección para obtener candidatos posibles como el vecino más
cercano de la consulta.
Actualmente en este sistema se toman como entrada 15 segundos de audio para después
representar con AFPs las características de la señal. Cuentan con una colección de canciones de
más de 2.5 millones y la aplicación de Shazam es exclusivamente para dispositivos móviles.
http://www.shazam.com/
En esta técnica la característica a representar son los picos de frecuencia que ocurre en
una región de la señal, esto debido a la robustez de los picos de la frecuencia cuando se le aplica
41
algún tipo de ruido a la señal original. Entonces, el primer paso para obtener la huella de una
canción es reducir el espectrograma complejo Figura 19. Espectro de la frecuencia de una señal
de audio. a como se muestra en Figura 20, en una constelación de puntos con coordenadas que
representan el tiempo en el que ocurren y el valor de la frecuencia. Un punto tiempo-frecuencia
es candidato para ser un pico, si dentro de una ventana es el punto que cuenta con el valor más
alto de frecuencia.
4000
3500
3000
Frecuencia
2500
2000
1500
1000
500
0
0 1 2 3 4 5 6 7 8 9
Tiempo
Si se grafican tanto los puntos tiempo-frecuencia elegidos como picos de una consulta y
los de una canción que pertenece a la base de datos. Se podría observar que en algún punto de la
gráfica de la canción completa, en la gráfica de la canción consulta en algún momento un
número significativo de puntos comienzan a ser iguales con respecto a la grafica de la canción
completa, esto comienza a darse una vez que se encuentra el desplazamiento que tiene la señal
consulta con respecto a la canción de la base de datos. Como se muestra en la Figura 21.
42
4000
3500
3000
Frecuencia
2500
2000
1500
1000
500
0
0 2 4 6 8
Tíempo
Figura 20. Constelación de puntos tiempo-frecuencia. Cada punto en la gráfica representa el pico de frecuencia en una
región.
4000
3500 Cancion en BD
3000 Consulta
Frecuencia
2500
2000
1500
1000
500
0
0 2 4 6 8
Tíempo
Figura 21. Gráfica tiempo-frecuencia de una consulta sobre puesta en la gráfica tiempo-frecuencia de una canción en la
colección.
43
4000
zona objetivo
3500
3000
2500
Frecuencia
2000
1000
500
0
0 2 4 6 8
Tíempo
Cada combinación de un punto de anclaje con los puntos de una zona objetivo representa
un valor hash y se representa con un entero de 32 bits. Además de estos 32 bits, se almacenan
tanto el tiempo que existe desde comienzo de la canción al momento en el que ocurre el pico de
frecuencia y también un identificador único en la colección para la canción, esto no es parte del
valor hash sino información adjunta. Para la información adjunta también se representa con un
entero de 32 bits por cada emparejamiento se guarda un objeto de 64 bits.
44
4000
3500
3000
Frecuencia 2500
2000 (t2,f2)
1500
(t1,f1)
1000 t=t2-t1
500 hash|trackId: t1= [f1:f2:t]| trackId:t1
0
0 2 4 6 8
Tíempo
Al realizar los valores hash utilizando la combinación entre puntos de anclaje y picos de
frecuencia en una zona, en lugar de buscar encontrar directamente de la constelación de puntos
tiempo-frecuencia se gana mucha aceleración en el proceso de búsqueda. Por ejemplo si en un
valor de frecuencia tiene a lo más una densidad de 10 bits, y t otros 10bits, entonces el hash a
encontrar consta de 30 bits de información, contra solo 10 si se tomaran puntos individuales.
Estos 20 bits hacen que el valor hash pueda ser millones de veces más grande, a su vez esto
ocasiona que el número de colisiones de un valor hash sea menor y por consecuencia, la
búsqueda sea más rápida.
Para realizar una búsqueda, la técnica de obtención de AFPs se aplica en una señal
desconocida, de la cual se obtienen un conjunto de valores hash. Cada valor hash que se obtiene
45
se utiliza para buscar y encontrar en la colección de AFPs por valores hash iguales a los de la
consulta.
Para cada hash encontrado se toma en cuenta la información adicional con la que cuenta,
para este caso el tiempo con respecto al comienzo de la canción y el identificador. Los tiempos
son agrupados en bins. Cada bin representa el identificador de una canción de las cuales se
obtuvieron los valores hash. Cuando se terminan de buscar por todos los valores hash que se
obtienen de una consulta, se tiene una lista de bins que contienen tiempos de ocurrencia de
hashes que aparecen en una canción.
Para dar sentido en el tiempo de las ocurrencias de los valores hash en una canción
candidata, se hace uso de histogramas. Para cada bin de la lista que obtiene de la búsqueda de
hash en la tabla, se genera un histograma, donde como rangos de clase se toman en cuenta rangos
de tiempo. Entonces, lo que se grafica es el desplazamiento de la ocurrencia del hash en una
canción de la colección con respecto a la señal consulta. Supongamos que se encuentra un hash
en una canción de la colección, el tiempo en el que se encuentra ese valor con respecto a la
consulta es:
Después se calcula el lugar en el histograma de los valores y se busca por el pico más
alto en el histograma. Esto lo hacen ordenando los y buscando el grupo más grande con el
mismo . Como los valores en cada bin es pequeño debido a la manera como se calculan los
valores hash, el tiempo de generación de un histograma es del orden de microsegundos para un
bin. La distancia entre una señal consulta y una canción en la base de datos es el pico más alto
que se genera en un histograma. Como se observa en la Figura 24, en una canción candidata no
se espera un pico con todos los valores hash de una consulta, pero sí significativamente más
grande que los demás rangos en el histograma.
46
35
30
25
20
15
10
0
0 10 20 30 40 50 60 70 80
Rangos de desplazamiento
Figura 24. Histograma resultado de la comparación de una canción de la colección contra una consulta.
El algoritmo que utiliza Shazam ha demostrado ser robusto ante niveles significativos de
ruido y distorsión. Puede identificar música aun cuando existe la presencia de voces, ruido de
tráfico e incluso con música de fondo.
47
CAPITULO IV
Propuesta de solución
IV.1 Introducción
Si bien el estado del arte para búsquedas de audio por contenido muestra que existen
varios sistemas propuestos que intentan dar una solución escalable al problema de recuperación
de música en ciertos escenarios de aplicación, en cada uno de esos sistemas se puede observar, el
proceso genérico para realizar búsquedas de algún tipo de objeto complejo. En la Figura 25, se
ilustra el proceso genérico para realizar búsquedas de audio por contenido. Este proceso no solo
aplica para objetos como audio, sino que también se generaliza para objetos complejos como
imágenes, video, cadenas de ADN, etc.
El proceso comienza dando una representación a las señales de audio o canciones para el
caso de estudio de interés. En este trabajo, se hizo uso de una técnica que toma como
característica a representar, la entropía de la señal. Esta técnica, presentada en (Camarena-
48
Ibarrola y Chávez, 2006), considera como entrada una señal de audio y aplica un algoritmo que
como resultado genera una representación en forma de vectores binarios. Estos vectores binarios
tienen como ventaja el ser muy compactos y por ello se pueden utilizar en escenarios donde se
requiera de alguna manera la transferencia de las representaciones o AFPs.
Las propiedades del escenario en el que se desenvuelve este trabajo, exigen de ciertas
características en la obtención del los AFPs. Por un lado las señales se enfrentan a deformaciones
de alto impacto en la variación del espectro debido a la regrabación, ruido y pérdida por
compresión entre otras, y por otra parte, puesto que las transmisiones de las representaciones se
realizan a través de internet, se requiere generar representaciones compactas para la transmisión
de los AFPs lo más rápido posible.
En esta técnica se consideran aquellas bandas de frecuencia baja, que son las que mejor
percibe el oído humano. En la escala de frecuencia de Barks, se definen 25 bandas críticas para
la percepción del humano. En particular, en esta técnica se descartó la banda 25 de la escala de
Barks, no solo por el hecho de ser la que tiene la frecuencia más alta, sino además con fines de
mantener el AFP lo más compacto posible.
A continuación se enlistan los pasos para determinar los valores de entropía que toma
cada banda en la señal:
Este algoritmo, arroja como resultado un vector con 24 valores de entropía, uno para cada
banda de la escala de Bark. Entonces, para un pedazo de canción de 5 segundos, se obtiene una
matriz de 24 columnas por 24 renglones en donde las columnas representan las bandas y los
renglones representan los marcos, el número de renglones crece dependiendo del tiempo que se
toma de la canción y el tamaño de los marcos en los que se divide la señal. En la Figura 26, se
ilustra el ejemplo anterior.
50
Para definir el paso de codificación en esta técnica, simplemente se usa un indicador para
notar si la entropía en una banda sube o baja en un marco . La relación que define la
codificación es la siguiente:
Si bien esta librería abstrae gran parte del trabajo necesario para realizar las búsquedas
por similitud, no realiza representaciones de objetos, es decir, esta librería toma como entrada las
representaciones de objetos complejos y una métrica o distancia, definida en el conjunto de las
representaciones. Como resultado, se obtiene un espacio métrico con el cual se construye una
estructura o índice, el cual permite aplicar criterios de búsqueda como el vecino más cercano,
búsquedas por rango y los k-vecinos más cercanos.
53
Como se puede ver, uno de los enfoques de esta librería es la utilización de interfaces
genéricas, lo cual permite modelar cualquier conjunto de elementos que se pueden comparar
entre sí además de tener la facilidad de representar todas aquellas estructuras e índices, que sean
aplicables a búsquedas en espacios métricos.
54
Una vez que se han definido tanto el espacio, como el índice que se va a utilizar en una
aplicación particular, dentro de la librería se escribe el código que modela el comportamiento de
los elementos del espacio, la distancia entre ellos, y el índice sobre el cual se hacen las
búsquedas. Son varias las ventajas que brinda esta marco de trabajo y se enlistan a continuación.
Estas tres etapas, conforman la mayor parte del proceso genérico para la búsqueda de
objetos complejos en espacios métricos, por lo que este marco de trabajo, no solo sirve como
base a señales de audio sino que también, puede ser la base para crear aplicaciones que requieran
la búsqueda de algún otro tipo de objeto complejo.
Debido a la arquitectura propia de esta librería, se podría pensar que tiene limitado su
margen en cuanto a las aplicaciones que se programan en la actualidad. Si bien esta librería está
escrita en el lenguaje específico Mono, con la introducción de los servicios web, el consumo de
la funcionalidad de las librerías puede realizarse desde cualquier lenguaje de programación y
arquitectura con la que se tenga planeado trabajar. La idea del funcionamiento de los servicios
web, es hacer invisible a la aplicación que consume el funcionamiento interno de la librería, la
estructura de la misma, pero poner a disposición las funciones que la librería puede llevar a cabo.
Con este tipo de tecnología se puede tomar la libertad de escoger entre diversas plataformas de
trabajo.
La ventaja de usar los servicios web para el caso de estudio, es poder continuar el trabajo
de aplicaciones que tengan funcionalidades ya implementadas, que sirven como plataforma para
55
montar la funcionalidad de búsquedas por contenido sobre ellas. Para el caso de estudio estas
aplicaciones son los reproductores multimedia, cuya principal ventaja es tomar las funciones que
ya brinda un reproductor multimedia, al ser generalmente un manejador de bibliotecas digitales
de música. Al realizarlo así, se evita tener que repetir la escritura de código necesario para
realizar listados de canciones, presentación de metadatos y otras funciones que ya brinda
cualquier reproductor de uso cotidiano.
Hasta este punto, se podrían realizar las búsquedas sobre el espacio métrico definido
anteriormente por las representaciones de las señales de audio o AFPs extraídos, pero para poder
realizarlas, se tendría que comparar un elemento consulta con todos los elementos del espacio y
entonces, el tiempo de respuesta a una consulta dependería directamente de la cantidad de
elementos en el espacio. Para evitar lo anterior, se utilizó un índice presentado en (Chávez et al.,
2008), donde se introducen las técnicas de indización basadas en permutaciones. La idea central
es la siguiente: suponga el conjunto de elementos y , donde es un conjunto de
56
elementos referencia tomados de forma aleatoria, llamados permutantes. Para todos los AFPs
dentro del conjunto, se define su permutación , la cual se conforma de los elementos de
ordenados de manera creciente, de acuerdo a la distancia con . En la Figura 31, se muestra un
ejemplo de cómo se obtiene una permutación.
Donde y la imagen de
Utilizando la notación de dos renglones, se intercambian el primer renglón por el segundo o lo
que es igual se intercalan el rango por la imagen de la permutación. Se evalúa
. La permutación inversa
57
Entonces el índice está conformado por todas las permutaciones , con , como se
muestra en la Figura 31. A cada canción en una colección de música, le corresponde un AFP y a
cada AFP una permutación . Para realizar búsquedas en este índice en (Chávez et al., 2008) se
propone el siguiente algoritmo:
La interfaz de consulta es el medio por el cual un usuario final hace uso de las búsquedas
por contenido. La interfaz de consulta que se definió en el presente trabajo, es un reproductor
multimedia, el elegido en el presente trabajo es “Songbird”, por ser un reproductor que cuenta
con funcionalidades y características que hacen que sea el candidato principal para utilizarse
como base para desarrollar el caso de estudio.
Entre los elementos que forman la pantalla del buscador de audio por contenido, se
encuentran un botón para la captura de consulta, un listado de las canciones que pertenecen a la
biblioteca digital de música, un botón para verificar la consulta y un listado para mostrar los
resultados de la búsqueda. Los detalles de los elementos se muestran a continuación.\
Botón para verificar la consulta. Si se requiere escuchar la consulta, es necesario dar clic
sobre el botón verificar consulta, y entonces se reproduce la consulta que se sometió a la
búsqueda justo después de dar clic.
61
Listado para mostrar los resultados. Los resultados que se muestran justo después de
realizar una búsqueda, se muestran en una lista en la parte inferior de la pantalla, donde se puede
observar información útil de la canción.
Tomando en cuenta los elementos principales de la pantalla, el proceso para dar solución
al primer escenario de aplicación es el siguiente.
La Figura 34, muestra el diagrama con los elementos principales que forman parte de la
propuesta de solución en el presente trabajo.
CAPITULO V
V.1 Introducción
Las tablas hash son estructuras de datos efectivas para implementar diccionarios. Aunque
puede ocurrir que buscar por un elemento dentro de una tabla hash, sea tan tardado como buscar
dentro de una lista ligada, que en el peor caso es de orden O(n), donde n es el número de
elementos de entrada a la tabla. En la práctica, el rendimiento de las tablas hash resulta ser, en
promedio, mucho mejor. Bajo ciertas suposiciones, el tiempo esperado para encontrar un
elemento en una tabla hash es de orden O(1).
64
Figura 35. Implementación de una tabla hash utilizando el método de direccionamiento directo. Cada valor clave en el
universo U, corresponde a un índice en el arreglo T. (Cormen et al., 2001)
En la creación de una tabla hash se asocian llaves o claves con índices dentro de una
estructura de acceso aleatorio. Esto permite el acceso directo a los elementos almacenados a
partir de una clave. Esta asociación se lleva a cabo aplicando una función hash h la cual
transforma una clave en un valor hash h(k). Un valor hash es un número que la tabla hash utiliza
para localizar el valor deseado. Como se puede observar en la Figura 35, en la construcción de
una tabla hash se requiere de una estructura de acceso aleatorio que generalmente es un arreglo T
y una función hash cuyo dominio es el espacio de claves y su imagen (o rango) los valores hash.
Existe además en la construcción de una tabla hash, el problema de colisión que se puede
observar en la Figura 35, donde las claves k2 y k5, después de evaluarse con la función hash
tienen el mismo valor hash. Para resolver este problema, se utiliza comúnmente la técnica de
encadenamiento, Figura 36. Esta técnica, pone todos los elementos que cuentan con el mismo
valor hash dentro de una lista ligada. Como se puede observar en la Figura 36, el índice j dentro
del arreglo T contiene un apuntador a la cabeza de la lista que contiene todos los elementos que
se mapean al valor hash h(k)=j; si no existen elementos cuya imagen bajo la función hash sea j,
entonces el apuntador será nulo.
65
Figura 36. Resolucion de colisones utilizando el metodo de encadenamiento. Cada espacio T(j) contiene una lista ligada
con todas las llaves cuyo valor hash es j. Por ejemplo h(k2)=h(k5).
En el peor caso, el tiempo que toma insertar un elemento en una tabla hash con
encadenamiento es de orden O(1). El proceso de inserción es rápido, en parte, porque los
elementos se almacenan sin ordenar, pero si se requiere mantener ordenadas las listas, es
necesario sumar un costo adicional en el tiempo computacional requerido. En cuanto al tiempo
necesario para la búsqueda, esté es proporcional al tamaño de la lista de valor hash en la que se
busca un elemento.
Algoritmo de inserción.
Algoritmo de búsqueda
1. Para recuperar los datos, es necesario únicamente conocer la clave del elemento
que se quiere recuperar, a la cual se le aplica la función hash.
2. El valor obtenido se mapea al espacio de direcciones de la tabla.
3. Se busca dentro de la lista ligada perteneciente al valor hash que se obtuvo en el
paso anterior.
Locality sensitive hashing (LSH) es una técnica utilizada en (Tellez y Chavez, 2010), y es
una opción natural para la búsqueda por similitud en modelos vectoriales. Es rápida, con
precisión ajustable, fácil de implementar y además se puede utilizar para manejar bases de datos
muy grandes y con altas dimensiones. Para poder utilizar la técnica LSH se requiere definir una
familia de funciones con características particulares para la colección a la cual va a ser
aplicada, además de una función distancia para evaluar similitudes.
Las familias hash aplicadas en esta técnica consisten en un muestreo aleatorio sobre
las cadenas de bits que representan las señales de audio. Por ejemplo, supongamos que
es una función que copia y concatena los bits de la cadena binaria s y es la
familia . Si se considera dentro de un espacio de haming binario
definidos de la siguiente manera: .
Ejemplificando, , esto dado a que las funciones hash
retornan los siguientes valores
67
Para la construcción del índice, al igual que en la primera propuesta de solución del
presente trabajo se tomó en cuenta la representación binaria de canciones que se extrae al aplicar
la técnica de MBSES. Esta técnica por naturaleza define un espacio de hamming, el cual si bien
se puede aplicar directamente a la técnica LSH, evadir la necesidad de evaluar distancias con una
métrica tan costosa computacionalmente hablando como hamming, motivó utilizar una métrica
distinta a hamming.
Los AFPs generados por MBSES como se muestran en la Figura 37, calcula un vector
binario para cada ventana en la que se divide la señal. Es por esta división de ventanas que se
puede tener referencia temporal de la ocurrencia del vector binario que se genera. En la Figura
38, se muestra la generación de un AFP con un traslape de 75% y un tamaño de ventana de
8192, por lo que se evalúa una ventana cada 46 ms. Es importante notar que el tiempo en el que
ocurre varía dependiendo de estos dos parámetros.
Se puede observar que son tres los datos que se pueden extraer de cada uno de los
vectores generados por MBSES: el valor de la cadena binaria, el tiempo en el que ocurre y la
canción a la que pertenece, y son estos tres datos los que van a ser de utilidad en el momento de
indexar el espacio. Ejemplificando con la Figura 38, el valor clave en este conjunto de datos es el
valor en la cadena binaria y tanto el tiempo como la canción son propiedades adjuntos a dicha
clave. Es decir, los elementos dentro del espacio tienen la forma {valor binario, tiempo, id de la
canción}.
La familia de funciones hash para este caso son funciones que copian y concatenan
bits, el índice de bits a tomar en cuenta se genera de manera aleatoria, es decir, si se quieren
tomar en cuenta 5 bits como se muestra en la Figura 38, se generan 4 funciones de 5 bits
aleatoriamente. Para cada cadena binaria se evalúa cada una de las funciones pertenecientes a ,
por lo que para el ejemplo de la Figura 38 se generarían 4 valores hash por cada cadena binaria o
clave.
Figura 38. Obtención de los valores hash. Se definen las funciones a, b, c y d. Se evalúan cada una de las funciones para
cada cadena binaria, por lo que por cada cadena binaria se obtienen 4 valores hash.
Una vez definidas las funciones, es necesario definir dos parámetros, primeramente hay
que decidir el tamaño de la cadena binaria sobre la cual se evaluarán las funciones, es decir, si se
tomaran las cadenas binarias directamente de los vectores binarios por cada ventana que genera
MBSES, se tomarían en cuenta cadenas binarias de longitud 24 pero realizarlo de esta manera
69
generaría un índice muy sensible al cambio de un bit. Por lo que es recomendable incrementar la
longitud de la cadena binaria a tomar en cuenta. Por ejemplo, si se toma una longitud de 72,
habrá que concatenar los 24 bits generados para 3 vectores binarios consecutivos en un AFP.
Posteriormente hay el traslape en el avance para obtener el siguiente grupo de valores hash.
Ejemplificando, en la Figura 39, se muestra una longitud de cadena de 96 bits con un traslape del
50%. Entonces, cada 96 bits se evalúan las funciones de la familia . Una vez realizada la
evaluación se recorren 48 bits y a partir del bit 48 se toman en cuenta los siguientes 96 bits como
la siguiente sub matriz y sobre ésta se realiza una nueva evaluación. Este proceso se repite hasta
finalizar el AFP.
Figura 39. Obtención de valores hash cada n bits. Para este caso n=96 y un traslape de 50%.
Hasta este punto, se obtienen los valores hash que se pueden extraer de cada uno de las
canciones en la colección, ahora la tarea es insertar dentro de una tabla hash los valores que se
obtuvieron. El primer paso, es definir el arreglo T que se usará como base para la búsqueda
dentro de la tabla. Para el caso de la familia que se muestran en la Figura 40, en las cuales se
toman en cuenta 5 bits, el tamaño de T será el valor máximo que se puede generar con 5 bits, el
cual es 31. Como se muestra en la Figura 40, para cada elemento en T se asociará un lista ligada
la cual contiene elementos de la forma {id canción, tiempo}. De esta manera se podrán localizar
70
los elementos en la tabla hash de manera directa para tener la capacidad de realizar
comparaciones posteriormente.
El proceso anterior se repite para cada uno de los AFPs que representan las canciones
dentro de la colección y al final se obtiene una tabla hash con soporte a colisiones utilizando la
técnica de encadenamiento.
mismos parámetros con los que se realizó el índice. Una vez que se obtienen los valores hash hay
que buscar dentro de la tabla hash por las listas ligadas que están relacionadas con los valores
hash que se obtuvieron, uno se puede dar cuenta que encontrar las listas ligadas dentro de una
tabla hash sigue una complejidad constante y es esta propiedad la que se explota en esta técnica
de búsqueda para aumentar la escalabilidad.
Una vez que se obtienen las listas ligadas de cada valor hash encontrado en el objeto
consulta, el siguiente paso es realizar un agrupado por el identificador de la canción. Para poder
identificar cuando ocurre un valor hash dentro de una canción. De este modo, se convierten las
tuplas de {canción id, tiempo} a {valor hash, tiempo} y como resultado ahora se tiene un
conjunto de listas y cada lista en este conjunto representa una canción y tiene elementos de la
forma {valor hash, tiempo}. Hasta este momento cada lista pertenece a una canción y esta
canción se puede ver como un candidato para ser el vecino más cercano en la colección del
objeto consulta .
El siguiente paso es la generación de un histograma con cada una de las listas o canciones
candidatas que se han obtenido hasta este momento. Esto se realiza primeramente definiendo
lapsos de tiempo previamente al proceso de búsqueda, por ejemplo, para consultas de 10
segundos se definen lapsos de 10,000 ms. Entonces, los lapsos quedarían definidos de la
siguiente manera (0-10000, 10000-20000, 20000-30000, 30000-40000-…). Suponga que una
consulta tiene como tamaño 10 segundos y cada uno de los lapsos de 10,000 ms define una
intervalo de clase dentro del rango del histograma. Veamos el ejemplo en la Figura 41, se puede
observar que para el objeto consulta se encuentran como candidatas dentro de la tabla hash las
canciones . El siguiente paso es, para cada valor hash que se extrae del objeto consulta ,
poner cada uno de los elementos pertenecientes a la lista de ese valor hash dentro del intervalo en
el histograma en el cual cae el valor en el tiempo que tiene. Con esto se busca tener el máximo
número de coincidencias dentro de un lapso de 10 segundos o el tamaño de la consulta. Esto
genera no solo un soporte en las búsquedas por las comparaciones por valores hash, sino también
permite valorar el tiempo en el que ocurren dichos valores hash. Este proceso se repite tanto para
la canción y y entonces, la canción que genere el pico más grande en el histograma, es la
canción candidata para ser el vecino más cercano del objeto consulta en la colección .
72
60
50
40
Canción x
30
Canción y
20 Canción z
10
0
1000 2000 3000 4000 5000 6000 7000 8000 9000
Figura 41. Histograma con las canciones candidatas x, y, z. Si bien la canción z contiene más valores hash a lo largo del
histograma, la canción ganadora es x por tener el pico más alto.
Algoritmo de búsqueda
Para poder realizar experimentos con la técnica de indexación LSH que lograran simular
un escenario real, se requería llevar a cabo pruebas sobre una colección significativa. Pero
realizar estas pruebas con una colección más grande de 500 canciones y mantenerlas en memoria
principal es una tarea imposible, tomando en cuenta una cantidad de 4 gigas de memoria
principal, que es la cantidad con la que cuenta la computadora con la que se realizaron los
experimentos. Para poder realizar esta tarea se tomó en cuenta la base de datos Berkeley DB
(Olson et al., 1999).
Berkeley DB, es una herramienta de código abierto, que da soporte a índices con
estructuras tanto de árbol b y tabla hash. Con esta herramienta las estructuras pasan de disco
secundario a memoria principal en tiempo de ejecución, con esto, no es necesario mantener en
memoria principal todo el contenido de la tabla hash en todo momento. Como se muestra en la
Figura 42, los valores hash pasan de natix a Berkeley DB y viceversa.
CAPITULO VI
Experimentos y resultados
VI.1 Introducción
Como se mencionó anteriormente, uno de los factores de interés en este tipo de sistemas,
es la robustez ante ciertas deformaciones que se presentan en escenarios reales, como los que se
propusieron en el caso de estudio. La primera de las deformaciones que se tomó en cuenta en la
experimentación, fue la regrabación. Esta deformación se presenta dentro del primer escenario,
cuando se toma del ambiente, el sonido o señal de consulta utilizando el micrófono. Dentro de
este tipo de deformación, por la forma en la que se graban las señales, lleva consigo
implícitamente otra deformación, el ruido, porque es imposible encontrar señales originales en
el ambiente sin tener algún tipo de ruido que deforme en cierto porcentaje el espectro de la
señal.
Otro factor interesante es el desplazamiento, una señal que se representa con una técnica
de generación de AFPs, normalmente divide en marcos la señal, para después representar alguna
característica dentro de esos marcos. Pero el problema es que algunas veces el principio de una
consulta, o la forma en que se dividen los marcos de una consulta, no es exactamente igual al de
un elemento en la colección que se esperaría ser el elemento con el que se identifique la consulta.
Razón por la cual, los AFPs que se generan en ambos elementos son diferentes.
Dentro de los experimentos las consultas sufren una deformación en particular o alguna
combinación de las deformaciones anteriores, por lo que en gran medida, el éxito de una
75
aplicación de este tipo es la robustez de la técnica para generar AFPs que se toma en cuenta para
realizar los experimentos.
Además, un sistema de recuperación de música debe ser capaz de dar respuesta lo más
rápido posible a una consulta, en general, para hacer escalable las búsquedas en aplicaciones de
este tipo, se hacen uso de índices. El objetivo de aplicar índices en la recuperación de audio, es
reducir al máximo las comparaciones que se hacen entre AFPs, aunque a veces se sacrifica un
poco la precisión para tener una mejor eficiencia en la búsqueda.
Sumado a los problemas o características anteriores a los que se enfrentan estos sistemas,
los ritmos de música que en general se presentan en bibliotecas digitales de música personales,
son de muy diversos tipos que van desde pop, rock, instrumental, clásico, etc. y lo que se espera
de una aplicación de este tipo, es que su comportamiento no dependa de los tipos de ritmos que
conforman las bibliotecas digitales de música. Si bien existen aplicaciones que se desenvuelven
mejor con cierto tipo de canciones, en los escenarios que se plantean en el presente trabajo es
necesario tener un comportamiento uniforme ante cualquier tipo de ritmo.
VI.2 Características
Modelación del espacio en Natix. Para dar soporte a vectores binarios dentro de
Natix, se realizó la extensión de la funcionalidad de esta librería, con el fin de
modelar las representaciones de objetos de este tipo, es decir, modelar el espacio
dentro de la librería (véase Apéndice A).
Construcción de servicios web. Hasta este punto, se tenía construido un índice por
permutaciones que podía dar soporte a aplicaciones escritas en Mono. Pero una de
las necesidades de un marco de trabajo en la actualidad, es poder aplicar su
funcionalidad en cualquier lenguaje de programación en que se esté trabajando.
Es por esto que se montaron servicios web que toman como entrada cadenas
binarias, que representan AFPs de consultas, y como respuesta, los servicio web
retornan un archivo xml con metadatos que representan los k-vecinos más
cercanos a la consulta (véase apéndice A, sección 3).
En este experimento se tomó como consulta 10 segundos de canciones que contaban con
metadatos genéricos. Estas canciones provenían de fuentes diversas, como descargas de internet,
radio, grabaciones con celular, etc. Para estas consultas se tomaron 10 segundo aleatorios del
primer minuto de canción, esto con el fin de evadir silencios al comienzo de las canciones,
aplausos en canciones en vivo, etc. La distribución de los tipos de consultas y deformaciones que
sufren las consultas se muestran en la siguiente tabla.
Para la realización de los experimentos se tomó en cuenta una base de datos de 1,500
canciones a las cuales se les extrajo su representación binaria o AFP. Partiendo de esta colección
de AFPs, se inició la experimentación, de la siguiente manera:
Se realizaron índices con cada uno de los valores entre 24 y 64 bits, para posteriormente
realizar búsquedas sobre estas estructuras. Las consultas que se aplicaron a las búsquedas eran de
una longitud de 10 segundos y la deformación a la que fueron sometidas fue desplazamiento en
el tiempo.
cuenta. El régimen de búsqueda fue el de los k vecinos más cercanos y como k se consideró 10.
Es decir, se consideraron como resultados positivos, aquellos elementos que aparecieran dentro
de los 10 vecinos más cercanos. Los resultados se muestran a continuación.
100
90
80
70
60
50
10 vecinos mas cercanos
40
30
20
10
0
24 bits 32 bits 40 bits 48 bits 56 bits 64 bits
Figura 43. Gráfica de resultados del expermiento variación de bits realizado sobre el indice LSH.
Como se puede observar en la Figura 43, al subir el número de bits tomados en cuenta en
las familia de funciones que mapea, disminuye el recall dentro de los 10 vecinos más cercanos.
Esto ocurre por la necesidad de encontrar exactamente los valores hash dentro de la tabla y al
subir el número de bits, es más probable que un bit no sea igual, por lo que la lista ligada que
debería de pertenecer a ese valor hash no se recupera y por lo tanto no forma parte del
histograma.
Parámetros:
Tamaño de ventana: 8192 bits con muestro de 44100 muestras por segundo son
aprox. 185ms
Traslape de la huella: 95% cada 12 ms se calculan 24 bits
Tamaño de la colección: 500 canciones.
Número de consultas: 100
Métrica: Hamming "exacta"
Resultados:
NN=100
KNN=0 (dentro de los 10 vecinos)
Mal=0
Precisión=100%
Tiempo promedio de búsqueda= 30 minutos.
120
100
80
NN
60
KNN
40 Mal
20
0
100 consultas
Hamming determinística
14000
12000
10000
8000
6000 Distancia
4000
2000
0
1
54
531
107
160
213
266
319
372
425
478
584
637
690
743
796
849
902
955
Figura 45. Gráfica de distancias con hamming determinístico. Se puede notar claramente como se separan en la parte de
abajo los objetos ganadores de los demás.
El siguiente experimento es realizar con los mismos parámetros con los que se realizó el
experimento de búsqueda secuencial en el índice LSH, esto con el fin de tener una relación en la
mejora con respecto al tiempo haciendo uso de este índice.
84
Tiempo de búsqueda
40
35
30
25
Minutos
20
15
10
5
0
6
1
91
11
16
21
26
31
36
41
46
51
56
61
66
71
76
81
86
96
Figura 46. Gráfica tiempo de búsqueda en secuencial. El eje (x) representa las consultas realizadas mientras que el eje (y)
el tiempo en minutos.
Parámetros:
Tamaño de ventana: 8192 bits con muestro de 44100 muestras por segundo son
aprox. 185ms
Traslape de la huella: 95% cada 12 ms se calculan 24 bits
Tamaño de la colección: 500 canciones.
Número de consultas: 100
Métrica: Hamming "probabilística" (utilizando histograma)
Tamaño de la submatriz: 24 bits o 1 ventanas
Número de funciones H: 3
Número de bits en la función: 8
Rangos de tiempo {0-50,50-100……}
Resultados:
NN=100
85
En la Figura 47 se muestra que con el LSH se puede mantener el recall, si bien la manera
de obtener los resultados es de manera probabilística, aun con desplazamiento en el tiempo lo
cual hace que varíen los bits que arroja la técnica de obtención de AFPS utilizado se puede
considerar una técnica robusta ante desplazamiento en el tiempo.
120
100
80
NN
60
KNN
40 Mal
20
0
100 consultas
En una consulta con los parámetros que se realizó el experimento una consulta genera
1058 ventanas que se pueden encontrar en el índice LSH, y como se observa en la Figura 48, el
86
número de ventanas que se encuentran son suficientes para diferenciar entre canciones de la
colección que no se toman en cuenta con candidatos para el vecino más cercano a la consulta.
Hamming probabilística
900
800
700
600
500
400 No. Frames con match
300
200
100
0
29
1
8
15
22
36
43
50
57
64
71
78
85
92
99
Figura 48. Gráfica con el número de marcos que hacen match. El número máximo de marcos en 10 segundos de consulta
y un traslape del 95% es de 1058.
Tiempo de búsqueda
9
8
7
6
5
4
3
2
1
0
1
5
9
33
13
17
21
25
29
37
41
45
49
53
57
61
65
69
73
77
81
85
89
93
97
Figura 49. Gráfica tiempo de búsqueda en LSH. El eje (x) representa las consultas realizadas mientras que el eje (y) el
tiempo en minutos.
87
Comparando el índice secuencial con el LSH como se muestra en la Tabla III, se puede
dar una idea del comportamiento de un índice LSH con parámetros que si bien están muy altos
en términos de traslape al obtener la huella, el tiempo se mejora significativamente. Un
experimento posterior sería bajar el traslape al obtener la huella hasta 75%, parámetro con el cual
ya se vió que con el índice secuencial se sigue manteniendo un recall de 100% ante ciertas
deformaciones del espectro.
Tabla de comparación
Indice LSH Secuencial
Parámetro
Hamming
Métrica Hamming probabilística determinística
Tamaño de la colección 500 500
Número de consultas 100 100
Recall 100% 100%
3.060539 Minutos
Tiempo aproximado por consulta 30 Minutos
Los resultados que generarón los experimentos, haciendo uso de “Natix”, mostró la
forma en que se puede utilizar este marco de trabajo como base en la creación de una aplicación
que requiera de la búsqueda de canciones por contenido. La creación de un marco de trabajo de
este tipo fue la motivación primordial de esta tesis.
CAPITULO VII
VII.1 Conclusiones.
Para llevar a cabo el trabajo de investigación, se tomó en cuenta como caso de estudio la
recuperación de información aplicada en la música, el cual tiene como objetivo obtener
información de canciones utilizando el contenido mismo de las canciones, además, el poder
hacer búsquedas escalable en colección significativamente grandes. Esto motivado no solo por el
hecho de presentarse en múltiples escenarios de aplicación en la actualidad, sino para también
mostrar una tarea particular que se puede realizar con el marco de trabajo propuesto en esta tesis,
es decir, si bien se trabajó con recuperación de música, el mismo proceso y funcionalidad del
marco de trabajo se puede aplicar en recuperación de imágenes, cadenas de ADN, recuperación
de video, etc.
Si bien en cada escenario de aplicación donde se requiere realizar una búsqueda por
contenido, cuenta con parámetros particulares propios de problema al que se enfrenta, el proceso
abstracto de cómo resolver el problema de búsquedas multimedia por contenido se repite en cada
una de las aplicaciones que se han realizado hasta este momento. Es por esto que es fácil darse
cuenta que en aplicaciones que buscan objetivos distintos en escenarios de aplicación diferentes,
pueden seguir el mismo proceso para obtener el resultado deseado. Esto motivó la generación de
un marco de trabajo capaz de adaptarse a cada uno de los escenarios que se pueden presentar en
la actualidad.
90
En la actualidad las colecciones de objetos complejos como los multimedia, han rebasado
a aquellos conjuntos de datos que pueden ser representados dentro de una base de datos
tradicional. Esto debido a la gran cantidad de información que se genera de fuentes como las
cámaras digitales, grabadores de sonido, celulares, radios digitales, transmisión por internet, etc.
VII.2 Aportaciones
El diseño y creación de una interfaz de consulta, para generar una nueva forma de
realizar búsquedas de canciones por contenido. La característica de la interfaz
creada es utilizar los servicios web para recibirla y transmitirla a la librería. El
diseño de esta interfaz ilustra la manera de cómo se utilizan las funciones de
“Natix”, teniendo como base una aplicación con una arquitectura distinta.
Búsquedas con ejemplos. Se utiliza un pequeño trozo del audio para reconocer una
canción en particular.
Generar una estructura o índice, donde el tiempo de respuesta a una consulta sea
constante, es decir, al someter una búsqueda el tiempo de espera para un usuario
final no dependa de la cantidad de elementos en una colección. Este índice debe
tener una precisión y un recall aceptable comparado con los resultados que se
pueden observar en el estado del arte.
Bibliografía
Allamanche, E., Herre, J., Hellmuth, O., Fröba, B., Kastner, T., Cremer, M. (2001).
Content-based identification of audio material using MPEG-7 low level description. En
Proceedings of the International Symposium of Music Information Retrieval 2001.páginas 197-
204, Octubre 15-17, Indiana, USA.
Baeza-Yates, R., Cunto, W., Manber, U., Wu, S. (1994). Proximity matching using fixed-
queries trees. En Proceedings of the 5th Combinatorial Pattern Matching 1994. páginas 198-
212, Junio 5-8, California, USA.
Cano, P., Batlle, E., Kalker, T., Haitsma, J. (2005). A review of audio fingerprinting. The
Journal of VLSI Signal Processing, 41(3): 271-284.
Chávez, E., Figueroa, K., Navarro, G. (2008). Effective proximity retrieval by ordering
permutations. IEEE transactions on pattern analysis and machine intelligence, 30(9): 1647-
1658.
Chávez, E., Navarro, G., Baeza-Yates, R., Marroquín, J. L. (2001). Searching in metric
spaces. ACM Computing Surveys (CSUR), 33(3): 273-321.
Ciaccia, P., Patella, M., Zezula, P. (1997). M-tree: An efficient access method for
similarity search in metric spaces. En Proceedings of the International Conference on Very
Large Data Bases 1997. páginas 426-435, Agosto 25-29, Atenas, Grecia.
95
Dehne, F., Noltemeier, H. (1987). Voronoi trees and clustering problems. Information
Systems, 12(2), 171-175.
Doraisamy, S., Ruger, S. (2002). A Comparative and Fault-tolerance Study of the Use of
N-grams with Polyphonic Music. En Proceedings of the International Conference on Music
Information Retrieval 2002. páginas 53-70, Octubre 13-17, Paris, Francia.
Fagin, R., Kumar, R., Sivakumar, D. (2003). Comparing top k lists. En Proceedings of
the fourteenth annual ACM-SIAM symposium on Discrete algorithms 2003. páginas 28-36,
Enero 12-14, Baltimore, USA.
Haitsma, J., Kalker, T. (2003). A highly robust audio fingerprinting system with an
efficient search strategy. Journal of New Music Research, 32(2): 211-221.
Haus, G., Pollastri, E. (2001). An audio front end for query-by-humming systems. En
International Symposium on Music Information Retrieval 2001. páginas 65-72, Octubre 15-17,
Indiana, USA.
Herre, J., Allamanche, E., Hellmuth, O. (2002). Robust matching of audio signals using
spectral flatness features. In Workshop on the Applications of Signal Processing to Audio and
Acoustics, 2001 IEEE. páginas. 127-130, Octubre 21-24, Nueva York, USA.
Kalantari, I., McDonald, G. (2006). A data structure and an algorithm for the nearest
point problem. IEEE Transactions on Software Engineering, 9(5): 631-634.
Kim, S., Yoo, C. D. (2007). Boosted binary audio fingerprint based on spectral subband
moments. En International Conference on Acoustics, Speech and Signal Processing, 2007.
ICASSP 2007. páginas 241-244, Abril 15-17, Honolulu, Hawai.
Noltemeier, H., Verbarg, K., Zirkelbach, C. (1992). Monotonous Bisector* Trees—a tool
for efficient partitioning of complex scenes of geometric objects. Data structures and efficient
algorithms, 594(1), 186-203.
Olson, M. A., Bostic, K., Seltzer, M. (1999). Berkeley db. En Proceedings of the
FREENIX Track: USENIX Annual Technical Conference 1999. páginas 183-192, Junio 6-11,
California, USA.
Seo, J. S., Jin, M., Lee, S., Jang, D., Lee, S., Yoo, C. D. (2005). Audio fingerprinting
based on normalized spectral subband centroids. En Proceedings in the Acoustics, Speech, and
Signal Processing 2005. páginas 213-216, Marzo 18-23, Philadelphia, USA
Sukittanon, S., Atlas, L. (2002). Modulation frequency features for audio fingerprinting.
En Proceedings on the Acoustics, Speech, and Signal Processing, 2002. páginas 1773 - 1776,
Mayo 13-17, Florida, USA.
Wold, E., Blum, T., Keislar, D., Wheaten, J. (2002). Content-based classification, search,
and retrieval of audio. IEEE Multimedia, 3(3): 27-36.
Yianilos, P. N. (1993). Data structures and algorithms for nearest neighbor search in
general metric spaces. En Proceedings of the fourth annual ACM-SIAM Symposium on Discrete
algorithms 1993. páginas 311-321, Enero 25-27, Texas, USA.
Yianilos, P. N. (1999). Excluded middle vantage point forests for nearest neighbor
search. In In DIMACS Implementation Challenge, ALENEX'99.
97
Apéndice A
Implementación de Natix
A.I Introducción
Las interfaces centrales de Natix son las que se muestran en la Figura 50, por un lado
están las interfaces que modelan un espacio métrico y por otro lado el índice que reduce las
comparaciones necesarias para dar respuesta a una búsqueda.
Con las interfaces Space y Space<T>, se definen las reglas para modelar dentro de la
librería un espacio métrico. Los detalles de la interfaz se muestran a continuación.
Propiedades Tipo
Count Retoma el número de objetos en el espacio Entero
Name Retoma y establecer el nombre del espacio Cadena
NumberDistances Retoma el número de distancias evaluadas en el espacio Entero
SpaceType Retoma el tipo de espacio Type
Metodos Tipo
CreateResult() Formatea los resultados de búsquedas IResult
SubSpace() Guarda un sub conjunto de objetos del espacio. Void
Uno de los objetivos principales de esta librería es poder modelar cualquier tipo de
conjunto de objetos que puedan compararse de alguna forma. Es por ello, que se utiliza las
interfaces genéricas que forman parte del compilador de Mono. Como se puede ver en la Figura
51, la forma de la interface es Space<T>, donde <T> representa una colección de cualquier tipo
de objeto.
Space<T> es una interfaz que implementa cualquier espacio que se desea modelar y al
implementarla las propiedades y métodos que se requieren agregar se enlistan a continuación.
Propiedades Tipo
this Retoma un objeto en el índice j T
Metodos Tipo
Dist() Evalúa la distancia entre dos objetos del espacio Double
Parse() Analiza objetos, para agregarlos al espacio Bolean
Para modelar un espacio es necesario primeramente crear una clase, darle un nombre que
represente el espacio que modela. Después hay que implementar la interfaz Space<T> y de paso
definir el tipo de objeto que es T, en el ejemplo que se muestra en la Figura 52 se puede observar
que en la clase “BinaryHammingSpace” se quiere modelar un espacio binario de haming. Esta
clase implementa la interface Space<T>, por lo que es necesario agregar dentro la clase
“BinaryHammingSpace” las propiedades y métodos de las interfaces Space y Space<T>, además
se pueden agregar más, según se necesiten dependiendo del espacio.
100
Para el ejemplo presentado en la Figura 52, T lo definen objetos del tipo IList<byte>, esto
significa que el espacio lo componen listas de bytes. Un ejemplo de objetos que se pueden
mapear a este espacio son los AFPs que se obtienen de la técnica MBSES. Como se explicó
anteriormente, la funcionalidad mínima de espacio dentro de Natix la definen las interfaces y el
código que se ejecuta dentro de las propiedades y métodos implementados dependerán del
resultado que se desee. El código a continuación ejemplifica el espacio mencionado dentro de
Natix.
}
public string SpaceType {
get { /*Se agrega el código*/}
set {/*Se agrega el código*/ }
}
Para implementar un nuevo índice dentro de Natix es necesario seguir la jerarquía que se
muestra en la Figura 53, donde para un usuario solo se requiere heredar dentro de una clase la
clase abstracta BaseIndex<T>, aunque la definición de la clase BaseIndex<T>, la definen tanto
Index e Index<T>, que son interfaces en un nivel jerárquicamente hablando más alto.
102
Propiedades Tipo
Cost Retoma el costo empleado en la búsquedas Object
IndexType Retoma y establecer el tipo de índice Type
MainSpace Retoma el espacio con el que se construye el índice Space<T>
Metodos Tipo
Build() Construye un índice Void
FinalizeLoad() Carga los parámetros del espacio al finalizar la carga Void
KNNSearch() Busca por el régimen de los k-vecinos IResult
Search() Busca por el régimen de búsqueda por radio IResult
Una vez que se han implementado un índice dentro de Natix, la tarea es hacer uso del
mismo, el ejemplo de código a continuación ejemplifica el uso de un índice.
Con estas dos líneas de código Natix, tomará de un archivo de texto una lista de rutas que
apuntan a objetos que conformarán el espacio métrico, después definirá el espacio con la
distancia de hamming y por último guardará en un archivo xml los propiedades del índice para
poder usarlo después de ejecutar las búsquedas necesarias. Si bien la creación de los índices
puede variar dependiendo de los parámetros que requiere cada índice, al ser el método Build un
método abstracto en la clase BaseIndex<T>, siempre se crearán los índices haciendo uso de éste.
104
Una vez construido el índice ya se pueden realizar búsquedas de objetos dentro del índice,
suponga que se quiere encontrar los 10 vecinos más cercanos a un objeto q en el espacio que
utiliza el índice creado anteriormente.
Con la primera línea se carga el espacio y el índice en memoria, utilizando los parámetros que se
guardaron en la construcción del índice en el archivo “SequentialIndex.xml”.
Después se realiza un “cast” del objeto genérico Index a uno específico como Sequential, esto
puede realizarse gracias a la herencia utilizada en la jerarquía de Natix.
Por último, utilizado el método ParseKNNSearch, se puede dar como parámetro una cadena que
represente un archivo físico que cuente con la ruta donde está el objeto q, este método se encarga
de pasar de un archivo de texto al objeto T y poder entonces comparar los objetos espacio con q.
Este método toma como parámetros, la cadena que representa el archivo y los vecinos que se
quieren recuperar. Como resultado se obtiene un objeto Result, que básicamente se puede tratar
como un arreglo.
El enfoque de crear un cliente para Natix era mostrar la efectividad y sencillez de uso de la
librería, pero además la característica de ser multiplataforma y además poder ser usada en
arquitecturas que se desenvuelvan en internet.
Dentro de este servicio web se encuentra el método KNNSearchMBSES, el cual toma una
cadena binaria como entrada y la compara con una colección de canciones que se tienen
representadas en el servidor natix.org. Como respuesta regresa un archivo con formato Json que
representa los metadatos de las 10 canciones más cercanas a la cadena binaria que se tomó como
consulta.
(WebMethod)
public string KNNSearchMBSES(string query)
{
string serverpath = base.Server.MapPath(".");
StreamWriter SW = File.CreateText(serverpath + "Query10secs.ntx");
SW.WriteLine(query);
SW.Close();
Sequential<IList<byte>> idx = (Sequential<IList<byte>>)
IndexLoader.Load("/home/fluque/Index_Sequential2/Index.audio.Seq.xml");
Result res = idx.ParseKNNSearch(serverpath + "Query10secs.ntx", 10);
BinaryHammingSpace Space = (BinaryHammingSpace) idx.MainSpace;
List<Resultado> mListResultado = new List<Resultado>();
for (int i = 0; i < 10; i++)
{
ResultPair RsPair = res.PopFirst();
string dcname = Space.GetItemName(RsPair.docid).Replace(".wav.afp", "");
Console.WriteLine(dcname);
File Tagfile = File.Create(dcname);
Resultado ObjResultado = new Resultado();
ObjResultado.Album = Tagfile.Tag.Album;
ObjResultado.Artist = (Tagfile.Tag.Artists.Length != 0) ? Tagfile.Tag.Artists(0).ToString() :
"Untitled";
ObjResultado.Dist = RsPair.dist.ToString();
ObjResultado.Genre = (Tagfile.Tag.Genres.Length != 0) ? Tagfile.Tag.Genres(0).ToString() :
"Untitled";
ObjResultado.Id = RsPair.docid;
ObjResultado.PathDoc = dcname;
ObjResultado.TrackName = Tagfile.Tag.Title.ToString();
ObjResultado.Year = Tagfile.Tag.Year.ToString();
mListResultado.Add(ObjResultado);
}
string json = JsonConvert.SerializeObject(mListResultado, Formatting.Indented);
Console.WriteLine(json);
return json;
}