Software Engineering Institute
Para esse fim, a Unidade de Inovação em Defesa (DIU) lançou recentemente o xView 2018 Detection Challenge, que foi conduzido pelo Pentágono em parceria com a National Geospatial-Intelligence Agency, para buscar usos inovadores das técnicas de visão por computador para detectar com mais precisão imagens em imagens de satélite. Como descrito neste post do blog, trabalhei com uma equipe de pesquisadores no desafio xView que nos rendeu um quinto lugar. Esta atividade é nosso último esforço em usar o aprendizado de máquinas e inteligência artificial para auxiliar o governo federal nos esforços do HADR.
Deep Learning and Satellite Imagery
Scanning satellite images to detect images and buildings and other objects from space has become a priority for the government, but it is often a slow, careful careful process undertaken by analysts that also introduces the potential for human error. Mesmo com conjuntos de dados e classificações de alta resolução, os desafios podem surgir à medida que os analistas encontram problemas de armazenamento, largura de banda e memória.
O estado da arte para a visão por computador via satélite são as redes neurais computacionais, que têm sido eficazes no raciocínio sobre imagens de satélite. A minha primeira incursão neste campo foi com o Desafio Mapa Funcional do Mundo (FMOW) da IARPA. Em conjunto com o Laboratório de Física Aplicada da Universidade John Hopkins, IARPA criou um conjunto de dados de mais de 1 milhão de imagens de satélite multiespectral de locais na superfície da Terra de mais de 200 países. Cada imagem no conjunto de dados continha pelo menos um exemplo de uma instalação ou objeto terrestre que se encaixava em uma das 63 categorias (62 classes e 1 para falsa detecção) como “instalação militar”, “celeiro” ou “local de construção”
O nosso objetivo era ver se conseguíamos colocar um protótipo funcional em funcionamento com precisão razoável. Como descrito em um artigo sobre nosso trabalho, aplicamos várias abordagens de aprendizado profundo usando muitos sabores de redes neurais convolucionais:
Tivemos três abordagens principais para FMOW:
1) Usando uma rede neural convolucional profunda (CNN) (com uma arquitetura como DenseNet ou RetinaNet) pré-treinado em vários conjuntos de dados como um extrator de recursos de uso geral em conjunto com uma CNN rasa que aprendeu recursos específicos de imagens de satélite. Estas seriam combinadas usando camadas totalmente conectadas e, finalmente, produzir um vector de 63 softmax de comprimento.
2) Treinando um conjunto de classificadores binários “umvs-todos”
3) Ao “fazer batota” e usando dados de validação que continham falsas detecções, poderíamos treinar uma máquina vectorial de suporte (SVM) que aprendesse a diferenciar entre falsas detecções e dados “reais”, depois usar o método 1 apenas nos dados reais.
No final, o nosso primeiro método foi o mais bem sucedido e foi a arquitectura modelo que iterámos várias vezes para sintonizar para o desafio.
Construir fora do Mapa Funcional do Mundo
Construir fora do Mapa Funcional do Mundo (FMoW), o desafio xView aplica a visão por computador à crescente quantidade de imagens disponíveis a partir do espaço para que possamos compreender o mundo visual de novas formas e abordar uma série de aplicações importantes. Na busca de algoritmos para potencialmente automatizar a visão computacional de imagens de satélite, o xView Challenge fornece aos concorrentes um dos maiores conjuntos de dados de imagens de satélite disponíveis ao público e pede-lhes para
- duzir a resolução mínima para detecção
- aumentar a eficiência da aprendizagem
- aumentar a descoberta de mais classes de objectos
- aumentar a detecção de classes de grão fino
Além de mim, a Equipa xView Challenge incluiu o 2º Tenente Alex Fulton, aluno de pós-graduação do Instituto de Tecnologia da Força Aérea dos EUA e do Instituto de Redes de Informação da Universidade Carnegie Mellon; e Kaylene Stocking, aluno de graduação da Universidade de Pittsburgh.
O xView Challenge provou ser uma competição ideal para nosso trabalho no Centro de Tecnologia Emergente do SEI, que se concentra na identificação, demonstração, extensão e aplicação de novas tecnologias para atender às necessidades críticas do governo. Nós promovemos a conscientização e o conhecimento do governo sobre essas tecnologias emergentes e sua aplicação, além de moldar e alavancar a pesquisa acadêmica e industrial. O xView Challenge permitiu-nos explorar várias abordagens à visão computacional que tínhamos desejado validar.
O restante do post, que é extraído do relatório técnico que enviamos como parte de nossa participação no desafio, destaca trechos de nosso trabalho no xView Challenge.
Limpeza de dados
O conjunto de dados xView é grande – 1 milhão de imagens de objetos com 60 classes e uma resolução de 0,3 metros – e rotulado usando anotações de origem de multidões para delimitar caixas e classes. O papel que o DIUx incluiu para acompanhar o lançamento do conjunto de dados, xView: Objects in Context in Overhead Imagery, discute que as técnicas de recolha por natureza aceitaram um nível de ruído nos dados.
Na nossa análise, a quantidade de dados mal etiquetados e caixas de delimitação ruidosas foram suficientemente significativas para afectar o treino geral do modelo. Exploramos várias técnicas de limpeza dos dados e finalmente decidimos que qualquer técnica que implementássemos seria inviável, dadas as restrições de cronograma do desafio. Portanto, decidimos aceitar quaisquer perdas de precisão que seriam resultado dos dados ruidosos.
Processando os dados via Chipping
Devido ao tamanho da imagem e densidade de objetos, encontramos desafios ao tentar passar toda a imagem para uma rede neural. Como descrito no trabalho que enviamos com nosso conjunto de dados, o modelo de base xView tentou dividir cada imagem em tiles menores usando estratégias de chipping, usando múltiplos tamanhos de chip a 300 px2, 400 px2 e 500 px2 em um modelo (multi-res). Nós experimentamos com a abordagem multi-res, mas ela desestabilizou nosso processo de aprendizagem, então nós nos colamos com um chip de 300 px2.
Nós também experimentamos com uma técnica simples de sobreposição de chip que envolvia a sobreposição de chips vizinhos por uma quantidade proporcional ao tamanho do chip (50%), o que proporcionou um aumento de 15% na precisão de detecção e também provou ser mais viável para uso com imagens de satélite grandes.
Baseamos nosso raciocínio no fato de que a linha de base teve um desempenho significativamente mais rápido do que o limite de tempo imposto pela competição e nossa observação de que o desempenho da detecção de objetos diminuiu significativamente nas bordas de cada chip
Aprimoramos ainda mais o modelo ao deixar objetos próximos ao meio do limite entre dois chips sobrepostos serem detectados por ambos os chips. Ao invés de contarmos duas vezes as detecções sobrepostas, usamos primeiro a supressão não-máxima para assegurar que apenas a previsão mais confiante seria emitida.
Supressão Não-Máxima
Encontramos instâncias em que nossos modelos emitem múltiplas caixas sobrepostas sobre o mesmo objeto, o que levou a uma menor precisão média média total (mAP). Para resolver este problema, usamos supressão não-máxima para manter apenas a caixa maior, que se encaixa suficientemente no objeto.
Aumento de dados
Aumentar a quantidade de dados disponíveis via aumento é uma prática comum na comunidade de visão computacional. Nossa equipe experimentou várias combinações aleatórias de aumentos por chip para várias épocas de treinamento para avaliar como nosso modelo executava com variantes nos dados, incluindo os seguintes:
- flipes horizontais
- flipes verticais
- conversões do RGP para o espaço cinza
- flipes de brilho
- ajustes de contraste
- distorções de cor
- saturação ajustes
- distorções de cor
- perturbações da caixa de delimitação
- crops a uma razão de aspecto fixa
- subtracções médias do canal
- rotações
Destas subtracções, As inversões horizontais, as inversões verticais e as culturas a uma relação de aspecto fixo resultaram no maior aumento da precisão do modelo e do mAP. Nós descartamos os outros aumentos, o que resultou em ganhos mínimos ou negativos no desempenho.
Dados Desequilíbrios
Como mostrado na tabela abaixo, o conjunto de dados fornecido pelo xView foi altamente desequilibrado, resultando em um processo de aprendizado distorcido que impediu que os modelos aprendessem representações precisas de classes incomuns.
Tabela 1: Contagem de classes…
CLASS COUNT
Building 287,074
Bus 6,316
Veículo de via 17
Uma abordagem de amostragem aleatória subrepresentaria severamente a classe do veículo ferroviário, então usamos uma abordagem de amostragem inversamente proporcional, na qual os chips subrepresentados foram super amostrados pela sua proporção inversa no conjunto de dados. A sobreamostragem é uma abordagem comum e nos forneceu uma boa estabilidade de aprendizado em classes sub-representadas.
Desenvolvendo Modelos Personalizados
Para fornecer uma abordagem flexível, definida por configuração – em vez de escrever código para criar um modelo, editar um arquivo de configuração, que contém apenas parâmetros, e esse arquivo irá automaticamente construir um modelo e treiná-lo – para criar modelos escaláveis, DIUx forneceu uma linha de base que foi criada usando o TensorFlow object detection API (TF-ODAPI).
Abém desenvolvemos modelos personalizados usando TensorFlow e Keras para acomodar funções de perda personalizadas, diferentes arquiteturas, e vários tipos de pré-treinamento, tivemos que olhar fora da TF-OD API.
Overall, a TF-OD API nos permitiu criar modelos funcionais e modificar vários parâmetros e arquiteturas de modelos. No entanto, para construir funcionalidades que não são cobertas pelo caso de uso médio, achamos necessário ir mais fundo no código personalizado usando TensorFlow e Keras.
Duas das arquiteturas mais comuns para localização e classificação simultânea são o Single Shot MultiBox Detector (SSD) e You Only Look Once (YOLO). O TF-ODAPI fornece funcionalidade para alterar os parâmetros de ambas as arquiteturas e funciona relativamente bem no conjunto de dados.
Nós também exploramos além do TF-ODAPI e, usando TensorFlow e Keras, experimentamos com arquiteturas como Retinanet, Faster R-CNN, YOLOv3 e outros modelos personalizados. Finalmente, uma variante de SSD nos proporcionou os melhores resultados. YOLO funcionou bem em termos de mAP quando o parametrizamos com um grande número de caixas de ancoragem.
Figura 4: Matriz de confusão para SSD. Figura 5: Matriz de Confusão para YOLO.
Nas figuras 4 e 5 acima, é importante notar os altos níveis de confusão intra-categoria tanto em SSD quanto em YOLO. Em particular, estes modelos podem classificar coisas como carro vs. construção muito bem, mas dentro das categorias tem um desempenho inferior ao ideal. Esta limitação é uma função do desafio em si, e é claro que não foi efetivamente abordada por nossas abordagens.
Desafios no Pré-treino
Pré-formação é um passo importante e necessário no uso de aprendizagem profunda para alcançar maior precisão de classificação em imagens de satélite. Nossa equipe identificou um conjunto de dados paralelo chamado “DOTA: A Large-scale Dataset for Object Detection in Aerial Images” que forneceu 15 aulas para localizar e classificar sobre com caixas que não estavam alinhadas aos eixos, ao contrário do xView. Nosso objetivo era aprender características gerais sobre as aulas do DOTA, e então continuar o treinamento no xView com um vetor de saída maior para acomodar suas 60 aulas e, esperamos, observar um grande ganho em precisão.
Pré-treinamento no DOTA, entretanto, não foi um sucesso. Embora tenhamos conseguido obter mAPs tão altos quanto 0,75 naquele conjunto de dados, muitas vezes tivemos um desempenho pior que a linha de base uma vez que o transferimos para o xView. No entanto, observamos um impacto na nossa pontuação de F1. Como essa não era a métrica a ser batida, não seguimos essa linha de exploração mais adiante. O pré-treinamento em um conjunto de dados maior como o ImageNet também não nos proporcionou ganhos em mAP.
Looking Ahead
O uso de aprendizado profundo em imagens de satélite não só ajuda a identificar onde as crises estão ocorrendo, mas também ajuda os socorristas a salvar vidas humanas. Nosso objetivo com o xView foi demonstrar que é possível construir um protótipo muito grande em um tempo relativamente pequeno para resolver metas de missão.
O sucesso de nossa abordagem foi validado pelo sistema de pontuação do xView Challenge, que automaticamente pontuou submissões com base na precisão da classificação.
O DIU declarou em uma recente notícia que já havia começado a testar algoritmos vencedores do xView Challenge na esteira do Furacão Florence, ajudando o pessoal de emergência a identificar rapidamente áreas inundadas e estradas intransitáveis.