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 استاتیک | createFrom ( TensorImage src، DataType dataType) یک کپی عمیق از یک TensorImage داده شده با نوع داده مورد نظر ایجاد می کند. |
| TensorImage استاتیک | fromBitmap (Bitmap 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 را دریافت می کند.
برمی گرداند
- یک نوع داده در حال حاضر فقط
DataType.UINT8وDataType.FLOAT32پشتیبانی می شوند.
عمومی 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 را میاندازد
مولفه های
| تصویر |
|---|