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.

Adriano Moala
Porto
5 min readDec 7, 2020

--

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.

Fonte: Designed by lifeforstock / Freepik

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.

Fonte: Photo by Syed Hussaini on Unsplash

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.

Fonte: Keras

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”.

Rede Pré-Treinada de Ponta a Ponta / Próprio Autor

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.

Rede Pré-Treinada sem a camada Densa / Próprio Autor

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.

Extração das camadas finais da MobileNetV2 / Próprio Autor

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.

Google Maps + Javascript / Próprio Autor

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).

API do Google Maps / Próprio Autor

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.

Alocação de todas as imagens aéreas / Próprio Autor

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.

Cluster 2 / Próprio Autor

O cluster 4 em geral apresenta áreas próximas de vias expressas, o aeroporto não deixa de ser uma, =).

Cluster 4 / Próprio Autor

O cluster 7 representa grandes áreas verdes.

Cluster 7 / Próprio Autor

Já o cluster 9 tem um grande número de construções próximas, com alta densidade.

Cluster 9 / Próprio Autor

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

--

--