Guia Prático para o Dataset Aeroscapes de Segmentação Semântica em Imagens de Drone

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.

Tags: aeroscapes segmentação-semântica drone Pytorch u-net

Publicado em 6-21 22:29