Início
topics
Segmentação de imagens
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.
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.
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.
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”.
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).
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 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:
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:
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:
A segmentação de imagens tornou-se uma ferramenta essencial em uma variedade de campos.
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.
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.
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.