>
From “Xception: Deep Learning with Depthwise Separable Convolutions”Com o lançamento do ResNet, parecia que a maioria dos frutos pendentes baixos no classificador de imagem já estavam agarrados. Os pesquisadores começaram a pensar sobre qual é o mecanismo interno da magia da CNN. Como a convolução entre canais geralmente introduz uma tonelada de parâmetros, a rede Xception optou por investigar esta operação para entender um quadro completo do seu efeito.
Como seu nome, Xception tem origem na rede Inception. No módulo Inception, múltiplas ramificações de diferentes transformações são agregadas para alcançar uma esparsidade topológica. Mas por que essa esparsidade funcionou? O autor de Xception, também o autor do framework Keras, estendeu esta idéia para um caso extremo onde um arquivo de convolução 3×3 corresponde a um canal de saída antes de uma concatenação final. Neste caso, estes kernels de convolução paralela formam na verdade uma nova operação chamada convolução profunda.
As shown in the diagram above, Ao contrário da convolução tradicional onde todos os canais são incluídos para um cálculo, a convolução em profundidade computa apenas a convolução para cada canal separadamente e depois concatenam a saída em conjunto. Isso corta a troca de características entre canais, mas também reduz muitas conexões, resultando em uma camada com menos parâmetros. No entanto, esta operação irá produzir o mesmo número de canais como entrada (ou um número menor de canais se você agrupar dois ou mais canais em conjunto). Portanto, uma vez que os canais de saída são fundidos, precisamos de outro filtro regular 1×1, ou convolução pontual, para aumentar ou reduzir o número de canais, assim como a convolução regular faz.
Esta idéia não é do Xception originalmente. Ela é descrita em um artigo chamado “Aprendendo representações visuais em escala” e também usada ocasionalmente no InceptionV2. Xception deu um passo adiante e substituiu quase todas as convoluções por este novo tipo. E o resultado da experiência revelou-se bastante bom. Ele supera a ResNet e InceptionV3 e se tornou um novo método SOTA para classificação de imagens. Isto também provou que o mapeamento de correlações entre canais e correlações espaciais na CNN pode ser totalmente desacoplado. Além disso, compartilhando a mesma virtude com a ResNet, o Xception também tem um design simples e bonito, por isso sua idéia é usada em muitas outras pesquisas seguintes, como MobileNet, DeepLabV3, etc.
2017: MobileNet
>
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Application
>
Xception alcançou 79% de precisão top-1 e 94,5% de precisão top-5 no ImageNet, mas isso é apenas 0,8% e 0,4% de melhoria, respectivamente, em comparação com o SOTA InceptionV3 anterior. O ganho marginal de uma nova rede de classificação de imagens está se tornando menor, portanto os pesquisadores começam a mudar seu foco para outras áreas. E a MobileNet liderou um impulso significativo da classificação de imagens em um ambiente com restrições de recursos.
Similiar ao Xception, MobileNet usou o mesmo módulo de convolução separável em profundidade como mostrado acima e teve uma ênfase na alta eficiência e menos parâmetros.
O numerador na fórmula acima é o número total de parâmetros requeridos por uma convolução separável em profundidade. E o denominador é o número total de parâmetros de uma convolução regular semelhante. Aqui D é o tamanho do kernel de convolução, D é o tamanho do mapa de características, M é o número de canais de entrada, N é o número de canais de saída. Como nós separamos o cálculo de canal e característica espacial, podemos transformar a multiplicação em uma adição, que é uma magnitude menor. Melhor ainda, como podemos ver por esta razão, quanto maior for o número de canais de saída, mais cálculo poupamos ao usar esta nova convolução.
Uma outra contribuição da MobileNet é o multiplicador de largura e resolução. A equipe da MobileNet queria encontrar uma forma canônica de diminuir o tamanho do modelo para dispositivos móveis, e a forma mais intuitiva é reduzir o número de canais de entrada e saída, assim como a resolução da imagem de entrada. Para controlar esse comportamento, uma relação alfa é multiplicada pelos canais, e uma relação rho é multiplicada pela resolução de entrada (que também afeta o tamanho do mapa de características). Assim, o número total de parâmetros pode ser representado na seguinte fórmula:
Embora essa mudança pareça ingênua em termos de inovação, ela tem grande valor de engenharia, pois é a primeira vez que os pesquisadores concluem uma abordagem canônica para ajustar a rede a diferentes restrições de recursos. Além disso, ela meio que resumiu a solução final de melhorar a rede neural: entrada mais ampla e de alta resolução leva a uma melhor precisão, entrada mais fina e de baixa resolução leva a uma menor precisão.
Later em 2018 e 2019, a equipe da MobiletNet também lançou “MobileNetV2″: Inverted Residuals and Linear Bottlenecks” e “Searching for MobileNetV3”. Na MobileNetV2, é utilizada uma estrutura de gargalo residual invertido. E na MobileNetV3, ela começou a procurar a combinação ideal de arquitetura usando a tecnologia de Busca de Arquitetura Neural, que iremos cobrir a seguir.
2017: NASNet
>
Aprendizagem de Arquitecturas Transferíveis para o Reconhecimento de Imagens Escaláveis
Apenas como a classificação de imagens para um ambiente com recursos limitados, a pesquisa da arquitectura neural é outro campo que surgiu por volta de 2017. Com ResNet, Inception e Xception, parece que alcançamos uma topologia de rede ideal que os humanos podem entender e projetar, mas e se houver uma combinação melhor e muito mais complexa que exceda de longe a imaginação humana? Um artigo em 2016 chamado “Neural Architecture Search with Reinforcement Learning” propôs uma idéia para buscar a combinação ideal dentro de um espaço de busca pré-definido, utilizando a aprendizagem de reforço. Como sabemos, a aprendizagem de reforço é um método para encontrar a melhor solução com um objetivo claro e uma recompensa para o agente de busca. Entretanto, limitado pelo poder computacional, este artigo discutiu a aplicação apenas em um pequeno conjunto de dados CIFAR.
Com o objetivo de encontrar uma estrutura ideal para um grande conjunto de dados como ImageNet, a NASNet fez um espaço de busca que é feito sob medida para ImageNet. Ele espera projetar um espaço de busca especial para que o resultado pesquisado no CIFAR também possa funcionar bem na ImageNet. Primeiro, a NASNet assume que um módulo artesanal comum em boas redes como a ResNet e a Xception ainda são úteis ao pesquisar. Assim, em vez de procurar por conexões e operações aleatórias, a NASNet procura a combinação desses módulos que já provaram ser úteis na ImageNet. Em segundo lugar, a busca real ainda é realizada no conjunto de dados CIFAR com resolução 32×32, portanto a NASNet só busca módulos que não são afetados pelo tamanho da entrada. A fim de fazer o segundo ponto funcionar, o NASNet predefiniu dois tipos de modelos de módulos: Redução e Normal. A célula de redução poderia ter um mapa de características reduzido em comparação com a entrada, e para a célula Normal seria a mesma.
Embora o NASNet tenha melhores métricas do que redes de desenho manual, ele também sofre de alguns inconvenientes. O custo da busca por uma estrutura ideal é muito alto, o que só é acessível por grandes empresas como Google e Facebook. Além disso, a estrutura final não faz muito sentido para os humanos, por isso é mais difícil de manter e melhorar em um ambiente de produção. Mais tarde, em 2018, “MnasNet: Platform-Aware Neural Architecture Search for Mobile” estende ainda mais esta ideia da NASNet, limitando a etapa de pesquisa com uma estrutura de blocos encadeados pré-definida. Além disso, ao definir um fator de peso, a mNASNet deu uma maneira mais sistemática de pesquisar o modelo com restrições específicas de recursos, ao invés de apenas avaliar com base em FLOPs.
2019: EfficientNet
EfficientNet: Repensando a escala do modelo para Redes Neurais Convolucionais
Em 2019, parece que não há mais idéias emocionantes para a classificação supervisionada de imagens com a CNN. Uma mudança drástica na estrutura da rede geralmente oferece apenas uma pequena melhoria na precisão. Pior ainda, quando a mesma rede se aplicava a diferentes conjuntos de dados e tarefas, os truques anteriormente reivindicados não parecem funcionar, o que levou a críticas de que se essas melhorias estão apenas se ajustando em excesso no conjunto de dados da ImageNet. Por outro lado, há um truque que nunca falha a nossa expectativa: usar uma entrada de maior resolução, adicionar mais canais para camadas de convolução, e adicionar mais camadas. Apesar da força muito brutal, parece que existe uma forma de princípio para dimensionar a rede sob demanda. A MobileNetV1 sugeriu isso em 2017, mas o foco foi mudado para um melhor design de rede mais tarde.
Após NASNet e mNASNet, os pesquisadores perceberam que mesmo com a ajuda de um computador, uma mudança na arquitetura não traz tantos benefícios. Assim, eles começam a cair de novo na escala da rede. A EfficientNet é apenas construída sobre esta suposição. Por um lado, ela usa o bloco de construção ideal da mNASNet para garantir uma boa base para começar. Por outro lado, ele definiu três parâmetros alfa, beta e rho para controlar a profundidade, largura e resolução da rede de forma correspondente. Ao fazer isso, mesmo sem um grande pool de GPUs para procurar uma estrutura ideal, os engenheiros ainda podem confiar nesses parâmetros de princípio para sintonizar a rede com base em seus diferentes requisitos. No final, a EfficientNet deu 8 variantes diferentes com diferentes rácios de largura, profundidade e resolução e obteve um bom desempenho tanto para modelos pequenos como grandes. Em outras palavras, se você deseja alta precisão, opte por um EfficientNet-B7 de 600×600 e 66M de parâmetros. Se você quer modelos de baixa latência e modelos menores, opte por um EfficientNet-B0 de 224×224 e 5,3M. Problema resolvido.
Se você terminar de ler acima de 10 trabalhos, você deve ter uma boa compreensão do histórico de classificação de imagens com CNN. Se você gosta de continuar aprendendo esta área, eu também listei alguns outros artigos interessantes para ler. Embora não estejam incluídos na lista dos top-10, estes trabalhos são todos famosos na sua própria área e inspiraram muitos outros pesquisadores no mundo.
2014: SPPNet
>
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
SPPNet toma emprestada a idéia da pirâmide de recursos da tradicional extração de recursos de visão por computador. Esta pirâmide forma um saco de palavras de características com escalas diferentes, de modo que ela pode se adaptar a diferentes tamanhos de entrada e se livrar da camada de tamanho fixo totalmente conectado. Esta idéia também inspirou o módulo ASPP do DeepLab, e também a FPN para detecção de objetos.
2016: DenseNet
>
Densely Connected Convolutional Networks
>
DenseNet from Cornell estende ainda mais a ideia da ResNet. Ela não só permite saltar a conexão entre camadas, mas também tem saltar conexões de todas as camadas anteriores.
2017: SENet
>
Rede de compressão e excitação
A rede Xception demonstrou que a correlação entre canais não tem muito a ver com a correlação espacial. No entanto, como campeão da última competição da ImageNet, SENet desenvolveu um bloco Squeeze-and-Excitation e contou uma história diferente. O bloco SE primeiro aperta todos os canais em menos canais usando o pooling global, aplica uma transformação totalmente conectada, e depois os “excita” de volta ao número original de canais usando outra camada totalmente conectada. Assim, essencialmente, a camada FC ajudou a rede a aprender atenções no mapa de características de entrada.
2017: ShuffleNet
ShuffleNet: Uma Rede Neural Convolucional Extremamente Eficiente para Dispositivos Móveis
Built on top of MobileNetV2’s inverted bottleneck module, ShuffleNet acredita que a convolução pontual em convolução separável em profundidade sacrifica a precisão em troca de menos computação. Para compensar isso, a ShuffleNet adicionou uma operação adicional de embaralhamento de canais para garantir que a convolução no sentido horário não será sempre aplicada ao mesmo “ponto”. E no ShuffleNetV2, esse mecanismo de embaralhamento de canais também é estendido para um ramo de mapeamento de identidade ResNet, de modo que parte do recurso de identidade também será usado para embaralhar.
2018: Bag of Tricks
Bag of Tricks for Image Classification with Convolutional Neural Networks
Bag of Tricks foca em truques comuns usados na área de classificação de imagens. Ele serve como uma boa referência para os engenheiros quando eles precisam melhorar o desempenho do benchmark. Curiosamente, esses truques como o aumento de mixup e taxa de aprendizagem cosseno podem, às vezes, alcançar melhorias muito melhores do que uma nova arquitetura de rede.
Conclusion
Com o lançamento da EfficientNet, parece que o benchmark de classificação da ImageNet chega ao fim. Com a abordagem de aprendizagem profunda existente, nunca haverá um dia em que possamos alcançar 99,999% de precisão na ImageNet, a menos que outra mudança de paradigma aconteça. Assim, os pesquisadores estão olhando ativamente para algumas áreas novas, como a aprendizagem auto ou semi-supervisionada para reconhecimento visual em larga escala. Entretanto, com os métodos existentes, tornou-se mais uma questão para engenheiros e empresários encontrarem a aplicação real desta tecnologia não-perfeita. No futuro, também vou escrever uma pesquisa para analisar essas aplicações de visão do mundo real por computador alimentadas por classificação de imagens, por isso, por favor, fique atento! Se você acha que também há outros trabalhos importantes para ler para classificação de imagens, por favor deixe um comentário abaixo e nos informe.
Publicado originalmente em http://yanjia.li em 31 de julho de 2020
- Y. Lecun, L. Bottou, Y. Bengio, P. Haffner, Gradient-based Learning Applied to Document Recognition
- Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, ImageNet Classification with Deep Convolutional Neural Networks
- Karen Simonyan, Andrew Zisserman, Very Deep Convolutional Networks for Large-Scale Image Recognition
- Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich, Going Deeper with Convolutions
- Sergey Ioffe, Christian Szegedy, Batch Normalization: Acelerando o Treinamento Profundo de Rede Reduzindo o Deslocamento Covariável Interno
- Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, Aprendizagem Residual Profunda para Reconhecimento de Imagens
- François Chollet, Xception: Aprendizagem Profunda com Convoluções Separadas em Profundidade
- Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam, MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Application
- Barret Zoph, Vijay Vasudevan, Jonathon Shlens, Quoc V. Le, Learning Transferable Architectures for Scalable Image Recognition
- Mingxing Tan, Quoc V. Le, EfficientNet: Repensando a Escala de Modelos para Redes Neurais Convolucionais
- Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- Gao Huang, Zhuang Liu, Laurens van der Maaten, Kilian Q. Weinberger, Densely Convolutional Networks
- Jie Hu, Li Shen, Samuel Albanie, Gang Sun, Enhua Wu, Squeeze-and-Excitation Networks
- Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, Jian Sun, ShuffleNet: Uma Rede Neural Convolucional Extremamente Eficiente para Dispositivos Móveis
- Tong He, Zhi Zhang, Hang Zhang, Zhongyue Zhang, Junyuan Xie, Mu Li, Saco de Truques para Classificação de Imagens com Redes Neurais Convolucionais