libonnx
1.0.0
輕巧,便攜式純C99 onnx inference engine ,用於具有硬件加速支持的嵌入式設備。
可以將庫的.C和.H文件放入項目中並與其一起編譯。使用前,應分配struct onnx_context_t * ,您可以通過struct resolver_t *的數組進行硬件加速。
文件名是通往onnx模型格式的路徑。
struct onnx_context_t * ctx = onnx_context_alloc_from_file ( filename , NULL , 0 );然後,您可以使用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" );當設置輸入張量時,您可以使用onnx_run函數運行推理引擎,結果將放入輸出張量。
onnx_run ( ctx );最後,您必須使用onnx_context_free函數釋放struct onnx_context_t * 。
onnx_context_free ( ctx );只需在root目錄中鍵入make ,您就會看到一個靜態庫以及一些示例和使用的二進制庫。
cd libonnx
make要編譯mnist示例,您必須安裝SDL2和SDL2 GFX。在Ubuntu Run之類的系統上
apt-get install libsdl2-dev libsdl2-gfx-dev要安裝所需的簡單直接層庫以運行GUI。
arm64 )在根目錄處運行make CROSS_COMPILE=path/to/toolchains/aarch64-linux-gnu-以編譯平台的所有庫,測試和示例。
更改CROSS_COMPILE以指向您計劃使用的工具鏈。
編譯所有文件後,您可以使用以下方式運行一個示例:
cd libonnx/examples/hello/output
./hello
要運行測試,例如在tests/model文件夾中使用的測試:
cd libonnx/tests/output
./tests ../model這是輸出:
[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]請注意,在其他文件夾上運行測試可能不會成功。一些運營商尚未實施,請查看bat notes部分以獲取更多信息。
opset 23支持的ONX版本v1.17.0。文檔目錄中的受支持的操作員表。tools文件夾以提供ONNX模型文件的幫助。xxd -i <filename.onnx> (在linux上)將ONNX模型轉換為unsigned char array ,然後使用onnx_context_alloc函數來使用它。這就是示例中加載模型的方式 - hello and mnist 。 該庫是免費軟件;您可以根據MIT許可證的條款進行重新分配或對其進行修改。有關詳細信息,請參見MIT許可證。