Beiträge von Dan

    Und weil es ja immer so schön ist, damit Entwickelr auch immer was zu tun haben, hat sich wieder ein Bug eingeschlichen, der eigentlich schon einmal vor 7 Builds beseitigt war.

    Gleich kommt Build 50 online


    Ich arbeite gerade an der nächsten Optimierung für Build 51 – diesmal geht es noch einmal gezielt um die Performance der Super Resolution.

    Real-ESRGAN läuft bereits über Apples Core ML mit computeUnits = .all. Dadurch kann Core ML selbst entscheiden, ob einzelne Berechnungen auf CPU, GPU oder Neural Engine ausgeführt werden. Einfach nur „mehr CPU-Kerne“ zu verwenden, wäre deshalb nicht unbedingt schneller.

    Interessant ist aber die Verarbeitung der einzelnen Bildbereiche. Ein großes Foto wird für die Super Resolution in viele kleinere Tiles zerlegt, die momentan im Wesentlichen nacheinander durch das KI-Modell geschickt werden.

    Für Build 51 experimentiere ich deshalb mit einer parallelen Tile-Verarbeitung. Statt immer nur einen Bildbereich zu berechnen, sollen beispielsweise zwei Tiles gleichzeitig durch Real-ESRGAN verarbeitet werden. Core ML kann die eigentliche Berechnung weiterhin selbst optimal auf die vorhandene Hardware verteilen.

    Dabei gilt allerdings nicht automatisch „mehr parallel = schneller“. Zu viele gleichzeitige KI-Berechnungen können RAM, Speicherbandbreite, GPU und Neural Engine gleichzeitig auslasten und zu stärkerer Erwärmung bzw. Thermal Throttling führen.

    Deshalb soll es zunächst zwei Modi geben:

    Standard – die bisherige serielle und sehr stabile Verarbeitung.
    Parallel – zwei Real-ESRGAN-Tiles werden gleichzeitig verarbeitet.

    Damit kann ich dasselbe Bild auf verschiedenen Geräten direkt vergleichen und messen, wie groß der tatsächliche Geschwindigkeitsgewinn ist. Gerade auf Geräten wie einem M4-iPad oder aktuellen Pro-iPhones dürfte interessant werden, wie viel zusätzliche Leistung sich aus der Hardware noch herausholen lässt.

    Die Bildqualität selbst soll sich dabei natürlich nicht verändern. Bei Build 51 geht es ausschließlich darum, die vorhandene Super-Resolution-Pipeline schneller und effizienter zu machen.

    Danke für die Rückmeldungen!

    Der Scroll-Bug sollte mit Build 49 wieder behoben sein. Technisch lag es daran, dass sich durch den Umbau der Startseite wieder eine Höhenbegrenzung eingeschlichen hatte. Dadurch wurde der Inhalt auf kleinen iPhones an den sichtbaren Bereich gekoppelt und SwiftUI hat die darunterliegenden Kacheln nicht mehr korrekt als scrollbaren Inhalt behandelt.

    Und danke auch für den Tipp mit den Metadaten! Die Batch-Verarbeitung wurde entsprechend erweitert. Man kann jetzt mehrere Bilder auswählen und GPS-, EXIF- und weitere eingebettete Metadaten in einem Schritt komplett entfernen.


    Und ich habe eine komplett neue iPad / Mac UI implementiert.

    Die steht nur zur Verfügung, wenn ein iPad oder Mac erkannt wurde. Gerne mal testen! Da bin ich fast sicher, dass ich noch das ein oder andere Mal an Details ran muss.

    Hallo Zusammen,

    Ich habe ja mittlerweile 4 Apps. In diese habe ich super viel Zeit investiert. Nun hatte ich mir auch Gedanken zu den Icons gemacht. Mein Ziel ist es, dass man sich die Icons aussuchen kann. Apple bietet eine Auswahl von 5 Icons. Da bin ich aber noch nicht so weit, dass ich das rein programmiert bekomme. Das kommt noch.

    Ich habe auch mein „Corporate Design“ bei den Apps. Sprich: Grunddesign und Themes sind immer gleich. Das habe ich bewusst so gemacht und nutze es auch als Template für neue Apps.

    Jetzt wollte ich Euch fragen, und mir ein Paar Anregungen rein zum Design der Icons holen.

    Aktuell sind sie so:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Und das wäre ein einheitliches Design:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Aber: die meisten werden nicht all meine Apps nutzen und sie sowieso wahrscheinlich nie nebeneinander liegen haben. Was meint Ihr, was ist besser?

    Danke!

    Ich bin gerade nicht mehr sicher, ob wir da schon ein Thema zu hatten im öffentlichen Feedback Bereich.

    Nutzt man die Diktierfunktion, dass der diktierte Text verschwindet, nachdem man fertig aufgesprochen hat. Nicht unregelmäßig, sondern immer.
    Manchmal hilft es, schnell genug, einen Punkt zu setzen.

    Ich habe das Gefühl, mit iOS 27 ist es wieder schlimmer geworden und passiert jedes Mal.

    Ich muss leider sagen, dass mich das iPad arbeiten extrem erschwert wurde, mit iPadOS 27.

    Irgendetwas scheint beim Speicher Management nicht zu stimmen.

    Ich bin in Swift am coden in einem App Projekt, wechsle zu Safari und die Seite lädt neu.
    Ich wechsle zurück in Playground, und das Projekt baut neu auf.

    Ich habe mal meine Hüllen dran gepappt.

    2x TechWoven und 1x Silikon:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Lustig, mir wurde gestern auf Instagram dann weltfakten.de Vorgeschalgen (das hatte ich schon öfters gesehen) und was war das Thema.. 😂

    Ich habe es dann durch die KI laufen lassen, und nach der Echtheit gefragt. Es wurde bestätigt. Habe mir dann noch die Quellen liefern lassen. Hier mal der Auszug:

    Kleiner Zwischenstand zur neuen Super-Resolution-Funktion:

    Momentan passiert bei einem 12-MP-Bild vereinfacht Folgendes: Die App zerlegt ein Foto mit 4032 × 3024 Pixeln in rund 48 einzelne Tiles. Jedes dieser 512er-Tiles wird vom aktuellen Real-ESRGAN-x4plus-Modell zunächst auf 2048 × 2048 Pixel hochgerechnet. Anschließend reduziert die App das Ergebnis wieder auf 1024 × 1024 Pixel und setzt daraus das vollständige 2×-Bild zusammen.

    Die KI berechnet momentan also erheblich mehr Pixel, als für das fertige Bild überhaupt benötigt werden. Das funktioniert qualitativ bereits hervorragend, erklärt aber auch, warum die Verarbeitung eines 12-MP-Fotos selbst auf meinem M4-iPad rund fünf Minuten dauert und das SoC dabei ordentlich arbeiten und entsprechend warm werden kann.

    Genau deshalb überarbeite ich gerade noch einmal das verwendete AI-Modell und die Verarbeitungspipeline. Ziel ist eine echte native 2×-Berechnung: Die KI soll direkt aus einem 512er-Tile ein 1024er-Tile erzeugen, ohne den Umweg über 2048 × 2048 Pixel.

    Die Bildqualität stimmt also schon – jetzt geht es an die Performance und Effizienz. Deswegen dauert der Release noch einen Moment. Ich hoffe, ich sitze hier nicht noch, wenn es schon hell wird 😂

    Ausblick: Echte KI-Super-Resolution für My Media Tools

    In den 6 Stunden habe ich relativ intensiv (aber nebenher das iPhone übertragen lassen) an einer neuen Super-Resolution-Funktion gearbeitet. Das Ziel war dabei nicht einfach nur, ein Bild mathematisch größer zu skalieren, sondern tatsächlich zusätzliche Bilddetails mithilfe eines Machine-Learning-Modells zu rekonstruieren.

    Der erste Ansatz war Apples eigene VideoToolbox Super Resolution. Apple stellt dafür mit VTFrameProcessor und VTSuperResolutionScalerConfiguration inzwischen eine sehr interessante native Pipeline zur Verfügung, die direkt auf der Hardware des Geräts arbeitet.

    Technisch funktionierte die Implementierung letztlich auch. Dabei gab es allerdings einige Besonderheiten: Auf meinem Testgerät stellte VideoToolbox beispielsweise ausschließlich einen nativen Skalierungsfaktor von 4× zur Verfügung. Bei hochauflösenden iPhone-Fotos entstehen dadurch sehr schnell enorme Bildgrößen und entsprechend hohe Anforderungen an Arbeitsspeicher und Pixelbuffer. Bei meinem iPad Air M3 lief es in ein Speicher-/Pixelbuffer-Limit (das hat nur 8GB RAM). Beim iPad Air M4 13" mit 12GB lief es durch.

    Deshalb habe ich die Verarbeitung zunächst auf kontrollierte Bildausschnitte umgestellt und einen direkten A/B-Vergleich eingebaut. Original, Apples Super Resolution und eine klassische Lanczos-Skalierung konnten dabei auf exakt derselben Bildstelle miteinander verglichen und bis zu 30-fach vergrößert werden.

    Das überraschende Ergebnis: Obwohl Apples Pipeline technisch korrekt durchlief, war bei meinen Testbildern praktisch kein überzeugender zusätzlicher Detailgewinn gegenüber einer konventionellen Skalierung zu erkennen. Für eine Funktion, die ausdrücklich „Super Resolution“ heißen soll, war mir das schlicht nicht genug.

    Also habe ich den Ansatz noch einmal komplett geändert.

    Real-ESRGAN x4plus + Core ML

    Die neue Implementierung verwendet Real-ESRGAN x4plus, das ich als Core-ML-Modell direkt in My Media Tools integriert habe. Real-ESRGAN ist ein neuronales Super-Resolution-Verfahren: Es vergrößert die vorhandenen Pixel nicht lediglich durch Interpolation, sondern versucht, anhand der im Training erlernten Strukturen plausible hochauflösende Details zu rekonstruieren.

    Das Modell wird für die App als Core-ML-Modell kompiliert und anschließend vollständig lokal ausgeführt. Es gibt keinen Upload und keine Cloud-Verarbeitung. Das ausgewählte Foto bleibt während der gesamten Verarbeitung auf dem iPhone bzw. iPad.

    Auch die eigentliche Integration war interessanter als erwartet. Die Bilddaten müssen zunächst exakt in das vom neuronalen Netz erwartete Eingabeformat gebracht werden. Dazu gehören unter anderem die korrekte RGB-Normalisierung und das notwendige Padding. Nach der Inferenz liefert Core ML die berechneten Daten als MLMultiArrayzurück. Die Ausgabe des Netzes liegt dabei als mehrdimensionaler Tensor im NCHW-Format – also Batch, Farbkanal, Höhe und Breite – vor und muss anschließend wieder korrekt in RGB-Bilddaten zurückverwandelt werden. Danach wird das zuvor hinzugefügte Padding wieder entfernt und die Ausgabe für die weitere Bildverarbeitung aufbereitet.

    Der aktuelle interne Qualitätstest arbeitet zunächst mit einer kontrollierten Eingangsgröße und berechnet daraus über Real-ESRGAN eine 4× höhere Auflösung. Für den Vorher-/Nachher-Vergleich wird das komplette Ausgangsbild proportional eingepasst. Der Vergleich ist interaktiv: Die Trennlinie lässt sich frei verschieben, Bildposition und Zoom bleiben synchron und für die Detailkontrolle kann sehr weit in das Ergebnis hineingezoomt werden.

    Damit kann ich unmittelbar vergleichen, was tatsächlich vom ML-Modell kommt und was eine normale Lanczos-Skalierung aus demselben Ausgangsmaterial macht.

    Warum dieser Aufwand?

    Ich möchte die Funktion erst veröffentlichen, wenn der Qualitätsgewinn nicht nur auf dem Papier vorhanden ist. „4ד allein sagt schließlich überhaupt nichts darüber aus, ob am Ende tatsächlich ein besseres Bild entsteht. Aus 3.000 × 4.000 Pixeln rechnerisch 12.000 × 16.000 Pixel zu erzeugen, ist trivial. Entscheidend ist, was mit den zusätzlichen Pixeln passiert.

    Genau deshalb laufen momentan noch interne Tests mit unterschiedlichen Motiven, Detailstrukturen und Ausgangsqualitäten.

    Wenn diese Tests abgeschlossen sind und die Ergebnisse meinen Erwartungen entsprechen, wird die neue Real-ESRGAN-Super-Resolution mit einem der nächsten Builds von My Media Tools online gehen.

    Besonders spannend finde ich dabei, wo die Entwicklung inzwischen angekommen ist: Eine solche KI-basierte Bildrekonstruktion kann vollständig lokal auf einem iPhone oder iPad laufen – ohne Server, ohne Cloud und ohne dass das eigene Foto das Gerät verlassen muss.


    Darauf bin ich gerade wirklich ein bisschen stolz. Nach einigen Stunden Testen, Verwerfen und Optimieren läuft jetzt tatsächlich Real-ESRGAN x4plus als kompiliertes Core-ML-Modell direkt in meiner App und v.a. vollständig lokal auf iPhone und iPad, ohne Cloud oder Server.

    Und das Entscheidende: Das Ergebnis ist sensationell. Nicht einfach nur viermal mehr Pixel, sondern sichtbar rekonstruierte Details und eine Bildqualität, bei der man im direkten Vorher-/Nachher-Vergleich wirklich einen Unterschied sieht.

    Schon ziemlich verrückt, was man inzwischen direkt auf einem iPad umsetzen kann. 😊