
Salutations chaleureuses, chers collègues.
La communauté OpenDataScience développe avec succès l'initiative ML4SG - Machine Learning for Social Good . Dans son cadre, un certain nombre de projets intéressants ont démarré, qui dans divers domaines améliorent notre vie avec vous.
Nous aimerions parler de l'un de ces projets, le nom de code #proj_shipwrecks . Le projet a été lancé par les membres de la communauté ODS, qui à un moment donné ont accepté de travailler gratuitement sur ce qu'ils aiment, mais pour une raison quelconque, les mains ne l'ont pas encore atteint. Maintenant, le projet est devenu une petite startup à but non lucratif, avec un certain nombre de domaines différents de recherche et développement.
Dans le cadre du projet, nous nous efforçons d'aider les personnes engagées dans divers types de recherches marines, des archéologues marins, biologistes et océanologues aux équipes de sauvetage aquatique, en utilisant à la fois notre expertise en vision par ordinateur et en proposant de nouveaux mouvements, parfois inattendus.
De quoi s'agit-il?
En bref, notre projet vise à aider les biologistes et les archéologues marins, les équipes de sauvetage aquatique et les chercheurs marins de tous bords. Nous nous efforçons de réduire le temps et les coûts d'un certain nombre d'opérations en automatisant le travail avec les données des sonars, des satellites, des radars à ouverture synthétique et simplement des images visuelles et vidéo.
Notre recherche aidera non seulement à découvrir de nouveaux endroits pour la plongée, mais aussi à aider les personnes dont les proches manquent dans l'abîme. La prochaine étape est la création d'une équipe distincte qui aidera les océanologues et les biologistes à surveiller les populations de la vie marine, des phoques aux coraux des colonies, ainsi que les météorologues pour surveiller la formation et le mouvement des cyclones polaires.
Le projet a démarré relativement récemment, la phase active a débuté en février-mars de cette année. Depuis, nous avons décidé du concept, nous avons eu une bonne équipe, nous nous sommes organisés en une sorte de startup et avons appris à faire toutes sortes de choses sympas. Mais tout d'abord.
Qui nous sommes
Nous sommes le 12 (+ -, la structure de l'équipe est un peu liquide) la date des satanistes de divers degrés de juniorité. Quelqu'un balaie les neurones depuis longtemps, quelqu'un découvre juste le monde magique du Deep Learning en dehors de Kursers. De plus, notre équipe emploie des développeurs optimisés et un ingénieur de date méga-cool. Tout le monde est venu à des moments différents, principalement les membres actuels de l'UDF ont commencé le projet, mais quelqu'un n'est venu qu'après avoir pris connaissance du projet. Nous avons obtenu un coup de pouce plus important après le DataFest qui s'est tenu début mai, lorsque l'équipe a presque doublé.
Nous travaillons par aggail, nous n'avons pas de plan planifié à la journée, nous n'avons qu'une vision du concept où nous voulons venir et de ce que nous devons obtenir au final, tactiquement les tâches changent en fonction des données que nous avons réussi à collecter, que telle ou telle hypothèse ait fonctionné Avez-vous besoin de la fonctionnalité sur laquelle tout le sprint hebdomadaire a fonctionné ou est-elle devenue obsolète, car Quelqu'un a eu l'idée la plus cool.
En général, on s'amuse et à l'aise :)

On fait quoi?
Comme son nom l'indique, nous travaillons sur l'utilisation de la vision par ordinateur dans divers domaines de la recherche marine, Ă la fois pour le bien social et directement pour les entreprises.

Arrêtons-nous sur les tâches pour le bien social et discutons en détail des deux premières - l'archéologie marine et la recherche et le sauvetage
Archéologie marine
Wikipedia nous dit que l'archéologie marine étudie l'interaction de l'homme avec la mer, les lacs et les rivières en examinant les vestiges physiques connexes, qu'il s'agisse de navires, de structures côtières, de structures connexes, de cargaisons, de restes humains et de paysages sous-marins. Une discipline connexe est l'archéologie sous-marine, qui étudie le passé à travers tous les artefacts sous l'eau.
Pourquoi est-il si important de le faire? Tout d'abord, grâce à l'archéologie, nous connaissons mieux notre patrimoine, dans ce cas, la mer, nous trouvons des artefacts qui mettent en lumière des événements du passé ou même changent sérieusement notre vision de certains moments historiques. Deuxièmement, n'oubliez pas que nous avons eu 2 guerres mondiales avec la participation active des flottes, et les âmes de nombreux marins morts attendent toujours un repos décent des restes à terre.
Selon l' UNESCO (très approximative), il y a environ 3 millions d'épaves dans le monde, avec 3.500 cargos et navires à passagers (3.500, Karl!), 175 navires de guerre et 783 sous-marins tués dans la seule bataille de l'Atlantique en 1939-1945. Trouvé de toute cette splendeur, à Dieu ne plaise, 10 pour cent, voire moins.
Comment la vision par ordinateur aide-t-elle Ă trouver toute cette grandeur engloutie?
Après tout, souvent, seul un lieu de mort très approximatif, une certaine place en pleine mer, est connu du navire coulé, et même cela n'est pas exact.
Pour résoudre le problème, nous l'avons divisé en 3 parties.
- Vous devez d'abord numériser un large carré, en mettant en évidence les anomalies dans les images du sonar et de la bathymétrie
- Classer ensuite l'anomalie trouvée afin de comprendre ce que nous avons trouvé
- Enfin, effectuez une inspection visuelle de l'objet
Dans la première direction, nous résolvons le problème bien connu de détection d'objets sur les images du sonar (détecter une anomalie), ainsi que la tâche d'apprentissage au classement - nous déterminons la «pertinence» de cette anomalie, c'est-à -dire que l'anomalie est vraiment un navire ou un avion, ou quelque chose d'autre créé par l'homme, pas une pierre, par exemple.

La prochaine tâche dans cette direction est la classification de l'anomalie trouvée - c'est un navire, ou encore un avion, ou peut-être un conteneur. Pour ce faire, la fréquence du sonar change, ce qui vous permet d'obtenir une image à plus haute résolution et d'essayer de classer l'objet.
Au fait, comment fonctionne le sonar à balayage latéral?
Le balayage latéral utilise un sonar qui émet des impulsions coniques ou en éventail vers le fond de la mer par un grand angle perpendiculaire à la trajectoire du capteur. L'intensité des réflexions acoustiques du fond marin de ce faisceau en éventail est enregistrée dans une série de sections transversales. Assemblées dans le sens de la marche, ces pièces forment une image du fond marin à l'intérieur de la bande (largeur de couverture) du faisceau. Les fréquences sonores utilisées dans le sonar à balayage latéral sont généralement comprises entre 100 et 500 kHz; des fréquences plus élevées donnent une meilleure résolution mais une plage plus petite.

Une caractéristique importante du fonctionnement du sonar est que l'objet «scanné» par lui a une ombre acoustique, dont la forme est parfois plus abrupte que la forme de l'objet lui-même.

Dans la deuxième direction, pour la deuxième fois, nous passons un sonar sur chaque anomalie de rang élevé et résolvons le problème de classification, en essayant de déterminer le type de navire ou d'avion que nous avons rencontré.

L'astuce est que maintenant une telle recherche se fait manuellement. L'opérateur est assis (parfois pendant 12 heures!) Et regarde l'écran du sonar, essayant de déterminer s'il y a quelque chose là -bas ou non. La solution sur laquelle nous travaillons maximisera l'automatisation de l'ensemble du processus.
O Where l'argent données, Lebowski?
Le principal problème que nous avons rencontré au cours de l'étude est le simple fait qu'il y a très peu d'images de sonar accessibles au public. Sur l'ensemble de données que nous avons collectées à partir d'environ 220 images, un bon détecteur et, de plus, le classificateur sont pratiquement impossibles à enseigner. Néanmoins, nous avons réussi à trouver une issue: nous venons de générer notre jeu de données;)
En résumé, l'approche est la suivante:
1) En cas d'inondation, le navire est le plus souvent couché quille, moins souvent à bord, très rarement sur le pont.
2) Nous prenons des images d'un navire encore vivant (photographie aérienne, satellite, il existe de tels ensembles de données, le même ensemble de la compétition Airbus sur Kaggle , par exemple) et le «noyons».
Pour «l'inondation», nous utilisons CycleGAN - une sous-espèce du Generative Adversarial Network, qui permet le transfert de style d'une image à une autre. Après une formation sur environ 400 époques et ~ 220 paires A et B (vivantes et englouties), il est déjà possible d'obtenir une image adéquate.
Nous prenons l'image réelle du sonar:

Image satellite:

Et Ă la fin, nous obtenons cette image:

Et nous sélectionnons soigneusement l'ensemble de validation afin que le modèle du détecteur ou du classifieur ne se reconstitue pas sur des images artificielles.
Enfin, dans la troisième direction - inspection visuelle et analyse - nous résolvons, entre autres, les problèmes de correction des couleurs des images et des vidéos, de brouillage et de super-résolution en utilisant tous les mêmes GAN, mais cette fois les architectures U-GAN, W-GAN et SRGAN.
La nature du tir sous-marin est telle qu'il y a très peu de sources de lumière naturelle (plus précisément, elles n'existent pas du tout), et la lumière artificielle des projecteurs des véhicules hauturiers est plutôt de faible puissance.
Par conséquent, une photo prise sous l'eau ressemble généralement à ceci:

Notre pipeline vous permet actuellement de recevoir ces images:

Cela s'applique également à la vidéo (la vidéo a été tournée sur un véhicule sous-marin télécommandé Gnome pro):
Recherche et sauvetage
Selon les statistiques de l' UE, de 2011 à 2017, plus de 20000 navires ont participé à divers incidents, avec près de 7000 blessés, dont 683 sont morts.

Les incidents étaient très différents, pour diverses raisons: de la perte de contrôle d'un navire aux collisions dans l'obscurité ou dans d'autres conditions de mauvaise visibilité. Les navires sont perdus en pleine mer lorsque les transpondeurs tombent en panne, les centrales électriques tombent en panne et le navire peut être mis hors tension, enfin, quelqu'un de l'équipe peut être emporté par une vague qui coule.
Nous nous sommes fixé pour objectif d'influencer ces statistiques tristes et nous résolvons pour cela les tâches suivantes:
1) Détection et classification d'images avec radar à ouverture synthétique
2) Détection et classification d'un navire par image satellite / avion
3) Recherches de personnes noyées et d'équipement coulé et de cargaison à partir d'images de sonar
De plus, nous résolvons également le problème de la segmentation du navire dans l'image du sonar, ce qui nous permettra de déterminer plus précisément les points de plongée ultérieurs.
Arrêtons-nous plus en détail sur chaque tâche.
Avec la détection par satellite, tout est plus ou moins clair, un problème similaire a déjà été résolu lors du concours Airbus Kaggle mentionné ci-dessus. Vous pouvez également télécharger un bon ensemble de données sur kaggle.
Avec les images SAR, il est également plus ou moins clair, il existe un bon ensemble de données OpenSARShip, qui est dans le domaine public, car le lancement du satellite Sentinel-1 par l'Union européenne a rendu des données plus hétérogènes dans le domaine public.
Une ligne de base rapide, même dans un petit nombre d'époques, montre une vitesse acceptable sur l'architecture ResNet.

Une classification plus poussée est difficile, sauf que de nombreuses heures-homme sont consacrées au balisage.
Un peu plus intéressant est le cas des images infrarouges. Il n'y a peut-être qu'un seul bon ensemble de données avec des images infrarouges des navires - VAIS , mais il est relativement petit.
Mais, comme vous pouvez le deviner, l'hypothèse d'une augmentation de l'ensemble à l'aide du transfert de style peut également entrer ici. Néanmoins, même sur l'ensemble de données initial, nous avons réussi à obtenir un bon classificateur de ligne de base (= meilleur que aléatoire) sur les réseaux siamois .

Tout est beaucoup plus compliqué avec la détection des noyés.
Premièrement, il n'y a pas de jeux de données.
Deuxièmement, ils ne le sont pas.
Troisièmement, ils ne le sont pas du tout.
Néanmoins, le problème est en train d'être résolu.
Une personne noyée sur l'écran du sonar est vue en quelque sorte comme ceci:

La hauteur au-dessus du fond peut être différente, selon la période qui s'est écoulée depuis le moment de la mort.
Comment obtenir un ensemble de données avec de telles images? Vous pouvez bien sûr noyer plusieurs mannequins et prendre des photos avec un sonar, mais il existe un moyen moins cher.
Nous pouvons collecter des modèles 3D de personnes sur des sites de banque d'images gratuits, et ce n'est pas du tout nécessaire avec des textures ou des détails élevés. Ensuite, réchauffez des scènes avec un fond inégal ou placez le modèle 3D dans l'un des simulateurs open source comme UWSim ou UUVSimulator, où l'eau, et tout ce qui se trouve en dessous, est simulée selon tous les canons.

Ensuite, vous pouvez obtenir des captures d'écran de ces scènes, puis appliquer correctement le transfert de style. Plus de GANS au dieu du GANS!
En conséquence, le pipeline sera comme ceci:

Cette approche vous permet d'obtenir un ensemble de données valide sans avoir besoin de coûts inutiles.
Plans supplémentaires
Et nos plans futurs sont grands :) Nous travaillons sur toutes les directions indiquées au début de l'article en utilisant les techniques et les hacks que nous avons appris en travaillant pour l'archéologie marine et la recherche et le sauvetage.
Nous négocions des partenariats avec le MSU Marine Research Center , la National Oceanic and Atmospheric Administration des États - Unis , la Climate4Media Estonian Agency for Climate and Environmental Monitoring, ainsi qu'avec les fabricants de sonars et les services gouvernementaux chargés de la recherche et du sauvetage sur l'eau.
Et, bien sûr, nous recherchons plus d'aides et de partenaires.
Tout d'abord, nous serons ravis des biologistes marins, des écologistes, des archéologues et des océanologues - nous vous apprendrons en Deep Learning, et vous ferez le reste :)
Si vous avez des données de sonars, aux formats .xtf ou .dat, ou toute autre donnée sur notre sujet, nous serons également heureux de coopérer.
Deuxièmement, nous effectuons de nombreuses recherches (GAN, Karl! Nous avons encore des GAN 3D en route pour générer des nuages ​​de points 3D), qui nécessitent une puissance de calcul importante, principalement le GPU.
Troisièmement, nous recherchons des clients potentiels pour essayer nos solutions dans des conditions de combat.
Et enfin, nous recherchons des investisseurs qui seraient intéressés par notre travail et les perspectives d'utiliser ses résultats non seulement pour le bien social, mais aussi pour les affaires.
Notre plan le plus important est de nous éloigner du mode "faire le soir et le week-end" pour le "ce mode" est notre travail et nous l'aimons ":)
En raison de la nature générale de l'article, je ne me suis pas attardé sur les technologies utilisées en détail. Si vous avez des questions - bienvenue aux commentaires, à la page du projet , au PM, au courrier (pavel.golubev@maritimeai.net), au SLM slack, enfin! Vous pouvez également consulter notre bref rapport dans la section ML4SG du DataFest qui s'est tenu en mai - ici . S'il sera intéressant de considérer certaines technologies en détail - écrivez, nous écrirons un article séparé.
C’est probablement tout, faites de bonnes actions :)