Pesquisar fontes: “Classificadores em cascata” – notícias – jornais – livros – estudiosos – JSTOR (Junho 2019) (Aprenda como e quando remover esta mensagem modelo)
Escala e rotaçõesEditar
Vê-se desta descrição que o classificador não aceitará rostos que estejam de cabeça para baixo (as sobrancelhas não estão numa posição correcta) ou o lado do rosto (o nariz não está mais no centro, e podem faltar sombras no lado do nariz). Os classificadores em cascata separados têm de ser treinados para cada rotação que não esteja no plano da imagem (lado da face) e terão de ser re-treinados ou rodados para cada rotação que esteja no plano da imagem (face virada de cabeça para baixo ou inclinada para o lado). A escala não é um problema, uma vez que as características podem ser escaladas (centropixel, esquerdapixels e direitapixels têm uma dimensão apenas em relação ao retângulo examinado). Em cascatas recentes, o valor de pixel de alguma parte de um retângulo comparado a outro foi substituído por wavelets Haar.
Propriedades do estágioEditar
Para ter um bom desempenho geral, os seguintes critérios devem ser cumpridos:
- Cada estágio deve validar todas as faces, e pode produzir muitos falsos positivos. Por exemplo, se o estágio 1 marcar como ‘não contém uma face’ 20% dos retângulos contendo uma face (taxa de falsos negativos=20%), então o desempenho total da cadeia não pode ser superior a 80% de verdadeiros positivos, sejam quais forem os próximos estágios, já que 20% das faces já foram rejeitadas.
- Isso sugere que um bom estágio deve ter 100% de verdadeiros positivos e por exemplo 40% de falsos positivos, ou seja, aceitar todos os retângulos contendo faces e marcar erroneamente muitos retângulos como potencialmente contendo uma face, para ser eliminado por estágios posteriores. Para um primeiro estágio, 100% verdadeiro positivo e 40% falso positivo ainda dá muito falso negativo, se apenas 1 em 1000 retângulos de uma imagem contém uma face, ainda haverá 400 a 1 faces possíveis após o primeiro estágio.
- Se o primeiro estágio for muito rápido (algumas operações), eliminamos 60% dos retângulos que não contêm uma face muito rapidamente.
O procedimento de treinamento para uma etapa é, portanto, ter muitos alunos fracos (simples operadores de diferença de pixels), treiná-los como um grupo (aumentar o seu peso se eles derem o resultado correto), mas estar ciente de ter apenas alguns poucos alunos fracos ativos para que o tempo de computação permaneça baixo.
O primeiro detector de Viola & Jones tinha 38 etapas, com 1 característica na primeira etapa, depois 10, 25, 25, 50 nas cinco etapas seguintes, para um total de 6000 características. Os primeiros estágios removem os retângulos indesejados rapidamente para evitar o pagamento dos custos computacionais dos próximos estágios, de modo que o tempo computacional é gasto analisando profundamente a parte da imagem que tem uma alta probabilidade de conter o objeto.
Treinamento em cascataEditar
Cascades são geralmente feitas através do ADAboost consciente do custo. O limiar de sensibilidade (0,8 no nosso exemplo) pode ser ajustado para que haja perto de 100% de verdadeiros positivos e alguns falsos positivos. O procedimento pode então ser iniciado novamente para o estágio 2, até que o tempo de precisão/computação desejado seja alcançado.
Após o algoritmo inicial, foi entendido que o treinamento da cascata como um todo pode ser otimizado, para alcançar uma taxa de detecção verdadeira desejada com o mínimo de complexidade. Exemplos destes algoritmos são RCBoost, ECBoost ou RCECBoost. Nas suas versões mais básicas, podem ser entendidos como a escolha, em cada etapa, entre adicionar uma etapa ou adicionar um aprendiz fraco a uma etapa anterior, o que for menos dispendioso, até que a precisão desejada tenha sido alcançada. Cada etapa do classificador não pode ter uma taxa de detecção (sensibilidade) abaixo da taxa desejada, portanto, este é um problema de otimização restrito. Para ser preciso, a sensibilidade total será o produto da sensibilidade do estágio.
Cascade classificadores estão disponíveis no OpenCV, com cascatas pré-treinadas para faces frontais e parte superior do corpo. O treinamento de uma nova cascata em OpenCV também é possível com os métodos haar_training ou train_cascades. Isto pode ser usado para detecção rápida de objectos mais específicos, incluindo objectos não humanos com características semelhantes a Haar. O processo requer dois conjuntos de amostras: negativa e positiva, onde as amostras negativas correspondem a imagens arbitrárias não objectivas. A restrição de tempo no treinamento de um classificador em cascata pode ser contornada usando métodos de computação em nuvem.