HerrKI mit seinem RoboterHerrKI KI verstehen · nachbauen · anwenden ⭐ 0 XP

Bilder als Tensoren

Wie RGB-Bilder zu Zahlen werden und warum alle Bilder gleich groß sein müssen.

👋 Hi! HerrKI hier - heute erkläre ich dir Bilder!

Stell dir vor: Du machst ein Foto mit deinem Handy - ein Selfie, deine Katze, eine Landschaft. Für dich ist das ein Bild. Aber für den Computer? Nur ein Haufen Zahlen!

Heute zeige ich dir, wie Computer Bilder "sehen": Jedes Foto wird in einen 3D-Tensor (Rank 3 aus Kapitel „Was sind Tensoren?") umgewandelt - eine riesige Tabelle voller RGB-Werte (Rot-Grün-Blau). Das ist die Grundlage für alles: Gesichtserkennung, Instagram-Filter, selbstfahrende Autos - alles basiert darauf!

🎯 Was du hier lernst:
  • ✅ Wie Bilder in RGB-Zahlen (0-255) umgewandelt werden
  • ✅ Warum Bilder 3D-Tensoren sind (Höhe × Breite × 3 Farben)
  • ✅ Wie du mit TensorFlow.js Bilder einliest und verarbeitest
  • ✅ Warum neuronale Netze gleich große Bilder brauchen

Das Coole daran: Sobald du verstehst, wie Bilder zu Tensoren werden, kannst du eigene Bilderkennungs-Modelle bauen - ob Katzen vs. Hunde erkennen, Hausnummern lesen oder Gesichter identifizieren. Alles startet mit RGB-Zahlen! 🎨

💡 HerrKI-Tipp: Ein Bild ist ein 3D-Würfel aus Zahlen! Höhe × Breite × 3 RGB-Kanäle. Ein 200×200 Pixel Foto = 120.000 Zahlen. Krass, oder? 🤯

🎥 Video-Erklärung von HerrKI

Schau dir dieses Video an, um Bilder als Tensoren noch besser zu verstehen:

🖼️ Praxis-Beispiel: RGB-Bild → Tensor

Lass uns ein echtes Bild in einen Tensor umwandeln! Hier siehst du Schritt für Schritt, wie ein RGB-Farbbild in Zahlen (Tensor) verwandelt wird.

1️⃣ Original-Bild

pflanze.png

2️⃣ Als Tensor

Klicke auf "Bild analysieren" um die Tensor-Daten zu sehen...

💻 TensorFlow.js Code:

// 1. Bild-Element holen const img = document.getElementById('pflanzeImg'); // 2. Bild in Tensor umwandeln const tensor = tf.browser.fromPixels(img); // 3. Tensor-Informationen console.log('Shape:', tensor.shape); // Ausgabe: [height, width, 3] // 3 = RGB-Kanäle (Rot, Grün, Blau) // 4. Datentyp und Werte console.log('DType:', tensor.dtype); // 'int32' console.log('Werte:', tensor.min(), tensor.max()); // 0-255 // 5. Tensor verwenden const normalized = tensor.div(255.0); // Normalisieren auf 0-1 model.predict(normalized.expandDims(0)); // Vorhersage

🎯 Was passiert bei der Umwandlung?

  • Jedes Pixel wird zu 3 Zahlen (R, G, B)
  • Wertebereich: 0-255 für jeden Farbkanal
  • Shape: (Höhe, Breite, 3) → z.B. (200, 200, 3) = 120.000 Zahlen!
  • Normalisierung: Oft werden Werte durch 255 geteilt → 0.0 bis 1.0
  • Batch: Mehrere Bilder → (Anzahl, Höhe, Breite, 3)

⚠️ Wichtig: Einheitliche Bildgröße für Neuronale Netze

🔒 Warum brauchen neuronale Netze gleich große Bilder?

Ein neuronales Netz hat eine feste Architektur mit einer festgelegten Anzahl von Eingabe-Neuronen. Wenn das erste Layer z.B. inputShape: [224, 224, 3] erwartet, dann müssen ALLE Bilder exakt diese Größe haben.

❌ Funktioniert NICHT

Unterschiedliche Bildgrößen:

  • Bild 1: 300 × 200 = 180.000 Werte
  • Bild 2: 400 × 400 = 480.000 Werte
  • Bild 3: 150 × 150 = 67.500 Werte

→ Netz kann unterschiedliche Shapes nicht verarbeiten!

✅ Funktioniert!

Einheitliche Bildgröße:

  • Bild 1: 224 × 224 = 150.528 Werte
  • Bild 2: 224 × 224 = 150.528 Werte
  • Bild 3: 224 × 224 = 150.528 Werte

→ Alle Bilder haben die gleiche Shape!

🔧 Wie macht man Bilder gleich groß?

Option 1: Resize (Skalieren)
// Bild auf 224x224 skalieren const resized = tf.image.resizeBilinear(tensor, [224, 224]); // Shape: [224, 224, 3] ✅

→ Bild wird gestreckt oder gestaucht auf die gewünschte Größe

Option 2: Crop (Zuschneiden)
// Bild auf 224x224 zuschneiden (mittig) const cropped = tf.image.cropAndResize( tensor.expandDims(0), // Batch dimension [[0.1, 0.1, 0.9, 0.9]], // Crop-Bereich [0], // Batch-Index [224, 224] // Zielgröße ); // Shape: [1, 224, 224, 3] ✅

→ Schneide den relevanten Bereich aus dem Bild aus

Option 3: Pad (Auffüllen)
// Bild mit schwarzen Rändern auffüllen const padded = tf.pad(tensor, [[top, bottom], [left, right], [0, 0]]); // Shape: [224, 224, 3] ✅

→ Füge Ränder hinzu, um die gewünschte Größe zu erreichen

🎓 Beliebte Bildgrößen in der Praxis:

  • 224 × 224: VGG16, ResNet, MobileNet (ImageNet Standard)
  • 299 × 299: Inception v3, Xception
  • 512 × 512: Hochauflösende Bildverarbeitung
  • 28 × 28: MNIST Handschrift-Erkennung (Graustufenbilder)
  • 32 × 32: CIFAR-10 Objekt-Erkennung

💡 Tipp: Kleinere Bilder = schnelleres Training, aber weniger Details. Größere Bilder = mehr Details, aber langsameres Training.

🧠 Kurzer Check — hast du es?

Drei schnelle Fragen, dann bist du durch — klick einfach deine Antwort an:

1. Warum ist ein Farbbild ein 3D-Tensor?
2. Welche Werte kann ein einzelner Farbkanal eines Pixels annehmen?
3. Warum müssen alle Bilder für ein neuronales Netz gleich groß sein?
🎉 Und damit schließt sich der Kreis: Wenn Instagram deinem Foto einen Filter verpasst oder dein Handy „Katze" in deine Galerie schreibt, läuft genau diese Kette — Foto → Zahlen-Würfel (H × B × 3) → Mathe auf dem Tensor → Ergebnis. Als Nächstes nehmen wir uns den Datentyp vor, aus dem die meisten echten Projekte bestehen: Excel- und CSV-Tabellen.