Eine leichte, tragbare reine C99 onnx inference engine für eingebettete Geräte mit Hardware -Beschleunigungsunterstützung.
Die .C- und .h -Dateien der Bibliothek können in ein Projekt fallen gelassen und zusammen mit diesem zusammengestellt werden. Vor dem Gebrauch sollte struct onnx_context_t * zugewiesen werden, und Sie können ein Array von struct resolver_t * für die Hardware -Beschleunigung übergeben.
Der Dateiname ist Pfad zum Format des onnx -Modells.
struct onnx_context_t * ctx = onnx_context_alloc_from_file ( filename , NULL , 0 ); Anschließend können Sie mithilfe der Funktion onnx_tensor_search einen Eingangs- und Ausgabe -Tensor abrufen.
struct onnx_tensor_t * input = onnx_tensor_search ( ctx , "input-tensor-name" );
struct onnx_tensor_t * output = onnx_tensor_search ( ctx , "output-tensor-name" ); Wenn der Eingangspfehlungszensor festgelegt wurde, können Sie Inferenzmotor mithilfe der onnx_run -Funktion ausführen, und das Ergebnis wird in den Ausgangstensor eingebaut.
onnx_run ( ctx ); Schließlich müssen Sie struct onnx_context_t * mit der Funktion onnx_context_free kostenlos.
onnx_context_free ( ctx ); Geben Sie einfach im Root -Verzeichnis make , Sie werden eine statische Bibliothek und einige binäre Beispiele und Tests für die Verwendung sehen.
cd libonnx
make Um das mnist -Beispiel zu kompilieren, müssen Sie SDL2 und SDL2 GFX installieren. Auf Systemen wie Ubuntu Run
apt-get install libsdl2-dev libsdl2-gfx-devSo installieren Sie die erforderlichen einfachen DirectMedia -Layer -Bibliotheken, um die GUI auszuführen.
arm64 ) Run make CROSS_COMPILE=path/to/toolchains/aarch64-linux-gnu- am root-Verzeichnis, um alle Bibliotheken, Tests und Beispiele für die Plattform zu kompilieren.
Ändern Sie CROSS_COMPILE , um die Toolchains zu verweisen, die Sie verwenden möchten.
Nachdem Sie alle Dateien kompiliert haben, können Sie ein Beispiel mit verwenden:
cd libonnx/examples/hello/output
./hello
So führen Sie Tests aus, beispielsweise bei denjenigen in der Verwendung von tests/model :
cd libonnx/tests/output
./tests ../modelHier ist die Ausgabe:
[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]Beachten Sie, dass das Ausführen des Tests in den anderen Ordnern möglicherweise nicht erfolgreich ist. Einige Betreiber wurden nicht implementiert.
opset 23 -Unterstützung. Die unterstützte Operatortabelle im Dokumentenverzeichnis.tools -Ordner für Hilfe bei ONNX -Modelldateien.xxd -i <filename.onnx> (unter Linux) verwenden, um Ihr ONNX -Modell in ein unsigned char array zu konvertieren und dann die Funktion onnx_context_alloc zu verwenden, um es zu verwenden. So werden die Modelle in den Beispielen geladen - hello und mnist . Diese Bibliothek ist kostenlose Software; Sie können es neu verteilen und unter den Bedingungen der MIT -Lizenz ändern. Weitere Informationen finden Sie unter MIT -Lizenz.