Este repositório contém código que pode ser usado para visualizar dezenas de milhares de imagens em uma projeção bidimensional na qual imagens semelhantes são agrupadas. A análise de imagem usa as ligações de Inception do TensorFlow e a camada de visualização usa um visualizador WebGL personalizado.
Veja o log de alterações para atualizações recentes.

Mantemos vários livros de receitas de instalação específicos da plataforma online.
Em termos gerais, para instalar as dependências do Python, recomendamos que você instale o Anaconda e, em seguida, crie um ambiente CONDA com um tempo de execução do Python 3.7:
conda create --name=3.7 python=3.7
source activate 3.7Em seguida, você pode instalar as dependências em execução:
bash
pip install https://github.com/yaledhlab/pix-plot/archive/master.zip
O site que o PixPlot cria exige um navegador habilitado para WebGL.
Se você possui um navegador habilitado para WebGL e um diretório cheio de imagens para processar, poderá preparar os dados para o espectador instalando as dependências acima, em seguida, em execução:
pixplot --images " path/to/images/*.jpg "Para ver os resultados desse processo, você pode iniciar um servidor da web executando:
# for python 3.x
python -m http.server 5000
# for python 2.x
python -m SimpleHTTPServer 5000 A visualização estará disponível em http://localhost:5000/output .
Para adquirir alguns dados de amostra para construir um enredo, fique à vontade para usar alguns dados preparados pelo DHLAB de Yale:
pip install image_datasetsEntão, em um script python:
import image_datasets
image_datasets . oslomini . download () O comando .download() fará um diretório chamado datasets no seu diretório de trabalho atual. Esse diretório datasets conterá um subdiretório chamado 'Oslomini', que contém um diretório de imagens e outro diretório com um arquivo CSV de metadados da imagem. Usando esses dados, podemos construir um gráfico em seguida:
pixplot --images " datasets/oslomini/images/* " --metadata " datasets/oslomini/metadata/metadata.csv " Se você precisar plotar mais de 100.000 imagens, mas não possui uma placa gráfica cara para visualizar enormes monitores WebGL, convém especificar um parâmetro "Cell_size" menor ao criar seu gráfico. O argumento "Cell_size" controla o tamanho de cada imagem nos arquivos Atlas; Valores menores requerem menos texturas a serem renderizadas, o que diminui a RAM da GPU necessária para visualizar um gráfico:
pixplot --images " path/to/images/*.jpg " --cell_size 10O algoritmo UMAP é particularmente sensível a três hiperpareméters:
--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
O criador da UMAP, Leland McInnes, escreveu uma visão geral útil desses hiperparâmetros. Para especificar o valor para um ou mais desses hiperparâmetros ao construir um enredo, pode -se usar as bandeiras acima, por exemplo:
pixplot --images " path/to/images/*.jpg " --n_neighbors 2Se instalado e disponível, o PixPlot usa agrupamento espacial baseado em densidade hierárquica de aplicações com ruído, um refinamento do algoritmo DBSCAN anterior, para encontrar pontos de acesso na visualização. Você pode estar interessado em consultar essa explicação de como o HDBScan funciona.
Dica: se você estiver usando o HDBScan e descobrir que o PixPlot cria muito poucos (ou apenas um) 'pontos de acesso automáticos', tente abaixar o --min_cluster_size do seu padrão de 20. Isso geralmente acontece com conjuntos de dados menores (menos de alguns milhares.
Se o HDBSCAN não estiver disponível, o Pixplot voltará à implementação de Kmeans pelo Scikit-Learn.
Se você tiver metadados associados a cada uma de suas imagens, poderá passar nesses metadados ao executar o script de processamento de dados. Fazer isso permitirá que o visualizador de Pixplot exiba os metadados associados a uma imagem quando um usuário clica nessa imagem.
Para especificar os metadados para a sua coleção de imagens, você pode adicionar --metadata=path/to/metadata.csv ao comando que você usa para chamar o script de processamento. Por exemplo, você pode especificar:
pixplot --images " path/to/images/*.jpg " --metadata " path/to/metadata.csv "Os metadados devem estar em um arquivo de valor separado por vírgula, devem conter uma linha para cada imagem de entrada e deve conter cabeçalhos especificando a ordem da coluna. Aqui está um arquivo de metadados de amostra:
| nome do arquivo | categoria | tags | descrição | Permalink | Ano |
|---|---|---|---|---|---|
| bees.jpg | amarelo | a | b | c | Os joelhos das abelhas | https: // ... | 1776 |
| CATS.JPG | perigoso | b | c | d | Pijama dos gatos | https: // ... | 1972 |
Os seguintes rótulos da coluna são aceitos:
| Coluna | Descrição |
|---|---|
| nome do arquivo | o nome do arquivo da imagem |
| categoria | um rótulo categórico para a imagem |
| tags | Uma lista delimitada de tubos de tags categóricas para a imagem |
| descrição | Uma descrição simples do conteúdo da imagem |
| Permalink | um link para a imagem hospedada em outro domínio |
| ano | Um ano de data e hora para a imagem (deve ser um número inteiro) |
| rótulo | um rótulo categórico usado para projeção UMAP supervisionada |
| Lat | a posição latitudinal da imagem |
| GNG | a posição longitudinal da imagem |
Se você deseja processar imagens hospedadas em um servidor IIIF, poderá especificar uma lista de imagens IIIF de nova linha de linha como o argumento --images . Por exemplo, o seguinte pode ser salvo 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 Pode -se então especificar essas imagens como entrada executando pixplot --images manifest.txt --n_clusters 2
| Link | Contagem de imagens | Informações de coleção | Navegue imagens | Baixe para Pixplot |
|---|---|---|---|---|
| NEWSPLOT: 1910-1912 | 24.026 | Coleção George Grantham Bain | Notícias na década de 1910 | Imagens, metadados |
| BILDEFELT I Oslo | 31.097 | Oslobilder | Pesquisa Avançada, 1860-1924 | Imagens, metadados |
O DHLAB gostaria de agradecer ao diagnóstico de Cyril e Nicolas Barradeau, desenvolvedores líderes dos espetaculares experimentos de artes do Google, TSNE Viewer, por compartilhar generosamente idéias sobre técnicas de otimização usadas neste espectador, e Lillianna Marie para nomear esse espectador.