Computer vision en image recognition
Fotoherkenning
Je smartphone heeft meestal ten minste één camera en veel laptops zijn uitgerust met een webcam. Maar dit betekent niet dat deze apparaten kunnen “zien” zoals mensen of dieren. Met onze ogen kunnen we niet alleen zien ('vision'), maar we kunnen ook objecten herkennen ('recognition'). Als we een computer informatie in beelden willen leren herkennen, spreken we van ' computer vision' en ' image recognition'.
Maar let op: “visie” is nog geen “herkenning”. Herkenning veronderstelt namelijk niet alleen “visie”, maar ook herkenning en voorkennis.
Computervisie
-
Kleurdetectie:Hierbij worden specifieke kleuren in afbeeldingen of videoframes gedetecteerd. Deze techniek wordt vaak gebruikt in toepassingen zoals het sorteren van objecten op kleur of het volgen van gekleurde markeringen in een scène.
Test kleurdetectie: https://www.leerschool.be/experiment/colordetection
-
Randdetectie:Identificeert randen in een afbeelding, vaak gebruikt om objectgrenzen en andere belangrijke overgangen in intensiteit te vinden.
-
Gezichtsherkenning:Deze techniek identificeert menselijke gezichten in afbeeldingen of video's. Het wordt gebruikt in veel toepassingen, variërend van beveiliging tot interactie met gebruikersinterfaces.
-
Blobdetectie:Een techniek die groepen aaneengesloten pixels identificeert die zich onderscheiden van de rest van de afbeelding. Dit is handig voor het volgen van objecten en het bepalen van hun eigenschappen zoals grootte en vorm.
-
Bewegingsdetectie:Detecteert veranderingen in de positie van objecten tussen opeenvolgende videoframes. Dit wordt veel gebruikt in beveiligingssystemen en om opnames of alarmen te activeren.
Test bewegingsdetectie: https://www.leerschool.be/experiment/motiondetection
-
Patroonherkenning:Identificeert en classificeert automatisch patronen in afbeeldingen. Dit kan worden gebruikt voor tekstherkenning, symboolidentificatie of herkenning van natuurlijke scènes.
In winkels “herkennen” scanners barcodes. De meeste smartphones herkennen informatie in QR-codes. Smartphones herkennen het gezicht of de vingerafdruk van de gebruiker. Er is software nodig om de ruwe beeldinformatie te herkennen. Net als bij mensen zijn het niet de ogen maar de hersenen die objecten en mensen herkennen.
Herkenning van tekstbarcodes: https://www.publihub.media/publiceer/scanner
-
Dieptewaarneming:Deze technieken gebruiken verschillende methoden, zoals stereovisie (waarbij twee camera's worden gebruikt om diepte in te schatten) of dieptecamera's, om de afstand van objecten tot de camera te meten.
-
Optische tekenherkenning (OCR):Converteert afbeeldingen van getypte of geschreven tekst naar machinegecodeerde tekst. Wordt vaak gebruikt voor het digitaliseren van gedrukte documenten en het lezen van nummerplaten.
-
Objectherkenning (Objectherkenning):Identificeert objecten in een afbeelding of video. Dit omvat het classificeren van een object als een bepaald type (zoals een auto, mens, dier) en het lokaliseren van de positie ervan in het beeld.
-
Segmentatie:Verdeelt een afbeelding in meerdere segmenten, elk met overeenkomstige eigenschappen zoals kleur of textuur. Dit is handig voor gedetailleerde analyse en bewerking van specifieke delen van een afbeelding.
-
...
Deze technieken zijn de bouwstenen voor veel complexere computervisiesystemen die op grote schaal worden gebruikt in industrieën zoals de auto-industrie, gezondheidszorg, beveiliging en entertainment.
Traditionele OCR zonder AI
Stripe codes, QR-codes en tekstherkenning zijn relatief oude technieken. De software reduceert de afbeelding tot een zwart-wit beeld. Bij OCR(“optical character recognition”) vergelijkt de software rasters van zwarte pixels met bestaande letters. Op deze manier kan OCR-software tekst herkennen. Dit betekent echter niet dat de software begrijpt waar de tekst over gaat. OCR-technologie zet de pixelgegevens weer om in bewerkbare tekst. Net zoals een klein kind de naam moet leren van alle objecten en levende wezens in de fysieke wereld, moet AI software stapsgewijs elementen leren herkennen. Als je een kind vaak genoeg bepaalde letters laat zien, leert het die letters kennen. Hetzelfde geldt voor AI. Klassieke OCR kan ondersteboven gedrukte letters niet herkennen, maar een kind of AI wel.
OCR is niet “nieuw”. Emanuel Goldberg (1881-1970) verwierf in 1970 een patent voor een apparaat dat foto-elektrische cellen en patroonherkenning kon gebruiken om documenten op microfilm te doorzoeken.
Herkennen van objecten in echte afbeeldingen
Als je een softwareprogramma een hond wilt leren herkennen, moet je de software eerst honderden of duizenden afbeeldingen van honden voorschotelen. De massa gegevens die via big data-technieken is verzameld, komt hier goed van pas. ImageNet is een gigantische database met miljoenen afbeeldingen. Het project heeft een grote rol gespeeld in het bevorderen van computer vision en deep learning onderzoek. De gegevens zijn vrij beschikbaar voor onderzoekers voor niet-commercieel gebruik. Door een selectie van gegevens uit zo'n database leert 'beeldherkennings'-software stapsgewijs dat zowel een pekinees als een pitbull honden zijn. Bovendien moet de software leren dat zowel Disney's Pluto als Lassie honden zijn.
Alleen als een robot snel en nauwkeurig objecten kan herkennen, kan hij (zij?) “rondlopen” zoals echte mensen. Zelfrijdende auto's maken bijvoorbeeld gebruik van AI-gebaseerde computer 'vision' en 'beeldherkenning' om voetgangers, verkeersborden, voertuigen .... te herkennen. Ze moeten niet slechts één bepaald object kunnen herkennen, maar alle onderdelen in het gezichtsveld, en het liefst razendsnel. Een zelfrijdende auto die met een behoorlijke snelheid rijdt, moet een licht dat op rood springt, een kind dat achter een bal aan rent in de juiste context herkennen. Een kind dat op de stoep speelt is bijvoorbeeld niet direct een probleem, alleen als het plotseling de straat op rent. De AI-software moet dus niet alleen de onderdelen herkennen (“ objectsegmentatie”), maar ook voortdurend de algemene context van het beeld, als een stroom van binnenkomende gegevens, en inschatten hoe er op de juiste manier moet worden gereageerd. Maar of het begrijpen van de context, de “umwelt”, ook zal leiden tot een vorm van “kunstmatig bewustzijn” is een ander verhaal.
Beeldherkenning, ook bekend als beeldclassificatie, is een proces waarbij objecten of patronen in digitale beelden worden geïdentificeerd en gelabeld. Deze technologie wordt veel gebruikt in verschillende industrieën, waaronder gezondheidszorg, beveiliging en marketing.
Leren om beeldinhoud te classificeren
Afbeeldherkenning is in staat om alles te herkennen omdat het machine-learning algoritmen gebruikt die getraind zijn op een grote dataset van afbeeldingen. Deze algoritmen leren om patronen en kenmerken in afbeeldingen te identificeren die overeenkomen met verschillende objecten of categorieën.
De sleutel tot dit proces is het gebruik van diepe neurale netwerken, met name convolutionele neurale netwerken (CNN's). CNN's zijn ontworpen om complexe patronen in afbeeldingen te herkennen door gebruik te maken van meerdere lagen van onderling verbonden neuronen die verschillende filters toepassen op de beeldgegevens.
Tijdens de training krijgt de CNN een grote dataset afbeeldingen te zien met het bijbehorende object of categorie. De CNN leert om patronen en kenmerken in de beelden te herkennen die geassocieerd worden met specifieke labels.
Als de CNN eenmaal is getraind, kan hij worden gebruikt om nieuwe afbeeldingen te classificeren. Wanneer een afbeelding wordt gepresenteerd aan de CNN, wordt deze verwerkt door de verschillende lagen van het netwerk, waarbij elke laag verschillende kenmerken en patronen uit de afbeelding haalt. De laatste laag van het netwerk produceert een vector van waarschijnlijkheden die de waarschijnlijkheid weergeven dat de afbeelding tot elk van de mogelijke categorieën behoort.
Het belangrijkste voordeel van deze benadering is dat het algoritme voor machinaal leren een grote verscheidenheid aan objecten en patronen kan herkennen, zonder dat er expliciete programmering of extractie van kenmerken nodig is. In plaats daarvan leert het algoritme patronen en kenmerken automatisch herkennen, gebaseerd op de patronen en kenmerken die aanwezig zijn in de trainingsgegevens.
Samengevat is beeldherkenning in staat om alles te herkennen omdat het machine-learning algoritmen gebruikt die getraind zijn op grote datasets van afbeeldingen, waardoor het algoritme leert om patronen en kenmerken te herkennen die geassocieerd worden met verschillende objecten en categorieën.
Datasets voor afbeeldingen
Er zijn veel gratis of open datasets voor afbeeldingen beschikbaar die gebruikt kunnen worden voor het trainen van beeldherkenningsmodellen. Hier zijn enkele populaire datasets en waar je ze kunt vinden:
-
ImageNet: Dit is een grootschalige beelddatabase met meer dan 14 miljoen gelabelde afbeeldingen die meer dan 20.000 categorieën dekken. De dataset wordt vaak gebruikt voor het trainen van diepe neurale netwerken voor beeldherkenning. Je kunt de dataset downloaden van de ImageNet website ( http://www.image-net.org/).
-
CIFAR-10 en CIFAR-100: Dit zijn datasets van 60.000 32x32 kleurenafbeeldingen in respectievelijk 10 of 100 klassen. Ze worden vaak gebruikt voor het benchmarken van beeldherkenningsalgoritmen. Je kunt de datasets downloaden van de CIFAR website ( https://www.cs.toronto.edu/~kriz/cifar.html).
-
MNIST: Dit is een dataset van 70.000 handgeschreven cijfers, die vaak wordt gebruikt voor het benchmarken van beeldherkenningsalgoritmen. Je kunt de dataset downloaden van de MNIST-website ( http://yann.lecun.com/exdb/mnist/).
-
OpenImages: Dit is een grootschalige beelddataset met miljoenen geannoteerde afbeeldingen die een breed scala aan categorieën dekken, waaronder objecten, scènes en activiteiten. Je kunt de dataset downloaden van de OpenImages website ( https://storage.googleapis.com/openimages/web/index.html).
-
COCO: De Common Objects in Context (COCO) dataset is een grootschalige dataset voor objectdetectie, segmentatie en ondertiteling. Het bevat meer dan 330.000 afbeeldingen met meer dan 2,5 miljoen objectinstanties gelabeld in 80 verschillende categorieën. Je kunt de dataset downloaden van de COCO-website ( https://cocodataset.org/).
Dit zijn slechts enkele voorbeelden van de vele gratis en open datasets die beschikbaar zijn voor beeldherkenning. Andere bronnen van beelddatasets zijn academische onderzoeksprojecten, overheidsinstellingen en industriële initiatieven.
Op deze website kunt u uw eigen beeldherkenningsmodel trainen: https://teachablemachine.withgoogle.com/train/image
Hoe ziet een dataset eruit?
Voor beeldherkenning ontvangen AI-modellen een
serie foto's als trainingsgegevens. Deze foto's worden meestal in digitale vorm aangeleverd, zoals JPEG- of PNG-bestanden. De trainingsgegevens kunnen afkomstig zijn van verschillende bronnen, zoals openbare datasets, specifiek samengestelde datasets of zelfs gegenereerde synthetische datasets.
In de context van deep learning en convolutionele neurale netwerken (CNN's), die vaak worden gebruikt voor beeldherkenning, worden de trainingsbeelden meestal geleverd met bijbehorende labels. Deze labels geven de juiste classificatie of categorie van elke afbeelding aan. Als het bijvoorbeeld gaat om het herkennen van katten en honden, kunnen de labels aangeven of een bepaalde afbeelding een kat of een hond bevat.
De trainingsgegevens kunnen worden opgeslagen in verschillende formaten, afhankelijk van de specifieke behoeften van het gebruikte AI-model en framework. Het is echter gebruikelijk om de afbeeldingen en labels te koppelen in een gestructureerd formaat, zoals een JSON-bestand. Elk item in de JSON kan de locatie van de afbeelding en het bijbehorende label bevatten. Op deze manier kan het AI-model de trainingsgegevens gemakkelijk lezen en verwerken tijdens het trainingsproces.
Een voorbeeld van een bijbehorend JSON-bestand:
{
"dataset": "ImageNet",
"beschrijving": "Dataset van gelabelde afbeeldingen voor objectherkenning",
"images": [
{
"id": 1,
"file_path": "/pad/tot/afbeelding1.jpg",
"label": "cat"
},
{
"id": 2,
"file_path": "/pad/tot/afbeelding2.jpg",
"label": "hond"
},
{
"id": 3,
"file_path": "/pad/tot/afbeelding3.jpg",
"label": "cat"
}
// ... overige afbeeldingen
]
}
Wat als je meerdere objecten in één foto wilt herkennen?Als je meerdere objecten in één foto wilt herkennen, moet je de AI tijdens de training vertellen waar je die objecten in de foto vindt. Je kunt dat doen door een “bounding box” te gebruiken om de pixellocaties aan te geven waar de objecten kunnen worden gevonden.
Een voorbeeld van een bijbehorend JSON-bestand:
{
"dataset": "Multi-Object Herkenning",
"beschrijving": "Dataset van gelabelde afbeeldingen voor multi-object herkenning",
"images": [
{
"id": 1,
"file_path": "/pad/tot/afbeelding1.jpg",
"objecten": [
{
"label": "cat",
"bounding_box": [100, 150, 250, 300]
},
{
"label": "chair",
"bounding_box": [350, 200, 500, 400]
}
]
},
{
"id": 2,
"file_path": "/pad/tot/afbeelding2.jpg",
"objecten": [
{
"label": "hond",
"bounding_box": [200, 100, 350, 250]
},
{
"label": "ball",
"bounding_box": [400, 300, 450, 350]
}
]
}
// ... overige afbeeldingen
]
}
Het is belangrijk op te merken dat moderne AI-modellen, zoals Aidan, vaak enorme hoeveelheden trainingsgegevens nodig hebben om accurate resultaten te behalen. Datasets voor beeldherkenning kunnen duizenden of zelfs miljoenen afbeeldingen bevatten, met bijbehorende labels, om de AI-modellen te helpen patronen te leren en herkennen.
Het beeldherkenningsproces
Het proces van beeldherkenning kan worden onderverdeeld in verschillende stappen:
-
Acquisitie: De eerste stap is het verwerven van een beeld, meestal via een camera of andere sensoren. Het beeld wordt vervolgens gedigitaliseerd en opgeslagen als een matrix van pixels, waarbij elke pixel een kleur en intensiteitswaarde vertegenwoordigt.
-
Voorbewerking: De ruwe beeldgegevens zijn meestal ruw en kunnen irrelevante of overbodige informatie bevatten. Voorverwerkingstechnieken zoals formaat wijzigen, bijsnijden en normaliseren worden gebruikt om ruis te verwijderen en de grootte en kleurruimte van de afbeelding te standaardiseren.
-
Feature-extractie: Nadat de afbeelding is voorbewerkt, is de volgende stap het extraheren van relevante kenmerken die verschillende objecten of patronen in de afbeelding onderscheiden. Gebruikelijke technieken voor het extraheren van kenmerken zijn onder andere randdetectie, textuuranalyse en kleurhistogrammen.
-
Classificatie: De geëxtraheerde kenmerken worden vervolgens gebruikt om een machine-learningmodel te trainen om verschillende objecten of patronen te herkennen. De meest gebruikte classificatiealgoritmen voor beeldherkenning zijn diepe neurale netwerken zoals convolutionele neurale netwerken (CNN's), die bijzonder effectief zijn in het detecteren van patronen in afbeeldingen.
-
Nabewerking: Tot slot wordt de uitvoer van het classificatiemodel meestal verder verwerkt om de nauwkeurigheid te verbeteren en fout-positieven te elimineren. Dit kan technieken omvatten zoals drempelvorming, morfologische bewerkingen en clustering.
Samengevat bestaat beeldherkenning uit het verwerven en voorbewerken van beelden, het extraheren van relevante kenmerken, het trainen van een classificatiemodel en het nabewerken van de resultaten om de nauwkeurigheid te verbeteren.