thumb|476x476px|Uma vista do forte de Marburg (Alemanha) e o mapa de saliência da imagem usando cor, intensidade e orientação.
Em visão computacional, um mapa de saliência é uma imagem que destaca a região na qual os olhos das pessoas focam primeiro ou as regiões mais relevantes para modelos de aprendizado de máquina. O objetivo de um mapa de saliência é refletir o grau de importância de um pixel para o sistema visual humano ou para um modelo de ML opaco.
Por exemplo, nesta imagem, uma pessoa olha primeiro para o forte e para as nuvens claras, então eles devem ser destacados no mapa de saliência.
Aplicação
Visão geral Mapas de saliência têm aplicações em uma variedade de problemas diferentes. Algumas aplicações gerais:
Olho humano Compressão de imagem e vídeo: O olho humano foca apenas em uma pequena região de interesse no quadro. Portanto, não é necessário comprimir todo o quadro com qualidade uniforme. De acordo com os autores, o uso de um mapa de saliência reduz o tamanho final do vídeo com a mesma percepção visual. Avaliação de qualidade de imagem e vídeo: A principal tarefa para uma métrica de qualidade de imagem ou vídeo é uma alta correlação com as opiniões dos usuários. As diferenças em regiões salientes recebem mais importância e, assim, contribuem mais para a pontuação de qualidade. Redimensionamento de imagem: Visa redimensionar uma imagem expandindo ou encolhendo as regiões não informativas. Portanto, os algoritmos de redimensionamento dependem da disponibilidade de mapas de saliência que estimam com precisão todos os detalhes salientes da imagem. Detecção de objetos e reconhecimento: Em vez de aplicar um algoritmo computacionalmente complexo a toda a imagem, podemos usá-lo nas regiões mais salientes de uma imagem com maior probabilidade de conter um objeto. o córtex visual primário (V1) parece ser responsável pelo mapa de saliência, de acordo com a Hipótese de Saliência V1.
Inteligência artificial explicável Mapas de saliência são uma ferramenta proeminente em inteligência artificial explicável, fornecendo explicações visuais do processo de tomada de decisão de modelos de aprendizado de máquina, particularmente redes neurais profundas. Esses mapas destacam as regiões nos dados de entrada que são mais influentes na saída do modelo, indicando efetivamente onde o modelo está "olhando" ao fazer uma previsão. Em tarefas de classificação de imagens, por exemplo, mapas de saliência podem identificar pixels ou regiões que mais contribuem para uma decisão de classe específica. Desenvolvidas para redes neurais convolucionais, as técnicas de mapeamento de saliência variam desde simplesmente tomar o gradiente da pontuação da classe em relação aos dados de entrada até algoritmos mais complexos, como gradientes integrados e mapeamento de ativação de classe. Na arquitetura Transformer, os mecanismos de atenção levaram a mapas de saliência análogos, como mapas de atenção, rollouts de atenção, e mapas de atenção discriminativos de classe.
Saliência como um problema de segmentação A estimativa de saliência pode ser vista como um exemplo de segmentação de imagem. Em visão computacional, segmentação de imagem é o processo de particionar uma imagem digital em múltiplos segmentos (conjuntos de pixels, também conhecidos como superpixels). O objetivo da segmentação é simplificar e/ou alterar a representação de uma imagem em algo mais significativo e mais fácil de analisar. A segmentação de imagem é tipicamente usada para localizar objetos e limites (linhas, curvas, etc.) em imagens. Mais precisamente, a segmentação de imagem é o processo de atribuir um rótulo a cada pixel em uma imagem, de modo que pixels com o mesmo rótulo compartilhem certas características.
Algoritmos
Visão geral Existem três formas de algoritmos clássicos de estimativa de saliência implementados no OpenCV:
Saliência estática: Baseia-se em características e estatísticas da imagem para localizar as regiões de interesse de uma imagem. Saliência de movimento: Baseia-se no movimento em um vídeo, detectado por fluxo óptico. Objetos que se movem são considerados salientes. Objetualidade: A objetualidade reflete a probabilidade de uma janela de imagem cobrir um objeto. Esses algoritmos geram um conjunto de caixas delimitadoras de onde um objeto pode estar em uma imagem.
Além das abordagens clássicas, abordagens baseadas em redes neurais também são populares. Existem exemplos de redes neurais para estimativa de saliência de movimento:
TASED-Net: Consiste em dois blocos de construção. Primeiro, a rede codificadora extrai características espaço-temporais de baixa resolução, e então a rede de predição subsequente decodifica as características espacialmente codificadas enquanto agrega todas as informações temporais. STRA-Net: Enfatiza duas questões essenciais. Primeiro, características espaço-temporais integradas via acoplamento de aparência e fluxo óptico e, em seguida, saliência multiescala aprendida via mecanismo de atenção. STAViS: Combina informações visuais e auditivas espaço-temporais. Esta abordagem emprega uma única rede que aprende a localizar fontes sonoras e a fundir as duas saliências para obter um mapa de saliência final.
Há uma nova saliência estática na literatura com o nome de sensibilidade à distorção visual. É baseada na ideia de que as bordas verdadeiras, ou seja, contornos de objetos, são mais salientes do que outras regiões de textura complexa. Detecta bordas de uma maneira diferente dos algoritmos clássicos de detecção de bordas. Usa um limiar bastante pequeno para as magnitudes do gradiente para considerar a mera presença dos gradientes. Assim, obtém 4 mapas binários para as direções vertical, horizontal e duas diagonais. O fechamento e a abertura morfológicos são aplicados às imagens binárias para fechar as pequenas lacunas. Para limpar as formas semelhantes a manchas, utiliza a transformada de distância. Afinal, os grupos de pixels conectados são bordas individuais (ou contornos). Um limiar do tamanho do conjunto de pixels conectados é usado para determinar se um bloco de imagem contém uma borda perceptível (região saliente) ou não.
Exemplo de implementação Primeiro, devemos calcular a distância de cada pixel para o resto dos pixels no mesmo quadro:
é o valor do pixel , no intervalo de [0,255]. A seguinte equação é a forma expandida desta equação.
Onde N é o número total de pixels no quadro atual. Então podemos reestruturar ainda mais nossa fórmula. Colocamos o valor que tem o mesmo I junto.
Onde é a frequência de . E o valor de n pertence a [0,255]. As frequências são expressas na forma de histograma, e o tempo computacional do histograma é de complexidade de tempo .
Complexidade de tempo Este algoritmo de mapa de saliência tem complexidade de tempo . Uma vez que o tempo computacional do histograma é de complexidade de tempo , onde N é o número de pixels de um quadro. Além disso, a parte de subtração e a parte de multiplicação desta equação precisam de 256 operações. Consequentemente, a complexidade de tempo deste algoritmo é que é igual a .
Pseudocódigo Todo o código a seguir é pseudo MATLAB. Primeiro, leia os dados das sequências de vídeo. para k = 2 : 1 : 13 % o que significa do quadro 2 ao 13, e em cada loop o valor de K aumenta em um. I = imread(currentfilename); % lê o quadro atual I1 = im2single(I); % converte imagem dupla para single (requisito do comando vlslic) l = imread(previousfilename); % lê o quadro anterior I2 = im2single(l); regionSize = 10; % define o parâmetro do SLIC; esta configuração de parâmetro é o resultado experimental. regionSize significa o tamanho do superpixel. regularizer = 1; % define o parâmetro do SLIC segments1 = vl_slic(I1, regionSize, regularizer); % obtém o superpixel do quadro atual segments2 = vl_slic(I2, regionSize, regularizer); % obtém o superpixel do quadro anterior numsuppix = max(segments1(:)); % obtém o número de superpixels; todas as informações sobre superpixel estão neste link [http://www.vlfeat.org/overview/slic.html] regstats1 = regionprops(segments1, 'all'); regstats2 = regionprops(segments2, 'all'); % obtém a característica da região com base em segments1 Depois de ler os dados, fazemos o processo de superpixel para cada quadro. Spnum1 e Spnum2 representam o número de pixels do quadro atual e do quadro anterior.
% Primeiro, calculamos a distância do valor de cada pixel. % Este é o nosso código principal para i = 1:1:spnum1 % Do primeiro pixel ao último. E em cada loop i++ para j = 1:1:spnum2 % Do primeiro pixel ao último. j++. quadro anterior centredist(i:j) = sum((center(i) - center(j))); % calcula a distância do centro fim fim
Então calculamos a distância de cor de cada pixel, a este processo chamamos de função de contraste. para i = 1:1:spnum1 % Do primeiro pixel do quadro atual ao último pixel. i ++ para j = 1:1:spnum2 % Do primeiro pixel do quadro anterior ao último pixel. j++ posdiff(i, j) = sum((regstats1(j).Centroid' - mupwtd(:, i))); % Calcula a distância da cor. fim fim Após esses dois processos, obteremos um mapa de saliência e, em seguida, armazenaremos todos esses mapas em um novo FileFolder.
Diferença nos algoritmos A principal diferença entre a função um e dois é a diferença da função de contraste. Se spnum1 e spnum2 representam ambos o número de pixels do quadro atual, então esta função de contraste é para a primeira função de saliência. Se spnum1 é o número de pixels do quadro atual e spnum2 representa o número de pixels do quadro anterior, então esta função de contraste é para a segunda função de saliência. Se usarmos a segunda função de contraste que usa os pixels do mesmo quadro para obter a distância do centro para obter um mapa de saliência, então aplicamos esta função de saliência a cada quadro e usamos o mapa de saliência do quadro atual menos o mapa de saliência do quadro anterior para obter uma nova imagem que é o novo resultado de saliência da terceira função de saliência.
thumb|Resultado de saliência
Conjuntos de dados O conjunto de dados de saliência geralmente contém movimentos oculares humanos em algumas sequências de imagem. É valioso para a criação de novos algoritmos de saliência ou para a avaliação comparativa de um existente. Os parâmetros mais valiosos do conjunto de dados são resolução espacial, tamanho e equipamento de rastreamento ocular. Aqui está parte da tabela de grandes conjuntos de dados do MIT/Tübingen Saliency Benchmark datasets, por exemplo. +Conjuntos de dados de saliênciaConjunto de dadosResoluçãoTamanhoObservadoresDuraçõesRastreador ocularCAT20001920×1080px4000 imagens245 segEyeLink 1000 (1000 Hz)EyeTrackUAV21280×720px43 vídeos3033 segEyeLink 1000 Plus (1000 Hz, binocular)CrowdFix1280×720px434 vídeos261–3 segThe Eyetribe Eyetracker (60 Hz)SAVAM1920×1080px43 vídeos5020 segSMI iViewXTM Hi-Speed 1250 (500 Hz)
Para coletar um conjunto de dados de saliência, sequências de imagem ou vídeo e equipamento de rastreamento ocular devem ser preparados, e observadores devem ser convidados. Os observadores devem ter visão normal ou corrigida para normal e devem estar à mesma distância da tela. No início de cada sessão de gravação, o rastreador ocular recalibra. Para fazer isso, o observador fixa o olhar no centro da tela. A sessão é então iniciada, e os dados de saliência são coletados mostrando sequências e gravando os olhares.
O dispositivo de rastreamento ocular é uma câmera de alta velocidade, capaz de gravar movimentos oculares a pelo menos 250 quadros por segundo. As imagens da câmera são processadas pelo software, executado em um computador dedicado que retorna os dados do olhar.
Ver também Segmentação de imagem Saliência (neurociência) Transformer (aprendizado profundo)
Referências
Ligações externas
VLfeat: https://www.vlfeat.org/ Mapa de saliência na Scholarpedia
Categoria:Visão computacional Categoria:Processamento de imagens