Skip to content

Latest commit

 

History

History
131 lines (106 loc) · 8.38 KB

README.md

File metadata and controls

131 lines (106 loc) · 8.38 KB

Optical Remote Sensing Detection

Детектирование объектов на спутниковых снимках 🌍🛰

Этот кейс представляет собой систему для детектирования объектов на спутниковых снимках. Система основана на архитектуре YOLOv3 и предназначена для обнаружения объектов, таких как здания, автомобили и другие на спутниковых снимках Земли.

Оглавление

  1. Постановка задачи
  2. Requirements
  3. Набор данных DIOR
  4. Обучение модели
  5. Оценка модели
  6. Демо Inference
  7. Телеграмм бот
  8. Web приложение
  9. Ссылки

Постановка задачи

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

Requirements

Для установки необходимых зависимостей выполните следующую команду:

pip install -U -r requirements.txt

Вы также можете ознакомиться с данным репозиторием, преобразование набора данных для задачи детектирования объектов - Набор инструментов для детектирования объектов

Набор данных DIOR

Для обучения модели использовался набор данных Detection in Optical Remote.
DIOR представляет собой крупномасштабный и общедоступный набор изображений для детектирования объектов на оптических спутниковых снимках. В наборе данных содержится 23463 изображения с 192472 объектами, охватывающими 20 классов объектов. DIOR отличается большим разнообразием размеров объектов, различными условиями съемки (погода, сезоны) и качеством изображений. Этот набор данных предоставляет исследователям возможность разрабатывать и проверять методы обнаружения объектов, а также служит базой для сравнения современных подходов в этой области.

Набор данных на Google Disk

Примеры изображений:

Пример набора данных

Обучение модели

Для начала обучения модели выполните следующую команду:

python train.py --path data/DIOR-full --cfg dior --img_size 512 --lr 0.005 --epoches 50 --batch_size 12 --debug

Для продолжения обучения модели используйте следующую команду:

python train.py --path data/DIOR-full --cfg dior --img_size 512 --load_train --epoches 50 --batch_size 12 --debug

График обучения:

График обучения

Оценка модели

Для оценки модели выполните следующую команду:

python eval.py --path data/DIOR-full --cfg dior --img_size 512 --batch_size 12

Средний показатель точности обнаружения (mAP): 73.1%

Для каждого класса объектов был рассчитан показатель точности (AP):

Класс AP
airplane 81.6
airport 76.1
baseballfield 84.6
basketballcourt 88.6
bridge 48.9
chimney 75.9
dam 61.1
Expressway-Service-area 82.9
Expressway-toll-station 78.0
golffield 69.1
groundtrackfield 86.5
harbor 56.3
overpass 90.4
ship 51.9
stadium 78.4
storagetank 88.9
tenniscourt 61.1
trainstation 56.0
vehicle 89.2
windmill 57.8

Примеры детектирования:

drawing

Для загрузки весов YOLOv3 используйте следующую команду:

wget https://github.com/Vlad15lav/ors-detection/releases/download/weights/dior_weights.pth -O states/dior_weights.pth

Демо Inference

Вы можете использовать следующий простой скрипт:

python inference.py -p images/test_sample.jpg --cfg dior --img_size 512

Этот скрипт позволяет вам быстро проверить работу модели на отдельном изображении без необходимости использовать веб-приложение или выполнения обучения.

Результат скрипта:

Результат скрипта

Телеграмм бот

Загрузите базу данных MySQL для телеграмм бота:

mysql -u root -p detector_bot < db/detector_bot.sql

В скрипте bot.py укажите данные для MySQL сервера и Token Bot Father:

# Данные для входа в БД и токен Телеграмма
DATABASE_ADDRESS = "YOUR ADDRESS"
DATABASE_USER = "YOUR USER"
DATABASE_PASW = "YOUR PASSWORD"
DATABASE_NAME = "YOUR DATABASE NAME"
BOT_TOKEN = "YOUR TOKEN"

Запустите приложение с помощью команды:

python bot.py

Web приложение

Наше приложение развернуто на платформе Streamlit и готово к использованию прямо сейчас! Теперь вы можете легко ознакомиться с функционалом и возможностями системы для детектирования объектов на оптических спутниковых снимках. Просто перейдите по ссылке сюда и начните использовать приложение.

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

Web-приложение

Ссылки