Como adicionar recursos sem imagem a imagens laterais como entrada de CNNs


14

Estou treinando uma rede neural convolucional para classificar imagens em condições de neblina (3 aulas). No entanto, para cada uma das cerca de 150.000 imagens, também tenho quatro variáveis ​​meteorológicas disponíveis que podem ajudar a prever as classes das imagens. Fiquei imaginando como poderia adicionar as variáveis ​​meteorológicas (por exemplo, temperatura, velocidade do vento) à estrutura existente da CNN, para que ela pudesse ajudar na classificação.

Uma maneira em que eu já consigo pensar é em criar outra (pequena) rede neural de avanço ao lado da CNN e concatenar as saídas das camadas da CNN e as camadas ocultas da rede neural sem imagem entre si na camada densa.

A segunda maneira em que pude pensar é apenas entrar em contato com esses recursos na camada densa. No entanto, neste caso, as variáveis ​​que não são de imagem (acho) só serão capazes de fazer previsões lineares.

Existem outras (melhores) maneiras pelas quais os recursos que não são de imagem podem ser incluídos no modelo? E qual seria o método aconselhável considerando a quantidade de dados que tenho?

Outra pergunta que tenho é se devo descongelar as camadas convolucionais enquanto estiver treinando com esses recursos que não são de imagem? Essas camadas de um Resnet-18 (que foram inicializadas como pré-treinadas no ImageNet) já foram ajustadas usando as imagens. Meu palpite é que eu devo mantê-los congelados e descongelar apenas a camada densa, pois é somente aqui que os recursos que não são de imagem entram em contato com os recursos de imagem (não antes na CNN). Se eu estiver errado, por favor, diga-o!


você pode modelar a distribuição de junção entre recursos_ adicionais e imagens através de algum modelo generativo como GAN, VAE. então você pode obter as variáveis latentes e usá-lo com um critério supervisionado
Fadi Bakoura

Estou em uma situação semelhante. Estou usando uma pilha de imagens do céu nos últimos 15 minutos para tentar prever a saída de painéis solares próximos à câmera em 15 minutos. Recentemente, decidi incluir vários recursos climáticos (um para cada imagem, como no seu caso). Sua primeira sugestão funcionou muito melhor que a segunda (de anexar diretamente recursos não gráficos à camada densa). Para ser mais preciso, a segunda sugestão levou a problemas com a normalização. Descobri que, por alguma razão eu não posso explicar, no entanto, a camada Batchnorm não foi capaz de normalizar a fea gráfica
Vignesh Venugopal

@VigneshVenugopal, mencione-me nos comentários, caso contrário, não posso ser notificado. Qual a sua pergunta? :)
Mídia

Como concatenar a velocidade, o acelerador e o ângulo de direção nas minhas redes? Você poderia, por favor, explicar sobre quantos densos adicionam? O que depende disso?
Nasrinzaghari 28/09/19

Respostas:


10

Minha solução é como sua primeira recomendação, mas com pequenas alterações.

  1. Construa suas camadas convolucionais e empilhe-as até a camada plana. Esta rede deve ser alimentada com os dados da imagem.
  2. Nivele seus mapas de ativação
  3. Construa uma rede totalmente conectada com o número desejado de neurônios e camadas.
  4. Concatene as saídas da camada achatada da rede convolucional e da rede totalmente conectada.
  5. adicione algumas camadas densas e conecte-as à última camada que representa suas classes.

Você pode usar as funções de custo habituais para essa arquitetura.


No Keras, você pode fazer isso com Concatenate()camadas?
Leevo 04/07/19

Sim. Você deve concatená-los para colocá-los um ao lado do outro.
Media

Devo usar Concatenate()ou concatenate()camadas? Eu não posso dizer a diferença
Leevo

Depende da maneira que você deseja criar sua rede. A propósito, você pode ver a lista de argumentos de cada um. Eles diferem. Você também pode dar uma olhada aqui .
Media
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.