iOS 앱인 Queryable의 오픈 소스 코드는 OpenAI의 CLIP '사진' 앨범에서 오프라인 검색을 수행하는 Apple의 MobileCLIP 모델입니다. iOS 사진 앱에 내장된 카테고리 기반 검색 모델과 달리 Queryable을 사용하면 a brown dog sitting on a bench
같은 자연어 구문을 사용하여 앨범을 검색할 수 있습니다. 오프라인이기 때문에 Apple이나 Google을 포함한 어떤 회사에서도 앨범의 개인정보가 침해되지 않습니다.
블로그 | 앱스토어 | 웹사이트 | 스토리 | 고사
프로세스는 다음과 같습니다.
자세한 내용은 내 블로그: Run CLIP on iPhone to Search Photos를 참조하세요.
[2024-09-01]: 이제 Apple의 MobileCLIP을 지원합니다.
내보낸 TextEncoder_mobileCLIP_s2.mlmodelc
및 ImageEncoder_mobileCLIP_s2.mlmodelc
를 Google Drive에서 다운로드할 수 있습니다. 현재 우리는 효율성과 정밀도의 균형을 유지하는 s2
모델을 기본 모델로 사용합니다.
@greyovo가 개발한 안드로이드 버전(코드)으로 영어와 중국어를 모두 지원합니다. 자세한 내용은 #12를 참조하세요.
Google 드라이브에서 TextEncoder_mobileCLIP_s2.mlmodelc
및 ImageEncoder_mobileCLIP_s2.mlmodelc
다운로드하세요. 이 저장소를 복제하고 다운로드한 모델을 CoreMLModels/
경로 아래에 놓고 Xcode를 실행하면 작동합니다.
Queryable만 실행하려는 경우 이 단계를 건너뛰고 Google Drive에서 내보낸 모델을 직접 사용할 수 있습니다. 자신의 모국어를 지원하는 Queryable을 구현하거나 일부 모델 양자화/가속 작업을 수행하려는 경우 다음 몇 가지 지침을 참조하세요.
비결은 아키텍처 수준에서 TextEncoder
와 ImageEncoder
분리한 다음 모델 가중치를 개별적으로 로드하는 것입니다. 쿼리 가능은 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을 적용할 수는 있지만, 단순히 외관만 수정하고 앱스토어에 등록하는 것은 권장하지 않습니다. 특정 측면(예: #4, #5 , #6, #10, #11, #12 ), 자유롭게 PR(Pull Request)을 제출하세요.
귀하의 기여에 감사드립니다 :)
질문이나 제안사항이 있는 경우 연락 방법은 다음과 같습니다. Discord | 트위터 | 레딧: r/Queryable.
MIT 라이센스
저작권 (c) 2023 케팡