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 | createFrom ( TensorImage src, DataType dataType) יוצר עותק עמוק של TensorImage נתון עם סוג הנתונים הרצוי. |
סטטי TensorImage | fromBitmap (Bitmap 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
זה הוא DataType.UINT8
. השתמש TensorImage(DataType)
אם מועדפים סוגי נתונים אחרים.
מאתחל אובייקט TensorImage
עם סוג הנתונים שצוין.
כאשר מקבלים TensorBuffer
או ByteBuffer
מ- TensorImage
זה, כגון שימוש getTensorBuffer()
ו- getBuffer()
, ערכי הנתונים יומרו לסוג הנתונים שצוין.
הערה: הצורה של TensorImage
אינה קבועה. ניתן להתאים אותו לצורת התמונה הנטענת ל- TensorImage
זה.
סוג מידע | סוג הנתונים הצפוי של TensorBuffer שנוצר. הסוג קבוע תמיד במהלך החיים של TensorImage . כדי להמיר את סוג הנתונים, השתמש ב- createFrom(TensorImage, DataType) כדי ליצור עותק ולהמיר סוג נתונים בו-זמנית. |
---|
חריג טיעון לא חוקי | אם dataType אינו DataType.UINT8 או DataType.FLOAT32 |
---|
יוצר עותק עמוק של TensorImage
נתון עם סוג הנתונים הרצוי.
src | את TensorImage להעתיק ממנה |
---|---|
סוג מידע | סוג הנתונים הצפוי של TensorImage החדש שנוצר |
-
TensorImage
שהנתונים שלו מועתקים מ-src
וסוג הנתונים הואdataType
מאתחל אובייקט TensorImage
של DataType.UINT8
עם Bitmap
.
מפת סיביות |
---|
מחזיר ייצוג Bitmap
של TensorImage
זה.
יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים אינם uint8.
שים לב שהדרך האמינה לקבל פיקסלים ממפת סיביות ALPHA_8
היא להשתמש copyPixelsToBuffer
. שיטות מפת סיביות כגון, `setPixels()` ו-`getPixels` אינן עובדות.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
- הפניה למפת
Bitmap
בתצורתARGB_8888
("ערוץ A הוא תמיד אטום) או ב-ALPHA_8
, בהתאם ל-ColorSpaceType
שלTensorBuffer
זה.
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
מחזירה ייצוג ByteBuffer
של TensorImage
זה עם סוג הנתונים הצפוי.
יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage
.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
זה בעצם קיצור דרך עבור getTensorBuffer().getBuffer()
.
- הפניה ל-
ByteBuffer
שמחזיק את נתוני התמונה
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
מקבל את סוג מרחב הצבע של TensorImage
זה.
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
מקבל את סוג הנתונים של TensorImage
זה.
- סוג נתונים. כרגע רק
DataType.UINT8
ו-DataType.FLOAT32
נתמכים.
מקבל את גובה התמונה.
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|---|
חריג טיעון לא חוקי | אם הנתונים הבסיסיים פגומים |
מחזירה ייצוג Image
של TensorImage
זה.
שיטה זו פועלת רק כאשר ה- TensorImage
מגובה על ידי Image
, כלומר תחילה עליך לטעון Image
דרך load(Image)
.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
- הפניה למפת
Bitmap
בתצורתARGB_8888
("ערוץ A הוא תמיד אטום) או ב-ALPHA_8
, בהתאם ל-ColorSpaceType
שלTensorBuffer
זה.
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
מחזירה ייצוג TensorBuffer
של TensorImage
זה עם סוג הנתונים הצפוי.
יציקה והידוק מספריים יחולו אם הנתונים המאוחסנים שונים מסוג הנתונים של TensorImage
.
חשוב: זו רק התייחסות. אל תשנה. אנחנו לא יוצרים כאן עותק מחשש לביצועים, אבל אם יש צורך בשינוי, אנא צור עותק.
- הפניה ל-
TensorBuffer
שמחזיק את נתוני התמונה
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|
מקבל את רוחב התמונה.
חריגה של מדינה בלתי חוקית | אם TensorImage לעולם לא טוען נתונים |
---|---|
חריג טיעון לא חוקי | אם הנתונים הבסיסיים פגומים |
טוען 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 בתור פיקסלים RGB לתוך TensorImage
זה, המייצג את הפיקסלים שבתוכו.
הערה: יציקה והידוק מספריים יוחלו כדי להמיר את הערכים לסוג הנתונים של TensorImage
זה בעת קריאה ל- getTensorBuffer()
ו- getBuffer()
.
פיקסלים | פיקסלים RGB המייצגים את התמונה |
---|---|
צוּרָה | צורת התמונה צריכה להיות בצורה (h, w, 3), או בצורה (1, h, w, 3) |
חריג טיעון לא חוקי | אם הצורה היא לא (h, w, 3) ולא (1, h, w, 3) |
---|
טוען מערך צף בתור פיקסלים RGB לתוך TensorImage
זה, המייצג את הפיקסלים שבתוכו.
הערה: אם ל- TensorImage
יש סוג נתונים אחר מאשר DataType.FLOAT32
, יציקה והידוק מספריים יוחלו בעת קריאה ל- getTensorBuffer()
ו- getBuffer()
.
פיקסלים | פיקסלים RGB המייצגים את התמונה |
---|---|
צוּרָה | צורת התמונה צריכה להיות בצורה (h, w, 3), או בצורה (1, h, w, 3) |
חריג טיעון לא חוקי | אם הצורה היא לא (h, w, 3) ולא (1, h, w, 3) |
---|
טוען ByteBuffer
המכיל ערכי פיקסלים עם המאפיינים הספציפיים ImageProperties
.
הערה: אם סוג הנתונים של buffer
אינו תואם לזה של TensorImage
זה, יציקה והידוק מספריים יוחלו בעת קריאה ל- getTensorBuffer()
ו- getBuffer()
.
בַּלָם | |
---|---|
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
תמונה |
---|