Um espaço de pesquisa de arquitetura neural é a chave para um bom desempenho. Ele define todas as
possíveis arquiteturas ou parâmetros a serem explorados e pesquisados. A pesquisa de arquitetura neural
fornece um conjunto de espaços de pesquisa padrão no
arquivo
search_spaces.py
:
Mnasnet
Efficientnet_v2
Nasfpn
Spinenet
Spinenet_v2
Spinenet_mbconv
Spinenet_scaling
Randaugment_detection
Randaugment_segmentation
AutoAugmentation_detection
AutoAugmentation_segmentation
Além disso, também fornecemos os seguintes exemplos de espaço de pesquisa:
- Espaço de pesquisa de lidar para nuvens de pontos 3D
- Exemplo de espaço de pesquisa para segmentação de imagens médicas em 3D do PyTorch
- Exemplo de espaço de pesquisa PyTorch MnasNet
O notebook Lidar publica os resultados da verificação no notebook. O restante dos códigos dos espaços de pesquisa do PyTorch são usados apenas como exemplo e não para comparativo de mercado.
Cada um desses espaços de pesquisa tem um caso de uso específico:
- O espaço de pesquisa MNaSNet é usado para tarefas de classificação de imagens e detecção de objetos com base na arquitetura do MobileNetV2.
- O espaço de pesquisa EffectiveNetV2 é usado para tarefas de detecção de objetos. EffectiveNetV2 adiciona novas operações, como Fused-MBConv. Consulte o documento do NetNetV2 para mais detalhes.
- O espaço de pesquisa NAS-FPN normalmente é usado para detecção de objetos. Veja uma descrição detalhada nesta seção.
A família de espaços de pesquisa
spinenet
SpineNetspinenet_v2
incluispinenet_mbconv
,spinenet_scaling
, e . Elas também são usadas normalmente para detecção de objetos. Veja uma descrição detalhada do SpineNet nesta seção.spinenet
é o espaço de pesquisa básico nessa família, que oferece candidatos a blocos residuais e gargalos durante a pesquisa.spinenet_v2
oferece uma versão menor despinenet
, que ajuda na convergência mais rápida oferecendo apenas gargalos candidatos a blocos durante a pesquisa.- O
spinenet_mbconv
oferece uma versão despinenet
para plataformas de dispositivos móveis e usa candidatos de bloco mbconv durante a pesquisa. - Normalmente,
spinenet_scaling
é usado após encontrar uma boa arquitetura usando o espaço de pesquisaspinenet
, para escalonar verticalmente ou reduzir escala vertical para atender aos requisitos de latência. Essa pesquisa é feita sobre itens como tamanho da imagem, número de filtros, tamanho do filtro e número de repetições de blocos.
Os espaços de pesquisa RandAugment e AutoAugment permitem pesquisar as operações ideais de aumento de dados para detecção e segmentação, respectivamente. Observação: o aumento de dados normalmente é usado após um bom modelo ter sido pesquisado. Veja uma descrição detalhada de DataAugmentation nesta seção.
O espaço de pesquisa de lidar para nuvens de pontos em 3D mostra a pesquisa de ponta a ponta no featurizer, backbone, decodificador e cabeça de detecção.
O exemplo de espaço de pesquisa de segmentação de imagens médicas PyTorch 3D mostra a pesquisa no codificador e no decodificador UNet.
Na maioria das vezes, esses espaços de pesquisa padrão são suficientes. No entanto, se necessário, é possível personalizar os existentes ou adicionar um novo, conforme necessário, usando a biblioteca PyGlove. Veja o código de exemplo para especificar o espaço de pesquisa do NAS-FPN.
Espaço de pesquisa MNasnet e EffectiveNetV2
Os espaços de pesquisa MNasNet e EfficientV2 definem opções de compilação backbone
diferentes, como ConvOps
, KernelSize
e ChannelSize
. O backbone
pode ser
usado para diferentes tarefas, como classificação e detecção.
Espaço de pesquisa NAS-FPN
O espaço de pesquisa NAS-FPN define o espaço de pesquisa nas camadas de FPN que conectam diferentes níveis de recursos para detecção e segmentação de objetos, como na figura abaixo.
Espaço de pesquisa da SpineNet
O espaço de pesquisa SpineNet permite a pesquisa de um backbone com recursos intermediários permutados de escala e conexões dentre escala, alcançando um desempenho de última geração no detector de objetos de um estágio em COCO com 60% menos computação e supera os equivalentes de ResNet-FPN em 6% do AP. Veja a seguir as conexões das camadas de backbone na arquitetura do SpineNet-49 pesquisada.
Espaço de pesquisa de ampliação de dados
Depois que a melhor arquitetura já tiver sido pesquisada, também é possível pesquisar a melhor política de aumento de dados. O aumento dos dados pode melhorar ainda mais a precisão da arquitetura pesquisada anteriormente.
A plataforma de pesquisa de arquitetura neural fornece espaços de pesquisa de aumento RandAugment e AutoAugment para duas tarefas: (a) randaugment_detection para detecção de objetos e (b) randaugment_segmentation para segmentação. Ela escolhe internamente uma lista de operações de aumento, como contraste automático, shear ou rotação, que serão aplicadas aos dados de treinamento.
Espaço de pesquisa RandAugment
O espaço de pesquisa RandAugment é configurado por dois parâmetros: (a) N
,
que é o número de operações de ampliação sucessivas a serem
aplicadas a uma imagem, e (b) M
, que é a magnitude de TODAS essas operações. A
imagem a seguir mostra um exemplo em que as operações N=2 (Shear e
Contrast) com diferente M=magnitude são aplicadas a uma imagem.
Para um determinado valor de N, a lista de operações é selecionada aleatoriamente do
banco de operações. A pesquisa de aumento encontra o melhor valor de N
e M
para
o job de treinamento em questão. A pesquisa não usa uma tarefa de proxy e, portanto, executa os jobs de treinamento no final.
Espaço de pesquisa de AutoAugment
Com o espaço de pesquisa do AutoAugment, é possível pesquisar choice
, magnitude
e
probability
de operações para otimizar o treinamento dos modelos.
O espaço de pesquisa do AutoAugment permite pesquisar as opções da política
que não são compatíveis com o RandAugment.