Sensibilidade da Escala de Rede Neural Convolucional


11

Por uma questão de exemplo, vamos supor que estamos construindo um estimador de idade, com base na imagem de uma pessoa. Abaixo, temos duas pessoas de terno, mas a primeira é claramente mais nova que a segunda.


(fonte: tinytux.com )

Existem muitos recursos que implicam isso, por exemplo, a estrutura da face. No entanto, o recurso mais revelador é a proporção entre o tamanho da cabeça e o tamanho do corpo :


(fonte: wikimedia.org )

Então, suponha que tenhamos treinado uma regressão da CNN para prever a idade da pessoa. Em muitos dos preditores de idade que eu tentei, a imagem acima do garoto parece enganar as previsões para pensar que ele é mais velho, por causa do processo e provavelmente porque elas dependem principalmente do rosto:

Eu estou querendo saber o quão bem uma arquitetura CNN de baunilha pode inferir a proporção da cabeça ao tronco?

Comparada a uma RCNN regional, capaz de colocar caixas delimitadoras no corpo e na cabeça, a CNN de baunilha sempre terá um desempenho pior?

Pouco antes do achatamento global na CNN de baunilha (ou seja, logo após todas as convoluções), cada saída tem um campo receptivo correspondente, que deve ter um senso de escala. Eu sei que o RCNN mais rápido explora isso fazendo propostas de caixas delimitadoras exatamente nesse estágio, para que todos os filtros convolucionais anteriores treinem automaticamente para todas as escalas.

Então, eu acho que a CNN de baunilha deve ser capaz de inferir a proporção entre o tamanho da cabeça e o tronco? Isto está certo? Em caso afirmativo, é o único benefício de usar uma estrutura RCNN mais rápida para explorar o fato de que pode ter sido pré-treinado em detectar pessoas?


1
Você sabe onde exatamente o seu recongnizer de idade falha? Por que você acha que é a proporção do tamanho da cabeça? Você olhou para a saída das camadas intermediárias?
Aksakal

@ Aksakal Eu não acho que ele experimentou o treinamento de uma CNN. Pelo que entendi, ele está fazendo testes com os serviços da web existentes: "Em muitos preditores de idade que eu tentei [..]".
DeltaIV

Respostas:


8

Em primeiro lugar, obrigado por postar uma pergunta muito interessante.

Para respondê-lo em breve, uma baunilha convnet treinada de ponta a ponta para prever a idade de uma foto geralmente estará sujeita a classificar incorretamente imagens como a que você postou . Em segundo lugar, observe que estimar com precisão a idade de uma pessoa é uma tarefa quase impossível 1 .

A principal diferença de sua abordagem proposta usando alguns detectores de objetos (RCNN, RCNN mais rápido, YOLO ou SSD) é que você está usando informações diferentes para treinar os modelos. A CNN é treinada apenas em imagens e precisa descobrir todos os recursos necessários. É provável que encontre várias características faciais, mas também dependerá de roupas e talvez de cenas (as crianças podem estar frequentemente na imagem com alguns brinquedos, os adultos são mais propensos a ambientes de escritório etc.). Esses recursos não serão robustos para o seu contra-exemplo.

Por outro lado, se você treinar a rede para detectar explicitamente objetos como "tronco" e "cabeça", estará fornecendo informações extras de que esses objetos são importantes para a tarefa e, assim, simplificam o problema 2 .

Embora a abordagem de detectar a cabeça e o tronco e depois avaliar a proporção de tamanho das caixas delimitadoras pareça interessante, vejo vários obstáculos:

  1. Obtenção de dados: Não estou ciente da disponibilidade de um grande conjunto de dados em que caixas etárias e delimitadoras estejam presentes.
  2. FOV imperfeito: na maioria das imagens (por exemplo, nos dois exemplos), as pessoas não são exibidas por inteiro. Você teria que lidar com o fato de que as caixas delimitadoras do tronco nem sempre seriam perfeitas simplesmente porque parte da pessoa não está na imagem e a rede teria que adivinhar qual a parte que faltava (e as caixas delimitadoras da verdade no solo provavelmente não capturará essas informações). Além disso, os detectores de objetos mencionados acima nem sempre lidam adequadamente com as previsões de objetos parciais. Isso pode apresentar muito ruído no modelo.
  3. Várias poses: a proporção tronco-cabeça seria muito diferente para as pessoas vistas de frente e de lado.
  4. Adultos: parece que a proporção funciona bem para prever idades entre 0 e 21 anos, mas não vejo como isso ajudaria a prever a idade dos adultos (suponho que a proporção não mude em idades mais avançadas).

Todos esses problemas sugerem que a abordagem da relação cabeça-tronco também não funcionará perfeitamente, embora possa ser mais robusta para o seu contra-exemplo específico.

Eu acho que a melhor maneira de realizar essa tarefa seria: 1) detectar o rosto; 2) prever a idade apenas do corte facial (remove informações potencialmente enganosas). Observe que alguma arquitetura do tipo R-CNN usando ROI-pooling pode ser treinada para fazer isso de ponta a ponta.


1 Mesmo usando métodos médicos muito sofisticados (que são indiscutivelmente muito mais informativos do que uma foto da pessoa), isso não é possível com precisão. Veja este tópico do Quora para obter mais informações .

2 Verifique o artigo Knowledge Matters: Importance of Previous Information for Optimization para obter um exemplo de como fornecer algum conhecimento intermediário sobre a tarefa pode simplificar bastante o aprendizado.


8

As CNNs são uma classe de modelos muito grande para responder a essa pergunta. LeNet, AlexNet, ZFNet e VGG16 se comportarão de maneira muito diferente do GoogLeNet, que foi construído especificamente para fazer a maior parte do que o R-CNN faz, com uma arquitetura CNN (você pode conhecer o GoogLeNet com o nome de Inception, mesmo que estritamente falando seja Inception a unidade básica (sub-rede) na qual o GoogLeNet é construído). Finalmente, o ResNets se comportará de maneira diferente. E todas essas arquiteturas não foram construídas para classificar faixas etárias, mas as 1000 classes ImageNet, que não contêm faixas etárias para humanos. Pode-se usar o aprendizado por transferência(se você tiver imagens de treinamento suficientes) para treinar um dos modelos treinados amplamente disponíveis acima e ver o desempenho deles. Em geral, no entanto, especialmente as arquiteturas mais antigas (digamos até VGG16) têm dificuldade em aprender "recursos globais" que exigem aprender sobre "cabeça" (já um recurso complexo), "tronco" (outro recurso complexo) e seus recursos. relação (que também exige que os dois recursos estejam em uma certa relação espacial). Esse tipo de coisa é o que a Capsule Networks deveria ter sido capaz de fazer.

Convnets nasceram para fazer exatamente o oposto: serem sensíveis às características locais e relativamente insensíveis à sua posição / escala relativa. Um bom Convnet deve reconhecer "gato branco" se a foto é close-up ou americana. A combinação de camadas convolucionais (que são sensíveis aos recursos locais) com camadas de pool (que removem parte da sensibilidade à variação de escala ou tradução da imagem) fornece uma arquitetura que, em sua forma mais básica, não é boa para aprender o tipo de espaço espacial relacionamentos entre objetos que você está procurando. Havia um exemplo em algum lugar (mas não consigo mais encontrá-lo) em que, depois de dividir uma imagem de gato em vários blocos retangulares sem sobreposição e reuni-los em uma ordem aleatória, a CNN continuava identificando a imagem comocat. Isso indica que as CNNs são mais sensíveis às características locais (texturas ou algo parecido) do que à relação espacial entre as características de alto nível. Veja também o documento de redes Capsule para uma discussão sobre isso. Hinton também mostrou um exemplo disso em um vídeo sobre os limites dos convnets .

Meu palpite é que uma das arquiteturas recentes seria perfeitamente capaz (com dados suficientes) de discernir homens de crianças, mas não por causa de um "limiar" em uma relação métrica entre recursos de alto nível, como "cabeça" e "tronco". . Aprenderia alguma regularidade estatística, talvez completamente imperceptível aos seres humanos, que separa imagens de adultos de imagens de crianças no conjunto de treinamento.


Agradeço sua resposta, mas estou tendo problemas para concordar. As arquiteturas RCNN têm essencialmente a mesma estrutura de filtros que os convnets de objetos, por exemplo, VGG e Resnet. E como o RCNN pode detectar escala e posição relativa, segue-se que o VGG e o Resnet também devem ser capazes de detectar a escala. No entanto, as arquiteturas RCNN dependem de propostas de caixa, das quais eles fazem milhares por imagem, após o que cada proposta de caixa é avaliada. Parece que, se eu incorporar pelo menos algumas dessas propostas de caixa, uma CNN de baunilha deve detectar melhor a escala. Só não tenho certeza se é necessário fazê-lo.
Alex R.

RCNN não são CNN. Você não apenas perde a pesquisa seletiva para as caixas delimitadoras, mas também os estágios do SVM linear e do regressor da caixa delimitadora. Além disso, há uma grande diferença entre a capacidade de detectar a escala do AlexNet (que é a CNN usada no artigo RCNN original) ou VGG, e a capacidade do GoogLeNet ou ResNet: o GoogLeNet foi desenvolvido precisamente para fazer o que o RCNN faz. Acho que tanto o GoogLeNet quanto o ResNet poderiam classificar a idade, mas não há como saber se eles o fariam usando um recurso que faz sentido para nós (relação entre a cabeça e o tronco) ou encontrando algumas estatísticas 1 /
DeltaIV

2 / regularidades que um ser humano nunca notaria. Eu sugiro que você experimente e tente, mas, infelizmente, apenas criar o banco de dados de imagens seria um projeto de pesquisa em si (a menos que você trabalhe em uma empresa de moda).
DeltaIV 12/02/19

1
Minhas desculpas pela confusão. Eu sei que existem 20 arquiteturas RCNN diferentes por aí, cada uma alegando que as outras são obsoletas.
12138 Alex R. Alex

1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat Além disso, uma questão diferente, mas ainda relacionada à correspondência de texturas, e de pesquisadores mais respeitados, arxiv.org/pdf/ 1703.06857
DeltaIV 17/18

0

Bem, tudo depende de como seu conjunto de dados é construído. Pela minha experiência, as redes neurais tendem a buscar explicações mais simples. E deduzir a idade da roupa é realmente mais simples do que usar a proporção de cabeça para corpo. Se você pode expandir seu conjunto de dados, tendo isso em mente, a CNN deve funcionar conforme o esperado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.