Coral USB inference werkt niet op Windows 10 (ValueError: Failed to load delegate from edgetpu.dll)

Update: Het lijkt erop dat de fout is opgelost met de installatieversie van 24 oktober 2022.

Volg de installatie-instructies voor Windows op de Koraal websitekreeg ik de volgende foutmelding:

Max@Rhea MINGW64 /c/Business-2022/pi3g e.K/Marketing/2022 Präsentation für Ric/Coral op 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 \
> --input test_data/parrot.jpg
Traceback (meest recente oproep als laatste):
  Bestand "C:^^pyenv-win_versions3.9.13\libsite-packages\tflite_runtime_interpreter.py", regel 160, in load_delegate
    delegate = Delegate(library, options)
  Bestand "C:^UsersMax.pyenv-win\versions3.9.13\libsite-packages\tflite_runtime\interpreter.py", regel 119, in __init__
    raise ValueError(capture.message)
ValueError

Tijdens de afhandeling van de bovenstaande uitzondering, trad een andere uitzondering op:

Traceback (most recent call last):
  Bestand "C:\Business-2022", regel 121, in .
    main()
  Bestand "C:\Business-2022\pi3g e.K.Marketing\2022 Präsentation für RicCoral on Windows\coral\pycoral\examples\classify_image.py", regel 71, in main
    interpreter = make_interpreter(*args.model.split('@'))
  Bestand "C:^C:^pyenv-win-win-win-win-win-win-win-win-win-win-win-win.py", regel 87, in make_interpreter
    delegates = [load_edgetpu_delegate({'device': device} if device else {})]
  Bestand "C:^Users-ax.pyenv-win_edgetpu.py", regel 52, in load_edgetpu_delegate
    return tflite.load_delegate(_EDGETPU_SHARED_LIB, options of {})
  Bestand "C:^^^pyenv-win_pu_delegate.py", regel 162, in load_delegate
    raise ValueError('Failed to load delegate from {}{}'.format(
ValueError: Mislukt om afgevaardigde van edgetpu.dll te laden

De laatste regel, "ValueError: Mislukt om afgevaardigde van edgetpu.dll te laden" betekent meestal dat er geen Coral USB-apparaat kon worden herkend. (Als u uw Coral USB-apparaat loskoppelt, zou u dezelfde fout moeten blijven zien).

Ik kon dit terugbrengen tot een bug (denk ik!) in het installatiescript voor Windows.

De bug is aanwezig in de nieuwste twee releases van libedgetpu.

Het installatiescript, dat het Coral-team meelevert en dat ik heb uitgevoerd heet install.bat

In regel 52 van dit script (u kunt het openen met een tekstverwerker, bijvoorbeeld Notepad++) staat:

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

Dit moet UsbDk installeren. En het moet zien er zo uit:

Dus - een extern installatieprogramma voor UsbDk wordt geopend, en installeert het. Tijdens het Windows Beveiligingsscherm (UAC, User Account Control, scherm) iets over RedHat wordt genoemd.

Ik neem aan dat deze applicatie nooit opent en installeert op uw computer, of wel?

Maar het is vereist door de Coral USB application stack, dit is speciale software waarmee applicaties toegang hebben tot aangepaste USB-apparaten.

Hier heb ik goed en slecht nieuws voor je.

Laten we beginnen met het goede nieuws: ik heb daar een oplossing voor gevonden.

De oplossing voor UsbDk wordt niet geïnstalleerd / Mislukt bij het laden van de delegatie van edgetpu.dll

Update 5.11.2022:

Goed nieuws! We hebben een gepatchte Runtime Installer ZIP-bestanddie twee bugs oplost en kunt u de nieuwste Coral runtime installeren vervat in 20220308.

Deze werkt met de nieuwste runtime, omdat het ook libusb-1.0.dll omschakelt naar een werkende versie (afkomstig uit een vorig pakket). We hebben dit getest op Windows 8.1 en Windows 10. Dit gepatchte pakket lost de "Failed to delegate" fout op, en ook de segmentatie fouten.

Meld eventuele problemen in de commentaren hieronder!

historische inhoud met uitleg over de achtergrond

Voordat u de oplossing probeert, lees ook het slechte nieuws! (De oplossing werkt, maar is er een ander probleem die waarschijnlijk alleen Google kan oplossen! Ik raad aan: Ga naar de derde oplossing "Het betere nieuws" voor nu!)

Om het zekere voor het onzekere te nemen, moet je eerst... uninstall.bat

Overschrijf deze regel (regel 52) met twee nieuwe regels als volgt:

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

De dubbele dubbele punt geeft commentaar op de oorspronkelijke regel (ik laat liever de oorspronkelijke regels in de code staan voor deze reparaties, zodat we kunnen zien wat er gewijzigd is).

Wanneer u nu install.bat door erop te dubbelklikken, zal het UsbDk installeren.

UsbDk wordt geïnstalleerd

Opmerking: terwijl UsbDk wordt geïnstalleerd, hoor ik het bekende Windows USB unplug / replug geluid!

UsbDk verwijderen

Merk op dat de uninstall.bat heeft hetzelfde probleem. Bewerk de regel 51

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

Hiermee kunt u het UsbDk-installatieprogramma daadwerkelijk uitvoeren voor het ongedaan maken van de installatie.

U kunt ook (waarschijnlijk zonder bijwerkingen) ga naar de map third_party/usbdk in de map edgetpu Runtime, en klik met de rechtermuisknop op UsbDk om het te verwijderen:

Nogmaals, tijdens het verwijderen moet het UsbDk installatieprogramma te zien zijn en ook het karakteristieke USB "unplug" geluid dat Windows maakt moet te horen zijn!

Het slechte nieuws: Segmentatiefout

De fout verandert nu in een Segmentatiefout!

$ 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
Segmentatie fout

Opmerking - Ik hoor ook een Windows USB unplug geluid wanneer dit wordt uitgevoerd. Dit is te verwachten - het Coral-apparaat wordt eerst in een modus benaderd, zoals ik begrijp om er inferencing informatie op te duwen, en dan wordt het verondersteld te worden ontkoppeld.

Deze segmentatiefout is een stap vooruit, ook al lijkt het je niet zo. Mogelijk kan wat verder debuggen dit probleem oplossen, of mogelijk kan het Google-team ernaar kijken.

Ik heb mijn inzichten toegevoegd aan deze GitHub threadHopelijk wijst dat de ontwikkelaars van Google in de juiste richting...

Als je dit hebt geprobeerd en het werkt voor jou, laat dan hieronder een reactie achter!

Het betere nieuws: een werkende Coral Runtime versie!

Er is een versie van de Coral Runtime die deze bug niet heeft (UsbDk installatiebug zoals hierboven beschreven), en die ook de Segmentatiefout niet heeft.

Het enige nadeel is dat deze versie ondersteunt alleen versie 13 van de runtime (dus sommige functies van versie 14 zullen ontbreken).

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

Gebruik edgetpu_runtime_20210119 (Frogfish)

Het installatieprogramma zal UsbDk installeren. Let op, dit is een oudere UsbDk release (versie UsbDk_1.0.21_x64.msi) die gebundeld is met de 20210119 release, mogelijk is dit een deel van de redenen waarom dit werkt.

Hiermee zou je de Koraal USB papegaai inferentie voorbeeld op 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 RicCoral on Windows\coral\pycoral\examples\classify_image.py:79: DeprecationWarning: ANTIALIAS is deprecated en wordt verwijderd in Pillow 10 (2023-07-01). Gebruik in plaats daarvan Resampling.LANCZOS.
  image = Image.open(args.input).convert('RGB').resize(size, Image.ANTIALIAS)
----INFERENCE TIME----
Opmerking: De eerste inferentie op Edge TPU is traag omdat het model in het geheugen van Edge TPU wordt geladen.
12,5 ms
2,8 ms
2,8 ms
2,7 ms
2,7 ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.75781

Ik zal waarschijnlijk binnenkort een artikel toevoegen over hoe je de Coral USB op Windows 10 stap voor stap installeert, of mogelijk een video maken voor ons YouTube-kanaal.

Coral USB-versnellers kopen

Wij zijn een van de Coral USB distributeurs. Gelieve neem contact op met ons verkoopteam voor volumeaanvragen van de Coral USB, of als u wederverkoper wilt worden.

Als je er een voor jezelf wilt kopen, probeer een van onze resellersof u kunt koop een Coral USB-versneller in onze eigen winkel, buyzero.de

Coral USB Consulting

Zoals u wellicht in deze blogpost heeft gemerkt, kunnen wij u ondersteunen met consulting voor uw Coral USB-gebaseerde project. Als u de mogelijkheden van Coral EdgeTPU versnelling voor uw platform wilt bespreken, iemand nodig heeft om een oplossing voor u te implementeren, of een andere vorm van consulting / commerciële ondersteuning nodig heeft, neem dan contact op met neem contact op met ons verkoopteam.

Andere fouten

ImportError: DLL load failed while importing _pywrap_coral: De opgegeven module kon niet worden gevonden.

Deze fout vertelt je dat de install.bat niet is uitgevoerd.

    raise ValueError('Failed to load delegate from {}{}'.format(
ValueError: Mislukt om afgevaardigde van edgetpu.dll te laden

Na het oplossen van het UsbDk-probleem, zoals hierboven beschreven, zou deze fout moeten betekenen dat uw Coral USB-apparaat niet is aangesloten op uw Windows 10-computer.

Controleer dit met Windows Apparaatbeheer. Als het is aangesloten, zou het moeten verschijnen:

Controleer ook of de Coral USB-versneller normaal werkt:

raise ValueError('Failed to load delegate from {}{}'.format(
ValueError: Mislukt om afgevaardigde van edgetpu.dll te laden

Als u deze fout krijgt EN de Coral USB Accelerator verschijnt als "Goed werkend" in apparaatbeheer, controleer dan dubbel of de UsbDk-software is geïnstalleerd, zoals ik hierboven heb beschreven. U zou een "UsbDk Runtime Libraries" item moeten zien in uw Apps & functies: