Beiträge von Dan

    Ich muss sagen, auf die Super Resolution in My Media Tools bin ich inzwischen wirklich ein bisschen stolz. Was ursprünglich als Experiment angefangen hat, ist mittlerweile eine ziemlich beeindruckende Machine-Learning-Image-Pipeline geworden.

    Die eigentliche Detailrekonstruktion läuft vollständig lokal auf dem Gerät über Core ML und Real-ESRGAN. Das Bild wird dabei in einzelne Tiles zerlegt, vom ML-Modell mit 2× Auflösung rekonstruiert und anschließend wieder zu einem hochauflösenden Gesamtbild zusammengesetzt. Metadaten werden dabei soweit möglich übernommen und das Original bleibt vollständig erhalten – außer man entscheidet sich anschließend bewusst dafür, es zu löschen.

    Inzwischen habe ich die Image Pipeline zusätzlich parallelisiert: Zwei Tiles können gleichzeitig durch Core ML verarbeitet werden. Core ML verteilt die eigentliche Inferenz wiederum selbst auf die verfügbare Hardware wie CPU, GPU und Neural Engine. Gerade auf leistungsfähigen Apple-Silicon-Geräten macht sich das bei der Verarbeitungszeit deutlich bemerkbar.

    Das Ganze läuft ohne Cloud, ohne Upload und ohne externen Server direkt auf iPhone und iPad.

    Wenn ich mir überlege, was da inzwischen im Hintergrund passiert, bin ich schon ziemlich stolz darauf, so eine Technologie selbst in meine App integriert und auf die Geräte optimiert zu haben.

    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.

    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.