การค้นหาภาพด้วยโมเดล Contrastive Language-Image Pre-Training (CLIP)
Jidapa Klinsanga
Posted on April 14, 2024
OpenAI ได้เปิดตัวโมเดลที่ใช้การเทรนจากรูปภาพและข้อความควบคู่กันไปซึ่งจะแตกต่างจากโมเดลตัวอื่นๆ ที่CLIP สามารถหาสิ่งที่ผู้ใช้ต้องการได้แม้ผู้ใช้งานจะไม่ได้ใช้คำที่หมายถึงสิ่งนั้นๆ โดยตรง เพราะการทำงานของมันคือการแปลงข้อมูลทั้งสองที่ใช้เทรนนั้นทั้งรูปและข้อความนั้นมาแปลงให้กลายเป็น shared embedding space ในส่วนที่มีคอนเซ็ปร่วมหรือเหมือนกัน
บทความนี้จะมาแสดงตัวอย่าในการค้นหารูปภาพที่มีค่า Vector ตรงหรือใกล้เคียงกับข้อความที่มอบคำสั่งไว้ด้วยวิธี Sentence Transformer ผ่านตัวโมเดล CLIP ใน Python ผ่านการทำงานทุกขั้นตอนใน Google Colab แหล่ง dataset ที่ใช้นั้นนำมาจาก Unsplash Dataset Lite โดยมีdataset ทั้งหมดถึง 25k
โดย Sentence Transformer คือ โครงสร้างการทำงานของ Python ที่ใช้ในการแปลงข้อความ ประโยคและรูปภาพให้เป็นตัวเลขและอยู่ในรูปแบบของ Vector
ขั้นตอนการทำ
ขั้นที่ 1: ทำการติดตั้ง Sentence Transformer
ขั้นที่ 2: นำเข้า libraries ที่ต้องใช้พร้อมกับโหลด CLIP โมเดลเข้ามาโดยใช้ Sentence Transformer
ในขั้นตอนนี้โมเดลจะถูกดาวน์โหลดโดยอัตโนมัติ โมเดล CLIP ที่ใช้ในงานนี้คือ ViT-B-32 สามารถใช้คำสั่ง clip.available_models()
เพื่อดูโมเดลตัวอื่นๆ ของ CLIP ที่สามารถใช้งานได้เช่นกัน
ขั้นที่ 3: โหลดข้อมูลชุดรูปภาพลง Google Colab
ใน Code นี้จะมีคำสั่งนำเข้าข้อมูลเข้ามาอัตโนมัติหากไม่ได้ดาวน์โหลดไว้มาตั้งแต่แรก
สามารถดูหรือดาวน์โหลดชุด dataset ได้ที่ HERE
เมื่อนำเข้าเสร็จสิ้นจะแสดงให้เห็นจำนวนชุด dataset ทั้งหมดดังนี้
ขั้นที่4: ทำการคำนวณค่า Embeddings
ในขั้นตอนนี้ได้ใช้วิธี Destribute pre-computed เพื่อให้การคำนวณรวดเร็วยิ่งขึ้น
เลขที่ได้จะเป็นชุดข้อมูลทั้งหมดหลังจากทำ Embeddings
ขั้นที่5: ทำการสร้าง Function สำหรับ Search
ขั้นที่6: ทดสอบการใช้งานและความแม่นยำของโมเดลด้วยคำสั่ง search
search("...")
ตัวอย่างการใช้งานและผลลัพธ์ที่ได้ :
สรุปผล
การค้นหาภาพด้วยโมเดล Contrastive Language-Image Pre-Training (CLIP) นั้นสามารถคำนวณและให้ผลลัพธ์ที่แม่นยำและมีประสิทธิภาพ ใช้เวลาในการคำนวณน้อยแม้จะไม่ได้ Prompt คำสั่งกับสิ่งที่ต้องการค้นหาโดยตรงดังตัวอย่างแรก CLIP จึงเป็นเหมือนแนวทางการสร้างโมเดลเพื่อการค้นหาและจำแนกประเภทข้อความ ประโยคและรูปภาพให้มีประสิทธิภาพและความแม่นยำมากยิ่งขึ้นด้วยวิธีการที่ตัวของโมเดลนั้นใช้ข้อความและรูปภาพในการเทรนไปควบคู่กัน
หากต้องการให้ผลลัพธ์แม่นยำมากขึ้นก็ควรที่จะเพิ่มชุดข้อมูลรูปและข้อความในการเทรนมากยิ่งขึ้นเพื่อเพิ่มประสิทธิภาพของตัวโมเดล
ข้อมูลจาก/Dataset
https://openai.com/research/clip
https://github.com/openai/CLIP
https://unsplash.com/data
Posted on April 14, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 11, 2024