Der Open-Source-Code von Queryable, einer iOS-App, nutzt die CLIP von OpenAI Apples MobileCLIP-Modell zur Durchführung von Offline-Suchen im Album „Fotos“. Im Gegensatz zum kategoriebasierten Suchmodell, das in die iOS-Fotos-App integriert ist, können Sie mit Queryable Aussagen in natürlicher Sprache verwenden, z. B. a brown dog sitting on a bench
, um Ihr Album zu durchsuchen. Da es offline ist, wird die Privatsphäre Ihres Albums von keinem Unternehmen, einschließlich Apple oder Google, gefährdet.
Blog | App Store | Website | Geschichte | Nein
Der Prozess ist wie folgt:
Weitere Informationen finden Sie in meinem Blog: Führen Sie CLIP auf dem iPhone aus, um Fotos zu suchen.
[01.09.2024]: Unterstützt jetzt Apples MobileCLIP.
Sie können die exportierten TextEncoder_mobileCLIP_s2.mlmodelc
und ImageEncoder_mobileCLIP_s2.mlmodelc
von Google Drive herunterladen. Derzeit verwenden wir das s2
Modell als Standardmodell, das sowohl Effizienz als auch Präzision in Einklang bringt.
Die von @greyovo entwickelte Android-Version (Code), die sowohl Englisch als auch Chinesisch unterstützt. Einzelheiten siehe Nr. 12.
Laden Sie TextEncoder_mobileCLIP_s2.mlmodelc
und ImageEncoder_mobileCLIP_s2.mlmodelc
von Google Drive herunter. Klonen Sie dieses Repo, platzieren Sie die heruntergeladenen Modelle unter CoreMLModels/
-Pfad und führen Sie Xcode aus. Es sollte funktionieren.
Wenn Sie nur Queryable ausführen möchten, können Sie diesen Schritt überspringen und direkt das exportierte Modell aus Google Drive verwenden. Wenn Sie Queryable implementieren möchten, das Ihre eigene Muttersprache unterstützt, oder Modellquantisierungs-/-beschleunigungsarbeiten durchführen möchten, finden Sie hier einige Richtlinien.
Der Trick besteht darin, TextEncoder
und ImageEncoder
auf Architekturebene zu trennen und dann die Modellgewichte einzeln zu laden. Queryable verwendet die OpenAI ViT-B/32 Apples MobileCLIP-Modell, und ich habe ein Jupyter-Notizbuch geschrieben, um zu demonstrieren, wie man das CLIP Core ML-Modell von OpenAI trennt, lädt und exportiert (Wenn Sie das Exportskript von MobileCLIP möchten, schauen Sie sich #issuecomment-2328024269 an). Die Exportergebnisse des Core ML von ImageEncoder weisen einen gewissen Präzisionsfehler auf und möglicherweise sind geeignetere Normalisierungsparameter erforderlich.
clip-vit-base-patch32
. Dadurch wurde der Präzisionsfehler im Bildencoder deutlich reduziert. Weitere Einzelheiten finden Sie unter Nr. 18. Haftungsausschluss: Ich bin kein professioneller iOS-Ingenieur. Bitte verzeihen Sie meinen schlechten Swift-Code. Möglicherweise konzentrieren Sie sich nur auf das Laden, Berechnen, Speichern und Sortieren des Modells.
Sie können Queryable auf Ihr eigenes Produkt anwenden, ich empfehle jedoch nicht, einfach das Erscheinungsbild zu ändern und es im App Store aufzulisten. Wenn Sie an der Optimierung bestimmter Aspekte interessiert sind (z. B. Nr. 4, #5 , #6, #10, #11, #12 ), können Sie gerne eine PR (Pull Request) einreichen.
Vielen Dank für deinen Beitrag :)
Wenn Sie Fragen/Anregungen haben, finden Sie hier einige Kontaktmöglichkeiten: Discord | Twitter | Reddit: r/Queryable.
MIT-Lizenz
Copyright (c) 2023 Ke Fang