YOLO Object Detection API
In diesem Projekt zeige ich, wie man moderne Computer Vision Modelle (YOLOv8) in eine Webanwendung integriert. Das Ziel: Ein Benutzer lädt ein Bild hoch, der Server erkennt Objekte darauf und sendet das Bild mit eingezeichneten Markierungen zurück.
Die Technologie: YOLOv8 Nano
Ich verwende das YOLOv8 Nano Modell (yolov8n.pt). Es ist die kleinste und schnellste Version der YOLO-Familie, optimiert für Umgebungen mit begrenzten Ressourcen (wie mein VPS).
- Größe: Nur ca. 6 MB
- Geschwindigkeit: Inferenz in < 500ms auf CPU
- RAM-Verbrauch: < 200 MB
Das Backend: FastAPI & Ultralytics
Der Python-Code nutzt FastAPI für den Upload und ultralytics für die KI.
# main.py (Erweiterung)
from fastapi import UploadFile, File
from fastapi.responses import StreamingResponse
from ultralytics import YOLO
from PIL import Image
import io
# Modell laden (wird beim ersten Start heruntergeladen)
model = YOLO("yolov8n.pt")
@app.post("/detect-objects")
async def detect_objects(file: UploadFile = File(...)):
# 1. Bild aus dem Upload lesen
image_data = await file.read()
image = Image.open(io.BytesIO(image_data))
# 2. YOLO Inferenz durchführen
results = model(image)
# 3. Ergebnis-Bild rendern (mit Boxen)
# plot() gibt ein numpy array zurück (BGR), wir müssen es zu RGB konvertieren
res_plotted = results[0].plot()
res_image = Image.fromarray(res_plotted[..., ::-1]) # BGR zu RGB
# 4. Bild zurücksenden
img_byte_arr = io.BytesIO()
res_image.save(img_byte_arr, format='JPEG')
img_byte_arr.seek(0)
return StreamingResponse(img_byte_arr, media_type="image/jpeg" )
Live-Demo: Der KI-Detektiv
Laden Sie ein Bild hoch (z.B. ein Foto von einer Straße, einem Büro oder Tieren). Der Server wird versuchen, Objekte zu erkennen und zu markieren.
Objekterkennung testen
Original:
Ergebnis:
Noch kein Ergebnis