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?
fonte
Respostas:
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:
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.
fonte
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 como
cat
. 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.
fonte
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.
fonte