TensorImage

כיתה ציבורית TensorImage

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

שיטות ציבוריות

ציבורי סטטי TensorImage createFrom ( TensorImage src, DataType dataType)

יוצר עותק עמוק של TensorImage נתון עם סוג הנתונים הרצוי.

פרמטרים
src את TensorImage להעתיק ממנה
סוג מידע סוג הנתונים הצפוי של TensorImage החדש שנוצר
החזרות
  • TensorImage שהנתונים שלו מועתקים מ- src וסוג הנתונים הוא dataType

תמונת Tensor סטטית ציבורית מBitmap (Bitmap Bitmap)

מפת סיביות ציבורית getBitmap ()

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

יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים אינם uint8.

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

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

החזרות
  • הפניה למפת Bitmap בתצורת ARGB_8888 ("ערוץ A הוא תמיד אטום) או ב- ALPHA_8 , בהתאם ל- ColorSpaceType של TensorBuffer זה.
זורק
חריגה של מדינה בלתי חוקית אם TensorImage לעולם לא טוען נתונים

Public ByteBuffer getBuffer ()

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

יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage .

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

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

החזרות
  • הפניה ל- ByteBuffer שמחזיק את נתוני התמונה
זורק
חריגה של מדינה בלתי חוקית אם TensorImage לעולם לא טוען נתונים

public ColorSpaceType getColorSpaceType ()

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

זורק
חריגה של מדינה בלתי חוקית אם TensorImage לעולם לא טוען נתונים

public DataType getDataType ()

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

החזרות

public int getHeight ()

מקבל את גובה התמונה.

זורק
חריגה של מדינה בלתי חוקית אם TensorImage לעולם לא טוען נתונים
חריג טיעון לא חוקי אם הנתונים הבסיסיים פגומים

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

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

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

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

החזרות
  • הפניה למפת Bitmap בתצורת ARGB_8888 ("ערוץ A הוא תמיד אטום) או ב- ALPHA_8 , בהתאם ל- ColorSpaceType של TensorBuffer זה.
זורק
חריגה של מדינה בלתי חוקית אם TensorImage לעולם לא טוען נתונים

הציבור TensorBuffer getTensorBuffer ()

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

יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage .

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

החזרות
  • הפניה ל- TensorBuffer שמחזיק את נתוני התמונה
זורק
חריגה של מדינה בלתי חוקית אם TensorImage לעולם לא טוען נתונים

public int getWidth ()

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

זורק
חריגה של מדינה בלתי חוקית אם TensorImage לעולם לא טוען נתונים
חריג טיעון לא חוקי אם הנתונים הבסיסיים פגומים

עומס ריק ציבורי (מאגר TensorBuffer , ColorSpaceType colorSpaceType)

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

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

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

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

עומס ריק ציבורי (מפת סיביות)

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

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

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

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

פרמטרים
מפת סיביות
זורק
חריג טיעון לא חוקי אם bitmap אינה ב-ARGB_8888

עומס ריק ציבורי (int[] פיקסלים, int[] shape)

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

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

פרמטרים
פיקסלים פיקסלים RGB המייצגים את התמונה
צוּרָה צורת התמונה צריכה להיות בצורה (h, w, 3), או בצורה (1, h, w, 3)
זורק
חריג טיעון לא חוקי אם הצורה היא לא (h, w, 3) ולא (1, h, w, 3)

עומס ריק ציבורי (צף[] פיקסלים, צורה int[])

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

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

פרמטרים
פיקסלים פיקסלים RGB המייצגים את התמונה
צוּרָה צורת התמונה צריכה להיות בצורה (h, w, 3), או בצורה (1, h, w, 3)
זורק
חריג טיעון לא חוקי אם הצורה היא לא (h, w, 3) ולא (1, h, w, 3)

טעינת ריק ציבורי ( ByteBuffer buffer, ImageProperties imageProperties)

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

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

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

עומס ריק ציבורי (מאגר TensorBuffer , ImageProperties imageProperties)

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

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

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

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

טעינת ריק ציבורי (תמונה)

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

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

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

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