Archiv der Kategorie: Künstliche Intelligenz

Neuronale Netze (KNN) / KI-Training: Das Format / der Aufbau vom MNIST-Datensatz (MNIST Datenbank) der Dateien t10k-images-idx3-ubyte, t10k-labels-idx1-ubyte, train-images-idx3-ubyte, train-labels-idx1-ubyte

Intention

Zum Auffrischen des eigenen Wissens über künstliche neuronale Netze (KNN) möchte man sich mit Frameworks wie PyTorch oder TensorFlow auseinandersetzen.

Problem

In den ersten Tutorials ist meistens die Rede vom „MNIST-Datensatz“ oder der „MNIST Datenbank“ mit 70.000 handgeschriebenen Ziffern im Format 28×28 mit 256 Grauwerten je Pixel (also je Byte). 60.000 Bilder davon sind zum Trainieren, 10.000 Bilder zum Testen eines neuronalen Netzes. Die Dateiendung der entpackten Dateien lässt sich nicht einfach in *.bmp umbenennen und zum Beispiel mit Paint öffnen. Man weiß erstmal nicht in welchem Format die Dateien sind um sich einzelne Zahlen anzusehen.

Laut „https://yann.lecun.com/exdb/mnist“ (manchmal nur über einen archive.org-Snapshot erreichbar) handelt es sich bei diesem Format nicht um ein Standard-Bildformat. Man muss ein eigenes Programm schreiben um diese Bilder zu interpretieren.

Analyse

train-images-idx3-ubyte, t10k-images-idx3-ubyte

Diese Dateien sind mit GZip (Endung *.gz) gepackt und lassen sich in Windows direkt mit einem Doppelklick öffnen oder mit einem Rechtsklick extrahieren:

Die *-images*-Dateien enthalten Bilder von handgeschriebenen Ziffern zwischen 0 und 9, die von Studenten und Mitarbeitern der Universität von South Carolina Beaufort im Jahre 1994 gesammelt wurden.

Öffnet man die extrahierten Dateien in einem Hexadezimaleditor wie zum Beispiel dem kostenlosen HxD-Editor und stellt die Spaltenanzahl auf 28 um, ist bereits ein Muster der enthaltenen Zahlen erkennbar:

Die ersten 16 Byte haben den folgenden Aufbau:

[offset] [type]          [value]          [description]
0000     32 bit integer  0x00000803(2051) magic number
0004     32 bit integer  60000            number of images
0008     32 bit integer  28               number of rows
0012     32 bit integer  28               number of columns
0016     unsigned byte   ??               pixel
0017     unsigned byte   ??               pixel
........
xxxx     unsigned byte   ??               pixel

Die 0x08 des dritten Bytes in der Magic Number sagt aus, dass es sich hierbei um UByte-Werte anhandelt. Das dritte Byte kann dabei die folgenden Werte annehmen:

The third byte codes the type of the data:
0x08: unsigned byte
0x09: signed byte
0x0B: short (2 bytes)
0x0C: int (4 bytes)
0x0D: float (4 bytes)
0x0E: double (8 bytes)

Das vierte Byte in der Magic Number hat hier den Wert 0x03, was bedeutet das unsere Daten 3 Dimensionen für den Pixel haben (x-Pos, y-Pos, Pixelwert/Grauwert[0-255]).

Entfernt man den markierten Header mit den ersten 16 Bytes (siehe obiges Bild) z.B. im HxD, indem man einfach die Entfernen-Taste drückt, ist das Schriftmuster bereits im HEX-Editor erkennbar:

Wie bereits erwähnt, hat jeder Pixel einen Wert zwischen 0 (weiß) und 255 (schwarz) [Magic Number: 3. Byte], wobei die Zwischenwerte lineare Abstufungen für Grauwerte sind.

Hier noch ein Beispiel der Fashion-MNIST-Datenbank mit Kleidungsstücken (von Zalando):

train-labels-idx1-ubyte, t10k-labels-idx1-ubyte

Der Aufbau der *-labels*-Dateien ist ähnlich. Als Label werden hier die Zahlen mit den Werten zwischen 0 bis 9 in der selben Reihenfolge wie in den *-images*-Dateien aufgeführt. Diese beginnen nach dem Header an Position 8 (hier 5 und 0 / unten wie oben im Screenshot):

Das Format ist also:

[offset] [type]         [value]          [description]
0000 32 bit integer 0x00000801(2049) magic number
0004 32 bit integer 60000 number of images
0008 byte [0-9] Ziffer zw. 0-9
……..

AI / KI Tools die man 2023 unbedingt kennen sollte

Eine AI Tool Suchmaschine

Da es mittlerweile zahlreiche AI Tools gibt, lohnt sich ein Besuch bei der AI-Tool-Suchmaschine futuretools.io. Hier findet man Tools, die nach der angestrebten Verwendung kategorisiert wurden.

https://www.futuretools.io/

Text AI – Problemlösungen generieren

Text AI’s sind Chat-Programme, die Aufgaben kreativ lösen können. Dies bedeutet, dass sie konkrete Problemstellungen in einem Kontext bearbeiten und zur Lösung bringen können. Anwendungsfälle für Text AI’s sind Programmieren, kreatives Schreiben (Gedichte, Geschichten, Songtexte …), Umstrukturieren von Text, Konkrete Informationssuchen in Texten ( Fachbücher, Normen, Gesetze, Verordnungen, Regularien …)

  • OpenAI ChatGPT 3.5 und 4

Image AI

Bilder generieren

Kreative Image AI’s können aus einer Texteingabe ein Bild generieren. Diese AI’s wurden mit menschlicher Kunst trainiert und erschaffen aus zahlreichen Trainingsdaten teilweise völlig neue Kunstwerke oder Bilder

Bilder manipulieren

Sollen existierende Bilder geändert werden, kann man per Instruktion oder Hochladen dieser existierenden Bilder und Texteingabe der AI sagen, wie das Bild geändert werden soll.

  • Pix2Pix (kostenlos Bild ändern auf Instruktion)
  • Dall-E und Dall-E 2 (kostenlos Bild hochladen und „Create Variations“ drücken)

Video AI

Video AI’s können Videos aus dem Nichts kreativ erstellen (Text-to-Video) oder diese manipulieren

Videos erstellen

Videos manipulieren

Feedback wanted

Was denkst Du, welche AI Tools man 2023 unbedingt ausprobieren sollte? Schreib es in die Kommentare!

Flowers – Miley Cyrus Parodie mit Text von ChatGPT und Bildern von DALL-E

Video

Ergebnis-Video mit DALL-E Bildern und den genrierten ChatGPT-Lyrics. Die DALL-E Bilder erkennt man an den Farben rechts unten in der Ecke.

Persönliche Intention

Seit Veröffentlichung von ChatGPT im November 2022 spricht das gesamte Netz über künstliche Intelligenz (KI) oder Arteficial Intelligence (AI).

Bittet man den Chat-Bot „ChatGPT“ darum einen Liedtext über ein bestimmtes Thema zu schreiben, tut dieser das auch innerhalb weniger Sekunden. Reime auf Englisch scheinen dabei etwas besser zu funktionieren als Reime auf Deutsch.

Ich möchte herausfinden, ob ChatGPT aus einem vorgegebenem Text auf englisch (hier Flowers von Miley Cyrus) eine englische Parodie erstellen kann. Das Ergebnis könnt ihr am Kopf dieses Artikels bewundern ;-).

Vorgehensweise

Zunächst habe ich mich bei OpenAI ChatGPT registriert. Danach habe ich für das Experiment mit ChatGPT eine Unterhaltung begonnen, woraufhin ChatGPT den Kontext meines Anliegens näher eingrenzen und spezifizieren konnte. Danach konnte es gezielter auf meine Frage nach einer Parodie eingehen und hat einen akzeptablen Text erstellt, den man im musikalischen Kontext aufgrund eines natürlichen Sprachrythmusgefühls anpassen musste.

Anfänglich habe ich Mini-Fragen gestellt. Ich wollte zum Beispiel für den Refrain wissen, was sich auf „Flowers“ reimt. ChatGPT hat mir „Hops and Sours“ vorgeschlagen, woraufhin ich erstmal googeln musste, um was es sich konkret bei dem englischen Begriff „Sours“ handelt. „Sours“ sind saure Spirituosen/Cocktails wie „Whiskey Sour“ – evtl. auch Apfelwein. Und Hops ist ein auch ein englischer Begriff für Bier, wobei ich mich nicht genau sicher war wie geläufig der einem Native Speaker in diesem Kontext wäre … ich habe es einfach so gelassen.

Die Bilder die links und rechts oben nach dem Song-Beginn (ab ca. 16 Sekunden) eingeblendet werden habe ich mit Texteingaben generieren lassen:

„A queen drinking beer“, „a beer shiny gold in heave“, „a queen drinking beer lieing on the bottom“ … usw ….

Man erkennt die DALL-E Bilder in der Ecke rechts unten anhand einer kleinen Farbtabelle.

Generierter Text von ChatGPT mit Anpassungen

We’re the bad… Pub Patrol
A kind of nightmare take its toll
We were wrong, now it shows
Driving crazy, lost control
Now, I had to leave you
I dont‘ like small pints
Started to lie (liegen), but then remembered I

I can buy hops and sours
Hold a beer with my hand
Drink with myself for hours
Drink much you won’t understand me
You can’t get me to dancing
And I can hold my own beer
My can is so much better than your can

My can is better1
Yeah my can is better, babe
My can is better
Yeah my can is better, babe

Gimme beer .. shiny gold
kinda dream that can’t be sold
No remorse, no regret
i drink every beer i get

Ooh, I had to leave you
I dont‘ like small pints
Started to lie (liegen), but then remembered I

I can buy hops and sours
Hold a beer with my hand
Drink with myself for hours
Drink much you won’t understand me
You can’t get myself dancing
And I can hold my own beer
My can is so much better than your can

My can is better
Yeah my can is better, babe
My can is better
Yeah my can is better, babe
My can is better
Yeah my can is better, babe

Oh, I have to leave you
I dont‘ like small pints
Started to cry, but then remembered I

I can buy hops and sours
Hold a beer with my hand
Drink with myself for hours
Drink much you won’t understand me
You can’t get myself dancing
And I can hold my own beer
My can is so much bigger than your can

Guitar Solo

Ausgabe von ChatGPT mit Sprachanpassungen