TensorImage

מחלקה ציבורית TensorImage

TensorImage הוא מחלקה wrapper של אובייקט תמונה. כשמשתמשים בכלים לעיבוד תמונות בספריית TFLite.support, מקובל להמיר קודם אובייקטים של תמונות בסוגי וריאנטים ל-TensorImage.

בשלב זה יש תמיכה רק בתמונות RGB, והמערכת תמיד מתעלמת מערוץ A.

פרטים על אחסון נתונים: לאובייקט TensorImage יכולים להיות שני מקורות לאמת: 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(מפת סיביות במפת סיביות)
מאתחל אובייקט TensorImage של DataType.UINT8 עם Bitmap .
מפת סיביות (bitmap)
getBitmap()
מחזירה ייצוג Bitmap של TensorImage זה.
ByteBuffer
getBuffer()
מחזירה ייצוג ByteBuffer של TensorImage עם סוג הנתונים הצפוי.
ColorSpaceType
getColorSpaceType()
מקבל את סוג מרחב הצבע של TensorImage זה.
DataType
getDataType()
מקבל את סוג הנתונים של TensorImage זה.
int
getHeight()
הפונקציה מקבלת את גובה התמונה.
תמונה
getMediaImage()
מחזירה ייצוג Image של TensorImage זה.
TensorBuffer
getTensorBuffer()
מחזירה ייצוג TensorBuffer של TensorImage עם סוג הנתונים הצפוי.
int
getWidth()
הפונקציה מקבלת את רוחב התמונה.
void
load(מאגר נתונים זמני של TensorBuffer, ColorSpaceType colorSpaceType)
טוען TensorBuffer שמכיל ערכי פיקסלים עם ColorSpaceType הספציפי.
void
load(מפת סיביות (bitmap))
טוען אובייקט תמונה מסוג Bitmap לתוך TensorImage.
void
load(int[] פיקסלים, צורה int[])
טוען מערך int כפיקסלים RGB בתוך TensorImage זה, שמייצג את הפיקסלים שבתוכו.
void
load(float[] פיקסלים, צורה int[])
טוען מערך צף כפיקסלים RGB ל-TensorImage הזה, שמייצג את הפיקסלים שבתוכו.
void
load(מאגר ByteBuffer, ImageProperties imageProperties)
טוען ByteBuffer שמכיל ערכי פיקסלים עם ImageProperties הספציפי.
void
load(מאגר TensorBuffer, ImageProperties imageProperties)
טוען TensorBuffer שמכיל ערכי פיקסלים עם ImageProperties הספציפי.
void
load(תמונת תמונה)
טוען אובייקט Image לתוך TensorImage.

שיטות שעברו בירושה

בנאים ציבוריים

Public TensorImage ()

הפעלת אובייקט TensorImage.

הערה: סוג הנתונים של TensorImage הוא DataType.UINT8. אם עדיף להשתמש בסוגי נתונים אחרים, יש להשתמש ב-TensorImage(DataType).

Public TensorImage (DataType dataType)

המערכת מפעילה אובייקט TensorImage עם סוג הנתונים שצוין.

כשמקבלים TensorBuffer או ByteBuffer מה-TensorImage הזה, למשל, שימוש ב-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

Public סטטי TensorImage fromBitmap (מפת סיביות (bitmap)

Public מפת סיביות getBitmap ()

מחזירה ייצוג Bitmap של TensorImage זה.

אם הנתונים השמורים לא יהיו תואמים לטלפון, יחולו ההעברה וההצמדה המספריים.

חשוב לשים לב שהדרך האמינה לקבל פיקסלים ממפת סיביות של ALPHA_8 היא להשתמש ב-copyPixelsToBuffer. שיטות של מפת סיביות (bitmap), כמו 'setPixels() ' ו-'getPixels' לא פועלות.

חשוב: זהו קובץ עזר בלבד. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, יוצרים עותק.

החזרות
קליעות
IllegalStateException אם TensorImage אף פעם לא טוען נתונים

Public ByteBuffer getBuffer ()

מחזירה ייצוג ByteBuffer של TensorImage עם סוג הנתונים הצפוי.

העברה (cast) ואכיפת מינימום מספריים יבוצעו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage.

חשוב: זהו קובץ עזר בלבד. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, יוצרים עותק.

זה בעצם קיצור דרך ל-getTensorBuffer().getBuffer().

החזרות
  • הפניה אל ByteBuffer שמכיל את נתוני התמונה
קליעות
IllegalStateException אם TensorImage אף פעם לא טוען נתונים

Public ColorSpaceType getColorSpaceType ()

מקבל את סוג מרחב הצבע של TensorImage זה.

קליעות
IllegalStateException אם TensorImage אף פעם לא טוען נתונים

Public DataType getDataType ()

מקבל את סוג הנתונים של TensorImage זה.

החזרות

public int getHeight ()

הפונקציה מקבלת את גובה התמונה.

קליעות
IllegalStateException אם TensorImage אף פעם לא טוען נתונים
IllegalArgumentException אם נתוני הבסיס פגומים

תמונה ציבורית תמונה getMediaImage ()

מחזירה ייצוג Image של TensorImage זה.

שיטה זו פועלת רק כאשר TensorImage מגובה על ידי Image, כלומר, תחילה יש לטעון Image עד load(Image).

חשוב: זהו קובץ עזר בלבד. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, יוצרים עותק.

החזרות
קליעות
IllegalStateException אם TensorImage אף פעם לא טוען נתונים

Public TensorBuffer getTensorBuffer ()

מחזירה ייצוג TensorBuffer של TensorImage עם סוג הנתונים הצפוי.

העברה (cast) ואכיפת מינימום מספריים יבוצעו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage.

חשוב: זהו קובץ עזר בלבד. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, יוצרים עותק.

החזרות
  • הפניה אל TensorBuffer שמכיל את נתוני התמונה
קליעות
IllegalStateException אם TensorImage אף פעם לא טוען נתונים

public int getWidth ()

הפונקציה מקבלת את רוחב התמונה.

קליעות
IllegalStateException אם TensorImage אף פעם לא טוען נתונים
IllegalArgumentException אם נתוני הבסיס פגומים

Public IV load (TensorBuffer מאגר נתונים זמני, ColorSpaceType colorSpaceType)

טוען TensorBuffer שמכיל ערכי פיקסלים עם ColorSpaceType הספציפי.

יש תמיכה רק ב-ColorSpaceType.RGB וב-ColorSpaceType.GRAYSCALE. אפשר להשתמש במאפיין load(TensorBuffer, ImageProperties) לסוגים אחרים של מרחבי צבעים.

הערה: אם סוג הנתונים של buffer לא תואם לסוג הנתונים הזה ב-TensorImage, ההעברה המספרית והמהדקים יחולו בעת הקריאה ל-getTensorBuffer() ול-getBuffer().

פרמטרים
buffer TensorBuffer לטעינה. הצורה שלו צריכה להיות (h, w, 3) או (1, h, w, 3) לתמונות RGB, ו-(h, w) או (1, h, w) לתמונות אפור
colorSpaceType
קליעות
IllegalArgumentException אם הצורה של מאגר הנתונים הזמני לא תואמת לסוג של מרחב הצבעים, או אם הסוג של מרחב הצבעים לא נתמך

Public void load (מפת סיביות (bitmap)

טוען אובייקט תמונה מסוג Bitmap לתוך TensorImage.

הערה: אם ב-TensorImage יש סוג נתונים שאינו DataType.UINT8, ההעברה והמהדקים המספריים יחולו בקריאה ל-getTensorBuffer() ול-getBuffer(), כאשר Bitmap יומר ל-TensorBuffer.

חשוב: כשטוענים מפת סיביות (bitmap), אין יותר לשנות את מפת הסיביות מהצד של מבצע הקריאה. האובייקט TensorImage יסתמך על מפת הסיביות. סביר להניח שהפעולה הזו תשנה גם את מפת הסיביות. בשיטה הזו, אנחנו מבצעים גישת אפס עותק עבור מפת הסיביות הזו, פשוט על ידי החזקה של ההפניה שלה. אם צריך, אפשר להשתמש ב-bitmap.copy(bitmap.getConfig(), true) כדי ליצור עותק.

הערה: כדי ליהנות מהביצועים הטובים ביותר, צריך לטעון תמונות באותה צורה כדי למנוע הקצאה מחדש של הזיכרון.

פרמטרים
מפת סיביות (bitmap)
קליעות
IllegalArgumentException אם bitmap לא ב-ARGB_8888

Public void load (int[] פיקסלים, צורה int[])

טוען מערך int כפיקסלים RGB בתוך TensorImage זה, שמייצג את הפיקסלים שבתוכו.

הערה: כאשר מתקשרים ל-getTensorBuffer() ול-getBuffer() המערכת מנסה לבצע העברה (cast) והתאמה מספריים כדי להמיר את הערכים לסוג הנתונים של השדה TensorImage.

פרמטרים
פיקסלים פיקסלים מסוג RGB שמייצגים את התמונה
צורה את הצורה של התמונה (h, w, 3) או בצורה (1, h, w, 3)
קליעות
IllegalArgumentException אם הצורה אינה (h, w, 3) או (1, h, w, 3)

public void load (float[] פיקסלים, צורה int[])

טוען מערך צף כפיקסלים RGB ל-TensorImage הזה, שמייצג את הפיקסלים שבתוכו.

הערה: אם ה-TensorImage כולל נתונים מסוג שאינו DataType.FLOAT32, ההעברה המספרית והמהדקים יחולו בעת הקריאה ל-getTensorBuffer() ול-getBuffer().

פרמטרים
פיקסלים פיקסלים מסוג RGB שמייצגים את התמונה
צורה את הצורה של התמונה (h, w, 3) או בצורה (1, h, w, 3)
קליעות
IllegalArgumentException אם הצורה אינה (h, w, 3) או (1, h, w, 3)

Public void load (מאגר מאגר ByteBuffer, ImageProperties imageProperties)

טוען ByteBuffer שמכיל ערכי פיקסלים עם ImageProperties הספציפי.

הערה: אם סוג הנתונים של buffer לא תואם לסוג הנתונים הזה ב-TensorImage, ההעברה המספרית והמהדקים יחולו בעת הקריאה ל-getTensorBuffer() ול-getBuffer().

פרמטרים
buffer
imageProperties
קליעות
IllegalArgumentException אם גודל מאגר הנתונים הזמני קטן מהגודל של התמונה שצוין על ידי גובה התמונה, הרוחב וסוג מרחב הצבעים ב-ImageProperties

Public void load (TensorBuffer מאגר נתונים זמני, ImageProperties imageProperties)

טוען TensorBuffer שמכיל ערכי פיקסלים עם ImageProperties הספציפי.

גובה התמונה והרוחב שלה לא ייקבעו באמצעות צורת TensorBuffer. הגדרת מאפייני תמונה עד ל-ImageProperties.

הערה: אם סוג הנתונים של buffer לא תואם לסוג הנתונים הזה ב-TensorImage, ההעברה המספרית והמהדקים יחולו בעת הקריאה ל-getTensorBuffer() ול-getBuffer().

פרמטרים
buffer
imageProperties
קליעות
IllegalArgumentException אם גודל מאגר הנתונים הזמני קטן מהגודל של התמונה שצוין על ידי גובה התמונה, הרוחב וסוג מרחב הצבעים ב-ImageProperties

public void load (תמונת התמונה)

טוען אובייקט Image לתוך TensorImage.

השימוש העיקרי בשיטה הזו הוא לטעון אובייקט Image כקלט של מודל אל https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview. TensorImage מגובה על ידי Image לא נתמך על ידי ImageProcessor.

* @throws InvalidArgumentExclude אם ה-ImageFormat של image אינו YUV_420_888

פרמטרים
תמונה