iOS アプリである Queryable のオープンソース コードは、 OpenAIのクリップ「写真」アルバムでオフライン検索を実行する Apple の MobileCLIP モデル。 iOS の写真アプリに組み込まれているカテゴリベースの検索モデルとは異なり、Queryable を使用すると、 a brown dog sitting on a bench
などの自然言語ステートメントを使用してアルバムを検索できます。オフラインなので、アルバムのプライバシーが Apple や Google などの企業によって侵害されることはありません。
ブログ |アプリストア |ウェブサイト |ストーリー | 故事
プロセスは次のとおりです。
詳細については、私のブログ「iPhone で CLIP を実行して写真を検索する」を参照してください。
[2024-09-01]: Apple の MobileCLIP をサポートしました。
エクスポートされたTextEncoder_mobileCLIP_s2.mlmodelc
およびImageEncoder_mobileCLIP_s2.mlmodelc
を Google ドライブからダウンロードできます。現在、効率と精度の両方のバランスをとるs2
モデルをデフォルト モデルとして使用しています。
@greyovo が開発した Android 版(コード)で、英語と中国語の両方に対応しています。詳細は #12 を参照してください。
Google ドライブからTextEncoder_mobileCLIP_s2.mlmodelc
とImageEncoder_mobileCLIP_s2.mlmodelc
をダウンロードします。このリポジトリのクローンを作成し、ダウンロードしたモデルをCoreMLModels/
パスの下に配置して Xcode を実行すると、機能するはずです。
Queryable を実行するだけの場合は、この手順をスキップして、Google ドライブからエクスポートされたモデルを直接使用できます。独自の母国語をサポートする Queryable を実装する場合、またはモデルの量子化/高速化作業を行う場合は、次のガイドラインを参照してください。
秘訣は、 TextEncoder
とImageEncoder
アーキテクチャ レベルで分離し、モデルの重みを個別にロードすることです。 Queryable は、 OpenAI ViT-B/32 Apple の MobileCLIP モデルと、OpenAI の CLIP Core ML モデルを分離、ロード、エクスポートする方法を示す Jupyter ノートブックを作成しました (MobileCLIP のエクスポート スクリプトが必要な場合は、#issuecomment-2328024269 をチェックしてください)。 ImageEncoder の Core ML のエクスポート結果には一定レベルの精度誤差があり、より適切な正規化パラメータが必要になる場合があります。
clip-vit-base-patch32
の HuggingFace バージョンを変換するスクリプトを提供してくれた jxiong22 に感謝します。これにより、画像エンコーダの精度誤差が大幅に減少しました。詳細については、#18 を参照してください。 免責事項: 私はプロの iOS エンジニアではありません。私の貧弱な Swift コードをお許しください。モデルの読み込み、計算、保存、並べ替えだけに集中できます。
Queryable を自分の製品に適用することはできますが、単に外観を変更して App Store に掲載することはお勧めしません。特定の側面(#4 など)の最適化に興味がある場合は、 #5 、#6、#10、#11、 #12 )、お気軽にPR(プルリクエスト)を送信してください。
ご貢献いただきありがとうございます:)
ご質問やご提案がある場合は、以下の連絡方法をご利用ください: Discord |ツイッター | Reddit: r/クエリ可能。
MITライセンス
著作権 (c) 2023 柯芳