TensorImage

کلاس عمومی TensorImage

TensorImage کلاس wrapper برای آبجکت Image است. هنگام استفاده از ابزارهای پردازش تصویر در کتابخانه TFLite.support، در ابتدا تبدیل اشیاء تصویر در انواع مختلف به TensorImage معمول است.

در حال حاضر فقط تصاویر RGB پشتیبانی می شوند و کانال A همیشه نادیده گرفته می شود.

جزئیات ذخیره سازی داده ها: یک شی TensorImage ممکن است 2 منبع بالقوه حقیقت داشته باشد: یک Bitmap یا یک TensorBuffer . TensorImage حالت را حفظ می کند و تنها در صورت نیاز یکی را به دیگری تبدیل می کند. یک مورد معمول استفاده از TensorImage این است که ابتدا یک تصویر Bitmap را بارگذاری کنید، سپس آن را با استفاده از ImageProcessor پردازش کنید، و در نهایت ByteBuffer زیربنایی TensorBuffer را دریافت کنید و آن را به مفسر TFLite وارد کنید.

مهم: برای دستیابی به بهترین عملکرد، TensorImage از کپی کردن داده ها در صورت امکان اجتناب می کند. بنابراین، مالک داده های خود نیست. تماس گیرندگان نباید اشیاء داده ای را که به load(Bitmap) یا load(TensorBuffer, ColorSpaceType) ارسال می شوند، تغییر دهند.

مهم: همه روش‌ها از نظر نخی مطمئن نیستند.

سازندگان عمومی

TensorImage ()
یک شی TensorImage مقداردهی اولیه می کند.
TensorImage ( DataType dataType)
یک شی TensorImage را با نوع داده مشخص شده اولیه می کند.

روش های عمومی

TensorImage استاتیک
createFrom ( TensorImage src، DataType dataType)
یک کپی عمیق از یک TensorImage داده شده با نوع داده مورد نظر ایجاد می کند.
TensorImage استاتیک
fromBitmap (Bitmap Bitmap)
یک شی TensorImage از DataType.UINT8 را با یک Bitmap راه اندازی می کند.
بیت مپ
getBitmap ()
یک نمایش Bitmap از این TensorImage را برمی‌گرداند.
بایت بافر
getBuffer ()
یک نمایش ByteBuffer از این TensorImage با نوع داده مورد انتظار را برمی‌گرداند.
ColorSpaceType
getColorSpaceType ()
نوع فضای رنگی این TensorImage را دریافت می کند.
نوع داده
getDataType ()
نوع داده این TensorImage را دریافت می کند.
بین المللی
دریافت قد ()
ارتفاع تصویر را دریافت می کند.
تصویر
getMediaImage ()
یک نمایش Image از این TensorImage را برمی‌گرداند.
TensorBuffer
getTensorBuffer ()
یک نمایش TensorBuffer از این TensorImage با نوع داده مورد انتظار را برمی‌گرداند.
بین المللی
getWidth ()
عرض تصویر را دریافت می کند.
خالی
بار (بافر TensorBuffer ، ColorSpaceType colorSpaceType)
یک TensorBuffer حاوی مقادیر پیکسل را با ColorSpaceType خاص بارگیری می کند.
خالی
بارگذاری (بیت مپ)
یک شی تصویر Bitmap در این TensorImage بارگذاری می کند.
خالی
بار (int[] پیکسل، int[] شکل)
یک آرایه int را به‌عنوان پیکسل‌های RGB در این TensorImage بارگذاری می‌کند، که نشان‌دهنده پیکسل‌های داخل است.
خالی
بار (شکل شناور[] پیکسل، شکل درونی[])
یک آرایه شناور را به صورت پیکسل های RGB در این TensorImage بارگذاری می کند که نشان دهنده پیکسل های داخل آن است.
خالی
بارگذاری (بافر ByteBuffer ، ImageProperties imageProperties)
یک ByteBuffer حاوی مقادیر پیکسل را با ImageProperties خاص بارگیری می کند.
خالی
بار (بافر TensorBuffer ، ImageProperties imageProperties)
یک TensorBuffer حاوی مقادیر پیکسل را با ImageProperties خاص بارگیری می کند.
خالی
بارگذاری (تصویر تصویر)
یک شی Image را در این TensorImage بارگذاری می کند.

روش های ارثی

سازندگان عمومی

عمومی TensorImage ()

یک شی TensorImage مقداردهی اولیه می کند.

توجه: نوع داده این TensorImage DataType.UINT8 است. اگر سایر انواع داده ها ترجیح داده می شوند، از TensorImage(DataType) استفاده کنید.

عمومی TensorImage ( DataType dataType)

یک شی TensorImage را با نوع داده مشخص شده اولیه می کند.

هنگام دریافت TensorBuffer یا ByteBuffer از این TensorImage ، مانند استفاده از getTensorBuffer() و getBuffer() ، مقادیر داده به نوع داده مشخص شده تبدیل می شوند.

توجه: شکل TensorImage ثابت نیست. می توان آن را با شکل تصویری که در این TensorImage بارگذاری می شود تنظیم کرد.

مولفه های
نوع داده نوع داده مورد انتظار TensorBuffer حاصل. نوع همیشه در طول عمر TensorImage ثابت است. برای تبدیل نوع داده، از createFrom(TensorImage, DataType) استفاده کنید تا یک کپی ایجاد کنید و همزمان نوع داده را تبدیل کنید.
پرتاب می کند
IllegalArgumentException اگر dataType نه DataType.UINT8 باشد و نه DataType.FLOAT32

روش های عمومی

عمومی استاتیک TensorImage createFrom ( TensorImage src، DataType dataType)

یک کپی عمیق از یک TensorImage داده شده با نوع داده مورد نظر ایجاد می کند.

مولفه های
src TensorImage برای کپی کردن
نوع داده نوع داده مورد انتظار TensorImage تازه ایجاد شده
برمی گرداند
  • یک TensorImage که اطلاعات آن از src کپی شده و نوع داده dataType است

TensorImage استاتیک عمومی از Bitmap (Bitmap Bitmap)

یک شی TensorImage از DataType.UINT8 را با یک Bitmap راه اندازی می کند.

مولفه های
بیت مپ

بیت مپ عمومی getBitmap ()

یک نمایش Bitmap از این TensorImage را برمی‌گرداند.

در صورتی که داده های ذخیره شده uint8 نباشند، ریخته گری و بستن عددی اعمال می شود.

توجه داشته باشید که راه قابل اعتماد برای دریافت پیکسل از ALPHA_8 Bitmap استفاده از copyPixelsToBuffer است. روش های بیت مپ مانند «setPixels()» و «getPixels» کار نمی کنند.

مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.

برمی گرداند
  • یک مرجع به Bitmap در پیکربندی ARGB_8888 (کانال "A" همیشه مات است) یا در ALPHA_8 ، بسته به ColorSpaceType این TensorBuffer .
پرتاب می کند
IllegalStateException اگر TensorImage هرگز داده ها را بارگذاری نمی کند

عمومی ByteBuffer getBuffer ()

یک نمایش ByteBuffer از این TensorImage با نوع داده مورد انتظار را برمی‌گرداند.

در صورتی که داده های ذخیره شده با نوع داده TensorImage متفاوت باشد، ریخته گری و بستن عددی اعمال می شود.

مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.

این در اصل یک میانبر برای getTensorBuffer().getBuffer() است.

برمی گرداند
  • یک مرجع به ByteBuffer که داده های تصویر را نگه می دارد
پرتاب می کند
IllegalStateException اگر TensorImage هرگز داده ها را بارگذاری نمی کند

ColorSpaceType عمومی getColorSpaceType ()

نوع فضای رنگی این TensorImage را دریافت می کند.

پرتاب می کند
IllegalStateException اگر TensorImage هرگز داده ها را بارگذاری نمی کند

نوع داده عمومی getDataType ()

نوع داده این TensorImage را دریافت می کند.

برمی گرداند

عمومی int getHeight ()

ارتفاع تصویر را دریافت می کند.

پرتاب می کند
IllegalStateException اگر TensorImage هرگز داده ها را بارگذاری نمی کند
IllegalArgumentException اگر داده های اساسی خراب باشد

تصویر عمومی getMediaImage ()

یک نمایش Image از این TensorImage را برمی‌گرداند.

این روش فقط زمانی کار می کند که TensorImage توسط یک Image پشتیبانی شود، به این معنی که ابتدا باید یک Image از طریق load(Image) بارگذاری کنید.

مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.

برمی گرداند
  • یک مرجع به Bitmap در پیکربندی ARGB_8888 (کانال "A" همیشه مات است) یا در ALPHA_8 ، بسته به ColorSpaceType این TensorBuffer .
پرتاب می کند
IllegalStateException اگر TensorImage هرگز داده ها را بارگذاری نمی کند

عمومی TensorBuffer getTensorBuffer ()

یک نمایش TensorBuffer از این TensorImage با نوع داده مورد انتظار را برمی‌گرداند.

در صورتی که داده های ذخیره شده با نوع داده TensorImage متفاوت باشد، ریخته گری و بستن عددی اعمال می شود.

مهم: این فقط یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.

برمی گرداند
  • یک مرجع به یک TensorBuffer که داده های تصویر را نگه می دارد
پرتاب می کند
IllegalStateException اگر TensorImage هرگز داده ها را بارگذاری نمی کند

عمومی int getWidth ()

عرض تصویر را دریافت می کند.

پرتاب می کند
IllegalStateException اگر TensorImage هرگز داده ها را بارگذاری نمی کند
IllegalArgumentException اگر داده های اساسی خراب باشد

بار خالی عمومی (بافر TensorBuffer ، ColorSpaceType colorSpaceType)

یک TensorBuffer حاوی مقادیر پیکسل را با ColorSpaceType خاص بارگیری می کند.

فقط ColorSpaceType.RGB و ColorSpaceType.GRAYSCALE را پشتیبانی می کند. از load(TensorBuffer, ImageProperties) برای انواع فضای رنگی دیگر استفاده کنید.

توجه: اگر نوع داده buffer با این TensorImage مطابقت نداشته باشد، هنگام فراخوانی getTensorBuffer() و getBuffer() casting و clamping عددی اعمال می شود.

مولفه های
بافر TensorBuffer که باید بارگذاری شود. شکل آن باید یا (h, w, 3) یا (1, h, w, 3) برای تصاویر RGB و یا (h, w) یا (1, h, w) برای تصاویر GRAYSCALE باشد.
colorSpaceType
پرتاب می کند
IllegalArgumentException اگر شکل بافر با نوع فضای رنگ مطابقت نداشته باشد، یا اگر نوع فضای رنگی پشتیبانی نشود

بار خالی عمومی (بیت مپ بیت مپ)

یک شی تصویر Bitmap در این TensorImage بارگذاری می کند.

توجه: اگر TensorImage دارای نوع داده ای غیر از DataType.UINT8 باشد، هنگام فراخوانی getTensorBuffer() و getBuffer() که Bitmap به TensorBuffer تبدیل می شود، casting و clamping عددی اعمال می شود.

مهم: هنگام بارگیری بیت مپ، دیگر نقشه بیت را از سمت تماس گیرنده تغییر ندهید. شی TensorImage به بیت مپ متکی است. احتمالاً بیت مپ را نیز اصلاح خواهد کرد. در این روش، ما یک رویکرد کپی صفر برای آن بیت مپ، به سادگی با نگه داشتن مرجع آن انجام می دهیم. در صورت لزوم از bitmap.copy(bitmap.getConfig(), true) برای ایجاد یک کپی استفاده کنید.

توجه: برای دریافت بهترین عملکرد، لطفاً تصاویر را به همان شکل بارگذاری کنید تا از تخصیص مجدد حافظه جلوگیری شود.

مولفه های
بیت مپ
پرتاب می کند
IllegalArgumentException اگر bitmap در ARGB_8888 نیست

بار خالی عمومی (int[] پیکسل، int[] شکل)

یک آرایه int را به‌عنوان پیکسل‌های RGB در این TensorImage بارگذاری می‌کند، که نشان‌دهنده پیکسل‌های داخل است.

توجه: هنگام فراخوانی getTensorBuffer() و getBuffer() برای تبدیل مقادیر به نوع داده این TensorImage ریخته‌گری و بستن عددی اعمال می‌شود.

مولفه های
پیکسل ها پیکسل های RGB که تصویر را نشان می دهند
شکل شکل تصویر باید به شکل (h، w، 3)، یا به شکل (1، h، w، 3) باشد.
پرتاب می کند
IllegalArgumentException اگر شکل نه (h، w، 3) باشد و نه (1، h، w، 3)

بار خالی عمومی (فلوت[] پیکسل، شکل int[])

یک آرایه شناور را به صورت پیکسل های RGB در این TensorImage بارگذاری می کند که نشان دهنده پیکسل های داخل آن است.

توجه: اگر TensorImage نوع داده ای غیر از DataType.FLOAT32 داشته باشد، هنگام فراخوانی getTensorBuffer() و getBuffer() از ریخته گری و بستن عددی استفاده می شود.

مولفه های
پیکسل ها پیکسل های RGB که تصویر را نشان می دهند
شکل شکل تصویر باید به شکل (h، w، 3)، یا به شکل (1، h، w، 3) باشد.
پرتاب می کند
IllegalArgumentException اگر شکل نه (h، w، 3) باشد و نه (1، h، w، 3)

بار خالی عمومی (بافر ByteBuffer ، ImageProperties imageProperties)

یک ByteBuffer حاوی مقادیر پیکسل را با ImageProperties خاص بارگیری می کند.

توجه: اگر نوع داده buffer با این TensorImage مطابقت نداشته باشد، هنگام فراخوانی getTensorBuffer() و getBuffer() casting و clamping عددی اعمال می شود.

مولفه های
بافر
imageProperties
پرتاب می کند
IllegalArgumentException اگر اندازه بافر کمتر از اندازه تصویر نشان داده شده با ارتفاع، عرض و نوع فضای رنگ در ImageProperties باشد

بار خالی عمومی (بافر TensorBuffer ، ImageProperties imageProperties)

یک TensorBuffer حاوی مقادیر پیکسل را با ImageProperties خاص بارگیری می کند.

شکل TensorBuffer برای تعیین ارتفاع و عرض تصویر استفاده نخواهد شد. ویژگی های تصویر را از طریق ImageProperties تنظیم کنید.

توجه: اگر نوع داده buffer با این TensorImage مطابقت نداشته باشد، هنگام فراخوانی getTensorBuffer() و getBuffer() casting و clamping عددی اعمال می شود.

مولفه های
بافر
imageProperties
پرتاب می کند
IllegalArgumentException اگر اندازه بافر کمتر از اندازه تصویر نشان داده شده با ارتفاع، عرض و نوع فضای رنگ در ImageProperties باشد

بار خالی عمومی (تصویر تصویر)

یک شی Image را در این TensorImage بارگذاری می کند.

کاربرد اصلی این روش بارگذاری یک شی Image به عنوان ورودی مدل در https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview است. TensorImage پشتیبانی شده توسط Image توسط ImageProcessor پشتیبانی نمی شود.

* اگر ImageFormat image YUV_420_888 نباشد، IllegalArgumentException را می‌اندازد

مولفه های
تصویر