Este repositorio contiene un código que puede usarse para visualizar decenas de miles de imágenes en una proyección bidimensional dentro del cual imágenes similares se agrupan. El análisis de imágenes utiliza los enlaces de inicio de TensorFlow, y la capa de visualización utiliza un visor WebGL personalizado.
Vea el registro de cambios para actualizaciones recientes.

Mantenemos varios libros de cocina de instalación específicos de la plataforma en línea.
En términos generales, para instalar las dependencias de Python, le recomendamos que instale Anaconda y luego cree un entorno de condena con un tiempo de ejecución de Python 3.7:
conda create --name=3.7 python=3.7
source activate 3.7Luego puede instalar las dependencias ejecutando:
bash
pip install https://github.com/yaledhlab/pix-plot/archive/master.zip
El sitio web que PIXPLOT finalmente crea requiere un navegador habilitado para WebGL.
Si tiene un navegador habilitado para WebGL y un directorio lleno de imágenes para procesar, puede preparar los datos para el espectador instalando las dependencias anteriores en ejecución:
pixplot --images " path/to/images/*.jpg "Para ver los resultados de este proceso, puede iniciar un servidor web ejecutando:
# for python 3.x
python -m http.server 5000
# for python 2.x
python -m SimpleHTTPServer 5000 La visualización estará disponible en http://localhost:5000/output .
Para adquirir algunos datos de muestra con los que construir una parcela, no dude en usar algunos datos preparados por DHLAB de Yale:
pip install image_datasetsLuego en un guión de Python:
import image_datasets
image_datasets . oslomini . download () El comando .download() hará un directorio nombrado datasets en su directorio de trabajo actual. Ese directorio datasets contendrá un subdirectorio llamado 'Oslomini', que contiene un directorio de imágenes y otro directorio con un archivo CSV de metadatos de imagen. Usando esos datos, a continuación podemos construir una trama:
pixplot --images " datasets/oslomini/images/* " --metadata " datasets/oslomini/metadata/metadata.csv " Si necesita trazar más de 100,000 imágenes pero no tiene una tarjeta gráfica costosa con la que visualizar enormes pantallas de WebGL, es posible que desee especificar un parámetro "Cell_Size" más pequeño al construir su gráfico. El argumento "Cell_Size" controla cuán grande es cada imagen en los archivos Atlas; Los valores más pequeños requieren menos texturas que se representarán, lo que disminuye la RAM GPU requerida para ver una gráfica:
pixplot --images " path/to/images/*.jpg " --cell_size 10El algoritmo UMAP es particularmente sensible a tres hiperparemetros:
--min_dist: determines the minimum distance between points in the embedding
--n_neighbors: determines the tradeoff between local and global clusters
--metric: determines the distance metric to use when positioning points
El creador de UMAP, Leland McInnes, ha escrito una visión general útil de estos hiperparametros. Para especificar el valor de uno o más de estos hiperparámetros al construir una parcela, uno puede usar las banderas anteriores, por ejemplo:
pixplot --images " path/to/images/*.jpg " --n_neighbors 2Si está instalado y disponible, PIXPLOT utiliza la agrupación espacial jerárquica basada en la densidad de aplicaciones con ruido, un refinamiento del algoritmo DBSCAN anterior, para encontrar puntos de acceso en la visualización. Puede estar interesado en consultar esta explicación de cómo funciona HDBSCAN.
Consejo: Si está utilizando hdbscan y descubre que Pixplot crea muy pocos (o solo uno) 'puntos de acceso automáticos', intente reducir el --min_cluster_size desde su valor predeterminado de 20. Esto a menudo sucede con conjuntos de datos más pequeños (menos de unos pocos miles).
Si HDBSCAN no está disponible, PixPlot recurrirá a la implementación de Kmeans de Scikit-Learn.
Si tiene metadatos asociados con cada una de sus imágenes, puede aprobar esos metadatos al ejecutar el script de procesamiento de datos. Hacerlo permitirá que el visor PIXPLOT muestre los metadatos asociados con una imagen cuando un usuario hace clic en esa imagen.
Para especificar los metadatos para su colección de imágenes, puede agregar --metadata=path/to/metadata.csv al comando que utiliza para llamar al script de procesamiento. Por ejemplo, puede especificar:
pixplot --images " path/to/images/*.jpg " --metadata " path/to/metadata.csv "Los metadatos deben estar en un archivo de valor separado por comas, deben contener una fila para cada imagen de entrada y deben contener encabezados que especifiquen el orden de la columna. Aquí hay un archivo de metadatos de muestra:
| Nombre del archivo | categoría | etiquetas | descripción | enlace permanente | Año |
|---|---|---|---|---|---|
| abejas.jpg | amarillo | A | B | C | rodillas de las abejas | https: // ... | 1776 |
| Cats.jpg | peligroso | B | C | D | pijama de gatos | https: // ... | 1972 |
Se aceptan las siguientes etiquetas de columna:
| Columna | Descripción |
|---|---|
| Nombre del archivo | el nombre de archivo de la imagen |
| categoría | una etiqueta categórica para la imagen |
| etiquetas | una lista de etiquetas categóricas para la imagen |
| descripción | una descripción de texto sin formato del contenido de la imagen |
| enlace permanente | un enlace a la imagen alojada en otro dominio |
| año | una marca de tiempo de año para la imagen (debería ser un entero) |
| etiqueta | una etiqueta categórica utilizada para la proyección UMAP supervisada |
| Lat | la posición latitudinal de la imagen |
| GNL | la posición longitudinal de la imagen |
Si desea procesar imágenes que se alojan en un servidor IIIF, puede especificar una lista de nueva línea de imagen IIIF manifiesta como el argumento --images . Por ejemplo, lo siguiente podría guardarse como manifest.txt :
https://manifests.britishart.yale.edu/manifest/40005
https://manifests.britishart.yale.edu/manifest/40006
https://manifests.britishart.yale.edu/manifest/40007
https://manifests.britishart.yale.edu/manifest/40008
https://manifests.britishart.yale.edu/manifest/40009 Entonces se podría especificar estas imágenes como entrada ejecutando pixplot --images manifest.txt --n_clusters 2
| Enlace | Recuento de imágenes | Información de la colección | Explorar imágenes | Descargar para pixplot |
|---|---|---|---|---|
| PROPISO: 1910-1912 | 24,026 | Colección George Grantham Bain | Noticias en la década de 1910 | Imágenes, metadatos |
| Bildefelt I Oslo | 31,097 | Oslobiler | Búsqueda avanzada, 1860-1924 | Imágenes, metadatos |
El DHLAB desea agradecer a Cyril Diagne y Nicolas Barradeau, desarrolladores principales de los espectaculares Experimentos de Google Arts Tsne Viewer, por compartir generosamente ideas sobre técnicas de optimización utilizadas en este espectador, y Lillianna Marie por nombrar este Pixplot de visor.