Kunstmatige intelligentie (AI) is het modewoord van onze tijd. Als de centrale motor van digitalisering verandert het de samenleving, de economie en bijna alle andere gebieden van het leven fundamenteel. Veel bedrijven maken al gebruik van AI: in ontwikkeling, in productie, in administratie. Maar kunstmatige intelligentie helpt ons ook in het dagelijks leven – op sommige gebieden heel duidelijk, op andere nogal verborgen. Lees in dit artikel meer over AI en hoe je NVIDIA’s Jetson Nano kunt gebruiken om een AI-project te implementeren.
Kunstmatige intelligentie
Wat is kunstmatige intelligentie?
Kunstmatige intelligentie is het vermogen van een computer om taken op te lossen die normaal gesproken door mensenhanden zouden moeten worden gedaan. Het systeem moet intelligent kunnen handelen, vergelijkbaar met een mens, en zelfstandig kunnen leren. Deze definitie is echter onnauwkeurig, aangezien de term “intelligentie” moeilijk te definiëren is. Er zijn een aantal verschillende beschrijvingen van menselijke intelligentie. Gardner ontwikkelde een theorie van meervoudige intelligenties die acht dimensies van intelligentie opsomt:

Zoals je zult zien naarmate dit artikel vordert, is AI tegenwoordig van toepassing op veel, maar niet alle, van deze dimensies.
Wat maakt een computer intelligent?
Een klassiek algoritme is meestal permanent geïmplementeerd en neemt beslissingen op basis van sensordata, gebruikersinvoer en triggermomenten. Alle handelingen van een computer moeten door een mens worden geprogrammeerd. Tegenwoordig zijn de eisen aan een computer echter zo complex dat deze methode al snel zijn grenzen bereikt. Het is bijvoorbeeld onmogelijk om vooraf het gedrag van een gebruiker nauwkeurig te voorspellen of om alle bestaande objecten op aarde voor realtime objectherkenning te implementeren.
De computerwetenschappers herkenden dit probleem al heel vroeg. Daarom probeerden ze adaptieve computerprogramma’s te ontwikkelen. Aan de hand van voorbeeldgegevens kan een computer worden getraind in de gewenste functionaliteit. Deze procedure kan nu worden gebruikt om ziekten te diagnosticeren op basis van symptomen of röntgenfoto’s.
Er zijn verschillende testprocedures om te beoordelen of een computersysteem intelligent is – een daarvan is de “Turing-test”. Een persoon communiceert elektronisch met twee partners: een mens en een computer. De scheidsrechter stelt beiden een uitgebreide catalogus met vragen. Als hij de pc niet duidelijk kan identificeren op basis van de gegeven antwoorden, wordt hij als intelligent beschouwd.
Gemeten aan de eerder gepresenteerde dimensies van intelligentie moet deze test echter worden uitgebreid zodat ook andere dimensies dan pure kennis (beeld, beweging, taal) kunnen worden vastgelegd.
Machine learning
Hoe leert de computer?

Volgens de menselijke definitie worden mensen beschouwd als intelligente wezens. We lossen een veelvoud van echte problemen op zonder in staat te zijn om in detail te specificeren hoe we het zullen doen. Een voorbeeld is het onderscheid tussen appel en peer. Hetzelfde geldt voor complexe bewegingssequenties zoals fietsen: bijna niemand kan in detail beschrijven met welke bewegingen hij op de fiets zijn evenwicht weet te bewaren.
Dit zijn voorbeelden van stilzwijgende kennis die we niet in regels of instructies kunnen vastleggen. Als je geen expliciete regels hebt om een computer voor een taak te programmeren, is leren van ervaring of data een alternatief. Bij ‘machine learning’ analyseert een systeem de beschikbare data en past zichzelf stap voor stap aan zodat het zijn werk beter kan doen. Er zijn drie soorten leertaken:
Leren onder toezicht
In het geval van begeleid leren, krijgt het systeem wat het moet leren, zoals hoe onderscheid te maken tussen fietsen en motorfietsen. Daartoe krijgt hij veel foto’s van fietsen en motorfietsen die al handmatig zijn gemarkeerd als fiets of motorfiets. Na een groot aantal van dergelijke voorbeelden te hebben verwerkt, zoekt het systeem naar patronen die kunnen worden gebruikt om de objecten te onderscheiden. Op deze manier kan het systeem leren deze patronen toe te passen op nieuwe afbeeldingen om zo fietsafbeeldingen te onderscheiden van motorfietsafbeeldingen.
Bij gesuperviseerd leren wordt onderscheid gemaakt tussen twee andere belangrijke use-cases: Bij classificatie moet het systeem het antwoord kiezen uit een veelal klein aantal alternatieven of klassen. Een voorbeeld is de classificatie van een product als “goed” of “defect”. In de andere toepassing, de prognose (regressie), moet het systeem een of meer continue variabelen voorspellen, bijvoorbeeld de maximale temperatuur en windkracht voor de volgende dag in München.
Leren zonder toezicht
In het geval van unsupervised learning moet het systeem het doen zonder handmatige specificaties. Het leest de beschikbare data en probeert er zelfstandig patronen en regelmatigheden in te ontdekken. Het kan, voor. B. Groepeer gegevens op basis van overeenkomsten. Deze benadering is vooral veelbelovend wanneer de gegevens verschillende componenten hebben, zoals de verschillende woorden in een geschreven zin. In het beste geval kunnen de waarden van het ene woord worden gebruikt om het volgende onderdeel te voorspellen.
Deze vorm van leren wordt ook wel zelfgestuurd leren genoemd. Het is een vorm van gesuperviseerd leren waarvoor geen annotaties nodig zijn. Zelfgestuurd leren is wijdverbreid in de wereld van kunstmatige intelligentie. Als een systeem bijvoorbeeld de taak krijgt om de volgende beelden in een video te voorspellen, moet het een weergave van de scènes ontwikkelen en de mogelijke bewegingen en acties van de objecten voorspellen. Als er voldoende trainingsvideo’s zijn, ontstaat er een basis “begrip” van de processen in video’s. Het systeem kan dit gebruiken als basis voor het voorspellen van nieuwe videoscènes.
Versterkend leren
Bij wapeningsleren, ook wel wapeningsleren genoemd, moet het systeem eerst een reeks handelingen uitvoeren voordat het het eindresultaat te weten komt. Voorbeelden hiervan zijn bordspellen of het besturen van robots. Na elke actie reageert de omgeving (bijv. de tegenstander bij het schaken) en ontvangt het systeem nieuwe informatie over de status (bijv. de bordposities), mogelijk ook beloningen (bijv. punten, overwinning of nederlaag gekwantificeerd door een numerieke waarde).
Het doel van het systeem is om een actiestrategie te ontwikkelen waarmee het op elke situatie zo kan reageren dat een zo hoog mogelijke beloning wordt gegenereerd. De techniek van versterkend leren met behulp van beloningen en straffen is ontleend aan de psychologie en wordt onder meer gebruikt bij het africhten van honden.
Diep leren
Technisch gezien is deep learning een subset van machine learning (zie afbeelding 4). Het omvat alle methoden voor het zoeken naar patronen en relaties in gegevens met behulp van een diep neuraal netwerk. Kunstmatige neurale netwerken zijn algoritmen die zijn gemodelleerd naar het biologische model van het menselijk brein.
De structuur van een kunstmatig neuraal netwerk bestaat uit de invoerlaag, de verborgen laag en de uitvoerlaag. Ondanks hun mogelijke complexiteit hebben ze in wezen altijd de structuur van gerichte grafieken. Als een kunstmatig neuraal netwerk bijzonder diepe structuren heeft, d.w.z. veel verschillende verborgen lagen, wordt dit deep learning genoemd.

Zo’n systeem kan bijvoorbeeld de hoeveelheid neerslag morgen voorspellen op basis van de huidige luchtdruk, temperatuur en windrichting. Hoewel machine learning en deep learning vaak als synoniemen worden gebruikt, zijn er kleine maar subtiele verschillen. Terwijl machine learning wordt gebruikt voor gestructureerde invoergegevens, is deep learning met name geschikt voor grote ongestructureerde gegevens.
Gestructureerde invoergegevens kunnen uit een database worden besteld (bijvoorbeeld: kat met kleur, vorm, gezicht). Machine learning herkent de informatie hier automatisch uit en ontwikkelt zelfstandig algoritmen om deze objecten te classificeren. In het geval van ongestructureerde invoergegevens zoals teksten, afbeeldingen of muziek, herkent het deep learning-algoritme onbekende structuren en ontwikkelt hiermee een complex model waarmee objecten tijdens beeldherkenning kunnen worden geclassificeerd. Om een hoge modelkwaliteit te kunnen bereiken, vereist deze methode echter zeer grote hoeveelheden data.

NVIDIA Jetson Nano-kits
Het Jetson Nano-ontwikkelbord van NVIDIA biedt een inleiding tot het onderwerp “AI”. Dit maakt het mogelijk om kosteneffectieve en energiezuinige AI-systemen te ontwikkelen. De single-board computer met vier ARM-cores en Maxwell GPU als CUDA-computerversneller en video-engine opent nieuwe mogelijkheden voor grafische en rekenintensieve projecten.NVIDIA biedt twee versies van de Jetson Nano aan, met als enige verschillen de grootte van het werkgeheugen (2/4 GB RAM), de displayport en de stroomaansluiting. Met een afmeting van ongeveer 70 x 45 mm is de Jetson Nano-Module het kleinste Jetson-apparaat. Deze productieklare System-on-Module (SOM) biedt grote voordelen voor verschillende industrieën bij het leveren van AI: het biedt 472 GFLOP’s zodat moderne AI-algoritmen snel kunnen worden uitgevoerd. Er kunnen meerdere neurale netwerken parallel worden uitgevoerd en er kunnen meerdere sensoren met een hoge resolutie tegelijkertijd worden verwerkt. Met deze eigenschappen is het ideaal voor toepassingen zoals netwerkvideorecorders op instapniveau, huishoudelijke robots en intelligente gateways met volledige analytische mogelijkheden.
CPU | Quad-core ARM Cortex-A57 Moure-processor |
GPU | NVIDIA Maxwell-architectuur met 128 NVIDIA CUDA®-cores |
Hoofdgeheugen | 2/4 GB 64-bit LPDDR4, 1600MHz 25,6 GB/s |
Geheugen | microSD (kaart niet inbegrepen) |
Videocodering | 4Kp30 | 4x 1080p30 | 9x 720p30 (H.264 / H.265) |
Videodecodering | 4Kp60 | 2x 4Kp30 | 8x 1080p30 | 18x 720p30 (H.264 / H.265) |
Netwerk | Gigabit Ethernet |
Camera | 1x MIPI CSI-2-connector |
Weergave | HDMI 2.0 |
USB | 1x USB 3.0 Type A, 2x USB 2.0 Type A, USB 2.0 Micro-B |
Aansluitingen | 1x SDIO | 2x SPI | 4x I2C | 2x I2S | GPIO’s |
Maat | 69,6 mm x 45 mm |
Mechanica | 260-pins randconnector |
Wat is een CUDA-kern?
De term CUDA staat voor “Compute Unified Device Architecture” en is een architectuur die door NVIDIA is ontwikkeld voor parallelle berekeningen. Het extra gebruik van de GPU ontlast de CPU en vergroot de rekenkracht van een computer. Aangezien beide kernen worden aangetroffen op microprocessors die zijn gebaseerd op halfgeleidertechnologie, worden CUDA-kernen meestal beschouwd als gelijkwaardig aan CPU-kernen.
Daarnaast kunnen beide cores data verwerken, waarbij de CPU wordt gebruikt voor seriële dataverwerking, terwijl de GPU wordt gebruikt voor parallelle dataverwerking. CUDA-kernen zijn echter minder complex. Daarnaast zijn 128 CUDA-cores ingebouwd in de GPU van de Jetson Nano, terwijl de CPU slechts vier cores bevat. Daarnaast wordt CUDA variabel gebruikt: in beeld- en videoverwerking, maar ook in de medische wereld, zoals voor CT-beeldreconstructies. Vanwege de veeleisende ontwikkelomgeving wordt CUDA ook veel gebruikt op het gebied van AI, deep learning en machine learning. Andere toepassingsgebieden zijn computerbiologie en chemie, ray tracing en seismische analyses.
Wat is er mogelijk met de Jetson Nano?
Door zijn compacte ontwerp kan de Jetson Nano perfect worden geïntegreerd in robotprojecten. Met 128 CUDA-cores kan de single-boardcomputer veel bewerkingen parallel uitvoeren en maakt zo het gebruik van meerdere sensoren met realtime berekening mogelijk. Omgekeerd betekent dit dat het mogelijk zou zijn om een autonoom rijdende auto te ontwikkelen met een Jetson Nano. Ten slotte kon dankzij de steun van CUDA een neuraal netwerk direct op de Jetson Nano worden getraind. Daarentegen kon een dergelijk project met een Raspberry Pi alleen worden uitgevoerd met een extra GPU.
Ook klassieke AI-systemen, zoals object-/persoonherkenning in realtime, zijn mogelijk met de Jetson Nano. Met behulp van de open source bibliotheken OpenCV of YOLO kunt u voorgetrainde modellen downloaden om vervolgens object-/persoonherkenning uit te voeren. Het is ook mogelijk om je eigen model te trainen. Met voldoende datarecords kunnen bijvoorbeeld personen- of autokentekenplaten duidelijk worden geïdentificeerd op bewakingscamera’s om bijvoorbeeld het openen van deuren te automatiseren.
Realtime objectherkenning met de Jetson Nano
Met behulp van een eenvoudig project willen we je de kracht van de Jetson Nano laten zien, zoals hierboven vermeld. Objectherkenning als een typische AI-vereiste voor systemen kan in principe ook worden beheerst door computers met één bord zonder CUDA-kern, zoals de Raspberry Pi. Om deze eis in realtime te kunnen oplossen, zijn CUDA-cores echter onmisbaar, omdat grote hoeveelheden gegevens parallel en in realtime moeten worden berekend. Met zijn 128 CUDA-cores is de Jetson Nano hier bij uitstek geschikt voor en werd daarom voor dit project geselecteerd.
Inspanning
Aangezien de AI voor realtime objectherkenning al voorgeprogrammeerd is binnen de open source omgeving van OpenCV en YOLO, is de inspanning van deze how-to beperkt. Zolang er geen nieuwe objecten aan de AI moeten worden geleerd, hoeft u het neurale netwerk niet verder te trainen. Als de AI echter verder moet worden aangepast, is enige diepgaande technische kennis vereist. De echte inspanning is echter het downloaden en installeren van het AI-model en het voorbereiden van de benodigde setup (cameraverbinding) voor de applicatie.
Moeilijkheidsgraad
Gemiddeld: zonder de AI te trainen
Moeilijk: Met training in AI (kennis van OpenCV/YOLO en programmeerkennis in Python en C)
Tijdsbesteding
- Download en installatie van het besturingssysteem: ca. 45 min
- Download en installatie van het AI-model (afhankelijk van de lees-/schrijfsnelheid van de microSD-kaart en internetbandbreedte): ca. 4-6 uur
- Configuratie: ca. 15 min
- Totaal: 5-7 uur
Kosten
- Totaalprijs: Hardware ca. € 130 + standaarduitrusting (monitor, toetsenbord, muis, Android-telefoon met camera)
Hardware
Software
De gebruikte software is volledig open source-gebaseerd en daarom gratis beschikbaar.
Installatie
Om het besturingssysteem te installeren, heb je een microSD-kaart nodig met een minimale grootte van 64 GB. Voor dit project raden we aan om een snelle MicroSD-kaart te gebruiken, aangezien de installatie van de trainingsgegevens – afhankelijk van de schrijfsnelheid – meer dan zes uur kan duren. Als je ook de 4GB-versie van de Jetson Nanos gebruikt, kun je een hogere FPS-snelheid (frames per seconde) behalen bij het detecteren van objecten.
Download eerst de juiste versie van het besturingssysteem van de NVIDIA-ontwikkelaarswebsite. Voor de beeldflits kan het programma BalenaEtcher worden gebruikt. Het enige wat u hoeft te doen is de geladen afbeelding en de microSD-kaart te selecteren (Afbeelding 5) – het flash-proces kan worden gestart. Wees echter niet verbaasd: het proces kan tot 30 minuten duren.

Na het flashproces kan de microSD-kaart in de overeenkomstige microSD-kaartsleuf van de Jetson Nano worden gestoken. Voordat je de Jetson Nano van stroom voorziet, sluit je een toetsenbord, muis en scherm aan via de HDMI/displayport. U kunt nu beginnen met het configureren van het besturingssysteem.
Volg hiervoor de instructies op het scherm. Zorg ervoor dat u “nvidia” kiest als uw gebruikersnaam. De code van dit project werkt alleen met deze naam. Het is mogelijk om dit te omzeilen, maar u moet de code op de juiste plaatsen wijzigen.

Zodra het configuratieproces is voltooid, wordt de Jetson Nano automatisch opnieuw opgestart. Log vervolgens in met uw wachtwoord en de desktopomgeving wordt geopend.
Start de terminal en download de bijbehorende Github-repository. Voer hiervoor de volgende opdracht in de opdrachtregel in:
git clone https://github.com/wiegehtki/nvjetson_opencv_gsi.git
Gebruik de opdracht cp nvjetson_opencv_gsi/Installv2.3.8.sh om het bestand “Installv2.3.8.sh” van de map “nvjetson_opencv_gsi” naar het huidige te kopiëren. Vervolgens moeten alle shellscripts van “sudoers” in de huidige map worden geïntegreerd met het commando cp nvjetson_opencv_gsi/nv*sh. De shellscripts kunnen worden gelezen met het commando chmod +x *sh.
Om te voorkomen dat het systeem u tijdens de installatie voortdurend vraagt om uw wachtwoord in te voeren, kunt u uzelf “superuser-rechten” verlenen met het volgende commando:
sudo su
./nvidia2sudoers.sh
exit
Nu kunt u de terminal opnieuw openen en de installatie starten met ./Installv2.3.8.sh. Start nu de terminal opnieuw en start de installatie:
Om de voortgang van de installatie te kunnen volgen, opent u een tweede terminalvenster.
Let op: De installatie kan enkele uren duren (ca. vier tot zes), nadat alle reeds getrainde modellen opnieuw moeten worden gedownload. Wanneer het proces is voltooid, wordt de Jetson Nano automatisch opnieuw opgestart. Als u nu het inlogscherm ziet, is de installatie gelukt.
Configuratie van de IP-webcam-app
In dit project wordt een mobiele telefooncamera gebruikt voor objectherkenning. Om de Jetson Nano via WLAN toegang te geven tot de camera van de mobiele telefoon, moet de app “IP Webcam” worden gedownload. Om de app niet te overspoelen met gegevens van de Jetson Nano en zo het geheugen van de smartphone tot het uiterste te drijven, moeten mogelijk enkele instellingen in de app worden gedaan.




Deactiveer eerst de audiomodus (Afbeelding 7: Audio Modus = Audiomodus), aangezien in dit project alleen afbeeldingen moeten worden verwerkt. Vervolgens kunt u de resolutie, kwaliteit en FPS aanpassen onder “Video-instellingen” (Afbeelding 8: Videoauflösung = Videoresolutie; Qualität = Kwaliteit; FPS Limitierung = FPS-beperking). Werk je met de 4 GB versie van de Jetson Nano, dan kun je de resolutie op Full HD laten staan. Voor de minder krachtige versie (2 GB) wordt een lagere resolutie aanbevolen. Bovendien kan de automatische cameradetectie “ONVIF” worden gedeactiveerd (Afbeelding 9: Unterstützung von ONVIF aktivieren = ONVIF-ondersteuning activeren), omdat deze functie alleen maar extra overhead in het datapakket veroorzaakt.
Als alle instellingen zijn gemaakt, kunt u nu de camera openen onder “Start Server” (Afbeelding 7: Server starten = Start server; Videostreaming starten = Start videostreaming). Voor de volgende stap moeten het bijbehorende IP-adres, waarmee de Jetson Nano verbinding kan maken, en de poort (rechts van het IP-adres) worden genoteerd (Afbeelding 10).
Realtime objectherkenning starten
Voordat objectherkenning kan worden gestart, moet u het IP-adres en de poort van de mobiele telefooncamera in het shellscript opslaan. Start de terminal en doe het volgende:
cd darknet
nano smartcam.sh
Er wordt nu een venster geopend (Afbeelding 11) waarin u op de gemarkeerde positie het juiste IP-adres en de juiste poort invoert.
Nu moet u de wijziging opslaan en het shellscript sluiten.
Voer de opdracht ./smartcam.sh in dezelfde map in om realtime objectherkenning te starten.

De Jetson Nano maakt automatisch verbinding met de camera. U kunt de afbeelding nu in een apart venster zien (zie Afbeelding 12). De AI herkent verschillende objecten in realtime en kan deze classificeren door een bepaald betrouwbaarheidsniveau op te geven (bijvoorbeeld 94%). Sommige items zijn nog onbekend bij de AI. Met een beetje programmeerwerk kun je het AI-systeem in de ontwikkelomgeving trainen en je kennis uitbreiden zoals je wilt.

Samenvatting
In dit project hebben we je laten zien hoe je met weinig moeite je eigen AI-project in de praktijk kunt brengen. Het enige wat je nodig hebt is een Jetson Nano van NVIDIA, een computer waarmee je alles programmeert en een smartphonecamera. Met behulp van realtime herkenning kan de Jetson Nano objecten classificeren en met een beetje hulp zelfs nieuwe objectclassificaties maken. Er is dus niet veel voor nodig om je onder te dompelen in de wereld van AI. Probeer het ook.
Afbeeldingen: reichelt elektronik GmbH & Co. KG