Примите участие в новой эре спутникового дистанционного зондирования
Мотивация
Спутниковые снимки дают уникальную информацию о различных рынках, включая сельское хозяйство, оборону и разведку, энергетику и финансы. Новые коммерческие поставщики изображений, такие как Планета, используют созвездия небольших спутников для ежедневной съемки всей Земли.
Этот поток новых изображений перерастает возможности организаций вручную просматривать каждое полученное изображение, и для автоматизации процесса анализа необходимы алгоритмы машинного обучения и компьютерного зрения.
Цель этого набора данных — помочь решить сложную задачу определения местоположения крупных кораблей на спутниковых снимках. Автоматизация этого процесса может быть применена ко многим вопросам, включая мониторинг уровней активности портов и анализ цепочки поставок (Kaggle).
Данные
Данные значения пикселя для каждого RGB-изображения 80x80 сохраняются в виде списка из 19 200 целых чисел в списке данных. Первые 6400 записей содержат значения красного канала, следующие 6400 — зеленые и т. д.
Каждое имя файла изображения соответствует определенному формату: {метка} __ {идентификатор сцены} __ {долгота} _ {широта}.png
- метка: принимает значение 1 или 0, представляя класс «корабль» и класс «не-корабль» соответственно.
- идентификатор сцены: какой сцене он соответствует (не только SF Bay в наборе данных).
Класс «корабль» включает 1000 изображений. Изображения в этом классе почти центрированы на корпусе одного корабля:
Класс «без доставки» включает 3000 изображений.
- 1/3 изображения различных элементов ландшафта (река, растительность, здания, дороги и т. д.)
- 1/3 изображений частичных кораблей, не дающих уверенности в принадлежности к 1 классу.
- 1/3 изображений класса с неправильной маркировкой, вызванного шумом во время съемки.
Миссия
Мы хотим автоматически обнаруживать корабли, обучая алгоритм распознавать лодки первого класса и строить на нем прогностическую модель. Как только наша модель будет обучена, мы сможем использовать ее на ранее невидимых спутниковых морских снимках. Наша модель должна уметь обнаруживать корабли и локализовать их с помощью ограничительной рамки.
Вы можете найти мой полный сценарий в моем профиле Kaggle, здесь
Импортируйте данные и библиотеки:
Разработайте модель NN:
Последний слой — это функция активации Softmax.
Затем мы подгоняем модель к обучающим данным.
Свертка для поиска кораблей в SF Bay Image
Для каждого шага по осям x и y мы помещаем ядро в качестве входных данных в нашу нейронную сеть, чтобы предсказать, принадлежит ли изображение к классу 0 или 1.
Код поиска:
ef cutting(x, y): area_study = np.arange(3*80*80).reshape(3, 80, 80) for i in range(80): for j in range(80): area_study[0][i][j] = picture_tensor[0][y+i][x+j] area_study[1][i][j] = picture_tensor[1][y+i][x+j] area_study[2][i][j] = picture_tensor[2][y+i][x+j] area_study = area_study.reshape([-1, 3, 80, 80]) area_study = area_study.transpose([0,2,3,1]) area_study = area_study / 255 sys.stdout.write('\rX:{0} Y:{1} '.format(x, y)) return area_study
Если ядро классифицируется как корабль, то мы извлекаем координаты этого ядра и сохраняем их, чтобы можно было применить ограничивающую рамку.
Результат
Мы можем наблюдать точность и точность модели. Наша модель смогла успешно обнаружить корабли на спутниковом изображении.
Вывод
Хотя этот проект был успешным (почти все корабли были обнаружены и локализованы лишь с несколькими ложными срабатываниями), у него есть огромный недостаток. Одной из основных целей была точность, а также скорость обнаружения. Понятно, что последняя цель не была достигнута. Действительно, алгоритму поиска требуется много времени, чтобы пройтись по каждому шагу изображения и найти лодки. Чтобы создать ценность для бизнеса и реальные приложения для спутникового мониторинга, это решение AI должно работать почти в реальном времени.
В двух словах, этот набор данных — хорошее упражнение для практики глубокого обучения на спутниковых снимках, но он не готов к обнаружению в реальном времени.
Контакт:
Если вы заинтересованы в таких проектах, пожалуйста, не стесняйтесь подписываться на меня, чтобы расширить свою сеть ИИ.