iOS 應用程式 Queryable 的開源程式碼利用OpenAI 的 CLIP Apple 的 MobileCLIP 模型可在「照片」相簿中進行離線搜尋。與 iOS Photos 應用程式中內建的基於類別的搜尋模型不同,Queryable 允許您使用自然語言語句(例如a brown dog sitting on a bench
)來搜尋您的相簿。由於它是離線的,您的相簿隱私不會受到任何公司的損害,包括蘋果或谷歌。
部落格 |應用程式商店 |網站 |故事| 故事
流程如下:
更多詳情請參考我的部落格:在iPhone上運行CLIP搜尋照片。
[2024-09-01]:現在支援Apple的MobileCLIP。
您可以從 Google Drive 下載匯出的TextEncoder_mobileCLIP_s2.mlmodelc
和ImageEncoder_mobileCLIP_s2.mlmodelc
。目前我們使用s2
模型作為預設模型,它平衡了效率和精確度。
@greyovo開發的Android版本(程式碼),支援英文和中文。請參閱#12 中的詳細資訊。
從 Google Drive 下載TextEncoder_mobileCLIP_s2.mlmodelc
和ImageEncoder_mobileCLIP_s2.mlmodelc
。克隆這個儲存庫,將下載的模型放在CoreMLModels/
路徑下並運行 Xcode,它應該可以工作。
如果您只想執行 Queryable,則可以跳過此步驟,直接使用從 Google Drive 匯出的模型。如果您希望實作支援您自己的母語的 Queryable,或進行一些模型量化/加速工作,這裡有一些指南。
訣竅是在架構層級將TextEncoder
和ImageEncoder
分開,然後單獨載入模型權重。可查詢使用OpenAI ViT-B/32 Apple的MobileCLIP模型,我編寫了一個Jupyter筆記本來示範如何分離、載入和匯出OpenAI的CLIP Core ML模型(如果您想要MobileCLIP的匯出腳本,請查看#issuecomment-2328024269)。 ImageEncoder的Core ML的導出結果存在一定程度的精確度誤差,可能需要更合適的歸一化參數。
clip-vit-base-patch32
的腳本。這顯著降低了影像編碼器的精度誤差。有關更多詳細信息,請參閱#18。 免責聲明:我不是專業的 iOS 工程師,請原諒我糟糕的 Swift 程式碼。您可能只專注於模型的載入、計算、儲存和排序。
你可以將Queryable應用到你自己的產品中,但我不建議簡單地修改外觀並在App Store上架。如果您有興趣優化某些方面(例如#4, #5 ,#6,#10,#11, #12 ),請隨時提交 PR(拉取請求)。
感謝您的貢獻:)
如果您有任何問題/建議,以下是一些聯絡方式:Discord |推特 | Reddit:r/Queryable。
麻省理工學院許可證
版權所有 (c) 2023 科方