O código-fonte aberto do Queryable, um aplicativo iOS, aproveita o CLIP da OpenAI Modelo MobileCLIP da Apple para realizar pesquisas offline no álbum ‘Fotos’. Ao contrário do modelo de pesquisa baseado em categorias integrado ao aplicativo iOS Photos, Queryable permite que você use declarações em linguagem natural, como a brown dog sitting on a bench
, para pesquisar seu álbum. Como está off-line, a privacidade do seu álbum não será comprometida por nenhuma empresa, incluindo a Apple ou o Google.
Blogue | Loja de aplicativos | Site | História | 故事
O processo é o seguinte:
Para obter mais detalhes, consulte meu blog: Execute o CLIP no iPhone para pesquisar fotos.
[2024-09-01]: Agora suporta MobileCLIP da Apple.
Você pode baixar o TextEncoder_mobileCLIP_s2.mlmodelc
e ImageEncoder_mobileCLIP_s2.mlmodelc
exportados do Google Drive. Atualmente usamos o modelo s2
como modelo padrão, que equilibra eficiência e precisão.
A versão Android (Código) desenvolvida por @greyovo, que suporta inglês e chinês. Veja detalhes em #12.
Baixe TextEncoder_mobileCLIP_s2.mlmodelc
e ImageEncoder_mobileCLIP_s2.mlmodelc
do Google Drive. Clone este repositório, coloque os modelos baixados abaixo do caminho CoreMLModels/
e execute o Xcode, deve funcionar.
Se quiser apenas executar Queryable, você pode pular esta etapa e usar diretamente o modelo exportado do Google Drive. Se você deseja implementar Queryable que suporte sua própria linguagem nativa ou fazer algum trabalho de quantização/aceleração de modelo, aqui estão algumas diretrizes.
O truque é separar o TextEncoder
e ImageEncoder
no nível da arquitetura e, em seguida, carregar os pesos do modelo individualmente. Consultável usa o OpenAI ViT-B/32 Modelo MobileCLIP da Apple, e escrevi um notebook Jupyter para demonstrar como separar, carregar e exportar o modelo CLIP Core ML da OpenAI (se você quiser o script de exportação do MobileCLIP, verifique #issuecomment-2328024269). Os resultados de exportação do Core ML do ImageEncoder têm um certo nível de erro de precisão e podem ser necessários parâmetros de normalização mais apropriados.
clip-vit-base-patch32
. Isto reduziu significativamente o erro de precisão no codificador de imagem. Para obter mais detalhes, consulte o nº 18. Isenção de responsabilidade: não sou um engenheiro iOS profissional, perdoe meu pobre código Swift. Você pode se concentrar apenas no carregamento, cálculo, armazenamento e classificação do modelo.
Você pode aplicar Queryable ao seu próprio produto, mas não recomendo simplesmente modificar a aparência e listá-lo na App Store. Se você estiver interessado em otimizar certos aspectos(como #4, #5 , #6, #10, #11, #12 ), sinta-se à vontade para enviar um PR (Pull Request).
Obrigado pela sua contribuição :)
Se você tiver alguma dúvida/sugestão, aqui estão alguns métodos de contato: Discord | Twitter | Reddit: r/consultável.
Licença MIT
Direitos autorais (c) 2023 Ke Fang