AI en beeldherkenning

Fotoherkenning

Uw 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 ' beeldherkenning'. 

Maar let op: "visie" is nog geen "herkenning". Herkenning veronderstelt namelijk niet alleen "visie", maar ook herkenning en voorkennis.

Computer vision

Computer vision is een vakgebied binnen de kunstmatige intelligentie dat zich richt op het interpreteren en begrijpen van de visuele wereld. Hier zijn enkele van de meest gebruikte technieken in computervisie, elk met een korte uitleg:
  1. 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

  2. Randdetectie:Identificeert randen in een afbeelding, vaak gebruikt om objectgrenzen en andere belangrijke overgangen in intensiteit te vinden.

  3. Gezichtsherkenning:Deze techniek identificeert menselijke gezichten in afbeeldingen of video's. Het wordt gebruikt in vele toepassingen, variërend van beveiliging tot interactie met gebruikersinterfaces.

  4. Blobdetectie:Een techniek die groepen aaneengesloten pixels identificeert die zich onderscheiden van de rest van de afbeelding. Dit is nuttig voor het volgen van objecten en het bepalen van hun eigenschappen zoals grootte en vorm.

  5. 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

  6. Patroonherkenning:Automatisch patronen in afbeeldingen identificeren en classificeren. Dit kan worden gebruikt voor tekstherkenning, symboolidentificatie of herkenning van natuurlijke scènes. 
    In winkels "herkennen" scanners streepjescodes. 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 streepjescodes:  https://www.publihub.media/publiceer/scanner

  7. Dieptewaarneming:Deze technieken gebruiken verschillende methoden, zoals stereovisie (waarbij twee camera's worden gebruikt om diepte te schatten) of dieptecamera's, om de afstand van objecten tot de camera te meten.

  8. Optische tekenherkenning (OCR):Zet afbeeldingen van getypte of geschreven tekst om in machinegecodeerde tekst. Wordt vaak gebruikt voor het digitaliseren van gedrukte documenten en het lezen van nummerplaten.

  9. 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 de afbeelding.

  10. 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.

  11. ...

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 afbeelding. In 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.

OCR met ANN's (AI) 

Herkennen van objecten in echte beelden  

Als je een softwareprogramma een hond wilt leren herkennen, moet je het programma eerst honderden of duizenden afbeeldingen van honden laten zien. De massa gegevens die door middel van big data-technieken is verzameld, komt hier te hulp. 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 op AI gebaseerde computer-'visie' en 'beeldherkenning' om voetgangers, verkeersborden en 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 de algehele context van het beeld voortdurend herkennen, als een stroom binnenkomende gegevens, en inschatten hoe op de juiste manier te reageren. 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 op grote schaal gebruikt in verschillende industrieën, waaronder gezondheidszorg, beveiliging en marketing.

Leren classificeren van beeldinhoud

Afbeeldherkenning kan alles 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 beelden 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 zijn gekoppeld aan specifieke labels. Een CNN kan bijvoorbeeld leren dat bepaalde combinaties van randen, kleuren en texturen kenmerkend zijn voor katten.

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 meerdere 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 bij elk van de mogelijke categorieën hoort.

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.

Beelden datasets

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:

  1. 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/).

  2. 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).

  3. 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/).

  4. OpenImages: Dit is een grootschalige afbeeldingsdataset met miljoenen geannoteerde afbeeldingen voor een groot aantal categorieën, waaronder objecten, scènes en activiteiten. Je kunt de dataset downloaden van de OpenImages website ( https://storage.googleapis.com/openimages/web/index.html).

  5. 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 initiatieven uit de industrie.

U kunt uw eigen beeldherkenningsmodel trainen op deze website:  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 in verschillende formaten worden opgeslagen, afhankelijk van de specifieke behoeften van het gebruikte AI-model en raamwerk. Echter, 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 afbeeldingslocatie 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",
  "description": "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"
    },
    ...
  ]
}

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 kunt vinden. 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 Recognition",
  "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]
        }
      ]
    },
    ...
  ]
}

Het is belangrijk op te merken dat moderne AI-modellen, zoals Aidan, vaak enorme hoeveelheden trainingsgegevens nodig hebben om nauwkeurige 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 te herkennen.

Het beeldherkenningsproces

Het beeldherkenningsproces kan in verschillende stappen worden onderverdeeld:

  1. 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.

  2. 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.

  3. Preprocessing

  4. 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 randdetectie, textuuranalyse en kleurhistogrammen.

  5. Klassificatie: 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.

  6. Classificatie
  7. 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.
Volgende pagina