Uso de deep learning no agrupamento de imagens de satélite
O objetivo do artigo é explicar uma técnica de agrupamento de imagens e trazer um exemplo com imagens aéreas do Google Maps.
Escrito por Adriano Moala.
Adotar apenas a cor pode não ser suficiente para agrupar objetos. Um limão verde ficaria próximo de uma maçã verde? Um morango vermelho ficaria próximo de uma maçã vermelha? Por isso, precisamos de mais informações como contornos, texturas ou como as cores se distribuem.
Extração de atributos com Deep Learning
Quando temos dados tabulares já existem algoritmos bem conhecidos para agrupamentos. E com imagens? Como é possível extrair informações para compará-las? Qualquer abordagem muito simplista errará feio. Uma abordagem usada inclusive por e-commerces para sugerir, por exemplo, calçados ou roupas semelhantes utiliza Deep Learning. Esse método permite que diversos atributos (ou features) das imagens sejam extraídos e comparados.
A transferência de aprendizagem, ou transfer learning, utiliza redes neurais já treinadas em um grande conjunto de imagens como o ImageNet que contém 1.000 categorias de classificações (http://www.image-net.org/).
Para o caso de clusterização, a MobileNetV2 extrai mais informações que a VGG16 conforme tabela a seguir. Além disso, vale notar que a rede inteira da VGG16 contém 123 milhões de parâmetros, enquanto a MobileNetV2 tem apenas 3,5 milhões. É uma rede extremamente otimizada que atinge a mesma acurácia no Top-1 e Top-5 em relação à VGG16.
O esboço genérico dessas redes pré-treinada tem a forma apresentada na figura abaixo. Existe uma sequência de convoluções para extrair o máximo de informações sobre contornos, texturas e cores. A última convolução está destacada em verde, depois todas as células desse tensor são conectadas e ponderadas até as células de respostas. Por exemplo, diversos tipos de caminhões terão seus pesos direcionados para ativar a “célula caminhão”.
Mas, existem diferenças entre os caminhões citados. Por isso, a ideia é desprezar essa camada que agrega objetos similares na mesma categoria. Desta forma, ficamos apenas com as informações da última convolução representada em verde (feature maps). Depois, todo o tensor é transformado em um grande vetor de uma linha e de diversas colunas (flatten feature maps). Esse vetor conterá características de cada imagem que for aplicada na rede.
No caso da clássica rede neural VGG16, o feature maps tem 512 mapas de dimensão 7x7 totalizando 25.088 features. Ou seja, será um vetor de uma linha com 25.088 colunas. Já no caso da MobileNetV2 existem 1.280 mapas 7x7, totalizando 62.780 features. Com essas informações já é possível aplicar qualquer algoritmo de clusterização.
Aplicação
Neste exemplo, o interesse é agrupar regiões similares usando imagens aéreas obtidas com a API do Google Maps. Para isso, foram extraídas 5 mil imagens aleatórias dentro do polígono que forma a região Metropolitana de São Paulo.
A composição a seguir mostra 10 imagens aéreas, onde a imagem 7 representa uma área de mata verde (depende do contraste da sua tela).
A primeira tarefa é redimensionar a imagem para o input da rede, que é de 224x224. Embora o dado seja não estruturado, a matemática é extremamente bem estruturada. Ao passar a imagem pela MobileNetV2 ficamos com um flatten feature maps de 62.780 colunas. O processo é repetido para cada imagem, formando uma matriz de 5.000 linhas e 62.780 colunas. Feito isso, podemos aplicar um algoritmo de machine learning para agrupar as imagens, cujo resultado pode ser visto a seguir.
O mapa já exibe algumas características geográficas, como extremos da cidade (costumam ter mais áreas verdes) e até áreas próximas a rodovias. Como todo agrupamento, precisamos checar a similaridade das imagens dentro dos grupos e as diferenças entre eles. Para isso, fiz uma amostragem de 32 imagens dentro de 4 clusters para uma avaliação visual.
O cluster 2 é caracterizado pela forte presença de galpões.
O cluster 4 em geral apresenta áreas próximas de vias expressas, o aeroporto não deixa de ser uma, =).
O cluster 7 representa grandes áreas verdes.
Já o cluster 9 tem um grande número de construções próximas, com alta densidade.
Considerações Finais
Neste artigo falamos sobre como podemos extrair informações de imagens para agrupá-las com um algoritmo não-supervisionado. No exemplo apresentado, o uso de deep learning para caracterização das vistas áreas trouxe um resultado consistente na análise visual das imagens que faziam parte do cluster. Certamente, quanto melhor a rede que você usar como backbone para extração de features, melhores serão os resultados. O único ponto de equilíbrio a ser considerado será a velocidade de processamento.
Agradecimentos
Revisão: Fernanda Ribeiro, Comunicação Institucional