Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 11241|Resposta: 0

Introdução ao framework da Darknet

[Copiar link]
Publicado em 30/01/2019 12:51:44 | | | |
Para reeducação de sistemas de ponta a ponta para expressões faciais


Apêndice 1:

Análise do Código-Fonte do Framework de Deep Learning Darknet: Comentário detalhado em chinês, cobrindo princípios do framework e análise de sintaxe de implementação

https://github.com/hgpvision/darknet

Darknet é um framework de aprendizado profundo de código aberto relativamente leve baseado inteiramente em C e CUDA, suas principais funcionalidades são fáceis de instalar, sem dependências (OpenCV pode ser usado), muito portátil e suporta métodos de computação tanto para CPU quanto para GPU.



Comparado ao TensorFlow, a darknet não é tão poderosa, mas essa também é uma vantagem da darknet:

  • A darknet é totalmente implementada em linguagem C, sem dependências, claro que você pode usar OpenCV, mas só para exibir imagens, para melhor visualização;
  • darknet suporta CPU (então não importa se você não tem GPU) e GPU (CUDA/cuDNN, claro que é melhor usar GPU);
  • Isso é justamente porque é relativamente leve e não possui uma API poderosa como o TensorFlow, então sinto que ele tem outro tipo de flexibilidade, adequado para estudar o subjacente e pode ser melhorado e estendido de baixo de forma mais conveniente.
  • Existem semelhanças entre a implementação da darknet e a implementação da caffe, e eu conheço a darknet e acredito que é útil começar com a cafe.





Apêndice 2:

Autor: Zhihu User
Link:https://www.zhihu.com/question/51747665/answer/145607615
Fonte: Zhihu
Os direitos autorais pertencem ao autor. Para reimpressões comerciais, por favor, entre em contato com o autor para autorização, e para reimpressões não comerciais, indique a fonte.

As três definições de struct mais importantes na Darknet são network_state, rede e camada; A nova versão network_state foi integrada à rede.

O código pode ignorar primeiro a parte da GPU, e diferentes tipos de camadas de rede definem as regras de execução desse tipo por meio dos ponteiros de função para trás e atualização na camada. Por exemplo, existem três métodos para camadas conectadas, como forward_connected_layer backward_connected_layer update_connected_layer camada gru, etc.;

As operações atômicas são apenas em blas.c e gemm.c, as operações de rede estão em network.c, e as mais importantes são train_network_datum, train_networks, train_network_batch e network_predict;

train_network_datum é o float_pair usado para dados de entrada, ou seja, float *x e float *y pares;

train_networks é treinado em network_kernel.em modo de threading concorrente, e o parâmetro é dados;

Um ponto: a darknet é single-threaded no modo CPU, e no modo gráfico multi-GPU, train_networks suporta execução multi-placa, e essa também é a entrada para transformar a operação multi-host da darknet, onde você pode ver a fusão e escala dos dados de peso treinados.

train_network_datum Executar forward_network { rede antecedível camada } backward_network { rede reversa camada }, e executar uma update_network ( taxa ,,,, momento e decaimento sob o número de vezes (*net.seen %subdivisões) é satisfeita;

Para o processamento de perfis de rede definidos pelo usuário em parse_network_cfg, os resultados do treinamento são lidos por load_weights

Essa é a espinha dorsal.

Se você precisa lidar com fontes de dados com necessidades especiais, precisa consultar o data.c para começar.

Para o perfil CFG, o ajuste de foco (claro, todos os parâmetros são importantes, pode ser necessário ajustar) e o parâmetro global do foco durante o treinamento: momento de decaimento learning_rate Esses três estão relacionados à velocidade de convergência. Política é a política de pesos, as saídas em lote de entradas (e subdivisões relacionadas) estão relacionadas à dimensão de throughput de dados, e a versão mais recente parece ter correções aqui nas saídas.







Anterior:Tutorial simples do mockjs
Próximo:.net core FileProvider lê arquivos de diretório
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com