โค้ดโอเพ่นซอร์สของ Queryable ซึ่งเป็นแอป iOS ใช้ประโยชน์จาก คลิปของ OpenAI โมเดล MobileCLIP ของ Apple เพื่อทำการค้นหาแบบออฟไลน์ในอัลบั้ม 'รูปภาพ' ไม่เหมือนกับโมเดลการค้นหาตามหมวดหมู่ที่มีอยู่ในแอพ iOS Photos Queryable ช่วยให้คุณใช้ข้อความที่เป็นภาษาธรรมชาติ เช่น a brown dog sitting on a bench
เพื่อค้นหาอัลบั้มของคุณ เนื่องจากเป็นแบบออฟไลน์ ความเป็นส่วนตัวของอัลบั้มของคุณจะไม่ถูกกระทบโดยบริษัทใดๆ รวมถึง Apple หรือ Google
บล็อก | แอพสโตร์ | เว็บไซต์ | เรื่องราว | 故事
กระบวนการมีดังนี้:
สำหรับรายละเอียดเพิ่มเติม โปรดดูบล็อกของฉัน: เรียกใช้ CLIP บน iPhone เพื่อค้นหารูปภาพ
[01-09-2024]: รองรับ MobileCLIP ของ Apple แล้ว
คุณสามารถดาวน์โหลด TextEncoder_mobileCLIP_s2.mlmodelc
และ ImageEncoder_mobileCLIP_s2.mlmodelc
ที่ส่งออกได้จาก Google Drive ปัจจุบันเราใช้โมเดล s2
เป็นโมเดลเริ่มต้น ซึ่งทำให้ทั้งประสิทธิภาพและความแม่นยำสมดุลกัน
เวอร์ชัน Android (รหัส) พัฒนาโดย @greyovo ซึ่งรองรับทั้งภาษาอังกฤษและภาษาจีน ดูรายละเอียดใน #12.
ดาวน์โหลด TextEncoder_mobileCLIP_s2.mlmodelc
และ ImageEncoder_mobileCLIP_s2.mlmodelc
จาก Google Drive โคลน repo นี้ วางโมเดลที่ดาวน์โหลดไว้ด้านล่าง CoreMLModels/
path แล้วเรียกใช้ Xcode ซึ่งควรจะใช้งานได้
หากคุณต้องการเรียกใช้ Queryable เท่านั้น คุณสามารถ ข้ามขั้นตอนนี้ และใช้โมเดลที่ส่งออกจาก Google Drive ได้โดยตรง หากคุณต้องการใช้ Queryable ที่รองรับภาษาแม่ของคุณเอง หรือทำงานด้านปริมาณ/การเร่งความเร็วของโมเดล ต่อไปนี้เป็นแนวทางบางส่วน
เคล็ดลับคือการแยก TextEncoder
และ ImageEncoder
ในระดับสถาปัตยกรรม จากนั้นโหลดน้ำหนักโมเดลทีละรายการ สอบถามได้ใช้ OpenAI ViT-B/32 โมเดล MobileCLIP ของ Apple และฉันเขียนสมุดบันทึก Jupyter เพื่อสาธิตวิธีแยก โหลด และส่งออกโมเดล CLIP Core ML ของ OpenAI (หากคุณต้องการสคริปต์ส่งออกของ MobileCLIP ให้ชำระเงิน #issuecomment-2328024269) ผลลัพธ์การส่งออก Core ML ของ ImageEncoder มีข้อผิดพลาดที่แม่นยำในระดับหนึ่ง และอาจจำเป็นต้องใช้พารามิเตอร์การปรับมาตรฐานที่เหมาะสมกว่านี้
clip-vit-base-patch32
รุ่น HuggingFace ซึ่งช่วยลดข้อผิดพลาดด้านความแม่นยำในตัวเข้ารหัสรูปภาพลงได้อย่างมาก สำหรับรายละเอียดเพิ่มเติม ดู #18 ข้อจำกัดความรับผิดชอบ: ฉันไม่ใช่วิศวกร iOS มืออาชีพ โปรดยกโทษให้กับรหัส Swift ที่ไม่ดีของฉัน คุณสามารถมุ่งเน้นเฉพาะการโหลด การคำนวณ การจัดเก็บ และการเรียงลำดับโมเดลเท่านั้น
คุณสามารถใช้ Queryable กับผลิตภัณฑ์ของคุณเองได้ แต่ฉันไม่แนะนำให้แก้ไขรูปลักษณ์และลงรายการใน App Store หากคุณสนใจที่จะเพิ่มประสิทธิภาพบางแง่มุม (เช่น #4, #5 , #6, #10, #11, #12 ) อย่าลังเลที่จะส่ง PR (Pull Request)
ขอบคุณสำหรับการสนับสนุนของคุณ :)
หากคุณมีคำถาม/ข้อเสนอแนะ ต่อไปนี้เป็นช่องทางการติดต่อบางส่วน: Discord | ทวิตเตอร์ | Reddit: r/สามารถสืบค้นได้
ใบอนุญาตเอ็มไอที
ลิขสิทธิ์ (c) 2023 Ke Fang