Estou tentando detectar a área de atenção visual em uma determinada imagem e recortar a imagem nessa área. Por exemplo, dada uma imagem de qualquer tamanho e um retângulo com a dimensão LxW, como entrada, eu gostaria de recortar a imagem na área de atenção visual mais importante. Estou procurando uma abordagem de última geração para isso.
Temos alguma ferramenta ou SDK para implementar isso? Qualquer pedaço de código ou algoritmo realmente ajudaria.
Respostas:
Você pode procurar pelos seguintes títulos de papel:
Você pode codificar em python usando a estrutura Pytorch.
fonte
"Atenção" na rede neural (visual) é a área da imagem em que a rede pode encontrar o maior número de recursos para classificá-la com alta confiança.Com base na sua descrição, você está falando de "atenção suave".
Temos alguma ferramenta ou SDK para implementar isso? Eu não acho que existem SDKs já prontos disponíveis. É muito melhor treinar um modelo no seu conjunto de dados com atenção. Depois de ter seu modelo de base pronto, é fácil adicionar um mecanismo de atenção. Sugiro que você verifique https://arxiv.org/pdf/1502.03044.pdf .
fonte
Para que um computador detecte e forneça a caixa delimitadora ou circule em torno de uma área de atenção visual em uma imagem, a base da atenção deve ser determinada. Em seguida, o método de fazer o sistema de computador fazer escolhas com base nessa base pode ser selecionado. Primeiras coisas primeiro.
É um personagem de rosto, corpo ou jogo que deve ser objeto de interesse? Será o objeto mais dinâmico do quadro em termos de movimento? Se é uma pessoa, é sempre a mesma pessoa? Em ambos os casos, o rosto será exposto ao ângulo da câmera? Existem apenas fotos estáticas ou as imagens serão quadros em um filme?
Depois de saber como você distinguiria o objeto que requer atenção de outros objetos e plano de fundo, poderá começar a ver como um computador pode simular esse reconhecimento. Ao treinar uma rede profunda que envolve kernels de convolução (chamada CNN ou rede neural convolucional) e possivelmente células de memória de longo prazo (LSTM), há etapas para o reconhecimento.
Normalmente, as bordas das coisas são detectadas primeiro. Nos filmes, o movimento das bordas é rastreado como características da imagem. Os elementos na imagem que identificam que tipo de objeto os objetos são o segundo. Por exemplo, um brinquedo pode ser detectado pela maneira como o plástico reflete a luz e pelos tipos e formas de cores comuns aos brinquedos. Um rosto pode ser reconhecido pela identificação dos olhos, nariz, boca, queixo e orelhas.
Depois que as peças são identificadas, objetos inteiros podem ser identificados através de outro estágio de extração do recurso. Os sistemas de visão seguem os mesmos princípios básicos de reconhecimento que nosso sistema visual humano usa.
Existem muitas estruturas e bibliotecas para ajudar nessas tarefas, mas para usá-las, é importante obter uma imagem geral do processo e esclarecer o que é que define os objetos de importância de outros objetos que podem ser similares ou completamente diferente para que a atenção possa ser focada da maneira que você deseja.
Uma vez que você tenha(hmin,vmin);(hmax,vmax) , as coordenadas dos dois cantos da sua operação de corte, que seria o objetivo do seu treinamento em rede; qualquer biblioteca de manipulação de imagens poderá lidar com o corte.
Esse é o estado da arte. Não existe um SDK de alto nível que permita que o computador encontre o item mais importante no quadro sem qualquer esclarecimento sobre o significado disso e operações de treinamento para ensinar o software a encontrar o que você decidiu ser importante com base em alguns critérios. Ainda não.
fonte