Детектирование объектов на спутниковых снимках 🌍🛰
Этот кейс представляет собой систему для детектирования объектов на спутниковых снимках. Система основана на архитектуре YOLOv3 и предназначена для обнаружения объектов, таких как здания, автомобили и другие на спутниковых снимках Земли.
- Постановка задачи
- Requirements
- Набор данных DIOR
- Обучение модели
- Оценка модели
- Демо Inference
- Телеграмм бот
- Web приложение
- Ссылки
Целью данного проекта - разработка системы детектирования объектов на оптических спутниковых снимках. На вход подается спутниковое изображение, необходимо выявить расположение и классифицировать разнообразные интересующиеся объекты.
Для установки необходимых зависимостей выполните следующую команду:
pip install -U -r requirements.txt
Вы также можете ознакомиться с данным репозиторием, преобразование набора данных для задачи детектирования объектов - Набор инструментов для детектирования объектов
Для обучения модели использовался набор данных 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 |
Для загрузки весов YOLOv3 используйте следующую команду:
wget https://github.com/Vlad15lav/ors-detection/releases/download/weights/dior_weights.pth -O states/dior_weights.pth
Вы можете использовать следующий простой скрипт:
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
Наше приложение развернуто на платформе Streamlit и готово к использованию прямо сейчас! Теперь вы можете легко ознакомиться с функционалом и возможностями системы для детектирования объектов на оптических спутниковых снимках. Просто перейдите по ссылке сюда и начните использовать приложение.
С помощью Web-интерфейса, вы можете загрузить спутниковые снимки, посмотреть результаты обнаружения объектов на снимках и попробовать ввести координаты любой точки Земли, чтобы сразу получить снимок.