ดึงภาพตามแบบสอบถาม (ข้อความหรือรูปภาพ) โดยใช้โมเดลคลิปที่ผ่านการฝึกฝนของ AI
ข้อความเป็นแบบสอบถาม
รูปภาพเป็นแบบสอบถาม
คลิป (การฝึกอบรมภาษาแบบภาษาที่ตัดกัน) เป็นเครือข่ายประสาทที่ได้รับการฝึกฝนเกี่ยวกับคู่ (ภาพข้อความ) ที่หลากหลาย มันสามารถแมปรูปภาพและข้อความลงในพื้นที่แฝงเดียวกันเพื่อให้สามารถเปรียบเทียบได้โดยใช้การวัดความคล้ายคลึงกัน
การขยายงานในที่เก็บนี้ฉันสร้างเครื่องมือค้นหาภาพง่าย ๆ ที่สามารถใช้ทั้งข้อความและรูปภาพเป็นแบบสอบถาม เครื่องมือค้นหาทำงานดังนี้:
image_id: {"url": https://abc.com/xyz, "feature_vector": [0.1, 0.3, ..., 0.2]}
ฉันใช้ชุดข้อมูล Unsplash เวอร์ชัน Lite ที่มีภาพ 25,000 ภาพ การค้นหาเพื่อนบ้าน K-Nearest นั้นขับเคลื่อนโดย Amazon Elasticsearch Service ฉันปรับใช้บริการคิวรีเป็นฟังก์ชั่น AWS Lambda และวางเกตเวย์ API ไว้ด้านหน้า ส่วนหน้าได้รับการพัฒนาโดยใช้ Streamlit
pip install -e . --no-cache-dir
python scripts/download_unsplash.py --image_width=480 --threads_count=32
สิ่งนี้จะดาวน์โหลดและแยกไฟล์ zip ที่มีข้อมูลเมตาเกี่ยวกับรูปภาพในชุดข้อมูล สคริปต์จะใช้ URL ของรูปภาพเพื่อดาวน์โหลดภาพจริงไปยัง unsplash-dataset/photos การดาวน์โหลดอาจล้มเหลวสำหรับภาพสองสามภาพ (ดูปัญหานี้) เนื่องจากคลิปจะลดตัวอย่างภาพเป็น 224 x 224 ต่อไปคุณอาจต้องการปรับความกว้างของภาพที่ดาวน์โหลดเพื่อลดพื้นที่เก็บข้อมูล คุณอาจต้องการเพิ่มพารามิเตอร์ threads_count เพื่อให้ได้ประสิทธิภาพที่เร็วขึ้น
python scripts/ingest_data.py
สคริปต์จะดาวน์โหลดโมเดลคลิปที่ผ่านการฝึกอบรมและประมวลผลภาพด้วยแบทช์ มันจะใช้ GPU หากมี
สร้างภาพนักเทียบท่าสำหรับ AWS Lambda
docker build --build-arg AWS_ACCESS_KEY_ID=YOUR_AWS_ACCESS_KEY_ID
--build-arg AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY
--tag clip-image-search
--file server/Dockerfile .
เรียกใช้อิมเมจนักเทียบท่าเป็นคอนเทนเนอร์
docker run -p 9000:8080 -it --rm clip-image-search
ทดสอบคอนเทนเนอร์ด้วยคำขอโพสต์
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"query": "two dogs", "input_type": "text"}'
streamlit run streamlit_app.py