• João Ataide

Gerando amostrar para modelos de Deep learning no ArcGIS Pro

Atualizado: 20 de jun.


 

Boa parte do pessoal que está começando com data science, não sabe como aquelas amostras de imagens surgem todas bonitinhas e prontas para criar os seus modelos de deep learning e depois colocar em produção.





Neste artigo vou mostrar a vocês uma ferramenta do ArcGIS Pro que nos auxiliará a extrair amostras de imagens, marcações e augmentation, e ainda deixar no formato correto para cada problema e arquitetura de rede neural que formos trabalhar.





Mas antes, preciso explicar o que é o ArcGIS Pro. Essa ferramenta desenvolvida pela Esri, é uma evolução do ArcMap e tinha basicamente a funcionalidade realizar análises espaciais, criar mapas.


Hoje, no entanto, existe uma infinidade de outras ferramentas que compõem uma plataforma onde pode-se realizar quase todo tipo de trabalho, seja na criação de algoritmos de deep learning para detecção de objetos, classificação tanto de imagens quanto de vídeos.


Fluxo do processo

Basicamente o fluxo de processo para realizar a extração destas amostras, segue o seguinte fluxo:



Primeiro realiza-se a escolha das imagens, em relação à significância dessas para o processo de treinamento, como, por exemplo, quando você esta trabalhando com imagens de satélite e as imagens possuem muitas nuvens.


Após isso começa-se de fato a exportação das amostras, inicialmente como qualquer trabalho de visão computacional é importantíssimo os Processamento Digitais de Imagens, realizar filtros convulsionais, filtros de ruído, composições de bandas, fusão e tudo mais que precisa ser feito, mas vamos deixar esse assunto para um próximo artigo.


Logico que você pode fazer um filtro de PDI que nos ajude a enxergar determinada informação, realizar a criação de máscaras e automatizar esse processo, mas a depender do problema quando são coisa bem específicas o processo de marcação será feito manualmente e demandará uma equipe exclusiva para isso e no geral pode-se entender que será coisa de 30% de todo tempo usado para criar um modelo.




Na interface do ArcGIS Pro isso é simples, é somente criar um arquivo vetorial poligonal, como uma Feature Class ou um shape file, por hora vou só comentar que esses dois são formatos de arquivos espaciais, em outro artigo explico melhor sobre eles.





E estabelecer dentro desse arquivo os atributos de Class e Value e você pode já colocar como Default, assim ajudando a acelerar o trabalho de marcação, claro quando o trabalho que está fazendo só tem uma classe a ser detectada.



São assim que ficam as imagens marcadas no final.





Agora para exportar os dados é simples. Usando uma função existente no ArcGIS Pro é somente escolher a imagem de input e o diretório onde sua coleção irá ser exportada.





Além disso, passamos as marcações que acabei de mostrar assim como Class Value Field que será aquele atributo Default. Você também pode colocar um raio para Buffer das marcações que mostrei, isso é válido quando estamos fazendo marcações de Pontos e Linhas.




Então agora podemos realizar o Augmentation das imagens, processo de fazer o aumento das amostras e variedade das mesma, geralmente temos 5 atributos que podemos alterar Size, Stride e Rotation.







  • Size X and Y: tamanho em pixels das imagens.

  • Stride X and Y: refere-se a uma sobreposição em pixels entre as imagens nas dimensões X e Y.

  • Rotation Angle: Uma função que basicamente rotacional as imagens em um passo com o valor do ângulo.






Uma das vantagens dessa ferramenta é poder exportar as amostras de maneira mais adequada para o tipo de modelo que está sendo desenvolvido, podendo exportar no formato para RCNN. Para modelos de Classified Tiles como UNET e até mesmo só exportar as Tiles caso o modelo que você esteja desenvolvendo não seja específico.



No final podemos também ter uma visão de relatório da execução da extração, mostrando o balanceamento, tamanho das imagens e tudo mais que você vai precisar para fazer um bom treinamento.



É lógico que tudo isso pode ser automatizado com somente duas linhas de código, menos claro, a marcação dos objetos.



# Importar biblioteca do Arcpy

import arcpy  
imagem = "imagem.tif"
diretorio = r"D:\amostras"

# Exportar Traning Data for DeepLearning

arcpy.ia.ExportTrainingDataForDeepLearning(imagem, diretorio ,"features", "TIFF", 256, 256, 128, 128, "ALL_TILES", "RCNN_Masks", 0, "Value", 0, None, 90, "PIXEL_SPACE", "PROCESS_AS_MOSAICKED_IMAGE", "NO_BLACKEN", "FIXED_SIZE", None)