Um inference engine C99 onnx portátil e portátil e portátil para dispositivos incorporados com suporte de aceleração de hardware.
Os arquivos .C e .H da biblioteca podem ser lançados em um projeto e compilados junto com ele. Antes do uso, deve ser alocado struct onnx_context_t * e você pode passar uma matriz de struct resolver_t * para aceleração de hardware.
O nome do arquivo é o caminho para o formato do modelo onnx .
struct onnx_context_t * ctx = onnx_context_alloc_from_file ( filename , NULL , 0 ); Em seguida, você pode obter tensor de entrada e saída usando a função onnx_tensor_search .
struct onnx_tensor_t * input = onnx_tensor_search ( ctx , "input-tensor-name" );
struct onnx_tensor_t * output = onnx_tensor_search ( ctx , "output-tensor-name" ); Quando o tensor de entrada estiver configurando, você pode executar o mecanismo de inferência usando a função onnx_run e o resultado colocará no tensor de saída.
onnx_run ( ctx ); Finalmente, você deve struct onnx_context_t * usando a função onnx_context_free .
onnx_context_free ( ctx ); Basta digitar make no diretório raiz, você verá uma biblioteca estática e alguns binários de exemplos e testes para uso.
cd libonnx
make Para compilar o exemplo mnist , você precisará instalar o SDL2 e o SDL2 GFX. Em sistemas como o Ubuntu Run
apt-get install libsdl2-dev libsdl2-gfx-devPara instalar as bibliotecas simples de camada simples do DirectMedia para executar a GUI.
arm64 ) Run make CROSS_COMPILE=path/to/toolchains/aarch64-linux-gnu- no diretório raiz para compilar todas as bibliotecas, testes e exemplos da plataforma.
Altere CROSS_COMPILE para apontar as cadeias de ferramentas que você planeja usar.
Depois de compilar todos os arquivos, você pode executar um exemplo usando:
cd libonnx/examples/hello/output
./hello
Para executar testes, por exemplo, naqueles nos tests/model Use:
cd libonnx/tests/output
./tests ../modelAqui está a saída:
[mnist_8](test_data_set_0) [OKAY]
[mnist_8](test_data_set_1) [OKAY]
[mnist_8](test_data_set_2) [OKAY]
[mobilenet_v2_7](test_data_set_0) [OKAY]
[mobilenet_v2_7](test_data_set_1) [OKAY]
[mobilenet_v2_7](test_data_set_2) [OKAY]
[shufflenet_v1_9](test_data_set_0) [OKAY]
[shufflenet_v1_9](test_data_set_1) [OKAY]
[shufflenet_v1_9](test_data_set_2) [OKAY]
[squeezenet_v11_7](test_data_set_0) [OKAY]
[squeezenet_v11_7](test_data_set_1) [OKAY]
[squeezenet_v11_7](test_data_set_2) [OKAY]
[super_resolution_10](test_data_set_0) [OKAY]
[tinyyolo_v2_8](test_data_set_0) [OKAY]
[tinyyolo_v2_8](test_data_set_1) [OKAY]
[tinyyolo_v2_8](test_data_set_2) [OKAY]Observe que a execução do teste nas outras pastas pode não ter sucesso. Alguns operadores não foram implementados, procure a seção Bat as notas para obter mais informações.
opset 23 . A tabela de operador suportada no diretório de documentos.tools para obter ajuda com os arquivos do modelo ONNX.xxd -i <filename.onnx> (no Linux) para converter seu modelo ONNX em uma unsigned char array e, em seguida, usar a função onnx_context_alloc para usá -lo. É assim que os modelos são carregados nos exemplos - hello e mnist . Esta biblioteca é software livre; Você pode redistribuí -lo e ou modificá -lo nos termos da licença do MIT. Consulte a licença do MIT para obter detalhes.