El código fuente abierto de Queryable, una aplicación para iOS, aprovecha la CLIP de OpenAI Modelo MobileCLIP de Apple para realizar búsquedas offline en el álbum 'Fotos'. A diferencia del modelo de búsqueda basado en categorías integrado en la aplicación Fotos de iOS, Queryable le permite utilizar declaraciones en lenguaje natural, como a brown dog sitting on a bench
, para buscar en su álbum. Dado que no está conectado, ninguna empresa, incluidas Apple o Google, comprometerá la privacidad de su álbum.
Blog | Tienda de aplicaciones | Sitio web | Historia | 故事
El proceso es el siguiente:
Para obtener más detalles, consulte mi blog: Ejecute CLIP en iPhone para buscar fotos.
[2024-09-01]: Ahora es compatible con MobileCLIP de Apple.
Puede descargar TextEncoder_mobileCLIP_s2.mlmodelc
e ImageEncoder_mobileCLIP_s2.mlmodelc
exportados desde Google Drive. Actualmente utilizamos el modelo s2
como modelo predeterminado, que equilibra eficiencia y precisión.
La versión de Android (Código) desarrollada por @greyovo, que admite inglés y chino. Ver detalles en el n.° 12.
Descargue TextEncoder_mobileCLIP_s2.mlmodelc
e ImageEncoder_mobileCLIP_s2.mlmodelc
de Google Drive. Clona este repositorio, coloca los modelos descargados debajo de CoreMLModels/
ruta y ejecuta Xcode, debería funcionar.
Si solo desea ejecutar Queryable, puede omitir este paso y usar directamente el modelo exportado desde Google Drive. Si desea implementar Queryable que sea compatible con su propio idioma nativo, o realizar algún trabajo de cuantificación/aceleración del modelo, aquí hay algunas pautas.
El truco consiste en separar TextEncoder
e ImageEncoder
a nivel de arquitectura y luego cargar los pesos del modelo individualmente. Consultable utiliza el OpenAI ViT-B/32 El modelo MobileCLIP de Apple y escribí un cuaderno de Jupyter para demostrar cómo separar, cargar y exportar el modelo CLIP Core ML de OpenAI (si desea el script de exportación de MobileCLIP, consulte #issuecomment-2328024269). Los resultados de exportación del Core ML de ImageEncoder tienen un cierto nivel de error de precisión y es posible que se necesiten parámetros de normalización más apropiados.
clip-vit-base-patch32
. Esto ha reducido significativamente el error de precisión en el codificador de imágenes. Para obtener más detalles, consulte el n.º 18. Descargo de responsabilidad: no soy un ingeniero profesional de iOS, perdone mi pobre código Swift. Puede centrarse únicamente en la carga, el cálculo, el almacenamiento y la clasificación del modelo.
Puede aplicar Queryable a su propio producto, pero no recomiendo simplemente modificar la apariencia y publicarlo en la App Store. Si está interesado en optimizar ciertos aspectos(como el #4, #5 , #6, #10, #11, #12 ), no dudes en enviar un PR (Pull Request).
Gracias por tu aporte : )
Si tienes alguna pregunta/sugerencia, aquí tienes algunos métodos de contacto: Discord | Gorjeo | Reddit: r/Consultable.
Licencia MIT
Copyright (c) 2023 Ke Fang