Utilizando MapReduce no pré-processamento de grandes

Propaganda
Utilizando MapReduce no pré-processamento de grandes
quantidades de imagens para problemas de classificação
Luiz Carlos A. M. Cavalcanti1
1
Instituto de Computação – Universidade Federal do Amazonas (UFAM)
[email protected]
Abstract. This work presents technics for the pre-processing of images for machine learning (specially classification) problems using the MapReduce framework. Several cases are shown, with the intention to serve as a reference to
very common issues found in those kinds of problems. Finally, experimentation
results are presented, all using Apache Hadoop, an open-source implementation
of the MapReduce framework.
Resumo. Este trabalho apresenta técnicas para pré-processamento de imagens
para algoritmos de aprendizagem de máquina (majoritariamente classificação)
utilizando o framework MapReduce. Diversos casos são apresentados, com o
intuito de fornecer uma referência a problemas normalmente enfrentados nesse
tipo de abordagem. Por fim, resultados de diversos experimentos são apresentados, todos utilizando Apache Hadoop, uma implementação de código-livre do
framework MapReduce.
1. Introdução
Os problemas de processamento de imagens podem ser classificados como: locais, nãolocais, iterativos e não-iterativos. Problemas locais envolvem apenas uma imagem, ou
seja, não há necessidade de comparação ou utilização de outras imagens. Problemas nãolocais necessitam de dados de outras imagens além da que está em processamento para
serem resolvidos. Deste grupo de problemas, podemos citar a busca por imagens similares como o problema mais recorrente. Problemas iterativos exigem que refinamentos ou
transformações sucessivas sejam realizadas a fim de obter o resultado desejado, enquanto
problemas não-iterativos podem ser resolvidos em apenas um passo.
Métodos de extração de caracterı́sticas de imagens para posterior classificação
costumam ser custosos, tanto em tempo quanto em recursos computacionais. Quando o
volume de dados é maciço, é importante reduzir a quantidade de imagens similares ou
que não possuem importância para o problema de classificação. Também é importante
procurar maneiras mais rápidas de extrair caracterı́sticas dessas imagens.
Para facilitar o processamento distribuı́do de grandes quantidades de dados que
extrapolam a memória de um único computador, foi criado o framework MapReduce
[Dean and Ghemawat 2008]. MapReduce é um modelo de programação para processamento e geração de grandes conjuntos de dados. A computação a ser realizada é exprimida através de duas funções: Map e Reduce. Uma vez implementadas, as funções podem
ser executadas em um cluster de máquinas que executarão, separadamente, as etapas do
processament.
Quando se trata de imagens vindas da internet ou obtidas a partir de vı́deos, o
volume de imagens repetitivas é potencialmente grande. Uma técnica ou procedimento
que vise a redução da quantidade de imagens a ser classificadas, através da identificação
de imagens duplicadas ou muito parecidas (quadros subjacentes de vı́deos, por exemplo),
tem grande valor, visto que minimiza o tempo necessário para classificação dessas imagens. Um solução para o problema que seja paralelizável e que possa ser executada em
um ambiente distribuı́do, se torna muito interessante. Utilizar uma ferramenta como o
Hadoop, que abstrai os complicados detalhes técnicos de infra-estrutura e permite que
algoritmos de MapReduce sejam executados com relativa facilidade, de forma paralela,
minimiza o tempo gasto no processo como um todo.
Este trabalho busca apresentar propostas para execução paralela de problemas comuns na disciplina de processamento de imagens, em especial problemas locais e nãolocais, majoritariamente não-iterativos, tendo como finalidade a redução de carga e processamento no processo de classificação de imagens com alto potencial de repetição.
2. Trabalhos relacionados
Embora a quantidade de publicações sobre MapReduce e processamento distribuı́do de
imagens seja enorme, poucos trabalhos se propuseram, até então, a unir os dois assuntos.
Em [Yamamoto and Kaneko 2012] são apresentadas técnicas para processamento
de uma base de dados de vı́deos utilizando o framework MapReduce. A abordagem tomada é a divisão de cada quadro dos vı́deos em sub-imagens que são, por sua vez, processadas em paralelo. Diversos experimentos são feitos para determinar o número ótimo
de sub-imagens por quadro. Por fim, o trabalho apresenta os resultados de um experimento comparativo entre o processamento dos vı́deos utilizando uma abordagem tradicional standalone e uma abordagem de processamento distribuı́do utilizando MapReduce
em uma configuração pseudo-distribuı́da (um nó de processamento apenas).
Ainda na linha de processamento de grandes quantidades de vı́deos de forma distribuı́da, vale ressaltar a contribuição de [Pereira et al. 2010], que utiliza uma estratégia
de divisão e união (split & merge) para processar vı́deos com bom desempenho utilizando
o framework MapReduce.
Em [Potisepp 2013] são apresentadas técnicas para o processamento distribuı́do de
duas coleções: uma com centenas de milhares de imagens, em um total de 256 Gigabytes
de arquivos, outra com poucas imagens de cerca de 7 Gigapixels. O trabalho apresentado
aqui é fortemente influenciado por essa publicação, pois ela propõe soluções simples para
o problema de processamento local não-iterativo em uma grande coleção de imagens,
bem como estratégias para o processamento de imagens de grandes dimensões. Ambos
problemas apresentados por essas duas diferentes coleções são abordados mais a frente,
neste trabalho.
Os
trabalhos
de
[Pass et al. 1997],
[Pass and Zabih 1999]
e
[Huttenlocher et al. 1993] contém importantes contribuições nas técnicas para
comparações de imagens utilizadas nesse trabalho, muito embora não tenham sido
diretamente aproveitadas.
3. Problemas propostos
As seções a seguir apresentam alguns do problemas ou tarefas mais comuns ao préprocessamento de imagens para fins de classificação das mesma.
3.1. Extração de caracterı́sticas
Um dos importantes passos na classificação de imagens é a extração de suas caracterı́sticas. Diversos tipos de técnicas de aprendizagem e classificação diferentes exigem
que as mais diversas caracterı́sticas sejam extraı́das das imagens em questão. Para este
trabalho foram escolhidas as seguintes caracterı́sticas:
• Histograma colorido
• Histograma em tons de cinza
• Cor média
Dea cordo com [Gonzalez and Woods 2002], essas caracterı́sticas podem ser extraı́das através de processamento local não-iterativo. Esse tipo de problema é ideal para
a topologia MapReduce, pois não precisamos nos preocupar com a distribuição das imagens visto que não estamos analisando o contexto das imagens, nem seu agrupamento em
fase posterior.
A chave gerada pelo algoritmo Map pode ser simplesmente o nome do arquivo
original, e seus valores, o conjunto de caracterı́sticas extraı́dos. O algoritmo Reduce geralmente não faz nenhum tipo de processamento, apenas replicando cada par chave/valor
na saı́da final do processo (figura 1).
Figura 1. Extração de caracterı́sticas usando MapReduce
Ainda usando a mesma técnica, pode-se utilizar o MapReduce para efetuar
transformações em imagens de forma distribuı́da. Dentre os casos descritos em literatura, podemos destacar:
• Esqueletização [Yamamoto and Kaneko 2012]
• Fragmentação de imagens [Potisepp 2013]
• Suavização [Potisepp 2013]
3.2. Processamento de grandes imagens
Alguns domı́nios especı́ficos como cartografia, sensoriamento remoto, biologia e medicina apresentam desafios ao processamento de imagens no que tange o tamanho dos objetos a serem processados. Alguns microscópios eletrônicos, por exemplo, produzem imagens de até 6,9 Gigapixels [Potisepp 2013], o que torna seu armazenamento em memória
para processamento muito caro ou inviável.
Quando a técnica aplicada permite, devemos dividir essas imagens em blocos menores, processá-los separadamente e por fim, juntá-los em um único arquivo se necessário.
O problema em se dividir uma imagem em sub-imagens para processamento não-local e
iterativo apresenta seus próprios desafios que não se estão no escopo deste trabalho, são
abordados por outros autores ([Wiley et al. 2011], [Yang et al. 2009] e [Almeer 2012]).
Neste trabalho, apenas experimentamos com a transformação de imagens muito
grandes em uma versão em tons de cinza. Essa simplificação nos permite separar a imagem em sub-imagens, processar os pedaços individualmente e posteriormente uni-los,
sem nos preocuparmos com iterações e contexto não-local de cada sub-imagem.
O principal cuidado que se deve ter ao subdividir uma imagem grande em subimagens é encontrar o tamanho certo para a subdivisão. Deve-se levar em conta o tamanho
que um bloco ocupa em memória para que, ao mesmo tempo, a imagem caiba em um
único bloco do sistema de arquivos distribuı́do (DFS) do framework MapReduce e que
possa ser reduzida a quantidade de leituras/escritas em disco.
Dividir em a grande imagem em sub-imagens pequenas demais garante que cada
imagem caiba um único bloco do DFS, mas aumenta bastante a quantidade de leituras em
disco necessárias pelos algoritmos de Map e Reduce. Dividir em sub-imagens grandes
demais pode fazer com que uma imagem extrapole o limite de seu bloco no DFS, fazendo
com que mais de um bloco tenha que ser transmitido para os nós de processamento,
prejudicando o desempenho de leitura/escrita tanto no DFS quanto na infra-estrutura de
comunicação entre os nós. O desafio está em encontrar o tamanho ideal das sub-imagens.
Como pode ser observado na figura 2, a modelagem do processo MapReduce é
bastante simplificada.
Figura 2. Processamento de grandes imagens usando MapReduce
3.3. Busca por imagens similares
Um dos problemas em se processar imagens vindas de uma coleção de vı́deos é a grande
quantidade de imagens repetidas, ou excessivamente similares. O objetivo é diminuir a
quantidade de imagens a serem processadas posteriormente.
Comparar imagens tem um custo computacional alto, visto que é necessário na
implementação tradicional, realizar comparação de cada imagem com todas as outras. O
custo assintótico desta operação é de ordem O(n2 ). Uma abordagem MapReduce pode
ser utilizada para reduzir drasticamente o número de comparações.
Imagens demasiadamente similares são sobreposições, cópias exatas, a mesma
imagem em um formato diferente ou com diferentes efeitos de pós-processamento aplicados. Imagens demasiadamente opostas são normalmente negativos.
Em um primeiro momento é preciso escolher uma imagem externa a coleção, que
será chamada de imagem pivô (pImg). Esta imagem está presente em todos os nós de
processamento e é a partir dela que será calculado o ı́ndice preliminar de similaridade
de cada imagem (iSim). Ou seja, ao invés de realizarmos um cálculo de ı́ndice entre
cada um dos pares de imagens possı́veis de toda a coleção, o Map consiste em realizar
o processamento local entre a imagem em questão e a imagem pivô. Esse procedimento
evita com que tenhamos que ter todas as imagens disponı́veis em todos os nós. O ı́ndice
de similaridade preliminar obtido para cada uma das imagens da coleção será utilizado
como chave para o registro de sua respectiva imagem.
O cálculo de similaridade entre duas imagens foi baseado na implementação do
software GQView ([GQview ]). O processo consiste em dividir cada imagem em 1024
blocos (32x32 blocos), calcular a cor RGB média de cada bloco e gerar uma assinatura
da imagem, baseada nessas informações. O resultado dessa etapa é uma assinatura da
imagem em questão, representada por 3 vetores com 1024 posições cada. A última etapa
é o cálculo do ı́ndice de similaridade, realizado através da equação 1, descrita abaixo. O
valor resultante varia de 0 (imagens completamente opostas) a 1 (imagens praticamente
iguais).
iSim = 1 −
|r[img1] − r[img2]| + |b[img1] − b[img2]| + |g[img1] − g[img2]|
255 × 1024 × 3
(1)
Uma vez calculado o ı́ndice preliminar de similaridade entre a imagem em questão
e a imagem pivô, o algoritmo de Map determina quão preciso será esse ı́ndice que representará a chave da imagem no processo de MapReduce. Isso é feito regulando a precisão
do número de ponto flutuante resultado do algoritmo descrito anteriormente.
Durante o Reduce, todas as imagens que possuı́rem uma mesma chave serão processadas em conjunto. Neste momento realizamos o cálculo de similaridade tradicional
em que todas as imagens são comparadas entre si. Embora o processo seja custoso, a
coleção agora consiste apenas das imagens com mesmo ı́ndice aproximado de similaridade, não mais de todas as imagens do problema. Após o cálculo de cada par de imagens,
o algoritmo de Reduce determina se as duas imagens em questão têm ı́ndice de similaridade final maior que o limiar definido pelo usuário. Em caso positivo, uma das imagens é
descartada da coleção.
Figura 3. Busca de imagens similares usando MapReduce
4. Experimentos
Para os experimentos, foi utilizada o framework Apache Hadoop, versão 1.2.1 em modo
pseudo-distribuı́do, ou seja, apenas um nó de processamento foi disponibilizado. O equipamento utilizado nos experimentos encontra-se descrito na tabela 1.
Processador
Intel Core i5 2.4 GHz
Memória RAM
8 GB
Disco Rı́gido
256 GB SSD
Sistema Operacional Mac OS 10.9.1
Tabela 1. Especificação técnica do equipamento utilizado nos experimentos
4.1. Extração de caracterı́sticas
Algumas coleções de imagens foram utilizadas nos experimentos de extração de caracterı́sticas. A quantidade de imagens em cada experimento estão descritas na tabela 2.
Número de Imagens
10
100
1.000
10.000
210.380
Tamanho da colecão Tempo de execução (em s)
256 KB
16
2,5 MB
29
24,8 MB
147
253 MB
1.003
5,63 GB
14.478
Tabela 2. Experimentos realizados em extração de caracterı́sticas de imagens
O desempenho do algoritmo implementado para extração de caracterı́sticas de
imagens obteve um bom desempenho, e cresceu de forma quase linear à medida que o
número de imagens crescia (figura 4).
Figura 4. Desempenho do algoritmo de extração de caracterı́sticas
4.2. Processamento de grandes imagens
Para o experimento de processamento de grandes imagens, um conjunto de imagens de
tamanhos diferentes foram utilizados. Para cada iteração, diferentemente dos outros experimentos, apenas uma imagem foi utilizada. A tabela 3 descreve os resultados das
iterações.
Tamanho da Imagem
9372 × 9372 (14,7 MB)
9372 × 9372 (14,7 MB)
21600 × 21600 (421 MB)
21600 × 21600 (421 MB)
Sub-imagens
4
16
16
64
Tempo (em s)
23
25
1425
1389
Tabela 3. Experimentos realizados em processamento de grandes imagens
4.3. Busca por imagens similares
As coleções utilizadas no experimento de busca por imagens similares foram os mesmos
do experimento de extração de caracterı́sticas (seção 4.1). O resultado dos experimentos
estão descritos na tabela 4.
Número de Imagens
10
100
1.000
10.000
210.380
Tamanho da colecão Tempo de execução (em s)
256 KB
17
2,5 MB
26
24,8 MB
111
253 MB
768
5,63 GB
20.235
Tabela 4. Experimentos realizados em busca de imagens similares
O desempenho do algoritmo implementado para extração de caracterı́sticas de
imagens obteve um bom desempenho, e cresceu de forma quase linear à medida que o
número de imagens crescia (figura 5).
A figura 6 apresenta a distribuição de imagens por ı́ndice de similaridade no experimento com 210.380 imagens. O pior caso encontrado nessa iteração concentrou 3,419
imagens em uma única chave, o que representa cerca de 1,62% das imagens. Isso demonstra o ganho em número de comparações entre imagens, que seria quadrático em relação
ao número de imagens em uma abordagem tradicional.
Figura 5. Desempenho do algoritmo de busca por imagens similares
Figura 6. Distribuição de imagens por ı́ndice de similaridade
5. Conclusão
Este trabalho apresentou propostas de paralelização utilizando MapReduce para vários
problemas comuns no pré-processamento de imagens para algoritmos de aprendizado de
máquina. Foram abordadas topologias de MapReduce para processamento de grandes
imagens, extração de caracterı́sticas e busca por imagens similares. Ao final, experimentos foram realizados para cada uma das técnicas apresentadas, avaliando o desempenho
de cada um em diferentes cenários e coleções de dados.
É possı́vel perceber que podemos acelerar o pré-processamento de imagens com
fim de diminuir a carga dos algoritmos de aprendizagem de máquina, agilizando a
extração de caracterı́sticas, transformações e particionamento do problema.
6. Trabalhos futuros
Trabalhos futuros devem buscar solucionar os problemas em se executar métodos iterativos e não-locais em ambiente MapReduce. Também deve ser estudada a possibilidade de realizar as tarefas de aprendizagem de máquina, principalmente métodos para
classificação como kNN, K-Means e árvores de decisão utilizando o mesmo ambiente.
Outra oportunidade é apresentar um trabalho comparativo de desempenho entre
um ambiente MapReduce multi-nó e os experimentos apresentados neste trabalho, que
foram executados em apenas um nó de processamento.
Referências
Almeer, M. H. (2012). Cloud hadoop map reduce for remote sensing image analysis.
Journal of Emerging Trends in Computing and Information Sciences, 3(4):637–644.
Dean, J. and Ghemawat, S. (2008). Mapreduce: simplified data processing on large clusters. Communications of the ACM, 51(1):107–113.
Gonzalez, R. C. and Woods, R. E. (2002). Digital image processing. Prentice Hall.
GQview. http://fossies.org/linux/misc/gqview-2.1.5.tar.gz:a/gqview-2.1.5/src/similar.c.
gqview-2.1.5.
Huttenlocher, D. P., Klanderman, G. A., and Rucklidge, W. J. (1993). Comparing images using the hausdorff distance. Pattern Analysis and Machine Intelligence, IEEE
Transactions on, 15(9):850–863.
Pass, G. and Zabih, R. (1999). Comparing images using joint histograms. Multimedia
systems, 7(3):234–240.
Pass, G., Zabih, R., and Miller, J. (1997). Comparing images using color coherence
vectors. In Proceedings of the fourth ACM international conference on Multimedia,
pages 65–73. ACM.
Pereira, R., Azambuja, M., Breitman, K., and Endler, M. (2010). An architecture for
distributed high performance video processing in the cloud. In Cloud Computing
(CLOUD), 2010 IEEE 3rd International Conference on, pages 482–489. IEEE.
Potisepp, K. (2013). Large-scale image processing using mapreduce. Master’s thesis.
Wiley, K., Connolly, A., Gardner, J., Krughoff, S., Balazinska, M., Howe, B., Kwon, Y.,
and Bu, Y. (2011). Astronomy in the cloud: using mapreduce for image co-addition.
Astronomy, 123(901):366–380.
Yamamoto, M. and Kaneko, K. (2012). Parallel image database processing with mapreduce and performance evaluation in pseudo distributed mode. International Journal of
Electronic Commerce, 3(2):211–228.
Yang, Z., Kamata, S.-i., and Ahrary, A. (2009). Nir: Content based image retrieval on
cloud computing. In Intelligent Computing and Intelligent Systems, 2009. ICIS 2009.
IEEE International Conference on, volume 3, pages 556–559. IEEE.
Download