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 |
createFrom(TensorImage src, DataType dataType)
יוצר עותק עומק של
TensorImage נתון עם סוג הנתונים הרצוי. |
סטטי TensorImage |
fromBitmap(מפת סיביות במפת סיביות)
|
מפת סיביות (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)
מאתחל אובייקט TensorImage
של DataType.UINT8
עם Bitmap
.
פרמטרים
מפת סיביות (bitmap) |
---|
Public מפת סיביות getBitmap ()
מחזירה ייצוג Bitmap
של TensorImage
זה.
אם הנתונים השמורים לא יהיו תואמים לטלפון, יחולו ההעברה וההצמדה המספריים.
חשוב לשים לב שהדרך האמינה לקבל פיקסלים ממפת סיביות של ALPHA_8
היא להשתמש ב-copyPixelsToBuffer
. שיטות של מפת סיביות (bitmap), כמו 'setPixels() ' ו-'getPixels' לא פועלות.
חשוב: זהו קובץ עזר בלבד. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, יוצרים עותק.
החזרות
- הפניה אל
Bitmap
בהגדרהARGB_8888
(ערוץ "A" תמיד אטום) או ב-ALPHA_8
, בהתאם ל-ColorSpaceType
שלTensorBuffer
זה.
קליעות
IllegalStateException | אם TensorImage אף פעם לא טוען נתונים
|
---|
Public ByteBuffer getBuffer ()
מחזירה ייצוג ByteBuffer
של TensorImage
עם סוג הנתונים הצפוי.
העברה (cast) ואכיפת מינימום מספריים יבוצעו אם הנתונים המאוחסנים שונים מסוג
הנתונים של TensorImage
.
חשוב: זהו קובץ עזר בלבד. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, יוצרים עותק.
זה בעצם קיצור דרך ל-getTensorBuffer().getBuffer()
.
החזרות
- הפניה אל
ByteBuffer
שמכיל את נתוני התמונה
קליעות
IllegalStateException | אם TensorImage אף פעם לא טוען נתונים
|
---|
Public ColorSpaceType getColorSpaceType ()
מקבל את סוג מרחב הצבע של TensorImage
זה.
קליעות
IllegalStateException | אם TensorImage אף פעם לא טוען נתונים
|
---|
Public DataType getDataType ()
מקבל את סוג הנתונים של TensorImage
זה.
החזרות
- סוג נתונים. בשלב הזה יש תמיכה רק
ב-
DataType.UINT8
וב-DataType.FLOAT32
.
public int getHeight ()
הפונקציה מקבלת את גובה התמונה.
קליעות
IllegalStateException | אם TensorImage אף פעם לא טוען נתונים |
---|---|
IllegalArgumentException | אם נתוני הבסיס פגומים |
תמונה ציבורית תמונה getMediaImage ()
מחזירה ייצוג Image
של TensorImage
זה.
שיטה זו פועלת רק כאשר TensorImage
מגובה על ידי Image
, כלומר, תחילה יש לטעון Image
עד
load(Image)
.
חשוב: זהו קובץ עזר בלבד. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, יוצרים עותק.
החזרות
- הפניה אל
Bitmap
בהגדרהARGB_8888
(ערוץ "A" תמיד אטום) או ב-ALPHA_8
, בהתאם ל-ColorSpaceType
שלTensorBuffer
זה.
קליעות
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
פרמטרים
תמונה |
---|