O que é segmentação de imagem?
Descubra o IBM Maximo Visual Inspection
Um gráfico de design de caixas 3D

A segmentação de imagem é uma técnica de computer vision que divide uma imagem digital em grupos discretos de pixels, segmentos de imagem, para informar a detecção de objetos e tarefas relacionadas. Ao analisar os dados visuais complexos de uma imagem em segmentos de formatos específicos, a segmentação de imagens permite um processamento de imagens mais rápido e avançado.

As técnicas de segmentação de imagens vão desde a análise heurística simples e intuitiva até a implementação de ponta do deep learning. Os algoritmos convencionais de segmentação de imagem processam recursos visuais de alto nível de cada pixel, como cor ou brilho, para identificar limites de objeto e regiões de plano de fundo. O aprendizado de máquina, aproveitando conjuntos de dados anotados, é usado para treinar modelos para classificar com precisão os tipos específicos de objetos e regiões que uma imagem contém.

Sendo um método altamente versátil e prático de computer vision, a segmentação de imagens tem uma ampla variedade de casos de uso em inteligência artificial, desde auxiliar no diagnóstico em imagens médicas até automatizar a locomoção para robótica e carros autônomos, identificando objetos de interesse em imagens de satélite.

Conteúdo relacionado

Assine a newsletter da IBM

Segmentação de imagens vs. detecção de objetos vs. classificação de imagens

A segmentação de imagens representa uma evolução avançada da classificação de imagens e detecção de objetos, bem como um conjunto distinto de recursos únicos de computer vision.

A classificação de imagem aplica um rótulo de classe a uma imagem inteira. Por exemplo, um modelo de classificação de imagem simples pode ser treinado para categorizar imagens do veículo como "carro" ou "caminhão". Os sistemas de classificação de imagens convencionais são limitados em sofisticação, pois não processam separadamente as características individuais das imagens.

Detecção de objetos combina a classificação de imagem com localização de objetos, gerando regiões retangulares, chamadas de "caixas delimitadoras", em que os objetos estão localizados: em vez de apenas rotular uma imagem de veículo como "carro" ou "caminhão", um modelo de detecção de objetos pode indicar onde na imagem o(s) carro(s) ou caminhão(ões) podem ser encontrados. Embora a detecção de objetos possa classificar vários elementos dentro de uma imagem e aproximar a largura e altura de cada elemento, ela não pode discernir limites ou formas precisas. Isso limita a capacidade dos modelos de detecção de objetos convencionais de delinear objetos unidos de perto com caixas delimitadoras sobrepostas.

Segmentação de imagem processa dados visuais no nível de pixel, usando várias técnicas para anotar pixels individuais como pertencentes a uma classe ou instância específica. Técnicas de segmentação de imagem "clássicas" determinam anotações por meio da análise de qualidades inerentes de cada pixel (chamadas "heurística"), como cor e intensidade, enquanto modelos de deep learning empregam neural networks complexas para reconhecimento sofisticado de padrões. Os resultados desta anotação são máscaras de segmentação, representando o limite de pixel a pixel específico e a forma de cada classe, normalmente correspondendo a diferentes objetos, feições ou regiões, na imagem. 

Em termos gerais, a segmentação de imagem é usada para três tipos de tarefas: segmentação semântica, segmentação de instância e segmentação panótica.

Classes semânticas: "objetos" e "elementos do ambiente"

A diferença entre cada tipo de tarefa de segmentação de imagem reside na forma como tratam classes semânticas: as categorias específicas às quais um determinado pixel pode ser determinado pertencer.

No jargão da computer vision, existem dois tipos de classes semânticas. Cada um se presta a diferentes técnicas para segmentação precisa e eficaz.

Objetos são classes de objetos com formas características, como "carro" ou "árvore" ou "pessoa". Normalmente, os objetos têm instâncias claramente definidas que são contáveis. Eles têm relativamente pouca variação de tamanho de uma instância para outra, bem como partes constituintes distintas do objeto em si: por exemplo, todos os carros têm rodas, mas uma roda não é um carro.

Elementos do ambiente refere-se a classes semânticas que são amorfas e altamente variáveis em tamanho, como "céu" ou "água" ou "grama". Normalmente, os elementos do ambiente não têm instâncias individuais contáveis e claramente definidas. Ao contrário dos objetos, os elementos do ambiente não têm partes distintas: uma lâmina de grama e campo de grama são ambas igualmente "grama".

Algumas turmas, sob certas condições de imagem, podem ser objetos ou elementos do ambiente. Por exemplo, um grande grupo de pessoas pode ser interpretado como várias "pessoas", cada uma delas sendo um objetos distinto e contável ou uma "multidão" singular, amorfa.

Embora a maioria dos esforços de detecção de objetos se concentre principalmente em classes de objetos, é importante considerar que elementos como céu, paredes, pisos e solo compõem a maioria do nosso contexto visual. Os elementos do ambiente são pontos de dados essenciais para identificar objetos, e vice-versa: um objeto metálico na estrada geralmente é um carro; o fundo azul atrás de um barco provavelmente é água, enquanto o fundo azul atrás de um avião provavelmente é céu. Isto é de particular importância para modelos de deep learning.

Segmentação semântica

A segmentação semântica é o tipo mais simples de segmentação de imagem. Um modelo de segmentação semântica atribui uma classe semântica a cada pixel, mas não produz qualquer outro contexto ou informação (como objetos).

A segmentação semântica trata todos os pixels como elementos do ambiente; ela não diferencia entre elementos do ambiente e objetos.

Por exemplo, um modelo de segmentação semântica treinado para identificar certas classes em uma rua da cidade produziria máscaras de segmentação indicando as fronteiras e contornos para cada classe relevante de objetos (como veículos ou postes de luz) e elementos do ambiente (como estradas e calçadas), mas não faria qualquer distinção entre (ou contagem do número de) múltiplas instâncias da mesma classe. Por exemplo, carros estacionados um na frente do outro podem ser simplesmente tratados como um longo segmento de “carro”.

Segmentação de instâncias

A segmentação de instâncias inverte as prioridades da segmentação semântica: enquanto os algoritmos de segmentação semântica preveem apenas a classificação semântica de cada pixel (sem considerar instâncias individuais), a segmentação de instâncias delineia a forma exata de cada instância de objeto separadamente.

A segmentação por instância isola objetos de elementos do ambiente, que ignora e, portanto, pode ser entendida como uma forma evoluída de detecção de objetos que produz uma máscara de segmentação precisa em vez de uma caixa delimitadora aproximada.

É uma tarefa mais difícil do que a segmentação semântica: mesmo quando os objetos da mesma classe estão tocando ou mesmo se sobrepondo, os modelos de segmentação de instância devem ser capazes de separar e determinar a forma de cada um, enquanto os modelos de segmentação semântica podem simplesmente agrupá-los. Considere, por exemplo, como os dois modelos diferentes tratam os veículos estacionados nesta imagem de uma rua urbana.

Os algoritmos de segmentação de instância geralmente adotam uma abordagem de dois estágios ou de um tiro para o problema. Modelos de dois estágios, como redes neurais convencionais (R-CNNs) baseadas na região, realizam a detecção de objetos convencionais para gerar caixas delimitadoras para cada instância proposta e, em seguida, realizam uma segmentação e classificação mais refinadas dentro de cada caixa delimitadora. Modelos one-shot, como o YOLO (You Only Look Once), alcançam a segmentação de instâncias em tempo real ao realizar detecção de objetos, classificação e segmentação simultaneamente.

Abordagens de um disparo oferecem maior velocidade (com um tradeoff de precisão), enquanto abordagens de dois estágios oferecem maior precisão (com um tradeoff de velocidade).

Segmentação panóptica

Os modelos de segmentação panóptica determinam a classificação semântica de todos os pixels e diferenciam cada instância de objeto em uma imagem, combinando os benefícios da segmentação semântica e da instância.

Em uma tarefa de segmentação panótica, cada pixel deve ser anotado com um rótulo semântico e um "ID de instância". Os pixels que compartilham o mesmo rótulo e ID pertencem ao mesmo objeto; para pixels determinados como elementos do ambiente, o ID de instância é ignorado.

A segmentação panóptica, portanto, fornece aos sistemas de computer vision uma compreensão abrangente e holística de uma determinada imagem. Embora seu apelo seja óbvio, alcançar a segmentação panóptica de forma consistente e eficiente computacionalmente é um desafio imponente.

O desafio é unificar duas metodologias contraditórias: modelos de segmentação semântica tratam todos os pixels como elementos do ambiente, desconsiderando instâncias individuais de objetos; modelos de segmentação de instância isolam objetos individuais, ignorando elementos do ambiente. Nenhum tipo de modelo pode absorver adequadamente as responsabilidades do outro.

As tentativas iniciais de modelos de segmentação panótica simplesmente combinaram os dois modelos, realizando cada tarefa separadamente e, em seguida, combinando sua saída em uma fase de pós-processamento. Essa abordagem apresenta duas principais desvantagens: exige um grande esforço computacional e enfrenta dificuldades com as discrepâncias entre os pontos de dados de saída da rede de segmentação semântica e os pontos de dados de saída da rede de segmentação de instâncias.

Arquiteturas de segmentação panóptica mais recentes visam evitar essas desvantagens com uma abordagem mais unificada à deep learning. A maioria desses sistemas é construída sobre uma "rede principal", como uma rede de pirâmide de características (FPN), que extrai características da imagem de entrada, alimenta esses dados extraídos em ramos paralelos, como um "ramo de primeiro plano" e um "ramo de fundo", ou "cabeça semântica" e "cabeça de instância", e depois mescla a saída de cada ramo usando um sistema ponderado. Arquiteturas panópticas propostas incluem EfficientPS, OANet, PanopticFPN, UPSNet, SOGNet, BGRNet, AUNet, FPSNet e SpatialFlow.

Técnicas de segmentação de imagem tradicionais

Técnicas tradicionais de segmentação de imagem utilizam informações dos valores de cor de um pixel (e características relacionadas como brilho, contraste ou intensidade) para extração de características, e podem ser rapidamente treinadas com algoritmos simples de aprendizado de máquina para tarefas como classificação semântica.

Embora os métodos de segmentação baseados em deep learning sejam capazes de maior precisão e análise de imagem mais sofisticada especialmente em tarefas como segmentação panóptica que exigem uma grande quantidade de informações contextuais, métodos tradicionais são muito menos custosos e exigem menos recursos computacionais, podendo resolver certos problemas de forma mais eficiente.

As técnicas tradicionais comuns (ou "classic") de segmentação de imagens incluem:

  • Limite: os métodos de limite criam imagens binárias, classificando pixels com base na intensidade acima ou abaixo de um determinado "valor limite". O método de Otsu é frequentemente usado para determinar o valor limite que minimiza a variação intra-classe.
  • Histogramas: Os histogramas, que representam a frequência de determinados valores de pixel em uma imagem, são frequentemente usados para definir limites. Por exemplo, histogramas podem inferir os valores de pixels de plano de fundo, ajudando a isolar pixels de objeto.
  • Detecção edge: os métodos de detecção edge identificam os limites de objetos ou classes detectando descontinuidades de brilho ou contraste.
  • Bacias hidrográficas: os algoritmos de bacias hidrográficas transformam imagens em escala de cinza e, em seguida, geram um mapa topográfico no qual a “elevação” de cada pixel é determinada por seu brilho. Regiões, limites e objetos podem ser inferidos de onde se formam “vales”, “cordilheiras” e “bacias hidrográficas”.
  • Segmentação baseada na região: a partir de um ou mais "pixels médios", os algoritmos de crescimento da região agrupam pixels vizinhos com características semelhantes. Algoritmos podem ser aglomerativos ou divisivos.
  • Segmentação baseada em agrupamento: Um método de aprendizado não supervisionado, os algoritmos de clustering dividem os dados visuais em clusters de pixels com valores semelhantes. Uma variante comum é o agrupamento K-means, no qual k é o número de agrupamentos: os valores de pixel são plotados como pontos de dados e k pontos aleatórios são selecionados como centro de um agrupamento ("centroide"). Cada pixel é atribuído a um cluster com base no centroide mais próximo, ou seja, mais semelhante. Os centroides são então realocados para a média de cada cluster e o processo é repetido, realocando os centroides a cada iteração até que os clusters tenham se estabilizado. O processo é visualizado aqui (o link está fora do site ibm.com).
Modelos de segmentação de imagem de deep learning

Treinado em um conjunto de dados anotado de imagens, as redes neurais de modelos de segmentação de imagem de deep learning descobrem padrões subjacentes em dados visuais e discutem as características salientes mais relevantes para classificação, detecção e segmentação.

Apesar das compensações nos requisitos de computação e no tempo de treinamento, os modelos de deep learning superam consistentemente os modelos tradicionais e formam a base da maioria dos avanços contínuos em computer vision.

Modelos de deep learning proeminentes usados na segmentação de imagens incluem:

  • Redes totalmente convolucionais (FCNs): FCNs, frequentemente usados para segmentação semântica, são um tipo de rede neural convolucional (CNN) sem camadas fixas. Uma rede de codificadores passa dados de entrada visual através de camadas convolucionais para extrair feições relevantes para segmentação ou classificação, e comprime (ou amostras de baixo) estes dados de feição para remover informações não essenciais. Estes dados compactados são então alimentados em camadas de decodificador, ampliando os dados de feição extraídos para reconstruir a imagem de entrada com máscaras de segmentação.
  • U-Nets: as U-Nets modificam a arquitetura FCN para reduzir a perda de dados durante a análise com conexões de ramificação, preservando mais detalhes ao evitar seletivamente algumas camadas convolucionais à medida que as informações e gradientes se movem através da rede neural. Seu nome deriva do formato dos diagramas que demonstram a disposição de suas camadas.
  • Deeplab: como as U-Nets, o Deeplab é uma arquitetura FCN modificada. Além das conexões de salto, também utiliza convolução dilatada (ou "atrous") para gerar mapas de saída maiores sem exigir poder computacional adicional.
  • Mask R-CNN: Mask R-CNN são um modelo líder na segmentação por exemplo. As Mask R-CNNs combinam uma rede de proposta de região (RPN) que gera caixas delimitadoras para cada instância potencial com uma "estrutura de máscara" baseada em FCN que gera máscaras de segmentação dentro de cada caixa delimitadora confirmada.
Conjuntos de dados de treinamento para modelos de deep learning

Para não apenas mapear os limites dos segmentos de imagem, mas também prever quais dados ou coisas que cada segmento representa, os modelos de deep learning são treinados em grandes conjuntos de dados anotados para reconhecer classes semânticas específicas. Destas imagens pré-rotuladas, modelos de deep learning inferem os padrões e valores de pixel típicos de cada rótulo.

Tarefas diferentes exigem diferentes dados de treinamento: um sistema de computer vision para carros autônomos é treinado em imagens rotuladas com classes semânticas como "pessoa", "carro", "faixa" e "placa de pare", enquanto modelos de imagens médicas requerem otimização para reconhecer classes específicas de tecido físico, ou tumores e outras patologias.

A rotulação prévia dos conjuntos de dados de treinamento deve ser realizada cuidadosamente por especialistas humanos, o que pode ser uma tarefa extremamente trabalhosa. A maioria dos modelos de segmentação de imagem utiliza grandes conjuntos de dados de código aberto. Esses conjuntos de dados públicos também atuam como "verdade fundamental" ao avaliar o sucesso dos modelos treinados: as métricas de desempenho geralmente são expressas como a porcentagem de resultados que correspondem com precisão às anotações no conjunto de dados de treinamento.

Os conjuntos de dados de treinamento populares para modelos de segmentação de imagem de deep learning incluem:

  • COCO (Objetos Comuns em Contexto): um conjunto de dados de grande escala contendo mais de 330.000 imagens com segmentos anotados em 80 categorias de objetos e 91 categorias de elementos do ambiente.
  • ADE20K: um conjunto de dados de segmentação de cena criado pelo MIT contendo mais de 20.000 imagens com mais de 150 classes semânticas.
  • Paisagens urbanas: um conjunto de dados em larga escala focado nas ruas urbanas. Seus dados foram capturados em 50 cidades em vários horários do dia, épocas do ano e condições climáticas.
Casos de uso para segmentação de imagem

A segmentação de imagens tornou-se uma ferramenta essencial em uma variedade de campos.

  • Imagens médicas: a segmentação de imagem possui muitas aplicações em radiografia, imagens de ressonância magnética (MRI), ultrassons e tomografia computadorizada (CT), auxiliando em tarefas como detecção de tumores, segmentação cerebral, diagnóstico de doenças e planejamento cirúrgico.
  • Veículos autônomos: a segmentação de imagem permite que carros autônomos evitem obstáculos como pedestres e outros carros, além de identificar faixas e sinais de trânsito. É usado da mesma forma para informar a navegação em robótica.
  • Imagem de satélite: a segmentação semântica e de instância automatizam a identificação de diferentes terrenos e feições topográficas.
  • Cidades inteligentes: a segmentação de imagens alimenta tarefas como monitoramento e vigilância de tráfego em tempo real.
  • Fabricação: além de alimentar tarefas robóticas, a segmentação de imagens alimenta a classificação do produto e a detecção de defeitos.
  • Agricultura: a segmentação de imagens ajuda os agricultores a estimar os rendimentos das culturas e detectar ervas daninhas para remoção.
Soluções relacionadas
IBM Maximo Visual Inspection

Libere o poder da computer vision sem código para inspeção visual automatizada com um conjunto de ferramentas intuitivo para etiquetar, treinar e implementar modelos de visão de inteligência artificial.

Descubra o IBM Maximo Visual Inspection

Recursos de segmentação de imagem IBM Research: Computer Vision

Os sistemas modernos de computer vision têm precisão sobre-humana quando se trata de reconhecimento e análise de imagens, mas não entendem realmente o que veem. Na IBM Research, estamos projetando sistemas de IA com a capacidade de ver o mundo como nós.

Introdução à Computer Vision e Processamento de Imagens

Este curso para iniciantes ajuda você a entender a computer vision e suas várias aplicações em muitos setores. Como parte do curso, você utilizará Python, Pillow e OpenCV para processamento básico de imagens e realizar classificação de imagem e detecção de objetos.

Introdução ao IBM Maximo Visual Inspection

Comece a usar o IBM Maximo Visual Inspection para criar e treinar modelos baseados em inteligência artificial para inspecionar seus ativos e produtos, identificando defeitos que podem causar problemas de produção e qualidade.

Dê o próximo passo

Libere o potencial da visão computacional sem necessidade de programação para inspeção visual automatizada com o IBM Maximo Visual Inspection: uma ferramenta intuitiva para rotular, treinar e implementar modelos de visão artificial baseados em inteligência artificial.

Descubra o IBM Maximo Visual Inspection Saiba mais sobre a demo do MVI