類型標示

類型標示是用於描述輸入和輸出周圍語義資訊的機制。它儲存在 TypeProto 訊息上。

動機

此機制的動機可透過一個簡單的範例來說明。在神經網路 SqueezeNet 中,它接收 NCHW 影像輸入 float[1,3,244,244] 並產生輸出 float[1,1000,1,1]

input_in_NCHW -> data_0 -> SqueezeNet() -> output_softmaxout_1

為了執行此模型,使用者需要大量的資訊。在此情況下,使用者需要知道

  • 輸入是影像

  • 影像格式為 NCHW

  • 色彩通道的順序為 bgr

  • 像素資料為 8 位元

  • 像素資料已正規化為值 0-255

此提案包含三個關鍵元件,以提供所有這些資訊

類型標示定義

首先,我們定義一組語義類型,這些類型定義模型通常作為輸入並產生為輸出的內容。

具體而言,在我們的第一個提案中,我們定義下列一組標準標示

  1. TENSOR 描述類型使用標準 TypeProto 訊息保存泛型張量。

  2. IMAGE 描述類型保存影像。您可以使用維度標示來了解更多關於影像版面配置的資訊,以及可選的模型 metadata_props。

  3. AUDIO 描述類型保存音訊片段。

  4. TEXT 描述類型保存文字區塊。

模型作者應視情況將類型標示新增至模型的輸入和輸出。

使用輸入 IMAGE 的範例

讓我們使用上述相同的 SqueezeNet 範例,並顯示所有內容以正確註解模型

  • 首先,將 ValueInfoProto data_0 的 TypeProto.denotation 設定為 =IMAGE

  • 由於它是影像,因此模型使用者現在知道要去模型上尋找影像中繼資料

  • 然後在 ModelProto.metadata_props 上包含 3 個中繼資料字串

    • Image.BitmapPixelFormat = Bgr8

    • Image.ColorSpaceGamma = SRGB

    • Image.NominalPixelRange = NominalRange_0_255

  • 對於相同的 ValueInfoProto,請務必也使用維度標示來表示 NCHW

    • TensorShapeProto.Dimension[0].denotation = DATA_BATCH

    • TensorShapeProto.Dimension[1].denotation = DATA_CHANNEL

    • TensorShapeProto.Dimension[2].denotation = DATA_FEATURE

    • TensorShapeProto.Dimension[3].denotation = DATA_FEATURE

現在模型中有足夠的資訊來了解如何將正確的影像傳遞到模型中。