Tive uma discussão interessante com base em um projeto em que estávamos trabalhando: por que usar um sistema de inspeção visual da CNN sobre um algoritmo de correspondência de modelos?
Antecedentes: eu tinha mostrado uma demonstração de um sistema simples de visão da CNN (webcam + laptop) que detectava se um determinado tipo de objeto estava "quebrado" / com defeito ou não - nesse caso, uma placa de circuito impresso. No meu modelo da CNN foram mostrados exemplos de placas de circuito apropriadas e quebradas (cerca de 100 imagens de cada) em um fundo estático. Nosso modelo usou as primeiras camadas conv / maxpool de VGG16 pré-treinado (na imagenet) e, em seguida, adicionamos mais convs / pools treináveis, com algumas densidades, levando a uma saída vetorial codificada a quente com dim-3 para classificação : (is_empty, has_good_product, has_defective_product).
O modelo treinou com bastante facilidade e alcançou 99% de validação sem problemas; também treinamos com vários aprimoramentos de dados, pois sabemos que nosso conjunto de dados era pequeno. Na prática, funcionou cerca de 9 vezes em 10, mas algumas traduções / rotações aleatórias da mesma placa de circuito ocasionalmente a colocavam na classe oposta. Talvez o aumento mais agressivo dos dados tivesse ajudado. Enfim, para um projeto conceitual de protótipo, ficamos felizes.
Agora estávamos apresentando a outro engenheiro e seu colega, e ele levantou o argumento de que as NNs são um exagero para isso, deveria apenas usar a correspondência de modelos, por que alguém gostaria de fazer CNNs?
Não tivemos uma ótima resposta para explicar por que nossa abordagem poderia ser melhor em determinadas aplicações (por exemplo, outras partes a serem inspecionadas). Alguns pontos que levantamos:
1) Mais robusto para invariâncias (por exemplo, aumento de dados)
2) Pode fazer aprendizado on-line para melhorar o sistema (por exemplo, humanos podem dizer ao software quais exemplos estão errados)
3) Não há necessidade de definir limites, como nos algoritmos clássicos de visão computacional. O que vocês acham, há mais vantagens para um sistema CNN para esse tipo de tarefa de inspeção? Em que casos seria melhor que a correspondência de modelos?
Mais algumas idéias aleatórias sobre quando NNs profundos podem ser a tecnologia para o trabalho: para sistemas que exigem detecção de profundidade 3D como parte da entrada ou qualquer tipo de objeto que possa ser deformado / esticado / esmagado, mas ainda seja "bom" e não defeituoso (por exemplo, um bicho de pelúcia, fios, etc). Curioso para ouvir seus pensamentos :)