Segmentação Binária de Florestas Nativas com U-Net e ResNet34

Segmentação Binária de Florestas Nativas com U-Net e ResNet34

A inteligência artificial tem ampliado as possibilidades de análise de imagens, oferecendo ferramentas para a identificação, classificação e monitoramento da cobertura vegetal. Entre essas ferramentas, destacam-se as redes neurais convolucionais, especialmente as arquiteturas desenvolvidas para segmentação semântica de imagens.

Neste tutorial, apresentamos uma aplicação da arquitetura U-Net com encoder ResNet34 para a segmentação binária de florestas nativas. O objetivo é demonstrar como uma rede neural profunda pode ser treinada para identificar, em imagens previamente anotadas, os pixels correspondentes à vegetação classificada como floresta nativa.

O material inclui a implementação em Python, o treinamento do modelo, a avaliação dos resultados e a visualização das máscaras produzidas pela rede neural.

1. O que é segmentação binária?

A segmentação semântica é uma técnica de visão computacional que permite atribuir uma classe a cada pixel de uma imagem.

Diferentemente da classificação convencional, que atribui uma categoria à imagem inteira, a segmentação identifica quais regiões pertencem a cada classe de interesse.

Na segmentação binária, são consideradas apenas duas classes:

  • Classe 0 — Fundo: regiões que não correspondem à floresta nativa.
  • Classe 1 — Floresta nativa: pixels associados às áreas de vegetação identificadas como floresta nativa.

O resultado é uma máscara binária que representa espacialmente a distribuição da classe de interesse.

Essa abordagem pode contribuir para aplicações relacionadas ao mapeamento da cobertura vegetal, à identificação de fragmentos florestais e ao desenvolvimento de ferramentas de monitoramento ambiental.

2. Arquitetura U-Net com ResNet34

Neste exemplo, utilizamos a arquitetura U-Net, uma rede neural convolucional desenvolvida para tarefas de segmentação de imagens.

A U-Net apresenta uma estrutura composta por duas partes principais: um encoder, responsável pela extração de características, e um decoder, responsável pela reconstrução espacial das informações para produzir a máscara de segmentação.

No experimento, o encoder utilizado foi a ResNet34, uma rede convolucional de 34 camadas, com pesos previamente treinados no conjunto de imagens ImageNet.

Essa estratégia é conhecida como transfer learning (aprendizado por transferência). Ela permite aproveitar características visuais aprendidas anteriormente pela rede neural, adaptando-as à identificação de florestas nativas.

A implementação foi realizada utilizando a biblioteca segmentation_models_pytorch, integrada ao framework PyTorch.

3. Preparação das imagens

O conjunto de dados foi organizado a partir de imagens e máscaras de segmentação exportadas do Roboflow.

Cada imagem possui uma máscara correspondente, na qual os pixels são identificados com os valores 0 ou 1.

Foram utilizadas três subdivisões:

Conjunto Número de imagens
Treinamento 10
Validação 3
Teste 2
Total 15

Antes do treinamento, as imagens e máscaras foram redimensionadas para 512 × 512 pixels.

Também foram aplicadas técnicas de aumento artificial de dados (data augmentation), incluindo inversões horizontais, inversões verticais e rotações de 90 graus.

Essas transformações foram aplicadas simultaneamente às imagens e às máscaras para preservar a correspondência espacial entre elas.

As imagens também foram normalizadas utilizando os parâmetros do ImageNet, compatíveis com o encoder pré-treinado.

4. Treinamento da rede neural

O modelo foi configurado para produzir uma única máscara de saída, correspondente à probabilidade de cada pixel pertencer à classe floresta nativa.

Os principais parâmetros utilizados foram:

Parâmetro Configuração
Arquitetura U-Net
Encoder ResNet34
Pesos iniciais ImageNet
Dimensão das imagens 512 × 512 pixels
Épocas 50
Tamanho do lote (batch size) 2
Taxa de aprendizagem 0,0001
Otimizador Adam
Função de perda BCEWithLogitsLoss
Métrica de avaliação Intersection over Union (IoU)

Durante o treinamento, a função de perda foi utilizada para orientar a atualização dos pesos da rede neural.

A métrica Intersection over Union (IoU) foi empregada para avaliar a concordância espacial entre as máscaras produzidas pelo modelo e as máscaras de referência.

O melhor modelo foi salvo automaticamente de acordo com o maior valor de IoU obtido no conjunto de validação.

5. Resultados obtidos

Após as 50 épocas de treinamento, o modelo apresentou os seguintes resultados:

Indicador Resultado
Melhor IoU de validação 0,8130
IoU no conjunto de teste 0,8294
Função de perda no teste 0,2019

A IoU mede a razão entre a área de interseção e a área de união das máscaras prevista e de referência.

No conjunto de teste, o modelo alcançou uma IoU média de aproximadamente 82,94%, indicando concordância espacial entre as máscaras preditas e as máscaras de referência nas imagens avaliadas.

Além das métricas quantitativas, o código permite comparar visualmente três elementos: a imagem original, a máscara de referência e a máscara predita pela rede neural.

É importante destacar que este exemplo possui finalidade didática e utiliza um conjunto reduzido de imagens. Portanto, os resultados não devem ser interpretados como evidência suficiente da capacidade de generalização do modelo para diferentes regiões, condições ambientais ou tipos de vegetação.

6. Código-fonte do treinamento

O código completo foi desenvolvido em Python, utilizando PyTorch e outras bibliotecas de visão computacional.

O notebook apresenta as etapas de preparação dos dados, construção da arquitetura, treinamento, avaliação e visualização das predições.

Acesse o código completo:

https://github.com/LinikerF/Segmenta-o-Bin-ria-na-Identifica-o-de-Florestas-Nativas

7. Aula gravada — Segmentação Binária com U-Net

Na aula em vídeo, apresentamos os principais conceitos envolvidos na segmentação binária de imagens, a arquitetura U-Net e sua aplicação na identificação de florestas nativas.

Também demonstramos a implementação do código, a configuração dos parâmetros de treinamento e a interpretação dos resultados.

Assista à aula completa abaixo.

8. Considerações finais

A utilização da arquitetura U-Net com encoder ResNet34 demonstrou, neste experimento, a possibilidade de aplicar técnicas de aprendizado profundo à segmentação binária de florestas nativas.

O uso de aprendizado por transferência, aliado às técnicas de aumento artificial de dados, permitiu desenvolver um exemplo funcional de treinamento e avaliação com um conjunto reduzido de imagens.

Embora os resultados sejam promissores para fins didáticos, aplicações voltadas ao mapeamento operacional de florestas nativas exigem conjuntos de dados mais representativos e validações independentes.

O notebook disponibilizado neste tutorial pode servir como ponto de partida para outras aplicações da segmentação semântica na Engenharia Florestal, no sensoriamento remoto e nas Ciências Agrárias.

Bibliotecas utilizadas

  • Python
  • PyTorch e Torchvision
  • Segmentation Models PyTorch
  • Albumentations
  • OpenCV
  • NumPy
  • Matplotlib
  • tqdm

Data Science Agrárias — Ciência de Dados, Inteligência Artificial e suas aplicações nas Ciências Agrárias.

Write a comment