เครื่องมือฝังรูปภาพช่วยให้ฝังรูปภาพลงในเวกเตอร์ฟีเจอร์ที่มีมิติสูงได้ แสดงความหมายทางอรรถศาสตร์ของรูปภาพ ซึ่งสามารถเปรียบเทียบกับ เวกเตอร์ฟีเจอร์ของรูปภาพอื่นๆ เพื่อประเมินความคล้ายคลึงกันทางอรรถศาสตร์
ตรงข้ามกับ การค้นหารูปภาพ เครื่องมือฝังรูปภาพช่วยให้คำนวณความคล้ายคลึงกันระหว่างรูปภาพต่างๆ ได้ทันที แทนการค้นหาผ่านดัชนีที่กำหนดไว้ล่วงหน้าที่สร้างจากคลังรูปภาพ
ใช้ API ของไลบรารีงาน ImageEmbedder
เพื่อทำให้เครื่องมือฝังรูปภาพที่กำหนดเองใช้งานได้
ในแอปบนอุปกรณ์เคลื่อนที่ของคุณ
ฟีเจอร์สำคัญของ ImageEmbedder API
การประมวลผลรูปภาพที่ป้อน รวมถึงการหมุน การปรับขนาด และพื้นที่สี Conversion
ภูมิภาคที่สนใจของรูปภาพอินพุต
ฟังก์ชันยูทิลิตีในตัวเพื่อคำนวณ ความคล้ายคลึงกันของโคไซน์ระหว่าง เวกเตอร์ของจุดสนใจ
โมเดลเครื่องมือฝังรูปภาพที่รองรับ
รุ่นต่อไปนี้ได้รับการรับประกันว่าใช้งานร่วมกับ ImageEmbedder
ได้
API
แบบจำลองเวกเตอร์จากองค์ประกอบ คอลเล็กชัน Google Image Modules ใน Kaggle Models
โมเดลที่กำหนดเองซึ่งเป็นไปตาม ข้อกำหนดความเข้ากันได้กับโมเดล
เรียกใช้การอนุมานใน C++
// Initialization
ImageEmbedderOptions options:
options.mutable_model_file_with_metadata()->set_file_name(model_path);
options.set_l2_normalize(true);
std::unique_ptr<ImageEmbedder> image_embedder = ImageEmbedder::CreateFromOptions(options).value();
// Create input frame_buffer_1 and frame_buffer_2 from your inputs `image_data1`, `image_data2`, `image_dimension1` and `image_dimension2`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer_1 = CreateFromRgbRawBuffer(
image_data1, image_dimension1);
std::unique_ptr<FrameBuffer> frame_buffer_2 = CreateFromRgbRawBuffer(
image_data2, image_dimension2);
// Run inference on two images.
const EmbeddingResult result_1 = image_embedder->Embed(*frame_buffer_1);
const EmbeddingResult result_2 = image_embedder->Embed(*frame_buffer_2);
// Compute cosine similarity.
double similarity = ImageEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector(),
result_2.embeddings[0].feature_vector());
โปรดดู
ซอร์สโค้ด
เพื่อดูตัวเลือกเพิ่มเติมในการกำหนดค่า ImageEmbedder
เรียกใช้การอนุมานใน Python
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ Pypi Support ของ TensorFlow Lite
คุณสามารถติดตั้งแพ็กเกจ Pypi สนับสนุน TensorFlow Lite โดยใช้สิ่งต่อไปนี้ คำสั่ง:
pip install tflite-support
ขั้นตอนที่ 2: การใช้โมเดล
from tflite_support.task import vision
# Initialization.
image_embedder = vision.ImageEmbedder.create_from_file(model_path)
# Run inference on two images.
image_1 = vision.TensorImage.create_from_file('/path/to/image1.jpg')
result_1 = image_embedder.embed(image_1)
image_2 = vision.TensorImage.create_from_file('/path/to/image2.jpg')
result_2 = image_embedder.embed(image_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = image_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
โปรดดู
ซอร์สโค้ด
เพื่อดูตัวเลือกเพิ่มเติมในการกำหนดค่า ImageEmbedder
ตัวอย่างผลการแข่ง
ความคล้ายคลึงของโคไซน์ระหว่างเวกเตอร์ของจุดสนใจที่ได้รับการปรับให้เป็นมาตรฐานจะแสดงคะแนนระหว่าง -1 และ 1. ยิ่งสูงยิ่งดี กล่าวคือ ความคล้ายคลึงกันของโคไซน์ของ 1 หมายความว่าเวกเตอร์ 2 เวกเตอร์ เหมือนกัน
Cosine similarity: 0.954312
ลองใช้ เครื่องมือสาธิต CLI สำหรับ ImageEmbedder กับโมเดลและข้อมูลทดสอบของคุณเอง
ข้อกำหนดความเข้ากันได้กับรุ่น
ImageEmbedder
API จำเป็นต้องมีโมเดล TFLite ที่มีตัวเลือกที่ไม่บังคับ แต่ขอแนะนำอย่างยิ่ง
แนะนำ
ข้อมูลเมตาของโมเดล TFLite
โมเดลเครื่องมือฝังรูปภาพที่ใช้ร่วมกันได้ควรเป็นไปตามข้อกำหนดต่อไปนี้
tensor ของภาพอินพุต (kTfLiteUInt8/kTfLiteFloat32)
- อินพุตภาพขนาด
[batch x height x width x channels]
- ไม่รองรับการอนุมานแบบกลุ่ม (
batch
ต้องเป็น 1) - รองรับอินพุต RGB เท่านั้น (
channels
ต้องเป็น 3) - หากประเภทคือ kTfLiteFloat32 จะต้องระบุ BottomizationOptions ซึ่งแนบมากับข้อมูลเมตา เพื่อการปรับอินพุตให้เป็นมาตรฐาน
- อินพุตภาพขนาด
Tensor เอาต์พุตอย่างน้อย 1 รายการ (kTfLiteUInt8/kTfLiteFloat32)
- ที่มีคอมโพเนนต์
N
รายการตามมิติข้อมูลN
ของผลลัพธ์ เวกเตอร์ของฟีเจอร์สำหรับเลเยอร์เอาต์พุตนี้ - มิติข้อมูล 2 หรือ 4 รายการ นั่นคือ
[1 x N]
หรือ[1 x 1 x 1 x N]
- ที่มีคอมโพเนนต์