Jetzt mal ganz ehrlich: Ich wollte nur kurz nachschauen. Ein altes Core-ML-Modell aus dem Sommer 2020, in Xcode öffnen, ein paar Screenshots für diesen Artikel. Dann sass ich da, habe auf einen drehenden Kreis geschaut und gedacht: wow. In beide Richtungen.
Dreissig Sekunden aus dem August 2020
Bevor ich das Modell erkläre, zeige ich, was es getan hat. Das ist eine Bildschirmaufnahme vom 5. August 2020, dreissig Sekunden, ungeschnitten in der Geschwindigkeit, in der es lief. Garten, Flur, Küche.
Was man sieht: Die Kamera läuft, das Modell erkennt Objekte, und die App schreibt „Plant", „Oven", „Microwave" nicht auf den Bildschirm, sondern in den Raum. Die Labels bleiben an der Stelle stehen, auch wenn man sich bewegt. Man wählt Objekte per Sprache aus, „Select object 1 and 3", und hängt eine Aufgabe daran, „watering". Die App lädt die vier Pflanzen, meldet, dass sie ausserhalb von zwei Metern liegen, und legt grüne Pfeile auf den Boden, die hinführen. In der Küche diktiert man eine Notiz, und sie bleibt dort hängen, wo man stand. Sie hört zu, sie beschriftet, sie navigiert.
2020. Auf einem Telefon. Ohne Cloud.
Das Modell
Das Modell dahinter heisst in der Datei f32_PRNnet_SPPC_416A3x3_v2_3441. Der Name ist eine Notiz an mich selbst: float32, ein Partial-Residual-Netz mit Spatial Pyramid Pooling, 416 Pixel Eingabe, drei Anker pro Zelle, Version 2, Lauf 3441. So haben wir damals Versionen benannt, im Dateinamen, weil es sonst nirgends stand.
Konvertiert mit coremltools 3.4, Autor „Martin_ExtendedVersion", Beschreibung „Object detection". Das ist alles, was in den Metadaten steht. Kein Datensatz, keine Trainingsdaten, keine Genauigkeit. Die Version steht im Dateinamen, die Genauigkeit stand in einem Notizbuch, und das Notizbuch habe ich nicht mehr.
Es war eine der Versionen, die wir für das iPhone klein gemacht haben. Nicht die kleinste, aber eine, die lief. Und wenn man den Graphen in Xcode anschaut, sieht man das ganze Netz auf einmal: die Convolutions, die Verzweigungen, die vier Pfade, die im Concatenate wieder zusammenlaufen. Das ist ein YOLO-Verwandter, von Hand zusammengesetzt, in einer Zeit, in der man das noch von Hand gemacht hat.
Was die App gemacht hat
Das Modell war nur ein Teil. Die App drumherum hat drei Dinge verbunden, die damals jedes für sich schon Arbeit waren.
Erkennen. Jedes Kamerabild geht durch das Modell, das Modell gibt Rechtecke und Klassen zurück. Pflanze, Ofen, Mikrowelle, Stuhl. Auf dem Gerät, mehrmals pro Sekunde, ohne dass das Telefon heiss wird. Dafür musste das Modell klein sein.
Verankern. Ein Rechteck auf dem Bildschirm ist noch kein Objekt im Raum. Mit ARKit haben wir aus dem Rechteck eine Position in drei Dimensionen gemacht, damit das Label an der Pflanze bleibt, auch wenn man um den Tisch geht.
Verwenden. Aufgaben an Objekte hängen. Sprachbefehle. Eine Liste, was in der Nähe zu tun ist. Navigation zum nächsten Objekt. Das war die Idee: nicht „die Kamera erkennt einen Ofen", sondern „ich stehe in der Küche und die App weiss, was hier zu tun ist".
Wir haben damals nicht KI gesagt. Wir haben gesagt: Das Telefon soll sehen, was ich sehe, und sich merken, was ich dazu gesagt habe.
Xcode 2026 und der drehende Kreis
Und jetzt zurück zu heute. Ich öffne das Modell in Xcode, 2026. Es gibt Tabs, die es 2020 nicht gab: General, Predictions, Performance, Structure, Utilities. Xcode zeigt mir die Layer-Verteilung, die Verfügbarkeit ab iOS 11, den ganzen Graphen als Diagramm, jede Verbindung anklickbar.
Dann klicke ich auf ein Gewicht. 65'536 Werte, float32, 256 KB. Und Xcode fängt an zu denken. Der Kreis dreht sich. Ich warte. Er dreht sich weiter.
Das ist nicht Kritik an Xcode. Das ist der Moment, in dem man merkt, wie viel sich in sechs Jahren geändert hat, wie wenig sich die Werkzeuge verbessert haben, und wie ressourcenhungrig sie geworden sind. Die Modelle sind grösser. Und irgendwo dazwischen sitzt ein Kreis, der sich dreht.
Was heute anders ist
Ehrlich gesagt fast alles. Wenn ich das heute bauen würde, sähe der Weg so aus:
Prototyping direkt in Xcode. Modell reinziehen, Predictions-Tab, Bild hochladen, Ergebnis anschauen. 2020 haben wir dafür eine App gebaut, auf das Telefon geladen, in den Garten getragen. Heute sieht man in Xcode in einer Minute, ob ein Modell etwas taugt, bevor eine Zeile App-Code existiert.
Performance-Reports statt Bauchgefühl. Xcode sagt heute, welche Schicht wie lange braucht, auf welchem Chip, ob es auf die Neural Engine geht oder auf die GPU zurückfällt. 2020 hiess das: Stoppuhr, Thermometer, und das Telefon in der Hand halten, bis es warm wurde.
Nicht mehr von Hand zusammensetzen. Ein Detektionsnetz mit Spatial Pyramid Pooling und drei Ankern baut man heute nicht mehr selber. Man nimmt ein vortrainiertes, feinjustiert es auf die eigenen Bilder, und ist an einem Nachmittag dort, wo wir damals nach Wochen waren.
Oder gar kein eigenes Modell. Für „was ist das auf dem Bild" gibt es heute Modelle, die Bild und Sprache zusammen verstehen. Die erkennen nicht nur den Ofen, die lesen, was auf dem Display steht. Für vieles, wofür wir 2020 trainiert haben, würde ich heute zuerst fragen, ob ein bestehendes Modell reicht.
Metadaten im Modell, nicht im Dateinamen. Datensatz, Version, Genauigkeit, Trainingsdatum. Das gehört ins Modell, nicht in „v2_3441". Das haben wir gelernt, als wir fünfzig Modelle gleichzeitig halten mussten.
Und trotzdem: Der Kern ist gleich geblieben. Ein Modell, das auf dem Gerät läuft, klein genug für das Telefon, schnell genug für die Kamera. Das war 2020 die Kunst, und es ist heute immer noch die Frage, die entscheidet, ob eine Idee ein Produkt wird oder eine Demo bleibt.
Was bleibt
Dass es damals ging. Mit den Werkzeugen von 2020, mit einem Modell, das wir von Hand gebaut haben, auf einem Telefon. Die Pflanze hatte ein Label, die Mikrowelle eine Aufgabe, und die App hat zugehört. Das ist heute selbstverständlich, und es war damals nicht selbstverständlich.
Und dass ich beim Anschauen zweimal wow gesagt habe. Einmal für das, was wir 2020 gebaut haben, ohne die Werkzeuge von heute. Und einmal für die Werkzeuge von heute, die mir in einer Minute zeigen, was wir damals in Wochen herausgefunden haben. Nur bei der Gewichtsmatrix, da dreht sich der Kreis noch.
Und eines noch, das in keinem Metadatenfeld steht: Das war nicht meine Arbeit allein. Zoltán Viktor Rácz hat damals mit mir daran gebaut, an den Modellen, an der App, an den Abenden, an denen der Kreis sich auch schon gedreht hat, nur auf einem anderen Bildschirm. Danke, Zoli. Das war eine super Zeit.
2020: ein Modell von Hand, eine App im Garten, ein Telefon, das warm wird. 2026: Xcode zeigt alles, prüft alles, misst alles, und hängt an 256 Kilobyte. Wer beides gesehen hat, weiss, wie schnell es geht. Und dass die Frage dieselbe bleibt: Läuft es auf dem Gerät, in Echtzeit, bei Menschen?
Geschrieben von mir. Die Gedanken, die Werte, die Learnings, die Fehler: alles meins. Grammatik und Rechtschreibung korrigiert unser eigenes Twin-Modell, das auf meinen Texten trainiert ist. Manchmal bleibt ein Hüpfer drin. Das ist dann auch von mir.