Este artigo discute os métodos usados para coletar dados de imagem em um projeto de música com uma apresentação de slides. Houve limitações que nos forçaram a usar o banco de dados existente de imagens, em vez de imagens tiradas do Flickr. No entanto, este artigo discute as duas abordagens para que o leitor possa aprender como extrair dados usando a API do Flickr.
Além disso, como a qualidade de uma parte significativa das imagens coletadas com o Flickr era baixa, decidiu-se usar imagens de bancos de dados de imagens existentes. Em particular, foram coletadas imagens de três bancos de dados para pesquisa psicológica.
Lembre-se de que inicialmente os seguintes conjuntos de dados foram selecionados para este projeto:
- Um conjunto de dados de treinamento contendo 7000 imagens emocionalmente coloridas do Flickr para um algoritmo de extração de emoções.
- Um conjunto de dados de treinamento contendo as obras de Bach para o algoritmo de conclusão da melodia.
- Um conjunto de músicas que servem como modelos para modular emoções.
Agora você precisa coletar os conjuntos de dados. Como será mostrado no artigo, a quantidade de trabalho necessária para isso varia significativamente, dependendo do conjunto de dados selecionado.
Captura de imagem
Esse projeto exigia um conjunto de imagens que evocavam sete emoções diferentes: felicidade, tristeza, medo, ansiedade, reverência, determinação, raiva. Para a coleta de imagens, foi decidido usar o Flickr, um site popular de compartilhamento de fotos, devido ao seu tamanho e licenciamento pelo Creative Commons *.
A pesquisa manual de 7000 imagens no Flickr é uma tarefa assustadora. Felizmente, o Flickr possui uma
API que fornece um conjunto de métodos que facilitam a troca de dados com o Flickr em uma linguagem de programação. No entanto, antes de usar a API para coletar imagens, é importante saber o que procurar para evocar emoções relevantes. Para determinar a lista de termos de pesquisa, uma tarefa foi usada na plataforma
Amazon Mechanical Turk *.
API do Flickr
Para usar os métodos oferecidos pela API do Flickr, você precisará criar uma conta do Flickr e solicitar uma chave da API. Para fazer isso, você deve ter uma conta no Flickr ou no Yahoo! *. Em seguida, você precisa seguir
este link e obter a chave.
Captura de tela de www.flickr.com/services/apps/create/applyO processo de processamento de um aplicativo para uma chave não comercial é bastante simples. Inclui uma descrição do uso pretendido e a aceitação dos termos de uso. A chave da API é uma medida de segurança e é usada para evitar o uso indevido da API. Nos métodos fornecidos pela API, é um parâmetro necessário.
Depois de receber a chave da API, você pode baixar e instalar o kit de ferramentas da API para uma das linguagens de programação do
App Garden . Este projeto usa
a API PythonI Flickr da Beej , que pode ser usada com a linguagem Python 3. Você deve seguir
o guia de instalação da API Flickr.
O código usado para baixar as imagens é mostrado abaixo. Basicamente, a função de passeio da API é usada aqui, que procura uma imagem por tag. As tags são armazenadas em um arquivo .txt e são listadas uma por linha. Se uma imagem for encontrada, seu URL será criado a partir do modelo no
farm {id da fazenda} .staticflickr.com / {server-id} / {id} _ {secret} .jpg , em que o conteúdo dos chavetas é substituído pelos atributos da imagem. Em seguida, as 30 principais imagens de cada tag (classificadas por relevância) são extraídas e organizadas em pastas, dependendo da emoção e das condições de pesquisa.
import flickrapi import urllib.request import os project_path = '/path/to/your/project' photos_per_tag = 30 filenames = ['Awe.txt', 'Happiness.txt', 'Fear.txt', 'Determination.txt', 'Anxiety.txt', 'Tranquility.txt', 'Sadness.txt'] def download_files(flickr, t, category, num_photos):
Para usar esse código, você precisa clonar o repositório usando o link do
GitHub . Depois disso, siga as instruções no arquivo LEIA-ME. Você deve substituir os parâmetros api_key e api_secret pelas chaves de API recebidas no Flickr. Como mencionado acima, esse script funciona apenas no Python 3.
Após a execução do programa, a pasta fica assim:

Um conjunto de dados dos resultados da pesquisa no Flickr.No total, foram coletadas cerca de 8800 imagens. Foram recebidas mais imagens do que o necessário, pois planejávamos descartar algumas das imagens de baixa qualidade que não podem ser usadas. O próximo passo foi procurar essas imagens.
Seleção de imagem
A qualidade das imagens coletadas foi diferente. Algumas condições de pesquisa, por exemplo, flores (mostradas na figura) forneceram imagens utilizáveis de alta qualidade. No entanto, condições de pesquisa menos específicas geralmente produzem imagens completamente inutilizáveis. Por exemplo, uma imagem de um bolo com uma mulher maravilha * foi obtida a partir da etiqueta milagrosa (devido à emoção de reverência) e uma imagem de repolho da Ambitious Farms foi encontrada a partir da etiqueta ambiciosa (devido à emoção de determinação).
Imagens inadequadas.Qualquer pessoa que planeja usar a API do Flickr para pesquisar imagens é incentivada a usar substantivos específicos como termos de pesquisa. As imagens encontradas a partir deles são muito melhores do que usar adjetivos ou substantivos abstratos. Por exemplo, ao pesquisar imagens de admiração, você deve usar termos de pesquisa como o oceano ou o Grand Canyon, em vez de admiração ou milagre.
Após visualizar as imagens, a equipe concluiu que mais de 40% das imagens eram inutilizáveis. Como resultado, a abordagem para selecionar um conjunto de dados foi revisada. Depois de discutir várias possibilidades, como limitar o conjunto de imagens a rostos com emoções relevantes, decidiu-se usar imagens de bancos de dados existentes que são comumente usados em pesquisas psicológicas (Geneva Affective PicturE Database (
GAPED ), Open Affective Standardized Image Set (
OASIS ) e Image Estímulos para Elicitação das Emoções (
ISEE )).
Apesar de as imagens nos bancos de dados existentes serem menos diversas do que poderiam ser no novo conjunto de dados, a escolha foi feita em favor dos bancos de dados existentes devido à maior qualidade da imagem e à disponibilidade de informações sobre os parâmetros. Ter informações sobre os parâmetros é uma enorme vantagem, pois elimina a necessidade de anotação usando o Amazon Mechanical Turk, o que reduz significativamente o custo.
Fonte de dados
O processo de coleta de dados para o novo conjunto de dados foi muito mais simples. Em particular, as etapas não eram mais necessárias com o Amazon Mechanical Turk e a API do Flickr. Os conjuntos de dados GAPED e OASIS (incluindo marcação de parâmetro) estão disponíveis para download na Internet. O conjunto de dados ISEE ficou disponível após um email para o autor solicitando acesso. Se as instruções para o download dos conjuntos de dados não forem bem compreendidas, provavelmente uma pesquisa no Google * ajudará a encontrar contatos de autores que podem solicitar diretamente o acesso aos conjuntos de dados.
Dois conjuntos de dados foram criados para este projeto. O primeiro usou a API do Flickr para carregar imagens usando tags de emoção, o segundo foi uma compilação de bancos de dados existentes usados em pesquisas psicológicas. Cada um desses conjuntos de dados tem seus prós e contras; no entanto, o segundo foi escolhido para o projeto - graças a vantagens como qualidade de imagem, presença de parâmetros e custo rotulados.
O método usado para coletar dados diretamente depende de quais dados são necessários. No entanto, os processos e métodos descritos neste artigo provavelmente serão úteis para muitos projetos.
Agora que os conjuntos de dados foram criados, o projeto está pronto para executar as seguintes etapas - pesquisa e processamento preliminar de dados.
Exploração de dados de imagem
Como a qualidade de uma parte significativa das imagens coletadas com o Flickr era baixa, decidiu-se usar imagens de bancos de dados de imagens existentes. Em particular, foram coletadas imagens de três bancos de dados para pesquisa psicológica. Cada imagem inclui informações de classificação para (des) agradabilidade e intensidade, coletadas de vários artistas. 1986 imagens dessas bases de dados foram divididas em 4 categorias. Essas categorias cobriram 87% das imagens e incluíram 34% dos animais, 28% das pessoas, 13% das cenas e 12% dos objetos. Os 13% restantes foram classificados como diversos.
Animais
Exemplos de imagens da categoria "Animais"Cerca de um terço das imagens contém animais - isolados ou em conjunto com outros animais, como mostrado acima. Nesses exemplos, movendo-se da esquerda para a direita, a classificação de agradabilidade aumenta. Imagens desagradáveis de hienas comendo presas e baratas podem causar uma reação na forma de emoções como: medo, tristeza e nojo.
As imagens à direita - um gato adormecido, um cachorro sorridente - pelo contrário, podem causar simpatia e felicidade.
Pessoas
Amostras de imagens da categoria PessoasA categoria Pessoas de imagens inclui imagens de indivíduos e grupos de pessoas, enquanto imagens de grupos de pessoas geralmente contêm mais informações contextuais. Por exemplo, a imagem da banda parece ter sido filmada no cenário de um estádio cheio de fãs, sugerindo que a imagem seja filmada em uma performance durante esportes. A imagem de uma mulher irritada, pelo contrário, é privada de contexto - o espectador não tem a oportunidade de descobrir ou adivinhar o motivo de sua raiva. Note-se que nem todas as imagens com muitas pessoas ou grupos têm informações adicionais.
Por exemplo, a imagem de homens deitados em uma linha no chão, com feridas visíveis e roupas ensangüentadas, não dá uma idéia do que está acontecendo. No entanto, mesmo com essa falta de informação, imagens com pessoas causam várias reações emocionais.
Cenas
A categoria “Cenas” de um conjunto de imagens inclui uma variedade de cenas - de estruturas e objetos feitos pelo homem a cenas da natureza e até de espaço.
Imagens de exemplo da categoria CenasOs objetos
Amostras de imagens da categoria ObjetosA categoria "Objetos" do conjunto de imagens inclui imagens focadas em um objeto, como mostrado nos exemplos acima. Não há contexto situacional nessas imagens, especialmente quando comparado com outras categorias no conjunto de imagens.
Diversos
Exemplos de imagens da categoria DiversosFinalmente, um subconjunto de imagens permaneceu no conjunto que não pôde ser atribuído a nenhuma das quatro categorias. Freqüentemente, como mostrado nos exemplos, essas imagens eram cenas com vários objetos, mas sem o contexto típico para imagens da categoria Cenas. Como regra, esse tipo de imagem continha uma classificação neutra - não eram agradáveis nem desagradáveis.
Categorias de emoção para o banco de dados de imagens
Para identificar as categorias de emoções do banco de dados de imagens, contamos com classificações normativas de significância subjetiva que acompanham cada imagem no Geneva Affective PicturE Database (GAPED) e no Open Affective Standardized Image Set (OASIS). Como o GAPED usou a escala Likert de 0 a 100 e o OASIS usou a escala Likert de 1 a 7, foi aplicada uma transformação linear que levou todas as classificações a uma escala contínua de 0 a 100. Em seguida, foram investigadas duas regras em potencial para categorizar emoções.
Primeiro, é intuitivamente desejável classificar as imagens de acordo com o nível de agradabilidade, seguido pela divisão em três partes de acordo com a escala de classificação, para que imagens com classificações de 0 a 33,33 representem a categoria negativa, com classificações de 33,33 a 66,67, neutras e com classificações 66,67–100 - uma categoria positiva. Para implementar essa regra de dividir em três categorias, o código Python foi usado:
import os import shutil import csv def organizeFolderGAPED(original, pos, neg, neut):
Essa abordagem nos permitiu dividir o banco de dados em categorias: 417 imagens negativas, 774 neutras e 442 positivas. Nessa abordagem, a divisão em três categorias em proporções iguais de imagens desagradáveis, cuja classificação não atingiu o valor limite, foi classificada como neutra; por exemplo, imagens de um cadáver, uma criança chorando, cemitérios foram classificados como neutros. Embora essas imagens fossem menos desagradáveis do que outras na categoria negativa, surgiram dúvidas sobre sua neutralidade.
Portanto, decidiu-se aplicar uma regra de categorização otimizada com base na distribuição normal dos dados, além de melhorar a separação de parâmetros em categorias emocionais. Os valores de 0 a 39 foram atribuídos à categoria negativa, 40 a 60 à categoria neutra e 61 a 100 à categoria positiva. Para implementar esta regra, o código Python foi usado:
import os import shutil import csv def organizeFolderGAPED(original, pos, neg, neut):
Com essa regra de categorização, 40-60–40 567 imagens positivas foram classificadas como mais agradáveis que 502 neutras e 564 imagens negativas foram classificadas como menos agradáveis que neutras. Assim, o valor alvo das categorias emocionais foi mantido e a distribuição das imagens por categoria foi melhorada. A figura abaixo ilustra o nível de prazer associado a cada uma das categorias. Os diferentes comprimentos dos bigodes no diagrama de dispersão indicam em qual categoria emocional (positiva ou negativa) há uma faixa maior de classificações em comparação à categoria neutra.
Classificações médias de prazer para cada uma das categorias emocionaisConcluímos que essa regra de categorização é suficiente para classificar imagens com base em emoções. Em relação às categorias de parâmetros do banco de dados de imagens, os tipos de imagens que representam cada uma das categorias emocionais são mostrados abaixo. Note-se que cada categoria de parâmetros (animais, pessoas, cenas, objetos, diversos) é representada em cada uma das categorias emocionais.
Categoria emocional 1: NegativoCategoria emocional 2: NeutroCategoria Emocional 3: PositivaPara resumir. Dividimos o banco de dados de imagens em categorias emocionais neutras, negativas e positivas, usando classificações de significância normativa no intervalo de 0 a 100, atribuindo 0-39 a negativo, 40-60 a neutro e 61 a 100 a positivo. As imagens foram distribuídas adequadamente nessas categorias emocionais. Finalmente, cada categoria emocional incluía imagens de animais, pessoas, cenas, objetos e muito mais.