Coral USB-Inferenz funktioniert nicht unter Windows 10 (ValueError: Delegate von edgetpu.dll konnte nicht geladen werden)

Aktualisierung: Es sieht so aus, als ob der Fehler mit der Installer-Version vom 24. Oktober 2022 behoben wurde.

Folgen Sie den Installationsanweisungen für Windows auf dem Website Koralleerhielt ich die folgende Fehlermeldung:

Max@Rhea MINGW64 /c/Business-2022/pi3g e.K/Marketing/2022 Präsentation für Ric/Coral auf Windows/coral/pycoral (master)
$ pyenv exec python examples/classify_image.py \
> --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
> --labels test_data/inat_bird_labels.txt \
> --Eingabe test_data/parrot.jpg
Traceback (letzter Aufruf):
  Datei "C:\Users\Max\.pyenv\pyenv-win\versions\3.9.13\lib\site-packages\tflite_runtime\interpreter.py", Zeile 160, in load_delegate
    delegate = Delegate(Bibliothek, Optionen)
  Datei "C:\Users\Max\.pyenv\pyenv-win\versions\3.9.13\lib\site-packages\tflite_runtime\interpreter.py", Zeile 119, in __init__
    raise ValueError(capture.message)
ValueError

Während der Behandlung der obigen Ausnahme ist eine weitere Ausnahme aufgetreten:

Traceback (letzter Aufruf):
  Datei "C:\Business-2022\pi3g e.K\Marketing\2022 Präsentation für Ric\Coral on Windows\coral\pycoral\examples\classify_image.py", Zeile 121, in 
    main()
  Datei "C:\Business-2022\pi3g e.K\Marketing\2022 Präsentation für Ric\Coral on Windows\coral\pycoral\examples\classify_image.py", Zeile 71, in main
    interpreter = make_interpreter(*args.model.split('@'))
  Datei "C:\Users\Max\.pyenv\pyenv-win\versions\3.9.13\lib\site-packages\pycoral\utils\edgetpu.py", Zeile 87, in make_interpreter
    delegates = [load_edgetpu_delegate({'device': device} if device else {})]
  Datei "C:\Users\Max\.pyenv\pyenv-win\versions\3.9.13\lib\site-packages\pycoral\utils\edgetpu.py", Zeile 52, in load_edgetpu_delegate
    return tflite.load_delegate(_EDGETPU_SHARED_LIB, options oder {})
  Datei "C:\Users\Max\.pyenv\pyenv-win\versions\3.9.13\lib\site-packages\tflite_runtime\interpreter.py", Zeile 162, in load_delegate
    raise ValueError('Failed to load delegate from {}\n{}'.format(
WertFehler: Der Delegat von edgetpu.dll konnte nicht geladen werden

Die letzte Zeile, "WertFehler: Der Delegat von edgetpu.dll konnte nicht geladen werden" bedeutet in der Regel, dass kein Coral USB-Gerät erkannt werden konnte. (Wenn Sie Ihr Coral-USB-Gerät abziehen, sollte der gleiche Fehler weiterhin angezeigt werden).

Ich konnte dies auf einen Fehler (glaube ich!) im Installationsskript für Windows zurückführen.

Der Fehler ist in der neuesten zwei Veröffentlichungen von libedgetpu.

Das Installationsskript, das das Coral-Team mitliefert und das ich ausgeführt habe, heißt install.bat

In Zeile 52 dieses Skripts (Sie können es mit einem Texteditor öffnen, z. B. Notepad++) steht:

start /wait msiexec /i "%ROOTDIR%\dritte_party\usbdk\UsbDk_*.msi" /quiet /qb! /norestart

Damit soll UsbDk installiert werden. Und es sollte sehen so aus:

Also - ein externes Installationsprogramm für UsbDk öffnet sich und installiert es. Während des Windows-Sicherheitsbildschirms (UAC, Benutzerkontensteuerung, Bildschirm) wird etwas über RedHat erwähnt wird.

Ich vermute, dass diese Anwendung nie geöffnet und auf Ihrem Computer installiert wird, oder?

Aber es ist erforderlich durch den Coral USB Application Stack, eine spezielle Software, die es Anwendungen ermöglicht, auf benutzerdefinierte USB-Geräte zuzugreifen.

Hier habe ich eine gute und eine schlechte Nachricht für Sie.

Die gute Nachricht zuerst: Es ist mir gelungen, eine Lösung für dieses Problem zu finden.

Der Fix für UsbDk wird nicht installiert / Delegat von edgetpu.dll konnte nicht geladen werden

Aktualisierung 5.11.2022:

Gute Nachrichten! Wir haben eine gepatchte Runtime-Installer-ZIP-Dateidie zwei Fehler behebt und ermöglicht Ihnen die Installation der neuesten Coral-Laufzeitumgebung enthalten in 20220308.

Diese Werke mit der neuesten Laufzeit, da es auch libusb-1.0.dll auf eine funktionierende Version (aus einem früheren Paket) umstellt. Wir haben dies unter Windows 8.1 und Windows 10 getestet. Dieses gepatchte Paket behebt den Fehler "Failed to delegate" und auch die Segmentierungsfehler.

Melden Sie etwaige Probleme in den Kommentaren unten!

historischer Inhalt zur Erläuterung des Hintergrunds

Bevor Sie die Lösung ausprobieren, lesen Sie bitte auch die schlechte Nachricht! (Die Korrektur funktioniert, aber es gibt ein anderes Problem die wahrscheinlich nur Google lösen kann! Ich empfehle: Gehen Sie zur dritten Lösung "Die bessere Nachricht" für den Moment!)

Um auf Nummer sicher zu gehen, sollte der erste Lauf deinstallieren.bat

Überschreiben Sie diese Zeile (Zeile 52) mit zwei neuen Zeilen wie folgt:

:: start /wait msiexec /i "%ROOTDIR%\dritte_party\usbdk\UsbDk_*.msi" /quiet /qb! /norestart
start /wait msiexec /i "%ROOTDIR%\dritte_party\usbdk\UsbDk_1.0.22_x64.msi" /quiet /qb! /norestart

Der doppelte Doppelpunkt kommentiert die Originalzeile (ich ziehe es vor, die Originalzeilen im Code zu belassen, damit wir sehen können, was geändert wurde)

Wenn Sie nun install.bat durch einen Doppelklick darauf wird UsbDk installiert.

UsbDk wird installiert

Hinweis: Während der Installation von UsbDk höre ich das bekannte Windows-USB-Geräusch beim Ab- und Anstecken!

Entfernen von UsbDk

Beachten Sie, dass die deinstallieren.bat hat das gleiche Problem. Bearbeiten Sie die Zeile 51

:: start /wait msiexec /x "%ROOTDIR%\dritte_party\usbdk\UsbDk_*.msi" /quiet /qb! /norestart
start /wait msiexec /x "%ROOTDIR%\dritte_party\usbdk\UsbDk_1.0.22_x64.msi" /quiet /qb! /norestart

Dadurch können Sie das UsbDk-Installationsprogramm tatsächlich ausführen, um die Deinstallation durchzuführen.

Sie können alternativ auch (wahrscheinlich ohne Nebenwirkungen) gehen Sie in das Verzeichnis third_party/usbdk innerhalb des edgetpu Runtime-Ordners, und klicken Sie mit der rechten Maustaste auf UsbDk, um es zu deinstallieren:

Auch hier sollte während der Deinstallation das UsbDk-Installationsprogramm zu sehen sein und auch das charakteristische USB-Geräusch, das Windows beim Abziehen macht, sollte zu hören sein!

Die schlechte Nachricht: Segmentierungsfehler

Der Fehler ändert sich nun in einen Segmentierungsfehler!

$ pyenv exec python examples/classify_image.py --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels test_data/inat_bird_labels.txt --input test_data/parrot.jpg
Segmentierungsfehler

Hinweis - Ich höre auch einen Windows USB Unplug Sound, wenn dies ausgeführt wird. Dies ist zu erwarten - Das Coral-Gerät wird zuerst in einem Modus angesprochen, wie ich es verstehe, um Inferenzinformationen darauf zu übertragen, und dann soll es ausgesteckt werden.

Dieser Segmentierungsfehler ist ein Schritt nach vorn, auch wenn es Ihnen nicht so vorkommt. Möglicherweise kann dieses Problem durch weitere Fehlersuche gelöst werden, oder das Google-Team kann sich damit befassen.

Ich habe meine Erkenntnisse hinzugefügt zu dieser GitHub-Threadhoffentlich können die Google-Entwickler dadurch in die richtige Richtung gelenkt werden ...

Wenn Sie diese Methode ausprobiert haben und sie bei Ihnen funktioniert, hinterlassen Sie bitte einen Kommentar unten!

Die bessere Nachricht: eine funktionierende Coral Runtime-Version!

Es gibt eine Version der Coral Runtime, die diesen Fehler nicht hat (UsbDk-Installationsfehler, wie oben beschrieben), und die auch den Segmentierungsfehler nicht hat.

Der einzige Nachteil ist, dass diese Version unterstützt nur Version 13 der Laufzeitumgebung (daher werden einige Funktionen der Version 14 fehlen).

https://coral.ai/software/#edgetpu-runtime

Verwenden Sie edgetpu_runtime_20210119 (Anglerfisch)

Das Installationsprogramm wird UsbDk installieren. Beachten Sie, dass es sich hierbei um eine ältere UsbDk-Version handelt (Version UsbDk_1.0.21_x64.msi), die mit der Version 20210119 gebündelt ist, möglicherweise ist dies einer der Gründe, warum dies funktioniert.

Damit sollten Sie in der Lage sein, die Korallen-USB-Papageien-Inferencing Beispiel unter Windows 10:

$ pyenv exec python examples/classify_image.py --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels test_data/inat_bird_labels.txt --input test_data/parrot.jpg
C:\Business-2022\pi3g e.K\Marketing\2022 Präsentation für Ric\Coral auf Windows\coral\pycoral\examples\classify_image.py:79: DeprecationWarning: ANTIALIAS ist veraltet und wird in Pillow 10 (2023-07-01) entfernt werden. Verwenden Sie stattdessen Resampling.LANCZOS.
  image = Image.open(args.input).convert('RGB').resize(size, Image.ANTIALIAS)
----INFERENZZEIT----
Hinweis: Die erste Inferenz auf Edge TPU ist langsam, da sie das Laden des Modells in den Edge TPU-Speicher umfasst.
12.5ms
2.8ms
2.8ms
2.7ms
2.7ms
-------RESULTS--------
Ara macao (Scharlach-Ara): 0.75781

Ich werde wahrscheinlich bald eine Anleitung zur Installation von Coral USB unter Windows 10 hinzufügen, Schritt für Schritt, oder möglicherweise ein Video für unseren YouTube-Kanal erstellen.

USB-Beschleuniger von Coral kaufen

Wir sind einer der Coral USB Distributoren. Bitte Wenden Sie sich an unser Vertriebsteam, wenn Sie das Coral USB in großen Mengen benötigen oder wenn Sie Wiederverkäufer werden möchten..

Wenn Sie einen für sich selbst kaufen möchten, versuchen Sie einen unserer Wiederverkäuferoder Sie können Kaufen Sie einen Coral USB-Beschleuniger in unserem eigenen Shop, buyzero.de

Coral USB Beratung

Wie Sie vielleicht in diesem Blogbeitrag bemerkt haben, können wir Sie mit Beratung für Ihr Coral USB-basiertes Projekt unterstützen. Wenn Sie die Möglichkeiten der Coral EdgeTPU-Beschleunigung für Ihre Plattform diskutieren möchten, jemanden brauchen, der eine Lösung für Sie implementiert, oder eine andere Form der Beratung / kommerziellen Unterstützung benötigen, wenden Sie sich bitte an Kontaktieren Sie unser Verkaufsteam.

Andere Fehler

ImportFehler: DLL-Laden fehlgeschlagen beim Importieren von _pywrap_coral: Das angegebene Modul konnte nicht gefunden werden.

Dieser Fehler besagt, dass die Datei install.bat nicht ausgeführt wurde.

    raise ValueError('Failed to load delegate from {}\n{}'.format(
WertFehler: Der Delegat von edgetpu.dll konnte nicht geladen werden

Nach der Behebung des UsbDk-Problems, wie oben beschrieben, sollte dieser Fehler bedeuten, dass Ihr Coral-USB-Gerät nicht an Ihren Windows 10-Computer angeschlossen ist.

Überprüfen Sie dies mit dem Windows-Geräte-Manager. Wenn es eingesteckt ist, sollte es angezeigt werden:

Vergewissern Sie sich auch, dass der Coral USB-Beschleuniger als normal funktionierend angezeigt wird:

raise ValueError('Failed to load delegate from {}\n{}'.format(
WertFehler: Der Delegat von edgetpu.dll konnte nicht geladen werden

Wenn Sie diese Fehlermeldung erhalten UND der Coral USB Accelerator im Gerätemanager als "Funktioniert einwandfrei" angezeigt wird, überprüfen Sie bitte, ob die UsbDk-Software installiert ist, wie ich es oben beschrieben habe. Sie sollten einen Eintrag "UsbDk Runtime Libraries" in Ihren Apps & Features sehen: