Repositori ini mengimplementasikan mesin Pencarian Gambar pada foto lokal yang didukung oleh model CLIP. Ini sangat tepat dan mampu menemukan gambar berdasarkan pertanyaan yang kompleks. Untuk informasi lebih lanjut, lihat postingan blog Medium di sini.
Fungsionalitas tambahan untuk mengklasifikasikan gambar berdasarkan orang yang digambarkan diimplementasikan dengan perpustakaan face_recognition
. Beberapa filter juga tersedia, memungkinkan Anda menemukan gambar grup, tangkapan layar, dll...
Dalam lingkungan virtual Python 3.8+, instal dari PIP atau dari sumber:
pip install image-searcher
pip install face_recognition # Optional to enable face features
pip install flask flask_cors # Optional to enable a flask api
pip install -r dev_requirements.txt
pip install face_recognition # Optional to enable face features
pip install flask flask_cors # Optional to enable a flask api
Pemecahan masalah: Jika terjadi masalah saat membuat roda untuk dlib selama instalasi face_recognition, pastikan untuk menginstal paket python3.8-dev
(masing-masing python3.x-dev
) dan membuat ulang lingkungan virtual dari awal dengan perintah yang disebutkan di atas setelah diinstal.
Saat ini, penggunaannya adalah sebagai berikut. Perpustakaan pertama-tama menghitung penyematan semua gambar satu per satu, dan menyimpannya dalam kamus yang dipilih untuk referensi lebih lanjut. Untuk menghitung dan menyimpan informasi tentang orang-orang dalam gambar, aktifkan flag include_faces
(perhatikan bahwa ini membuat proses pengindeksan 10x lebih lambat).
from image_searcher import Search
searcher = Search ( image_dir_path = "/home/manu/perso/ImageSearcher/data/" ,
traverse = True ,
include_faces = False )
Setelah proses ini dilakukan satu kali, melalui Python, perpustakaan digunakan seperti:
from image_searcher import Search
searcher = Search ( image_dir_path = "/home/manu/perso/ImageSearcher/data/" ,
traverse = True ,
include_faces = False )
# Option 1: Pythonic API
from PIL import Image
ranked_images = searcher . rank_images ( "A photo of a bird." , n = 5 )
for image in ranked_images :
Image . open ( image . image_path ). convert ( 'RGB' ). show ()
# Option 2: Launch Flask api from code
from image_searcher . api import run
run ( searcher = searcher )
Menambahkan tag di akhir kueri (contoh: A bird singing #photo
) akan memfilter pencarian berdasarkan daftar tag. Tag yang didukung saat ini adalah:
Yang akan datang adalah dukungan untuk:
Setelah mengindeks gambar yang diinginkan, Flask API dapat digunakan untuk memuat model satu kali dan kemudian mencari secara efisien.
image_dir_path : /home/manu/Downloads/facebook_logs/messages/inbox/
save_path : /home/manu/
traverse : true
include_faces : true
reindex : false
n : 42
port :
host :
debug :
threaded :
from image_searcher . api import run
# Option 1: Through a config file
run ( config_path = "path_to_config_file.yml" )
# Option 2: Through an instanciated Search object
from image_searcher import Search
run ( searcher = Search ( image_dir_path = "/home/manu/perso/ImageSearcher/data/" ,
traverse = True ,
include_faces = False ))
Proses gunicorn juga dapat diluncurkan secara lokal dengan:
gunicorn " api.run_flask_gunicorn:create_app('path_to_config_file.yml') "
--name image_searcher
--bind 0.0.0.0: ${GUNICORN_PORT :- 5000}
--worker-tmp-dir /dev/shm
--workers= ${GUNICORN_WORKERS :- 2}
--threads= ${GUNICORN_THREADS :- 4}
--worker-class=gthread
--log-level=info
--log-file ' - '
--timeout 30
Catatan: Sesuaikan parameter batas waktu (dalam detik) jika banyak gambar baru yang diindeks/
Dengan membuka halaman web di browser dengan mesin pencari demo search.html
.
Melalui titik akhir API online: http://127.0.0.1:5000/get_best_images?q=a+photo+of+a+bird
Dengan Python:
import requests
import json
import urllib . parse
query = "a photo of a bird"
r = requests . get ( f"http://127.0.0.1:5000/get_best_images?q= { urllib . parse . quote ( query ) } " )
print ( json . loads ( r . content )[ "results" ])
Menggunakan alat ini dengan foto liburan, atau arsip foto Messenger dan Whatsapp akan membantu Anda menemukan kembali foto-foto lama dan sangat luar biasa dalam menemukan foto yang sudah lama hilang.
Jalankan tes dengan
python -m unittest
dan serat dengan:
pylint image_searcher
Repo ini masih dalam proses dan baru saja dimulai. Saat ini, ia menghitung sekitar 10 gambar per detik selama fase pengindeksan awal, kemudian hampir seketika selama fase kueri.
Permintaan dan kontribusi fitur disambut baik. Perbaikan pada antarmuka Pencarian Web juga akan sangat dihargai!
Sederhanakan dan perkuat instansiasi kelas Penelusuran:
Kecepatan:
Fitur:
Menyematkan file:
Bagian depan:
Penyebaran: