Visão Geral do Dataset Aeroscapes
O Aeroscapes é um benchmark para segmentação semântica aérea, baseado em imagens capturadas por drones comerciais a alturas entre 5 e 50 metros. Ele compreende 3269 imagens com resolução 720p, cada uma acompanhada de uma máscara de ground-truth para 11 classes semânticas distintas.
Organização dos Arquivos:
aeroscapes/
JPEGImages/ # Imagens RGB do dataset
SegmentationClass/ # Máscaras de segmentação correspondentes
Visualizations/ # Visualizações coloridas das anotações
ImageSets/ # Listas de divisão para treino e teste
Configuração Inicial
Obtenção do Dataset
Crie uma cópia local do repositório e navegue até o dirretório:
git clone https://github.com/ishann/aeroscapes.git
cd aeroscapes
Instalação de Dependências
Certifique-se de ter as bibliotecas Python necesssárias instaladas:
pip install numpy scipy matplotlib scikit-image pillow
Verificação da Integridade dos Dados
Execute um script para confirmar que todas as imagens possuem uma máscara associada:
import os
pasta_imagens = 'aeroscapes/JPEGImages'
pasta_mascaras = 'aeroscapes/SegmentationClass'
ids_imagens = {arquivo.split('.')[0] for arquivo in os.listdir(pasta_imagens)}
ids_mascaras = {arquivo.split('.')[0] for arquivo in os.listdir(pasta_mascaras)}
faltantes = ids_imagens.symmetric_difference(ids_mascaras)
if faltantes:
print(f"Inconsistências detectadas: {faltantes}")
else:
print("Validação concluída: todos os pares imagem-máscara estão presentes.")
Implementação com PyTorch
Carregamento do Dataset
Para treinar um modelo, utilize um DataLoader personalizado. Exemplo simplificado:
from torchvision import transforms
from torch.utils.data import DataLoader
import torch
# Definição de transformações e classe de dataset (implementação própria)
transformacoes = transforms.Compose([
transforms.Resize((512, 512)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
dataset = DatasetAerialSegmentation(root_dir='aeroscapes', transform=transformacoes)
loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4)
# Exemplo de iteração
for epoca in range(10):
for batch in loader:
entrada = batch['imagem'].cuda()
rotulos = batch['mascara'].cuda()
# Passar pelo modelo e calcular perda
Arquiteturas Recomendadas
Para segmentação semântica em imagens aéreas, redes como U-Net ou DeepLabv3+ mostram alto desempenho. O uso de backbones pré-treinados em datasets como ImageNet é aconselhável para otimizar a convergência.
Aplicações e Ecossistema
Diversos projetos open-source utilizam o Aeroscapes como base para estudos em segmentação de cenas urbanas e rurais vistas de drones. Exemplos incluem implementações de modelos em tempo real e pipelines de análise de imagens para navegação autônoma.