
Saudações calorosas, queridos colegas.
A comunidade OpenDataScience está desenvolvendo com sucesso a iniciativa ML4SG - Machine Learning for Social Good . Dentro de sua estrutura, vários projetos interessantes foram iniciados, o que em vários campos melhora nossa vida com você.
Gostaríamos de falar sobre um desses projetos, com o código #proj_shipwrecks . O projeto foi lançado pelos membros da comunidade ODS, que ao mesmo tempo concordaram em trabalhar de graça no que gostam, mas por algum motivo as mãos ainda não o alcançaram. Agora, o projeto tornou-se uma pequena startup sem fins lucrativos, com várias áreas diferentes de pesquisa e desenvolvimento.
Como parte do projeto, nós nos esforçamos para ajudar as pessoas envolvidas em vários tipos de pesquisa marinha, de arqueólogos, biólogos e oceanólogos marinhos a equipes de resgate de água, usando nossa experiência em visão computacional e apresentando novos movimentos, às vezes inesperados.
O que é isso tudo?
Em resumo, nosso projeto tem como objetivo ajudar biólogos e arqueólogos marinhos, equipes de resgate de água e pesquisadores marinhos de todas as faixas. Nós nos esforçamos para reduzir o tempo e os custos de várias operações, automatizando o trabalho com dados de sonares, satélites, radares de abertura sintética e simplesmente imagens visuais e vídeos.
Nossa pesquisa ajudará não apenas a descobrir novos locais para mergulho, mas também ajudará pessoas cujos entes queridos estão desaparecidos no abismo. O próximo passo é a criação de uma equipe separada que ajudará oceanólogos e biólogos a monitorar as populações de habitantes marinhos, de focas a corais de colônias, bem como meteorologistas a monitorar a formação e o movimento de ciclones polares.
O projeto começou há relativamente pouco tempo, a fase ativa começou em fevereiro-março deste ano. Desde então, decidimos sobre o conceito, criamos uma boa equipe, nos organizamos em uma espécie de startup e aprendemos a fazer todo tipo de coisas legais. Mas as primeiras coisas primeiro.
Quem somos
Nós somos o 12º (+ -, a estrutura da equipe é um pouco líquida) a data dos satanistas de diferentes graus de junioridade. Alguém está balançando os neurônios por um longo tempo, alguém está apenas descobrindo o mundo mágico do Deep Learning fora de Kursers. Além disso, nossa equipe emprega desenvolvedores otimizados e um engenheiro de data mega-legal. Todos vieram em momentos diferentes, principalmente os atuais membros da UDF, que iniciaram o projeto, mas alguém veio lá apenas depois de aprender sobre o projeto. Tivemos um aumento maior nos números após o DataFest realizado no início de maio, quando a equipe quase dobrou.
Trabalhamos em conjunto, não temos um plano programado para o dia, apenas temos uma visão do conceito para onde queremos chegar e o que chegar no final, taticamente as tarefas mudam dependendo dos dados que conseguimos coletar, se essa ou aquela hipótese funcionou, Você precisa do recurso sobre o qual todo o sprint semanal funcionou ou se tornou obsoleto, porque Alguém teve a idéia mais legal.
Em geral, nos divertimos e à vontade :)

O que estamos fazendo?
Como o nome indica, estamos trabalhando no uso da visão computacional em vários campos da pesquisa marinha, tanto para o bem social quanto diretamente para os negócios.

Vamos nos debruçar sobre as tarefas para o bem social e discutir em detalhes as duas primeiras - arqueologia marinha e Search & Rescue
Arqueologia marinha
A Wikipedia nos diz que a arqueologia marinha estuda a interação do homem com o mar, lagos e rios examinando os remanescentes físicos relacionados, sejam navios, estruturas costeiras, estruturas relacionadas, carga, restos humanos e paisagens subaquáticas. Uma disciplina relacionada é a arqueologia subaquática, que estuda o passado através de qualquer artefato debaixo d'água.
Por que é tão importante fazer isso? Em primeiro lugar, graças à arqueologia, conhecemos melhor nossa herança; nesse caso, a marinha, encontramos artefatos que lançam luz sobre eventos do passado ou até mudam seriamente nossa visão de alguns momentos históricos. Em segundo lugar, não se esqueça de que tivemos duas guerras mundiais com a participação ativa das frotas, e as almas de muitos marinheiros mortos ainda estão esperando por um resto decente dos restos mortais em terra.
Segundo a UNESCO (muito aproximado), existem cerca de 3 milhões de naufrágios no mundo, com 3.500 navios de carga e passageiros (3.500, Karl!), 175 navios de guerra e 783 submarinos mortos apenas na Batalha do Atlântico, em 1939-1945. Encontrado em todo esse esplendor, Deus o livre, 10% ou até menos.
Como a visão computacional ajuda a encontrar toda essa grandeza afundada?
Afinal, muitas vezes, apenas um local de morte muito aproximado, uma certa praça em mar aberto, é conhecida sobre o navio afundado, e mesmo isso não é exato.
Para resolver o problema, dividimos em 3 partes.
- Primeiro, você precisa digitalizar um quadrado largo, destacando as anomalias nas imagens do sonar e da batimetria
- Em seguida, classifique a anomalia encontrada para entender o que encontramos
- Por fim, realize uma inspeção visual do objeto
Na primeira direção, resolvemos o conhecido problema de detecção de objetos nas imagens do sonar (detectar uma anomalia), bem como a tarefa de aprender a classificar - determinamos a "relevância" dessa anomalia, ou seja, que a anomalia é realmente um navio ou um avião, ou algo mais feito pelo homem, não uma pedra, por exemplo.

A próxima tarefa nessa direção é a classificação da anomalia encontrada - este é um navio, ou ainda um avião, ou talvez um contêiner. Para fazer isso, a frequência do sonar muda, o que permite obter uma imagem com maior resolução e tentar classificar o objeto.
A propósito, como funciona o sonar de varredura lateral?
A varredura lateral usa um sonar que emite pulsos cônicos ou em forma de leque até o fundo do mar através de um amplo ângulo perpendicular ao caminho do sensor. A intensidade das reflexões acústicas do fundo do mar desse feixe em forma de leque é registrada em uma série de seções transversais. Costuradas ao longo da direção da viagem, essas peças formam uma imagem do fundo do mar dentro da faixa (largura da cobertura) da viga. As frequências sonoras usadas no sonar de varredura lateral estão tipicamente na faixa de 100 a 500 kHz; frequências mais altas oferecem melhor resolução, mas um alcance menor.

Uma característica importante da operação do sonar é que o objeto "escaneado" por ele possui uma sombra acústica, cuja forma às vezes é mais abrupta do que a forma do próprio objeto.

Na segunda direção, pela segunda vez, passamos um sonar sobre cada anomalia com uma classificação alta e resolvemos o problema de classificação, tentando determinar que tipo de nave ou avião nos deparamos.

O truque é que agora essa pesquisa é feita manualmente. O operador senta (às vezes por 12 horas!) E olha para a tela do sonar, tentando determinar se há algo lá embaixo ou não. A solução em que estamos trabalhando maximizará a automação de todo o processo.
Onde dinheiro dados, Lebowski?
O principal problema que encontramos durante o estudo é o simples fato de haver muito poucas imagens de sonar disponíveis ao público. No conjunto de dados que coletamos de cerca de 220 fotos, um bom detector e, além disso, o classificador são praticamente impossíveis de ensinar. No entanto, conseguimos encontrar uma saída: apenas geramos nosso conjunto de dados;)
Em poucas palavras, a abordagem é a seguinte:
1) Em caso de inundação, o navio geralmente se deita de costas, com menos frequência a bordo, muito raramente no convés.
2) Nós capturamos imagens de um navio ainda vivo (fotografia aérea, satélite, existem esses conjuntos de dados, o mesmo conjunto da competição Airbus no Kaggle , por exemplo) e o "afogamos".
Para "inundações", usamos o CycleGAN - uma subespécie da Rede Adversária Generativa, que permite a transferência de estilo de uma imagem para outra. Após o treinamento em cerca de 400 eras e ~ 220 pares A e B (vivos e afundados), já é possível obter uma imagem adequada.
Tomamos a imagem real do sonar:

Imagem de satélite:

E no final, temos esta imagem:

E selecionamos cuidadosamente o conjunto de validação para que o modelo do detector ou classificador não seja treinado em imagens artificiais.
Por fim, na terceira direção - inspeção e análise visual -, entre outras coisas, resolvemos os problemas de correção de cores de imagens e vídeos, dehazing e super-resolução com a ajuda dos mesmos GANs, mas desta vez as arquiteturas U-GAN, W-GAN e SRGAN.
A natureza do disparo subaquático é tal que existem muito poucas fontes de luz natural (mais precisamente, elas não existem de todo), e a luz artificial dos holofotes dos veículos de alto mar é de baixa potência.
Como resultado, uma foto tirada debaixo d'água geralmente se parece com isso:

Nosso pipeline permite que você receba atualmente estas imagens:

Isso também se aplica ao vídeo (o vídeo foi gravado em um veículo subaquático de controle remoto Gnome pro):
Pesquisa e resgate
Segundo as estatísticas da UE, de 2011 a 2017, mais de 20.000 embarcações participaram de vários incidentes, com quase 7.000 pessoas feridas, das quais 683 morreram.

Os incidentes foram muito diferentes, por várias razões: da perda de controle de um navio a colisões no escuro ou em outras condições de baixa visibilidade. Os navios são perdidos no mar aberto quando os transponders quebram, as usinas falham e o navio pode ser desenergizado; finalmente, alguém da equipe pode ser arrastado por uma onda.
Estabelecemos a meta de influenciar estatísticas tão tristes e, para isso, estamos resolvendo as seguintes tarefas:
1) Detecção e Classificação de Imagem com Radar de Abertura Sintética
2) Detecção e classificação de uma embarcação por imagem de satélite / aeronave
3) Pesquisas de afogados e equipamentos afundados e cargas de imagens de sonar
Além disso, também resolvemos o problema de segmentação do navio na imagem do sonar, o que nos permitirá determinar com mais precisão os pontos para mergulho subseqüente.
Vamos nos aprofundar mais em cada tarefa.
Com a detecção de satélite, tudo fica mais ou menos claro, um problema semelhante já foi resolvido na competição Airbus Kaggle mencionada acima. Você também pode baixar um bom conjunto de dados no kaggle.
Com imagens SAR, também é mais ou menos claro, existe um bom conjunto de dados do OpenSARShip, que é de domínio público, desde que o lançamento do satélite Sentinel-1 pela União Europeia tornou os dados disponíveis publicamente mais heterogêneos.
Uma linha de base rápida, mesmo em um pequeno número de épocas, mostra uma velocidade aceitável na arquitetura ResNet.

Classificação adicional é difícil, exceto que muitas horas de trabalho são gastas na marcação.
Um pouco mais interessante é o caso das imagens infravermelhas. Talvez exista apenas um bom conjunto de dados com imagens infravermelhas de navios - o VAIS , mas é relativamente pequeno.
Mas, como você pode imaginar, a hipótese de aumento do conjunto usando a transferência de estilos também pode aparecer aqui. No entanto, mesmo no conjunto de dados inicial, conseguimos obter um bom (= melhor que aleatório) classificador de linha de base nas redes siamesas .

Tudo é muito mais complicado com a detecção de pessoas afogadas.
Em primeiro lugar, não há conjuntos de dados.
Em segundo lugar, eles não são.
Em terceiro lugar, eles não são de todo.
No entanto, o problema está sendo resolvido.
Uma pessoa afogada na tela do sonar é vista de alguma forma assim:

A altura acima do fundo pode ser diferente, dependendo do período que passou desde o momento da morte.
Como obtemos um conjunto de dados com essas imagens? É claro que você pode afogar vários manequins e tirar fotos com um sonar, mas existe uma maneira mais barata.
Podemos coletar modelos 3D de pessoas em sites de banco de imagens gratuitos, e isso não é de todo necessário com texturas ou detalhes altos. Em seguida, aqueça as cenas com um fundo irregular ou coloque o modelo 3D em um dos simuladores de código aberto como o UWSim ou o UUVSimulator, onde a água e tudo abaixo dela são simuladas de acordo com todos os cânones.

Em seguida, você pode obter capturas de tela dessas cenas, que então ... corretamente, aplicam a transferência de estilo. Mais GANS para o deus dos GANS!
Como resultado, o pipeline será assim:

Essa abordagem permite que você obtenha um conjunto de dados válido sem a necessidade de custos desnecessários.
Planos adicionais
E nossos planos para o futuro são grandes :) Estamos trabalhando em todas as instruções indicadas no início do artigo, usando as técnicas e os hacks que aprendemos ao trabalhar na arqueologia marinha e no Search & Rescue.
Estamos negociando com o MSU Marine Research Center , a Administração Nacional Oceânica e Atmosférica dos EUA , a Agência Estoniana Climate4Media para Monitoramento Ambiental e Ambiental sobre parcerias, bem como com fabricantes de sonares e serviços governamentais responsáveis pela busca e salvamento na água.
E, é claro, estamos procurando mais ajudantes e parceiros.
Antes de tudo, teremos prazer em biólogos marinhos, ecologistas, arqueólogos e oceanologistas - ensinaremos você em Deep Learning e você fará o resto :)
Se você tiver dados de sonares, nos formatos .xtf ou .dat, ou quaisquer outros dados sobre o assunto, também teremos prazer em cooperar.
Em segundo lugar, realizamos muitas pesquisas (GANs, Karl! Ainda temos GANs 3D a caminho para gerar nuvens de pontos 3D), que exigem um poder computacional significativo, principalmente a GPU.
Em terceiro lugar, procuramos clientes em potencial para experimentar nossas soluções em condições de combate.
E, finalmente, procuramos investidores interessados em nosso trabalho e as perspectivas de usar seus resultados não apenas para o bem social, mas também para os negócios.
Nosso plano mais importante é fugir do modo "fazer à noite e nos fins de semana" para o "este modo" é o nosso trabalho e gostamos ":)
Devido à natureza geral do artigo, não me detive nas tecnologias usadas em detalhes. Se você tiver dúvidas - bem-vindo aos comentários, à página do projeto , ao PM, ao correio (pavel.golubev@maritimeai.net), à folga do SLM , finalmente! Você também pode ver nosso breve relatório na seção ML4SG no DataFest realizada em maio - aqui . Se for interessante considerar algumas tecnologias em detalhes - escreva, escreveremos um post separado.
Provavelmente é tudo, faça boas ações :)