Os modelos de segmenation semântica criam um mapa de segmentação de uma imagem de entrada. Um mapa de segmentação é, essencialmente, uma reconstrução da imagem original em que cada pixel foi codificado por sua classe semântica para criar máscaras de segmentação. Uma máscara de segmentação é apenas uma parte da imagem que foi diferenciada de outras regiões da imagem. Por exemplo, um mapa de segmentação de uma árvore em um campo vazio provavelmente conteria três máscaras de segmentação: uma para a árvore, uma para o solo e uma para o céu em segundo plano.
Para isso, os modelos de segmentação semântica usam redes neurais complexas para agrupar com precisão pixels relacionados em máscaras de segmentação e reconhecer corretamente a classe semântica do mundo real para cada grupo de pixels (ou segmento). Esses métodos de deep learning (DL) exigem que um modelo seja treinado em grandes conjuntos de dados rotulados previamente e anotados por especialistas humanos, ajustando seus pesos e vieses por meio de técnicas de aprendizado de máquina, como retropropagação e gradiente descendente.
Os métodos de DL substituíram outros algoritmos de aprendizado de máquina "tradicionais", como Support Vector Machines (SVM) e Random Forest. Embora as redes neurais profundas exijam mais tempo, dados e recursos computacionais para serem treinadas, superam outros métodos e tornaram-se rapidamente a abordagem escolhida depois que as primeiras inovações se mostraram bem-sucedidas.
Uso de conjuntos de dados para treinamento
A tarefa de classificar os dados da imagem com precisão exige conjuntos de dados que consistam em valores de pixels que representem máscaras para diversos objetos ou rótulos de classe contidos em uma imagem. Normalmente, devido à complexidade dos dados de treinamento envolvidos na segmentação de imagens, esses tipos de conjuntos de dados são maiores e mais complexos do que outros conjuntos de dados de aprendizado de máquina.
Há muitos conjuntos de dados de segmentação de imagem de código aberto, abrangendo uma grande variedade de classes semânticas com milhares de exemplos e anotações detalhadas para cada uma. Por exemplo, imagine um problema de segmentação em que a visão computacional em um carro sem motorista esteja sendo ensinada a reconhecer todos os vários objetos que ele precisará travar, como pedestres, bicicletas e outros carros. A visão computacional do carro deve ser treinada para reconhecer todos eles de maneira uniforme, ou então nem sempre pode dizer ao carro para frear. Seu treinamento também deve ser extremamente preciso, sob pena de frear constantemente depois de classificar incorretamente imagens inócuas como objetos de preocupação.
Veja a seguir alguns dos conjuntos de dados de código aberto mais populares utilizados na segmentação semântica e de imagens:
Classes de Objetos Visuais do Pascal (Pascal VOC): o conjunto de dados de Pascal VOC consiste em muitas classes de objetos diferentes, caixas delimitadoras e mapas de segmentação robustos.
MS COCO: O MS COCO contém cerca de 330 mil imagens e anotações para muitas tarefas, incluindo detecção, segmentação e legendagem de imagens.
Cityscapes: o popular conjunto de dados cityscapes interpreta dados de ambientes urbanos e é composto por 5 mil imagens com 20 mil anotações e 30 rótulos de classe.
Modelos de segmentação semântica
Os modelos treinados exigem uma arquitetura robusta para funcionar corretamente. Aqui estão alguns modelos de segmentação semântica amplamente utilizados.
Redes totalmente convolucionais (FCNs)
Uma rede totalmente convolucional (FCN) é uma arquitetura de rede neural de última geração utilizada na segmentação semântica que depende de várias camadas convolucionais conectadas. Enquanto a arquitetura CNN tradicional é composta por camadas convolucionais e camadas planas que produzem rótulos únicos, os modelos FCN substituem algumas dessas camadas planas por blocos convolucionais 1:1 capazes de extrair ainda mais informações sobre a imagem. Evitar o uso de camadas planas e mais densas em favor de camadas de convolução, agrupamento ou aumento de amostragem torna as redes FCN mais fáceis de treinar.
- Upsampling e downsampling: à medida que a rede reúne camadas mais convolucionais, o tamanho da imagem é reduzido, resultando em menos informações espaciais, assim como informações em nível de pixel, um processo necessário conhecido como downsampling. No final desse processo, os engenheiros de dados executam a otimização da imagem expandindo ou ampliando o mapa de feição criado de acordo com a forma da imagem de entrada.
- Max-pooling: O Max-pooling é outra ferramenta essencial no processo de extração e análise de informações de regiões de uma imagem. O Max-pooling escolhe o maior elemento de uma região que estiver sendo analisada para que sua saída resulte em um mapa de recursos contendo os recursos mais proeminentes do mapa de recursos anterior.
Redes U
A arquitetura de rede tipo U é uma modificação da arquitetura original da FCN introduzida em 2015 e sempre alcança resultados melhores. Consiste em duas partes, um codificador e um decodificador. Enquanto o codificador empilha camadas convolucionais que estão constantemente reduzindo a amostragem da imagem para extrair informações dela, o decodificador reconstrói os recursos da imagem usando o processo de deconvolução. A arquitetura de rede U é utilizada principalmente no campo médico para identificar tumores cancerosos e não cancerosos nos pulmões e no cérebro.
- Conexões de salto: Uma inovação importante introduzida nos FCNs pela U-Net é conhecida como conexões de salto, usadas para conectar a saída de uma camada convolucional a outra que não seja adjacente. Esse processo de saltar conexões reduz a perda de dados durante a redução da resolução e permite uma saída de alta resolução. Cada camada convolucional é ampliada e combinada de forma independente com feições de outras camadas até que a saída final represente precisamente a imagem que está sendo analisada.
DeepLab
O modelo de segmentação semântica da DeepLab foi desenvolvido pelo Google em 2015 para melhorar ainda mais a arquitetura da FCN original e entregar resultados ainda mais precisos. Enquanto as pilhas de camadas em um modelo FCN reduzem consideravelmente a resolução da imagem, a arquitetura do DeepLab utiliza um processo chamado convolução dilatada (ou "atrous") para aumentar a amostra dos dados. Com o processo de convolução dilatada, os kernels de convolução podem remover informações de uma imagem e deixar lacunas entre os parâmetros do kernel.
A abordagem do DeepLab para convolução dilatada extrai dados do campo de visão maior, mantendo a mesma resolução. O espaço de recurso é então puxado por meio de um algoritmo de campo aleatório condicional (CRF) totalmente conectado para que possam ser capturados e utilizados mais detalhes para a função de perda de pixels, resultando em uma máscara de segmentação mais clara e precisa.
Rede de Análise de Cena Pirâmide (PSPNet)
Em 2017, foi introduzido um novo algoritmo de segmentação em segmentação de imagem. O PSPNet implementa um módulo de análise de pirâmide que reúne conjuntos de dados de imagens contextuais com uma taxa de precisão maior do que a dos seus antecessores. Como seus antecessores, a arquitetura PSPNet emprega a abordagem do codificador de codificação, mas onde a DeepLab aplicou upscaling para fazer seus cálculos em nível de pixel, a PSPNet adiciona uma nova camada de agrupamento de pirâmide para alcançar seus resultados. O agrupamento multiescala do PSPNet permite analisar uma janela de informações de imagem mais ampla do que outros modelos.