Blogs | InSpark

You only look once (YOLO) op Edge (v5)

Geschreven door Jerry Broch | Jul 16, 2024 8:41:26 AM

Als vervolg op mijn eerdere blog over het trainen en laten draaien van objectherkenning op Azure Machine Learning, beschrijf ik in deze blog hoe je versie 5 van het object detectie algoritme YOLO op de Jetson Nano van Nvidia kunt laten draaien.

Waarom objectherkenning “on Edge”?

Hoewel we massaal naar de cloud migreren, zijn er soms ook voordelen aan het offline houden van je analyses. Edge computing betekent in deze context dat zowel het vastleggen als het analyseren van camerabeelden, op hetzelfde apparaat gedaan wordt. De camerabeelden hoeven hierdoor niet eerst naar de cloud gestuurd te worden. Dit kan handig zijn als een camera niet verbonden is met het internet, maar ook als je bijvoorbeeld niet wilt dat er (privacy-)gevoelige data over een netwerk wordt verzonden. Daarnaast kan performance ook een reden zijn. Omdat de beelden direct geanalyseerd kunnen worden is er geen latency, wat handig is voor real-time scenario’s.

Het Edge device

Voor deze demo heb ik gebruik gemaakt van de Jetson Nano van Nvidea. Deze heeft een Graphics Processing Units (GPU) en ook software zoals Python en Docker zijn al geïnstalleerd. Je zou ook een Raspberry Pi met GPU kunnen gebruiken en zelf nog software installeren zoals Python, Docker, CUDA, etc.

Figuur 1: Jetson Nano met camera

 Overige benodigde hardware

Voor je kunt starten heb je naast je Edge device ook nog wat andere hardware nodig zoals een muis en toetsenbord met usb aansluiting, en een micro SD kaart. Voor dit soort projecten raad ik aan om minimaal een kaart van 64GB te gebruiken, aangezien de software die nodig is voor de setup en de data die je nodig hebt voor objectherkenning bij elkaar al snel zo’n 30GB beslaat. Gebruik je de 32GB zoals aangegeven als minimale opslag? Dan houd je weinig ruimte over.

Ook een monitor is handig, maar niet vereist. Het kan fijn zijn om eerst te zien wat er allemaal gebeurt bij een setup en hoe het besturingssysteem eruit ziet, zeker als je nog nooit met Linux hebt gewerkt. Beschik je niet over een monitor? Dan kan je altijd nog in headless-mode werken. Hierbij maak je verbinding met het device vanaf je eigen computer of laptop. Hiervoor kan je bijvoorbeeld PuTTY gebruiken.

Daarnaast is een usb wifi connector handig, zodat je niet beperkt bent door internet via kabel. Zelf gebruikte ik de Edimax 7611. Dit is gelijk een bluetooth adapter zodat je ook je bluetooth-apparaten als muis en keyboard kunt gebruiken.

Setup

Als je de juiste hardware hebt kan je beginnen met de setup. Dit staat goed beschreven op de site van Nvidia zelf: https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit. Doorloop de stappen zoals door Nvidia beschreven. Wanneer je eenmaal het apparaat hebt opgestart en ook de stappen van het device hebt doorlopen, ben je klaar om te beginnen met de setup van image recognition.

In de volgende stappen wordt er vanuit gegaan dat je internet hebt op het device. Mocht je wifi willen installeren en dezelfde wifi-dongle hebben staat hier beschreven hoe je deze aan de praat kunt krijgen: https://learn.sparkfun.com/tutorials/adding-wifi-to-the-nvidia-jetson/all

Yolo v5 installeren en draaien

Om alles te laten draaien in een aparte omgeving, maken we gebruik van Docker. Met Docker kun je eenvoudig om geïsoleerde omgeving opzetten, die de juiste tools bevat om een specifieke taak uit te voeren. Zo’n omgeving (container) kan worden aangemaakt d.m.v. een Dockerfile. Deze is te downloaden uit de hieronder genoemde GitHub repo.

Open de terminal en vul de volgende commands in:

Als het goed is zou je nu moeten zien dat de laatste versie van het yolov5-model wordt gedownload. Wanneer dit is voltooid en je een webcam hebt aangesloten, zie je iets wat lijkt op wat er in de afbeelding hieronder te zien is: er opent een nieuw scherm met de camerabeelden, inclusief de gedetecteerde objecten. Resultaten worden in een aparte file opgeslagen.

Figuur 2 Yolov5 draaien op Jetson Nano

Next steps & scenario’s

Leuk dat we nu Yolov5 hebben laten draaien op een Edge device, maar wat kunnen we er verder nog mee? Allereerst is er de mogelijkheid om het model te trainen op objecten die het nog niet kent. Advies is dit niet te doen op het Edge device zelf, maar om hiervoor wel de kracht van cloud computing te gebruiken. Hiervoor kan deze blog als handleiding dienen.

Of je nu een nieuw model of een bestaand model gebruikt, er is met zo’n Edge device veel meer mogelijk dan wanneer je het model alleen in de cloud laat draaien. Het mooie hiervan is dat je vrij snel kunt starten met image recognition, zonder hiervoor eerst dure apparaten aan te schaffen. Zo kun je met weinig budget al gebruik maken van een state of the art image recognition model.

Er zijn hierdoor natuurlijk veel toepassingsmogelijkheden te bedenken, maar om er een paar te noemen:

  • Social distancing scenario’s (waarbij privacy een rol speelt)
  • Tellen van dieren in bossen (waar geen internetverbinding is)
  • Drukte meten op fietspaden, autowegen, etc.
  • Crowdcontrol in musea of op festivals
  • Gevaar detectie in de bouw, op stations of op Schiphol
  • Machine vision scenario’s zoals defecte objecten op een lopende band detecteren

Conclusie

Wil je nou meer weten over de mogelijkheden van image recognition? Laat het me weten. Ik denk graag met je mee over de mogelijkheden binnen jouw organisatie.