TensorImage

पब्लिक क्लास TensorImage

TensorImage, इमेज ऑब्जेक्ट के लिए रैपर क्लास है. TFLite.support लाइब्रेरी में इमेज प्रोसेसिंग के इस्तेमाल का इस्तेमाल करते समय, आम तौर पर, शुरुआत में इमेज ऑब्जेक्ट को वैरिएंट टाइप में TensorImage में बदला जाता है.

फ़िलहाल, सिर्फ़ आरजीबी इमेज का इस्तेमाल किया जा सकता है. साथ ही, A चैनल को हमेशा अनदेखा किया जाता है.

डेटा स्टोरेज की जानकारी: TensorImage ऑब्जेक्ट में सही जानकारी के दो संभावित सोर्स हो सकते हैं: Bitmap या TensorBuffer. TensorImage, स्टेटस को बनाए रखता है और ज़रूरत पड़ने पर ही, एक को दूसरे में बदलता है. TensorImage के इस्तेमाल का एक सामान्य उदाहरण है, पहले Bitmap इमेज को लोड करना, फिर ImageProcessor का इस्तेमाल करके उसे प्रोसेस करना, और आखिर में TensorBuffer में दिए गए ByteBuffer को हासिल करना और उसे TFLite अनुवादक में फ़ीड करना.

अहम जानकारी: सबसे बेहतर परफ़ॉर्मेंस पाने के लिए, जब भी संभव होता है TensorImage डेटा को कॉपी करने से बचता है. इसलिए, उसके डेटा का मालिकाना हक नहीं होता. कॉलर को डेटा ऑब्जेक्ट में बदलाव नहीं करना चाहिए. उन्हें load(Bitmap) या load(TensorBuffer, ColorSpaceType) को पास किया गया है.

अहम जानकारी: सभी तरीके थ्रेड-सुरक्षित साबित नहीं हुए हैं.

पब्लिक कंस्ट्रक्टर

TensorImage()
TensorImage ऑब्जेक्ट को शुरू करता है.
TensorImage(DataType डेटा टाइप)
तय किए गए डेटा टाइप के साथ TensorImage ऑब्जेक्ट को शुरू करता है.

सार्वजनिक तरीके

स्टैटिक TensorImage
createFrom(TensorImage src, DataType dataType)
अपने हिसाब से डेटा टाइप के साथ, दिए गए TensorImage की डीप-कॉपी बनाता है.
स्टैटिक TensorImage
fromBitmap(बिट मैप बिट मैप)
Bitmap के साथ, DataType.UINT8 के TensorImage ऑब्जेक्ट को शुरू करता है .
बिट मैप
getBitmap()
इस TensorImage का Bitmap निरूपण देता है.
ByteBuffer
getBuffer()
अनुमानित डेटा टाइप के साथ, इस TensorImage को ByteBuffer में दिखाता है.
ColorSpaceType
getColorSpaceType()
TensorImage का कलर स्पेस टाइप बताता है.
DataType
getDataType()
इस TensorImage का डेटा टाइप बताता है.
int
getHeight()
इमेज की ऊंचाई लेता है.
Image
getMediaImage()
इस TensorImage का Image निरूपण देता है.
TensorBuffer
getTensorBuffer()
सही डेटा टाइप के साथ इस TensorImage को TensorBuffer में दिखाता है.
int
getWidth()
इमेज की चौड़ाई का पता लगाता है.
void
load(TensorBuffer बफ़र, ColorSpaceType colorSpaceType)
खास ColorSpaceType के साथ पिक्सल वैल्यू वाला TensorBuffer लोड करता है.
void
load(बिटमैप बिट मैप)
इस TensorImage में Bitmap इमेज ऑब्जेक्ट लोड करता है.
void
load(int[] pixel, int[] आकार)
इस TensorImage में, int अरे को आरजीबी पिक्सल के तौर पर लोड करता है. यह अंदर के पिक्सल दिखाता है.
void
load(फ़्लोट[] पिक्सल, int[] आकार)
इस TensorImage में, फ़्लोट अरे को आरजीबी पिक्सल के तौर पर लोड करता है, जो अंदर के पिक्सल दिखाता है.
void
load(ByteBuffer बफ़र, ImageProperties imageProperties)
खास ImageProperties के साथ पिक्सल वैल्यू वाला ByteBuffer लोड करता है.
void
load(TensorBuffer बफ़र, ImageProperties imageProperties)
खास ImageProperties के साथ पिक्सल वैल्यू वाला TensorBuffer लोड करता है.
void
load(इमेज की इमेज)
इस TensorImage में Image ऑब्जेक्ट लोड करता है.

इनहेरिट किए गए तरीके

पब्लिक कंस्ट्रक्टर

सार्वजनिक TensorImage ()

TensorImage ऑब्जेक्ट को शुरू करता है.

ध्यान दें: इस TensorImage का डेटा टाइप DataType.UINT8 है. अगर अन्य डेटा टाइप को प्राथमिकता दी जाए, तो TensorImage(DataType) का इस्तेमाल करें.

सार्वजनिक TensorImage (DataType dataType)

तय किए गए डेटा टाइप के साथ TensorImage ऑब्जेक्ट को शुरू करता है.

इस TensorImage से TensorBuffer या ByteBuffer लेने पर, जैसे कि getTensorBuffer() और getBuffer() का इस्तेमाल करने पर, डेटा की वैल्यू बताए गए डेटा टाइप में बदल दी जाएंगी.

ध्यान दें: TensorImage का आकार तय नहीं है. इस TensorImage में लोड होने वाली इमेज के आकार में बदलाव किया जा सकता है.

पैरामीटर
dataType नतीजे के तौर पर TensorBuffer का अनुमानित डेटा टाइप. इस टाइप को TensorImage के लाइफ़टाइम में तय किया जाता है. डेटा टाइप को बदलने के लिए, createFrom(TensorImage, DataType) का इस्तेमाल करें, ताकि एक कॉपी बनाई जा सके और एक साथ डेटा टाइप बदला जा सके.
थ्रो
IllegalArgumentException अगर dataType, DataType.UINT8 या DataType.FLOAT32 न हो

सार्वजनिक तरीके

सार्वजनिक स्टैटिक TensorImage createFrom (TensorImage src, DataType dataType)

अपने हिसाब से डेटा टाइप के साथ, दिए गए TensorImage की डीप-कॉपी बनाता है.

पैरामीटर
src कॉपी करने के लिए TensorImage
dataType नए बनाए गए TensorImage का अनुमानित डेटा टाइप
लौटाए गए प्रॉडक्ट
  • TensorImage, जिसका डेटा src से कॉपी किया जाता है और डेटा टाइप dataType है

सार्वजनिक स्टैटिक TensorImage fromBitmap (बिटमैप बिटमैप)

Bitmap के साथ, DataType.UINT8 के TensorImage ऑब्जेक्ट को शुरू करता है .

पैरामीटर
बिट मैप

सार्वजनिक बिटमैप getBitmap ()

इस TensorImage का Bitmap निरूपण देता है.

अगर सेव किया गया डेटा uint8 नहीं है, तो न्यूमेरिक कास्ट और क्लैम्पिंग लागू की जाएगी.

ध्यान दें कि किसी ALPHA_8 बिटमैप से पिक्सल पाने का भरोसेमंद तरीका, copyPixelsToBuffer का इस्तेमाल करना है. `setPixels()` और `getPixels` जैसे बिट मैप के तरीके काम नहीं करते.

अहम जानकारी: यह सिर्फ़ एक पहचान फ़ाइल है. इसमें बदलाव न करें. हम परफ़ॉर्मेंस की चिंता के लिए यहां कोई कॉपी नहीं बनाते. अगर बदलाव करना ज़रूरी है, तो कृपया इसकी कॉपी बना लें.

लौटाए गए प्रॉडक्ट
  • ARGB_8888 कॉन्फ़िगरेशन में Bitmap का रेफ़रंस ("A" चैनल हमेशा ओपेक होता है) या ALPHA_8 में, इस TensorBuffer के ColorSpaceType के आधार पर.
थ्रो
IllegalStateException अगर TensorImage कभी भी डेटा लोड नहीं करता है

सार्वजनिक ByteBuffer getBuffer ()

अनुमानित डेटा टाइप के साथ, इस TensorImage को ByteBuffer में दिखाता है.

अगर सेव किया गया डेटा, TensorImage के डेटा टाइप से अलग है, तो नंबर वाली कास्ट और क्लैम्पिंग लागू की जाएगी.

अहम जानकारी: यह सिर्फ़ एक पहचान फ़ाइल है. इसमें बदलाव न करें. हम परफ़ॉर्मेंस की चिंता के लिए यहां कोई कॉपी नहीं बनाते. अगर बदलाव करना ज़रूरी है, तो कृपया इसकी कॉपी बना लें.

यह getTensorBuffer().getBuffer() के लिए एक छोटा कट है.

लौटाए गए प्रॉडक्ट
  • ByteBuffer का रेफ़रंस जिसमें इमेज डेटा होता है
थ्रो
IllegalStateException अगर TensorImage कभी भी डेटा लोड नहीं करता है

सार्वजनिक ColorSpaceType getColorSpaceType ()

TensorImage का कलर स्पेस टाइप बताता है.

थ्रो
IllegalStateException अगर TensorImage कभी भी डेटा लोड नहीं करता है

सार्वजनिक DataType getDataType ()

इस TensorImage का डेटा टाइप बताता है.

लौटाए गए प्रॉडक्ट
  • डेटा टाइप के लिए इस्तेमाल किया जा सकता है. फ़िलहाल, सिर्फ़ DataType.UINT8 और DataType.FLOAT32 का इस्तेमाल किया जा सकता है.

Public int getHeight ()

इमेज की ऊंचाई लेता है.

थ्रो
IllegalStateException अगर TensorImage कभी भी डेटा लोड नहीं करता है
IllegalArgumentException अगर बुनियादी डेटा करप्ट है

सार्वजनिक इमेज getMediaImage ()

इस TensorImage का Image निरूपण देता है.

यह तरीका सिर्फ़ तब काम करता है, जब TensorImage का बैक अप Image पर होता है. इसका मतलब है कि आपको पहले, load(Image) के ज़रिए Image को लोड करना होगा.

अहम जानकारी: यह सिर्फ़ एक पहचान फ़ाइल है. इसमें बदलाव न करें. हम परफ़ॉर्मेंस की चिंता के लिए यहां कोई कॉपी नहीं बनाते. अगर बदलाव करना ज़रूरी है, तो कृपया इसकी कॉपी बना लें.

लौटाए गए प्रॉडक्ट
  • ARGB_8888 कॉन्फ़िगरेशन में Bitmap का रेफ़रंस ("A" चैनल हमेशा ओपेक होता है) या ALPHA_8 में, इस TensorBuffer के ColorSpaceType के आधार पर.
थ्रो
IllegalStateException अगर TensorImage कभी भी डेटा लोड नहीं करता है

सार्वजनिक TensorBuffer getTensorBuffer ()

सही डेटा टाइप के साथ इस TensorImage को TensorBuffer में दिखाता है.

अगर सेव किया गया डेटा, TensorImage के डेटा टाइप से अलग है, तो नंबर वाली कास्ट और क्लैम्पिंग लागू की जाएगी.

अहम जानकारी: यह सिर्फ़ एक पहचान फ़ाइल है. इसमें बदलाव न करें. हम परफ़ॉर्मेंस की चिंता के लिए यहां कोई कॉपी नहीं बनाते. अगर बदलाव करना ज़रूरी है, तो कृपया इसकी कॉपी बना लें.

लौटाए गए प्रॉडक्ट
  • TensorBuffer का रेफ़रंस जिसमें इमेज डेटा होता है
थ्रो
IllegalStateException अगर TensorImage कभी भी डेटा लोड नहीं करता है

Public int getWidth ()

इमेज की चौड़ाई का पता लगाता है.

थ्रो
IllegalStateException अगर TensorImage कभी भी डेटा लोड नहीं करता है
IllegalArgumentException अगर बुनियादी डेटा करप्ट है

सार्वजनिक शून्य load (TensorBuffer बफ़र, ColorSpaceType colorSpaceType)

खास ColorSpaceType के साथ पिक्सल वैल्यू वाला TensorBuffer लोड करता है.

सिर्फ़ ColorSpaceType.RGB और ColorSpaceType.GRAYSCALE के साथ काम करता है. अन्य तरह के कलर स्पेस के लिए, load(TensorBuffer, ImageProperties) का इस्तेमाल करें.

ध्यान दें: अगर buffer का डेटा टाइप, TensorImage के डेटा टाइप से मेल नहीं खाता है, तो getTensorBuffer() और getBuffer() को कॉल करने पर, अंकों वाली कास्टिंग और क्लैंपिंग की सुविधा लागू हो जाएगी.

पैरामीटर
बफ़र लोड किया जाने वाला TensorBuffer. आरजीबी इमेज के लिए इसका आकार (h, w, 3) या (1, h, w, 3) होना चाहिए और GRAYSCALE इमेज के लिए (h, w) या (1, h, w) होना चाहिए
colorSpaceType
थ्रो
IllegalArgumentException अगर बफ़र का आकार, कलर स्पेस के टाइप से मेल नहीं खाता हो या कलर स्पेस का टाइप काम न करता हो

Public अमान्य लोड (बिटमैप बिटमैप)

इस TensorImage में Bitmap इमेज ऑब्जेक्ट लोड करता है.

ध्यान दें: अगर TensorImage में DataType.UINT8 के अलावा किसी अन्य तरह का डेटा है, तो getTensorBuffer() और getBuffer() को कॉल करने पर, अंकों वाली कास्ट और क्लैंपिंग की सुविधा लागू होगी. यहां Bitmap को TensorBuffer में बदल दिया जाएगा.

अहम जानकारी: बिट मैप लोड करते समय, कॉलर साइड से बिट मैप में बदलाव न करें. TensorImage ऑब्जेक्ट, बिट मैप पर निर्भर करेगा. यह बिटमैप को भी बदल देगा. इस तरीके में, हम उस बिट मैप के रेफ़रंस को दबाकर रखते हुए, ज़ीरो-कॉपी का इस्तेमाल करते हैं. अगर ज़रूरी हो, तो कॉपी बनाने के लिए bitmap.copy(bitmap.getConfig(), true) का इस्तेमाल करें.

ध्यान दें: सबसे अच्छी परफ़ॉर्मेंस पाने के लिए, कृपया उसी आकार में इमेज लोड करें, ताकि मेमोरी फिर से असाइन न की जा सके.

पैरामीटर
बिट मैप
थ्रो
IllegalArgumentException अगर bitmap ARGB_8888 में नहीं है

Public अमान्य load (int[] pixel, int[] shape)

इस TensorImage में, int अरे को आरजीबी पिक्सल के तौर पर लोड करता है. यह अंदर के पिक्सल दिखाता है.

ध्यान दें: getTensorBuffer() और getBuffer() को कॉल करते समय, वैल्यू को इस TensorImage के डेटा टाइप में बदलने के लिए, अंकों वाली कास्ट और क्लैंपिंग लागू की जाएगी.

पैरामीटर
पिक्सेल इमेज दिखाने वाले आरजीबी पिक्सल
आकार इमेज का आकार (h, w, 3) या फ़ॉर्म (1, h, w, 3) में होना चाहिए
थ्रो
IllegalArgumentException अगर आकृति न तो (h, w, 3) और (1, h, w, 3) है

सार्वजनिक शून्य लोड (फ़्लोट[] पिक्सेल, int[] आकार)

इस TensorImage में, फ़्लोट अरे को आरजीबी पिक्सल के तौर पर लोड करता है, जो अंदर के पिक्सल दिखाता है.

ध्यान दें: अगर TensorImage में DataType.FLOAT32 के अलावा किसी अन्य तरह का डेटा है, तो getTensorBuffer() और getBuffer() को कॉल करने पर, अंकों वाली कास्टिंग और क्लैंपिंग की सुविधा लागू होगी.

पैरामीटर
पिक्सेल इमेज दिखाने वाले आरजीबी पिक्सल
आकार इमेज का आकार (h, w, 3) या फ़ॉर्म (1, h, w, 3) में होना चाहिए
थ्रो
IllegalArgumentException अगर आकृति न तो (h, w, 3) और (1, h, w, 3) है

सार्वजनिक शून्य लोड (ByteBuffer बफ़र, ImageProperties imageProperties)

खास ImageProperties के साथ पिक्सल वैल्यू वाला ByteBuffer लोड करता है.

ध्यान दें: अगर buffer का डेटा टाइप, TensorImage के डेटा टाइप से मेल नहीं खाता है, तो getTensorBuffer() और getBuffer() को कॉल करने पर, अंकों वाली कास्टिंग और क्लैंपिंग की सुविधा लागू हो जाएगी.

पैरामीटर
बफ़र
imageProperties
थ्रो
IllegalArgumentException अगर बफ़र साइज़, ImageProperties में इमेज की ऊंचाई, चौड़ाई, और कलर स्पेस के टाइप से मिली इमेज के साइज़ से कम हो

सार्वजनिक शून्य load (TensorBuffer बफ़र, ImageProperties imageProperties)

खास ImageProperties के साथ पिक्सल वैल्यू वाला TensorBuffer लोड करता है.

TensorBuffer के आकार का इस्तेमाल, इमेज की ऊंचाई और चौड़ाई तय करने के लिए नहीं किया जाएगा. ImageProperties की मदद से इमेज की प्रॉपर्टी सेट करें.

ध्यान दें: अगर buffer का डेटा टाइप, TensorImage के डेटा टाइप से मेल नहीं खाता है, तो getTensorBuffer() और getBuffer() को कॉल करने पर, अंकों वाली कास्टिंग और क्लैंपिंग की सुविधा लागू हो जाएगी.

पैरामीटर
बफ़र
imageProperties
थ्रो
IllegalArgumentException अगर बफ़र साइज़, ImageProperties में इमेज की ऊंचाई, चौड़ाई, और कलर स्पेस के टाइप से मिली इमेज के साइज़ से कम हो

Public अमान्य लोड (इमेज इमेज)

इस TensorImage में Image ऑब्जेक्ट लोड करता है.

इस तरीके का मुख्य इस्तेमाल, Image ऑब्जेक्ट को मॉडल इनपुट के तौर पर https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview पर लोड करना होता है. Image का TensorImage, ImageProcessor पर काम नहीं करता.

* अगर image का ImageFormat, YUV_420_888 न हो, तो @throws IslamicArgumentexcept,

पैरामीटर
इमेज