Patronen herkennen met Machine learning
Leestijd Leestijd: 6 minuten Auteur Geschreven door Chris Hagg

Patronen herkennen met Machine learning

Het sneeuwt soms wat onder in het huidige AI (Agent) geweld, maar Machine Learning is nog steeds een erg interessante en veelgebruikte vorm van kunstmatige intelligentie. Maar wat is het dan precies en wat kan je ermee doen?

Machine learning versus AI

Machine learning is een subset van kunstmatige intelligentie (AI). Waar je bij AI praat over het bouwen van systemen die intelligent gedrag vertonen (denk aan redeneren, plannen, leren en communiceren), richt machine learning zich op het herkennen van patronen in data.

Dit kan gaan om het herkennen van afbeeldingen, het voorspellen van toekomstige gebeurtenissen of het classificeren van documenten. Machine learning maakt hiervoor gebruik van algoritmes en statistische modellen om deze patronen te herkennen.

Toepassingsgebieden

Het basisprincipe van het herkennen van patronen kan op veel verschillende manieren worden toegepast. Onderstaand enkele voorbeelden van toepassingsgebieden van machine learning:

  • Kwaliteitscontrole
    Detectie van afwijkingen in producten op basis van afbeeldingen.
  • Automatische documentverwerking
    Herkennen en klassificeren van documenten, zoals facturen of contracten.
  • Voorspellen van klantverloop
    Op basis van historische data voorspellen welke klanten het meest waarschijnlijk zullen vertrekken en welke acties je kan ondernemen om dit te voorkomen.
  • Herkenning van objecten op foto’s
    Bijv. het herkennen van soorten planten of dieren op basis van foto’s.
  • Slimme productaanbevelingen
    Machine learning kan worden ingezet om slimme productaanbevelingen te doen richting klanten van je webhop.
  • Medisch of agrarisch
    Herkennen van ziekten op basis van röntgenfoto’s of het herkennen van ziekten bij planten op basis van foto’s.

Machine Learning is een benaderbare techniek die je kan helpen om processen te automatiseren en te verbeteren. Machine Learning is dus geen magie of toekomstmuziek. Ook in kleinere bedrijven kan (en wordt!) het al ingezet worden om processen slimmer te maken, van administratie tot productie.

Hoe werkt het?

Machine learning werkt door een algoritme te trainen op een grote hoeveelheid voorbeelden (de trainingsdata), waarbij het een patroon probeert te ontdekken tussen invoer (zoals afbeeldingen, tekst of cijfers) en de gewenste uitvoer (bijv. een label zoals “hond” of “geen hond”). Tijdens deze trainingsfase past het model intern wiskundige parameters aan om fouten te minimaliseren. Zodra het model voldoende heeft geleerd, wordt het opgeslagen en kan het in de inference-fase gebruikt worden: je geeft nieuwe, onbekende data aan het model, en het voorspelt een uitkomst op basis van wat het geleerd heeft.

Het meeste werk zit in het labelen (of annoteren) van de afbeeldingen. Stel je wilt een tool bouwen welke planten kan herkennen. Dan verzamel en label je duizenden afbeeldingen van planten. Plaatje 1 is een Begonia, plaatje 2 is een Rozenstruik, enzovoorts.

Hoe meer data je aan het model geeft, hoe beter de resultaten. Hier zit dan ook het grootste deel van de tijd in.

TensorFlow vs PyTorch

TensorFlow en PyTorch zijn twee populaire open-source frameworks voor machine learning. PyTorch is ontwikkeld door Facebook (nu Meta) en wordt breed gebruikt in onderzoek én steeds vaker in productie. TensorFlow is ontwikkeld door Google en was lange tijd de standaard voor grootschalige productieomgevingen. De laatste jaren verschuift de focus binnen Google echter naar JAX, een lichter en flexibeler alternatief voor high-performance toepassingen. In de praktijk is PyTorch op dit moment het populairste framework, mede door zijn eenvoud en actieve community.

De techniek

Het gebruik van machine learning in de praktijk is tegenwoordig vrij laagdrempelig geworden. Zo is het mogelijk om met PyTorch (Python) en een paar regels Laravel een model te gebruiken om een afbeelding te herkennen.

Python
Een kleine uitstap naar Python. Het onderstaande voorbeeld laat zien hoe je een model kan gebruiken om een afbeelding te herkennen. In dit voorbeeld maken we gebruik van een model van Microsoft genaamd ResNet50. Dit model is getraind op de ImageNet dataset, die meer dan 14 miljoen afbeeldingen bevat van meer dan 20.000 verschillende objecten. Dit model halen we binnen via Huggingface. We gaan dit model gebruiken om te herkennen of de afbeelding die we insturen al of niet een hond bevat.

    
from fastapi import FastAPI, File, UploadFile
from PIL import Image
import torch
from torchvision import transforms
from transformers import AutoProcessor,
        AutoModelForImageClassification

app = FastAPI()

model_id = "microsoft/resnet-50"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageClassification
        .from_pretrained(model_id)

@app.post("/is-dog")
async def predict(file: UploadFile = File(...)):
    image = Image.open(file.file).convert("RGB")
    inputs = processor(
        images=image,
        return_tensors="pt"
    )
    outputs = model(**inputs)
    logits = outputs.logits
    predicted_class_idx = logits.argmax(-1).item()
    label = model.config.id2label[predicted_class_idx]
    is_dog = "dog" in label.lower()

    return {"label": label, "is_dog": is_dog}
    

We maken dit Python script/model vervolgens beschikbaar als API endpoint met uvicorn. Dit is een ASGI server die je kan gebruiken om je FastAPI applicatie te draaien.

    
python3 -m uvicorn main:app --reload --port=8010
    

Tot slot gebruiken we dit API endpoint binnen een heel eenvoudige route in onze Laravel applicatie. Hiermee kunnen we een afbeelding uploaden. We ontvangen een JSON response met daarin de voorspelling van het model.

    
Route::get('/is-this-a-dog', function () {
      $photo = __DIR__ . '/../public/dog.jpg';

      $response = Http::attach(
          'file',
          file_get_contents($photo),
          'dog.jpg'
      )->post('http://127.0.0.1:8010/is-dog');

      return $response->json();
});
    

Veel meer is er niet nodig om machine learning in te zetten in je Laravel applicatie. Natuurlijk komt er meer bij kijken zodra je een eigen model wilt trainen voor toepassingen binnen je eigen onderneming.

Benieuwd wat voor modellen je nog meer out-of-the-box kan gebruiken? Kijk dan eens op Huggingface. Hier vind je een heleboel verschillende modellen die je kan gebruiken.

Meer weten?

Wil je meer weten over het toepassen van Machine Learning binnen de processen van jouw bedrijf? Neem dan contact met ons op. Wij helpen je graag verder met het toegankelijk maken van je website of webapplicatie.

Mogelijkheden of kansen voor
jouw organisatie bespreken?

Arjan Renkema Chris Hagg Marcel Klaver Damiaen Toussaint Arrow