← Alle Artikel
Projekte

Unser erstes Modell, 2020: Object Recognition im Wohnzimmer. Und warum Xcode 2026 daran hängt.

10 Millionen Parameter, 40 MB, auf dem iPhone. Eine App, die Pflanzen, Öfen und Mikrowellen erkennt, im Raum beschriftet und Aufgaben dranhängt. Heute öffne ich das Modell in Xcode, und Xcode denkt nach. Wow, in beide Richtungen.

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.

August 2020, iPhone, dreissig Sekunden. Die App erkennt die Pflanzen im Garten und nummeriert sie, per Sprache wählt man „Objekt 1 und 3", die Aufgabe „watering" bekommt vier Objekte, grüne Pfeile auf dem Boden führen hin, und in der Küche wird eine Notiz diktiert und im Raum abgelegt.

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.

10,0 Mio.Parameter, laut Metadaten 10'047'156
40,2 MBauf der Platte, Gewichte in float32, gerechnet in float16
129Schichten: 32 Convolutions, 40 Leaky ReLU, 29 Batch Norm, 13 Add, 9 Pooling, 5 Upsample, 1 Concat

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.

Ein 40-MB-Modell aus dem Jahr 2020, und die Entwicklungsumgebung von 2026 braucht eine Weile, um mir eine Gewichtsmatrix als Bild zu zeigen. Ich musste lachen. Wir haben das Ding damals auf einem iPhone in Echtzeit laufen lassen.

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.

Was bleibt

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?

Wie dieser Text entstanden ist

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.

Weiterlesen Alle Artikel

Ehrliche Gedanken.
Direkt ins Postfach.

Ein bis zwei Mails im Monat. Kein Hochglanz, kein Spam.