Keras 3.0 ist die neueste Version der beliebten High-Level-API für Deep Learning, die mit Tensorflow, Theano und anderen Frameworks kompatibel ist. In diesem Blogpost möchte ich euch einige der neuen Funktionen und Verbesserungen vorstellen, die Keras 3.0 bietet, und dir zeigen, wie du sie in deinem MyOOS Tensorflow-Projekten nutzen kannst.

Die wichtigsten Neuerungen in Keras 3.0

Die wichtigsten Neuerungen in Keras 3.0 sind:

  • Eine vereinfachte und konsistentere API, die das Erstellen, Trainieren und Evaluieren von Modellen erleichtert.
  • Eine bessere Integration mit Tensorflow 2.0, die es ermöglicht, Keras-Modelle als tf.keras.Model-Objekte zu verwenden, die von allen Tensorflow-Funktionen wie Eager Execution, Distribution Strategy und Tensorboard unterstützt werden.
  • Eine verbesserte Unterstützung für benutzerdefinierte Schichten, Verlustfunktionen, Metriken und Callbacks, die es erlauben, komplexe Modelle mit eigener Logik und Funktionalität zu erstellen.
  • Eine erweiterte Sammlung von vordefinierten Schichten, Verlustfunktionen, Metriken und Callbacks, die häufige Anwendungsfälle im Deep Learning abdecken, wie z.B. Bildklassifizierung, Textgenerierung, Sequenz-zu-Sequenz-Modellierung und mehr.
  • Eine bessere Dokumentation und Beispiele, die die Verwendung von Keras 3.0 erklären und illustrieren.

Keras 3.0 ist eine neue Version der beliebten Python-Bibliothek für Deep Learning, die einige wichtige Neuerungen und Verbesserungen bietet. Einige der neuen Funktionen und Vorteile von Keras 3.0 sind:

  • Keras 3.0 ist eine multi-framework API, die mit verschiedenen Frameworks wie JAX, TensorFlow oder PyTorch kompatibel ist. Das bedeutet, dass du modulare Komponenten entwickeln kannst, die mit jedem Framework funktionieren, und so immer die beste Leistung für deine Modelle erhalten.
  • Keras 3.0 unterstützt TensorFlow 2.7 und höher, was deinen Zugang zu den neuesten Features und Optimierungen von TensorFlow gibt. Du kannst Keras 3.0 auch mit TensorFlow 1.x verwenden, wenn Sie das bevorzugst.
  • Keras 3.0 bietet eine vereinfachte und konsistente API, die es dir erleichtert, Modelle zu definieren, zu trainieren und zu evaluieren. Du kannst die gleichen Methoden und Argumente für verschiedene Arten von Modellen verwenden, wie z.B. Sequential, Functional oder Subclassing.
  • Keras 3.0 enthält viele neue Layer, Modelle und Anwendungen, die dir helfen, schnell und einfach moderne Deep-Learning-Architekturen zu erstellen. Zum Beispiel gibt es neue Layer für Transformer, Graph Neural Networks, Normalization, Attention, etc. Es gibt auch neue Modelle für Bildklassifikation, Objekterkennung, Textgenerierung, etc. Und es gibt neue Anwendungen für Computer Vision, Natural Language Processing, Recommender Systems, etc.
  • Keras 3.0 verbessert die Integration mit TensorFlow, indem es die TensorFlow-Datentypen, -Operationen und -Funktionen direkt nutzt. Das bedeutet, dass Du alle Vorteile von TensorFlow wie Eager Execution, Distribution, TPU Training, etc. nutzen kannst, ohne die Keras-Abstraktion zu verlieren.

Ein kurzer Disclaimer

Dieser Artikel erfordert mehr Erfahrung im Umgang mit TensorFlow und ist daher nur für fortgeschrittene Benutzer gedacht.

Dieses Tutorial ist als praktischer Leitfaden gedacht und behandelt keine theoretischen Hintergründe. Diese werden in einer Vielzahl von anderen Dokumenten im Internet behandelt.

Für die Richtigkeit der Inhalte dieses Tutorials gebe ich keinerlei Garantie. Der hier gezeigte Weg ist nicht der einzige um ein solches System aufzusetzen, es ist lediglich, der, den ich bevorzuge.

Keras 3.0 in MyOOS zu verwenden

Um Keras 3.0 in MyOOS zu verwenden, musst du zunächst TensorFlow 2.7 oder höher installieren. Dann kannst du einfach die Keras-API aus dem TensorFlow-Paket importieren, z.B.:

import tensorflow as tf
from tensorflow import keras

Dann kannst du die Keras-API wie gewohnt verwenden, um Modelle zu erstellen, zu kompilieren, zu trainieren und zu evaluieren. Zum Beispiel kannst du ein einfaches Sequential-Modell für die MNIST-Datenbank wie folgt erstellen:

# Laden Sie die MNIST-Datenbank
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

# Skalieren Sie die Eingabedaten
x_train = x_train / 255.0
x_test = x_test / 255.0

# Erstellen Sie ein Sequential-Modell
model = keras.Sequential([
  keras.layers.Flatten(input_shape=(28, 28)),
  keras.layers.Dense(128, activation='relu'),
  keras.layers.Dense(10, activation='softmax')
])

# Kompilieren Sie das Modell
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Trainieren Sie das Modell
model.fit(x_train, y_train, epochs=5)

# Evaluieren Sie das Modell
model.evaluate(x_test, y_test)

Wie kann ich ein Modell mit Keras 3.0 trainieren?

Um ein Modell mit Keras 3.0 zu trainieren, musst Du zunächst ein Modell definieren, entweder mit der Sequential-, Functional- oder Subclassing-API. Dann musst du das Modell kompilieren, indem du einen Optimierer, eine Verlustfunktion und eine oder mehrere Metriken angibst. Schließlich musst du das Modell mit der fit-Methode trainieren, indem du die Trainingsdaten, die Anzahl der Epochen und die Batch-Größe angibst. Du kannst auch optionale Parameter wie Validierungsdaten, Callbacks, Lernratenplaner, etc. verwenden, um das Training anzupassen.

Ich habe Dir im vorherigen Absatz ein Beispiel für ein Sequential-Modell für die MNIST-Datenbank gezeigt. Du kannst dieses Beispiel anpassen, indem du andere Layer, Optimierer, Verlustfunktionen oder Metriken verwendest. Du kannst auch andere Datensätze oder Modelle ausprobieren, die in Keras 3.0 verfügbar sind. Zum Beispiel kannst du ein Functional-Modell für die CIFAR-10-Datenbank wie folgt erstellen:

# Laden Sie die CIFAR-10-Datenbank
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()

# Skalieren Sie die Eingabedaten
x_train = x_train / 255.0
x_test = x_test / 255.0

# Erstellen Sie ein Functional-Modell
inputs = keras.Input(shape=(32, 32, 3))
x = keras.layers.Conv2D(32, 3, activation='relu')(inputs)
x = keras.layers.MaxPooling2D()(x)
x = keras.layers.Conv2D(64, 3, activation='relu')(x)
x = keras.layers.MaxPooling2D()(x)
x = keras.layers.Conv2D(128, 3, activation='relu')(x)
x = keras.layers.Flatten()(x)
x = keras.layers.Dense(256, activation='relu')(x)
outputs = keras.layers.Dense(10, activation='softmax')(x)
model = keras.Model(inputs=inputs, outputs=outputs)

# Kompilieren Sie das Modell
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Trainieren Sie das Modell
model.fit(x_train, y_train, epochs=10)

# Evaluieren Sie das Modell
model.evaluate(x_test, y_test)

Was ist der Unterschied zwischen Keras und Tensorflow?

Keras und TensorFlow sind zwei beliebte Frameworks für maschinelles Lernen, die oft miteinander verwechselt werden. In diesem Blogpost werde ich erklären, was der Unterschied zwischen ihnen ist und wie man sie für verschiedene Anwendungsfälle nutzen kann.

Keras ist eine High-Level-API, die auf TensorFlow, Theano oder CNTK aufbaut. Das bedeutet, dass Keras eine einfachere und intuitivere Schnittstelle bietet, um neuronale Netze zu definieren, zu trainieren und zu evaluieren. Keras abstrahiert viele Details, die man bei TensorFlow selbst programmieren müsste, wie z.B. die Optimierung von Gradienten, die Initialisierung von Variablen oder die Berechnung von Metriken. Keras ist daher besonders geeignet für Anfänger oder für schnelle Prototypen.

TensorFlow ist eine Low-Level-API, die mehr Flexibilität und Kontrolle bietet, aber auch mehr Komplexität mit sich bringt. TensorFlow ermöglicht es, beliebige Berechnungsgraphen zu erstellen, die auf CPUs, GPUs oder TPUs ausgeführt werden können. TensorFlow bietet auch viele fortgeschrittene Funktionen, wie z.B. das verteilte Training, das automatische Differenzieren oder das Exportieren von Modellen für mobile oder webbasierte Anwendungen. TensorFlow ist daher besonders geeignet für Experten oder für anspruchsvolle Projekte.

Zusammenfassend kann man sagen, dass Keras und TensorFlow zwei verschiedene Ebenen der Abstraktion sind, die beide ihre Vor- und Nachteile haben. Je nach dem Ziel und dem Erfahrungsgrad des Nutzers kann man sich für eines oder das andere entscheiden. Es ist auch möglich, beide zu kombinieren, indem man z.B. Keras als Frontend und TensorFlow als Backend verwendet.

MyOOS soll einen Online Virtual Fitting Room erhalten

Ein virtueller Ankleideraum ermöglicht es den Kunden, Artikel anzuprobieren, ohne sie zu berühren. Er funktioniert, indem er einen Artikel auf einen Live-Video-Feed eines Kunden über Smartphones oder Spiegel legt. Der Kunde kann die Größe, den Stil und die Passform eines Artikels sehen, bevor er ihn kauft.

Mit Keras und TensorFlow.js werden wir einen Online Virtual Fitting Room erstellen, indem wir ein Deep-Learning-Modell verwenden, das 2D-Kleidungsstücke auf das Bild einer Person überträgt. Dieser Ansatz erfordert keine 3D-Modellierung der Kleidung oder des Körpers, sondern nutzt Generative Adversarial Networks (GANs), Pose Estimation und Human Parsing, um ein realistisches Ergebnis zu erzielen.

Ein Beispiel für ein solches Modell ist das Adaptive Content Generating and Preserving Network (ACGPN), das in dem Artikel „Towards Photo-Realistic Virtual Try-On by Adaptively Generating↔Preserving Image Content“ beschrieben wird. Dieses Modell besteht aus mehreren Komponenten, die das Kleidungsstück an die Körperhaltung und -form der Person anpassen, den Hintergrund und die Haare erhalten und die Beleuchtung und die Textur verbessern.

Um ein solches Modell mit Keras zu erstellen, müssen wir zunächst ein Keras-Modell definieren, das die verschiedenen Schichten und Operationen des ACGPN-Modells enthält. Dann müssen wir das Modell mit Keras kompilieren, indem wir einen Optimierer, eine Verlustfunktion und eine oder mehrere Metriken angeben. Schließlich müssen wir das Modell mit der fit-Methode trainieren, indem wir die Trainingsdaten, die Anzahl der Epochen und die Batch-Größe angeben. Wir können auch optionale Parameter wie Validierungsdaten, Callbacks, Lernratenplaner usw. verwenden, um das Training anzupassen.

Um das Keras-Modell in TensorFlow.js zu verwenden, müssen wir es zunächst in das TensorFlow.js Layers-Format konvertieren, das aus einer model.json-Datei und einer Reihe von gewichteten Dateien im Binärformat besteht. Dazu können wir das TensorFlow.js Converter-Tool verwenden, das wir mit pip install tensorflowjs installieren können. Dann können wir das folgende Kommando ausführen, wobei path/to/my_model.h5 die Quell-Keras-.h5-Datei und path/to/tfjs_target_dir das Zielverzeichnis für die TensorFlow.js-Dateien ist:

tensorflowjs_converter --input_format keras \
  path/to/my_model.h5 \
  path/to/tfjs_target_dir

Alternativ können wir auch die Python-API verwenden, um das Keras-Modell direkt in das TensorFlow.js Layers-Format zu exportieren, wie folgt:

import tensorflowjs as tfjs
def train(...):
  model = keras.models.Sequential() # for example
  ...
  model.compile(...)
  model.fit(...)
  tfjs.converters.save_keras_model(model, tfjs_target_dir)

Um das konvertierte Modell in TensorFlow.js zu laden, müssen wir die TensorFlow.js-Dateien mit einem Webserver bereitstellen. Beachte, dass du möglicherweise deinen Server konfigurieren musst, um Cross-Origin Resource Sharing (CORS) zu erlauben, um die Dateien in JavaScript abrufen zu können. Dann können wir das Modell in TensorFlow.js laden, indem wir die URL zur model.json-Datei angeben:

import * as tf from '@tensorflow/tfjs';
const model = await tf.loadLayersModel('https://foo.bar/tfjs_artifacts/model.json');

Nun ist das Modell bereit für Inferenz, Evaluation oder Weiterbildung. Zum Beispiel können wir das geladene Modell verwenden, um eine Vorhersage zu machen:

const example = tf.fromPixels(webcamElement); // for example
const prediction = model.predict(example);

Importing a Keras model into TensorFlow.js
Deep Learning for Virtual Try On Clothes – KDnuggets
Training & evaluation with the built-in methods – Keras
Model conversion | TensorFlow.js

Für die Anprobe von Brillen hat unser eigenes Labor bereits seit Monaten einen Prototypen fertig. Neben einem Fotostudio für Produktfotos und einem Atelier für 3D-Modelle haben wir ein eigenes Labor. Wenn du an der Zukunft vom E-Commerce mitarbeiten möchtest – kannst du gerne mit uns diskutieren.

Todo: online virtual fitting room

Für Web-Entwickler gründen wir zurzeit auch eine Lerngemeinschaft. Du kannst jetzt anfangen.

Waldbilder für das MyOOS Projekt

Eine Bildserie von Waldmotiven für einen Blog für Open-Source-Entwickler:innen kann eine interessante und ansprechende Bildsprache sein.

Waldbild

Bildquelle: Wald, Ralf Zschemisch, F22, 1/5 Sekunde, 95mm, ISO 100, 12.11.2023

Ich möchte euch heute ein tolles Foto zeigen, das ich im Wald gemacht habe. Es ist ein Waldbild, das perfekt zu unserem Thema passt: Open Source!

Das Foto zeigt einen Herbstwald, in dem ein Baum durch den Orkan Kyrill umgestürzt ist. Der Baum liegt quer über einen alten Weg und ist mit orangefarbenen Blättern bedeckt. Im Hintergrund sieht man weitere Bäume mit gelben und roten Blättern. Das Foto vermittelt einen Eindruck von der Zerstörungskraft der Natur, aber auch von der Schönheit und dem Wandel der Jahreszeiten.

Aber das ist nicht alles! Das Foto hat auch eine tiefere Bedeutung, die ihr vielleicht schon erraten habt. Das Foto ist nämlich eine Metapher für die Open-Source-Bewegung!

Wie das? Ganz einfach: Der umgestürzte Baum symbolisiert die proprietäre Software, die von einem mächtigen Sturm, der die freie Software darstellt, zu Fall gebracht wurde. Der Baum ist nicht mehr lebendig, sondern wird von der Natur zurückgefordert. Die Blätter, die den Baum bedecken, repräsentieren die Vielfalt und Kreativität der Open-Source-Gemeinschaft, die aus dem Baum etwas Neues und Schönes macht. Die Bäume im Hintergrund symbolisieren die Zukunft und die Möglichkeiten, die die Open-Source-Software bietet.

Ist das nicht genial? Ich finde, das Foto ist ein perfekter Ausdruck unserer Vision und unserer Werte als Open-Source-Entwickler:innen. Wir wollen die Welt verändern und verbessern, indem wir Software schaffen, die frei, transparent, sicher, anpassbar und kollaborativ ist. Wir wollen uns gegenseitig unterstützen und voneinander lernen. Wir wollen Spaß haben und kreativ sein.

Ich hoffe, das Foto hat euch gefallen und inspiriert. Ich würde mich freuen, wenn ihr mir eure Meinung dazu schreibt oder mir eure eigenen Fotos schickt, die etwas mit Open Source zu tun haben. Vielleicht habt ihr ja auch eine tolle Metapher für Open Source gefunden oder ein Projekt, an dem ihr arbeitet oder mitarbeiten wollt.

Ich bin gespannt auf eure Kommentare und eure Beiträge zu Open Source!

Das könnte dich auch interessieren

Nachhaltige Entwicklung ist ein wichtiges Ziel für viele Unternehmen und Organisationen, die ihre Webseiten und Anwendungen effizienter, sicherer und umweltfreundlicher gestalten wollen. Doch wie kann man nachhaltig entwickeln mit den gängigen Webtechnologien wie PHP, JavaScript und HTML5? In diesem Blogbeitrag möchten wir Dir einige Tipps und Best Practices vorstellen, die Dir helfen können, Deine Webprojekte nachhaltiger zu machen. Wie du nachhaltig entwickeln kannst mit MyOOS

Open Source ist eine Bewegung, die die freie Verteilung und den freien Zugang zu Software-Quellcode fördert. Es ist ein gemeinschaftsorientierter Ansatz für die Softwareentwicklung, der die Zusammenarbeit und den Austausch von Wissen fördert. Open-Source-Projekte werden oft von Freiwilligen unterstützt, die ihre Zeit und ihr Fachwissen einbringen, um die Software zu verbessern. Unser Nilpferd als Maskottchen

Web3.js ist eine JavaScript-Bibliothek, die es ermöglicht, mit Web3-kompatiblen Anwendungen zu interagieren. Web3 ist die Bezeichnung für die nächste Generation des Internets, die auf der Blockchain-Technologie basiert. Web3 soll das Internet dezentralisieren und den Nutzern mehr Kontrolle und Eigentum über ihre Daten und Inhalte geben. Web3.js und das MyOOS Projekt


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert