छवि खोज छवियों के डेटाबेस में समान छवियों को खोजने की अनुमति देता है। यह एक उच्च-आयामी वेक्टर में खोज क्वेरी को एम्बेड करके काम करता है जो क्वेरी के अर्थ अर्थ का प्रतिनिधित्व करता है, इसके बाद एक पूर्वनिर्धारित, कस्टम इंडेक्स में समानता खोज के बाद ScaNN (स्केलेबल निकटतम पड़ोसियों) का उपयोग करता है।
छवि वर्गीकरण के विपरीत, पहचानी जा सकने वाली वस्तुओं की संख्या का विस्तार करने के लिए पूरे मॉडल को फिर से प्रशिक्षित करने की आवश्यकता नहीं होती है। नई वस्तुओं को केवल सूचकांक को फिर से बनाने के लिए जोड़ा जा सकता है। यह छवियों के बड़े (100k+ आइटम) डेटाबेस के साथ काम करने में भी सक्षम बनाता है।
अपने कस्टम छवि खोजकर्ता को अपने मोबाइल एप्लिकेशन में परिनियोजित करने के लिए टास्क लाइब्रेरी ImageSearcher
एपीआई का उपयोग करें।
ImageSearcher API की मुख्य विशेषताएं
इनपुट के रूप में एकल छवि लेता है, अनुक्रमणिका में एम्बेडिंग निष्कर्षण और निकटतम-पड़ोसी खोज करता है।
इनपुट इमेज प्रोसेसिंग, जिसमें रोटेशन, आकार बदलना और रंग स्थान रूपांतरण शामिल हैं।
इनपुट छवि के हित का क्षेत्र।
आवश्यक शर्तें
ImageSearcher
API का उपयोग करने से पहले, खोज करने के लिए छवियों के कस्टम कॉर्पस के आधार पर एक अनुक्रमणिका बनाने की आवश्यकता होती है। यह ट्यूटोरियल का अनुसरण और अनुकूलन करके मॉडल मेकर सर्चर एपीआई का उपयोग करके प्राप्त किया जा सकता है।
इसके लिए आपको आवश्यकता होगी:
- एक TFLite छवि एम्बेडर मॉडल जैसे कि mobilenet v3 . TensorFlow हब पर Google छवि मॉड्यूल संग्रह से अधिक पूर्व-प्रशिक्षित एम्बेडर मॉडल (उर्फ फ़ीचर वेक्टर मॉडल) देखें।
- आपकी छवियों का संग्रह।
इस चरण के बाद, आपके पास एक स्टैंडअलोन TFLite खोजकर्ता मॉडल (उदा mobilenet_v3_searcher.tflite
) होना चाहिए, जो कि TFLite मॉडल मेटाडेटा में संलग्न अनुक्रमणिका के साथ मूल छवि एम्बेडर मॉडल है।
जावा में अनुमान चलाएँ
चरण 1: ग्रैडल निर्भरता और अन्य सेटिंग्स आयात करें
एंड्रॉइड मॉड्यूल की संपत्ति निर्देशिका में .tflite
खोजकर्ता मॉडल फ़ाइल की प्रतिलिपि बनाएँ जहां मॉडल चलाया जाएगा। निर्दिष्ट करें कि फ़ाइल को संपीड़ित नहीं किया जाना चाहिए, और TensorFlow Lite लाइब्रेरी को मॉड्यूल की build.gradle
फ़ाइल में जोड़ें:
android {
// Other settings
// Specify tflite index file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency (NNAPI is included)
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
चरण 2: मॉडल का उपयोग करना
// Initialization
ImageSearcherOptions options =
ImageSearcherOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setSearcherOptions(
SearcherOptions.builder().setL2Normalize(true).build())
.build();
ImageSearcher imageSearcher =
ImageSearcher.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<NearestNeighbor> results = imageSearcher.search(image);
ImageSearcher
को कॉन्फ़िगर करने के अधिक विकल्पों के लिए स्रोत कोड और javadoc देखें।
सी ++ में अनुमान चलाएं
// Initialization
ImageSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<ImageSearcher> image_searcher = ImageSearcher::CreateFromOptions(options).value();
// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
image_data, image_dimension);
// Run inference
const SearchResult result = image_searcher->Search(*frame_buffer).value();
ImageSearcher
को कॉन्फ़िगर करने के अधिक विकल्पों के लिए स्रोत कोड देखें।
पायथन में अनुमान चलाएँ
चरण 1: TensorFlow लाइट सपोर्ट Pypi पैकेज स्थापित करें।
आप निम्न आदेश का उपयोग करके TensorFlow लाइट सपोर्ट Pypi पैकेज स्थापित कर सकते हैं:
pip install tflite-support
चरण 2: मॉडल का उपयोग करना
from tflite_support.task import vision
# Initialization
image_searcher = vision.ImageSearcher.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_file)
result = image_searcher.search(image)
ImageSearcher
को कॉन्फ़िगर करने के अधिक विकल्पों के लिए स्रोत कोड देखें।
उदाहरण परिणाम
Results:
Rank#0:
metadata: burger
distance: 0.13452
Rank#1:
metadata: car
distance: 1.81935
Rank#2:
metadata: bird
distance: 1.96617
Rank#3:
metadata: dog
distance: 2.05610
Rank#4:
metadata: cat
distance: 2.06347
अपने स्वयं के मॉडल और परीक्षण डेटा के साथ ImageSearcher के लिए सरल CLI डेमो टूल आज़माएं ।