
Patronen herkennen met Machine learning
Waar pas je machine learning toe in je bedrijf en hoe werkt het?
Waar pas je machine learning toe in je bedrijf en hoe werkt het?
Is jouw website of webapplicatie al toegankelijk?
Benieuwd hoe wij kunnen helpen?
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 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.
Het basisprincipe van het herkennen van patronen kan op veel verschillende manieren worden toegepast. Onderstaand enkele voorbeelden van toepassingsgebieden van machine learning:
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.
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 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.
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.
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.