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
פרמטרים
| תמונה |
|---|