Хабрахабр

Применение компьютерного зрения в морских исследованиях или 12 человек на сундук мертвеца

В её рамках стартовал целый ряд интересных проектов, которые в самых разных областях улучшают нашу с вами жизнь. Горячо приветствую, уважаемые коллеги.
В сообществе OpenDataScience успешно развивается инициатива ML4SG — Machine Learning for Social Good.

Проект стартовал силами членов сообщества ODS, согласившимися в свое время поработать забесплатно над тем, что им нравится, но до чего по тем или иным причинам руки еще не дошли. Мы хотели бы рассказать об одном из таких проектов под кодовым названием #proj_shipwrecks. Сейчас проект вырос в небольшой non-profit стартап, с целым рядом разных направлений исследований и разработки.

В рамках проекта мы стремимся помогать людям, занимающимся разного рода морскими исследованиями, от морских археологов, биологов и океанологов до команд спасения на воде, используя как свою экспертизу в области компьютерного зрения, так и придумывая новые, порой неожиданные ходы.

О чем это вообще?

Мы стремимся сократить время и затраты на целый ряд операций, автоматизируя работу с данными с сонаров, спутников, радаров с синтетической апертурой и просто визуальными изображениями и видео. Вкратце, наш проект нацелен на помощь морским биологам и археологам, командам по спасению на воде, а также морским исследователям всех мастей.

На очереди создание отдельной команды, которая будет помогать учёным-океанологам и биологам следить за популяциями морских обитателей, от тюленей до кораллов колоний, а также метеорологам следить за образованием и движением полярных циклонов. Наши исследования помогут не только обнаружить новые места для дайвинга, но и окажут помощь людям, чьи близкие пропали без вести в водной пучине.

С тех пор мы определились с концептом, у нас подобралась хорошая команда, мы организовались в некоторое подобие стартапа и научились делать всякие прикольные штуки. Проект стартовал относительно недавно, активная фаза началась в феврале-марте сего года. Но обо всем по порядку.

Кто мы такие

Кто-то шатает нейронки уже давно, кто-то лишь открывает для себя волшебный мир Deep Learning за пределами Курсеры. Мы — это 12 (+-, структура команды несколько ликвидна) дата сатанистов разной степени юниорности. Все пришли в разное время, в основном проект начинали уже действующие члены ОДС, но кто-то пришел туда только узнав о проекте. Кроме того, у нас в команде трудятся прокаченные девелоперы и мега-крутой дата инженер. Больший буст по численности мы получили после прошедшего в начале мая ДатаФеста, когда команда выросла практически вдвое.

кому-то прошла в голову более крутая идея. Мы работаем по аджайлу, у нас нет расписанного по дням плана, есть только видение концепта, куда мы хотим прийти и что получить в итоге, тактически же задачи меняются в зависимости от того, какие данные нам удалось собрать, сработала ли та или иная гипотеза, нужна ли та фича, над которой трудились весь недельный спринт или же она стала obsolete, т.к.

В общем, у нас весело и непринуждённо:)

image

Что же мы делаем?

Как ясно из названия, мы работаем над применением компьютерного зрения в разных областях морских исследований, как for social good, так и напрямую для бизнеса.

image

Давайте остановимся на задачах for social good и подробно обсудим первые два из них — морскую археологию и Search&Rescue

Морская археология

Связанной с ней дисциплиной является подводная археология, которая изучает прошлое через любые артефакты, находящиеся под водой. Википедия нам говорит, что Морская археология изучает взаимодействие человека с морем, озёрами и реками посредством изучения связанных с ними физических остатков, будь то суда, береговые сооружения, связанные с ними структуры, грузы, останки людей и подводные ландшафты.

Во-первых, благодаря археологии мы лучше узнаем свое наследие, в данном случае морское, находим артефакты, которые проливают свет на события из прошлого или даже серьёзно меняют взгляд на некоторые исторические моменты. Почему же так важно ей заниматься? Во-вторых, не стоит забывать, что у нас было 2 мировые войны с активным участием флотов, и души многих погибших моряков до сих пор ждут достойного упокоения останков на суше.

Найденного из всего этого великолепия дай бог процентов 10, а то и меньше. По данным ЮНЕСКО (ооочень приблизительным) в мире насчитывается порядка 3 миллионов затонувших судов, причем в одной только Битве за Атлантику в 1939 — 1945 годах погибло 3,500 грузовых и пассажирских судов (3,500, Карл!), 175 боевых кораблей и 783 субмарины.

Как же компьютерное зрение поможет в нахождение всего этого затонувшего великолепия?
Ведь, зачастую, о затонувшем корабле известно лишь очень приблизительное место гибели, некий квадрат в открытом море, да и то не точно.

Чтобы решить задачу, мы разделили её на 3 части.

  1. Сначала необходимо просканировать широкий квадрат, выделяя на снимках сонара и батиметрии аномалии
  2. Затем классифицировать найденную аномалию, чтобы понять, что же мы нашли
  3. И наконец провести визуальный осмотр объекта

В рамках первого направления мы решаем хорошо знакомую всем задачу Object detection на изображениях сонара (детектируем аномалию), а также задачу learning-to-rank — определяем "релевантность" этой аномалии, т.е., что аномалия это действительно корабль, или самолет, или еще что либо рукотворное, а не камень, например.

image

Для этого меняется частота работы сонара, что позволяет получить картинку более высокого разрешения и попробовать классифицировать объект. Следующей задачей этого направления является классификация найденной аномалии — это корабль, или все-таки самолет, или может контейнер.

Кстати, как работает side-scan сонар?

Интенсивность акустических отражений от морского дна этого веерообразного луча регистрируется в серии поперечных срезов. При боковом сканировании используется гидролокатор, который излучает конические или веерообразные импульсы вниз к морскому дну через широкий угол, перпендикулярный пути датчика. Частоты звука, используемые в гидролокаторе бокового обзора, обычно находятся в диапазоне от 100 до 500 кГц; более высокие частоты дают лучшее разрешение, но меньший диапазон. Сшитые вместе вдоль направления движения, эти кусочки формируют изображение морского дна в пределах полосы (ширина покрытия) луча.

image

Важной особенностью работы сонара является то, что "сканируемый" им объект имеет акустическую тень, shape которой является иногда более крутой фичей, чем shape самого объекта.

image

В рамках второго направления мы второй раз проходим сонаром над каждой аномалией с высоким рангом и решаем задачу классификации, пытаясь определить, что же за тип корабля или самолета нам попался.

image

Оператор сидит (иногда по 12 часов!) и смотрит на экран сонара, пытаясь определить, есть там что-то внизу или нет. Весь цимес в том, что сейчас подобный поиск производится вручную. Решение, над которым мы работаем, позволит максимально автоматизировать весь процесс.

Где деньги данные, Лебовски?

На собранном нами датасете из порядка 220 картинок хороший детектор и, тем более, классификатор обучить практически не реально. Главной проблемой, с которой мы столкнулись во время исследования, является тот незатейливый факт, что изображений с сонара в открытом доступе крайне мало. Тем не менее, нам удалось найти выход: мы просто генерируем свой датасет 😉

В двух словах, подход такой:

1) При затоплении, судно чаще всего ложится на дно килем вниз, реже бортом, совсем редко палубой.
2) Мы берем изображения еще живого судна (аэрофотосъемка, спутник, такие датасеты есть, тот же сет из соревнования Airbus на Kaggle, например) и "топим" его.

После обучения на порядка 400 эпох и ~220 парах A и B (живых и затонувших) уже возможно получить адекватную картинку. Для "затопления" мы используем CycleGAN — подвид Generative Adversarial Network, позволяющий осуществить style transfer одного изображения в другое.

Берем реальное изображение с сонара:

image

Изображение со спутника:

image

И получаем в конечном итоге вот такую картину:

image

И аккуратно выбираем валидационный сет, чтобы модель детектора или классификатора не переобучилась на искусственных картинках.

Наконец, в третьем направлении — визуальном осмотре и анализе — мы в числе прочего решаем задачи цветокоррекции изображений и видео, dehazing и super-resolution с помощью все тех же ГАНов, но на этот раз архитектур U-GAN, W-GAN и SRGAN.

Характер подводной съемки таков, что там крайне мало источников естественного света (если точнее, их нет вообще), а искусственный свет прожекторов глубоководных аппаратов довольно маломощный.

В итоге, снятая под водой картинка выглядит обычно как-то так:

image

Наш же пайплайн позволяет на данный момент получать такие изображения:

image

Это в равной степени относится и к видео (видео снято на телеуправляемый подводный аппарат Гном про):

Search&Rescue

000 судов, при этом пострадало почти 7. Согласно статистике ЕС, с 2011 по 2017 в различных инцидентах участвовало более 20. 000 человек, из них 683 погибли.

image

Суда теряются в открытом море при поломке транспондеров, выходят из строя силовые установки и корабль может быть обесточен, наконец, кого-то из команды может смыть набежавшей волной. Инциденты были самые разные, по разным причинам: от потери управления судном до столкновений в темноте или в иных условиях плохой видимости.

Мы поставили себе цель как-то повлиять на столь печальную статистику и для этого решаем следующие задачи:

1) Детекция и Классификация судна по изображению с Synthetic Aperture Radar
2) Детекция и Классификация судна по изображению со спутника \ самолета
3) Поисков утонувших людей и затонувшей техники и грузов по изображениям с сонара

Кроме того, мы также решаем задачу сегментации судна на изображении с сонара, что позволит определять точнее точки для последующего погружения.

Остановимся чуть подробнее на каждой задаче.

Там же на kaggle можно скачать и хороший датасет. С детекцией на спутнике все более-менее понятно, подобную задачу решали уже на упомянутом выше конкурсе Airbus на Kaggle.

С SAR изображениями тоже более-менее понятно, существует хороший датасет OpenSARShip, который находится в открытом доступе, благо с запуском Евросоюзом спутника Sentinel-1 разнородных данных в открытом доступе стало больше..

Быстрый бейзлайн даже на малом количестве эпох показывает приемлемый скор на архитектуре ResNet.

drawing

Дальнейшая классификация вызывает сложности разве только тем, что очень много человеко-часов уходит на разметку.

Пожалуй, существует только один неплохой датасет с инфракрасными изображениями судов — VAIS, но он относительно не большой. Несколько интереснее дело обстоит с инфракрасными изображениями.

Тем не менее, даже на изначальном датасете нам удалось получить неплохой (=лучше рандома) бейзлайн классификатора на Сиамских сетях. Но, как вы могли бы догадаться, здесь тоже может зайти гипотеза по аугментации сета с помощью style transfer.

drawing3

Гораздо сложнее все с детекцией утонувших людей.

Во-первых, датасетов нет.
Во-вторых, их нет.
В-третьих, их нет совсем.

И тем не менее, задача решаема.

Утонувший человек на экране сонара виден как-то так:

drawing2

Высота над дном может быть разной, в зависимости от срока, прошедшего с момента гибели.

Можно, конечно, утопить несколько манекенов и сонаром снять изображения, но есть способ подешевле. Как же нам получить датасет с такими картинками?

Потом либо нагенерить сцен с неровным дном, либо поместить 3D модель в один из опенсорсных симуляторов вроде UWSim или UUVSimulator, где вода, и все, что под ее поверхностью, просимулировано по всем канонам. Мы можем набрать 3D моделей людей на бесплатных сайтах-банках изображений, при чем совсем не обязательно с текстурами или высокой детализацией.

image

Больше ГАНов богу ГАНов! После чего можно нагенерить скриншотов этих сцен, на которые потом… правильно, применить style transfer.

В итоге пайплайн будет такой:

drawing4

Этот подход позволяет получить годный датасет без необходимости лишних затрат.

Дальнейшие планы

А дальнейшие планы у нас большие:) Мы прорабатываем все указанные в начале статьи направления с использованием тех приемов и хаков, которым научились, работая для морской археологии и Search&Rescue.

Мы ведем переговоры с Центром Морских исследований МГУ, Национальным управлением океанических и атмосферных исследований США, эстонским агенством по мониторингу климатических и экологических проблем Climate4Media о партнерском сотрудничестве, а так же с производителями сонаров и государственным службами, отвечающими за поиск и спасение на воде.

И, конечно, мы ищем еще помощников и партнеров.

В первую очередь, мы будем рады морским биологам, экологам, археологам и океанологам — мы вас научим в Deep Learning, a вы нас всему остальному:)
Если у вас есть данные с сонаров, в .xtf или .dat форматах, или любые другие данные по нашей тематике, то мы также будем рады сотрудничеству.

У нас еще 3D ГАНы на подходе, для генерации 3Д облаков точек), для которых необходимы значительные вычислительные мощности, в первую очередь GPU. Во-вторых, мы проводим много исследований (ГАНы, Карл!

В-третьих, мы ищем потенциальных клиентов, чтобы опробовать наши решения в боевых условиях.

Ну и наконец мы ищем инвесторов, кому была бы интересна наша работа и перспективы использования ее результатов не только для social good, но и для бизнеса.

Самый главный наш план — уйти от режима "делаем по вечерам и выходным" к режиму "это наша работа и она нам нравится":)

Если у вас есть вопросы — welcome в комменты, на страницу проекта, в личку, на почту (pavel.golubev@maritimeai.net), в слак ОДС, наконец! В силу обзорного характера статьи я не останавливался подробно на использованных технологиях. Если будет интересно рассмотреть какие-то технологии совсем подробно — пишите, запилим отдельный пост. Еще можно посмотреть наш короткий доклад на секции ML4SG на прошедшем в мае ДатаФесте — вот тут.

На этом пожалуй все, делайте добрые дела:)

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть