renom_img.api.detection

class Yolov1 ( class_map=None , cells=7 , bbox=2 , imsize=(224 , 224) , load_pretrained_weight=False , train_whole_network=False )

Yolov1 物体検出アルゴリズム

パラメータ:
  • class_map ( list , dict ) -- クラス名のリスト
  • cells ( int or tuple ) -- セルのサイズ
  • bbox ( int ) -- Boxの数
  • imsize ( int , tuple ) -- 画像サイズ
  • load_pretrained_weight ( bool , str ) -- Trueの場合事前学習済みの重みがカレントディレクトリにダウンロードされます。文字列が渡された場合には、そのファイルから重みが読み込みされます。
  • train_whole_network ( bool ) -- モデル全体を学習させる場合はTrue、そうでなければFalse

>>> from renom_img.api.detection.yolo_v1 import Yolov1
>>> from renom_img.api.utility.load import parse_xml_detection
>>>
>>> train_label_path_list = ...  # Provide list of training label paths
>>> annotation_list, class_map = parse_xml_detection(train_label_path_list)
>>>
>>> model = Yolov1(class_map, cells=7, bbox=2, imsize=(224,224), load_pretrained_weight=True, train_whole_network=True)

引用

Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi
You Only Look Once: Unified, Real-Time Object Detection

build_data ( )

この関数はYolov1クラスでで指定された形式の入力データとターゲットデータを返却します。

戻り値: 入力データとターゲットデータを作成する関数を返却します。
戻り値の型: (function)

>>> builder = model.build_data()  # This will return function.
>>> x, y = builder(image_path_list, annotation_list)
>>> z = model(x)
>>> loss = model.loss(z, y)
fit ( train_img_path_list=None , train_annotation_list=None , valid_img_path_list=None , valid_annotation_list=None , epoch=136 , batch_size=64 , optimizer=None , augmentation=None , callback_end_epoch=None )

この関数は与えられたデータとハイパーパラメータを元に学習を実行します。

パラメータ:
  • train_img_path_list ( list ) -- 画像のパスのリスト
  • train_annotation_list ( list ) -- アノテーションのリスト
  • valid_img_path_list ( list ) -- バリデーション用の画像のパスのリスト
  • valid_annotation_list ( list ) -- バリデーション用のアノテーションのリスト
  • epoch ( int ) -- 学習エポック数
  • batch_size ( int ) -- バッチサイズ
  • augmentation ( Augmentation ) -- Augmentationオブジェクト
  • callback_end_epoch ( function ) -- 与えられた関数は各エポックの最後に呼び出されます。
戻り値:

学習損失のリストとバリデーション損失のリスト

戻り値の型:

(tuple)

>>> train_img_path_list, train_annot_list = ... # Define train data
>>> valid_img_path_list, valid_annot_list = ... # Define validation data
>>> class_map = ... # Define class map
>>> model = Yolov1(class_map) # Specify any algorithm provided by ReNomIMG API here
>>> model.fit(
...     # Feeds image and annotation data
...     train_img_path_list,
...     train_annot_list,
...     valid_img_path_list,
...     valid_annot_list,
...     epoch=8,
...     batch_size=8)
>>>

以下の引数はcallback_end_epoch関数に渡されます。

  • epoch (int) - 現在のエポック数
  • model (Model) - モデルオブジェクト
  • avg_train_loss_list (list) - 各エポック毎の平均学習損失のリスト
  • avg_valid_loss_list (list) - 各エポック毎の平均バリデーション損失のリスト
forward ( x )

順伝播を実行します。この関数は__call__メソッドにより呼ばれます。メソッドの利用例については以下を参照してください。

パラメータ: x ( ndarray , Node ) -- Yolov1への入力
戻り値: Yolo v1の生の出力を返却します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = Yolov1(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
get_bbox ( z , score_threshold=0.3 , nms_threshold=0.4 )

予測されたバウンディングボックスのリスト、クラスラベルのIDとそのスコア

パラメータ:
  • z ( ndarray ) -- ニューラルネットワークの出力データ
  • score_threshold ( float ) -- 信頼スコアの閾値。予測さればボックスのうち、信頼スコアが閾値に満たないものは破棄されます。デフォルト値は0.3
  • nms_threshold ( float ) -- nmsの閾値。デファルト値は0.4。
戻り値:

予測した結果得られたbbox、スコア、各画像に対応するクラスの配列。戻り値のフォーマットは下に記載してある通りです。ボックスの座標とサイズは元画像のサイズとの比で返されます。よって、boxの範囲は[0~1]です。

戻り値の型:

(list)

# An example of a return value.
[
    [ # Prediction for first image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    [ # Prediction for second image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    ...
]

>>> z = model(x)
>>> model.get_bbox(z)
[[{'box': [0.21, 0.44, 0.11, 0.32], 'score':0.823, 'class':1, 'name':'dog'}],
 [{'box': [0.87, 0.38, 0.84, 0.22], 'score':0.423, 'class':0, 'name':'cat'}]]

注釈

ボックスの座標と大きさは元画像のサイズに対する比で返されます。よって、boxの範囲は[0 ~ 1]です。

load ( filename )

事前学習済み重みをロードする

パラメータ: filename ( str ) -- 事前学習済み重みのファイル名

>>> model = rm.Dense(2)
>>> model.load("model.hd5")
loss ( x , y )

yolov1で指定された損失関数

パラメータ:
  • x ( Node , ndarray ) -- ニューラルネットワークの出力データ
  • y ( Node , ndarray ) -- ターゲットデータ
戻り値:

xとy間の損失

戻り値の型:

(Node)

>>> z = model(x)
>>> model.loss(z, y)
predict ( img_list , batch_size=1 , score_threshold=0.3 , nms_threshold=0.4 )

このメソッドはndarrayか画像のパスのリストを受け取ります。

パラメータ:
  • img_list ( string , list , ndarray ) -- 画像へのパス、パスのリストもしくはndarray
  • score_threshold ( float ) -- 信頼スコアの閾値。予測さればボックスのうち、信頼スコアが閾値に満たないものは破棄されます。デフォルト値は0.3
  • nms_threshold ( float ) -- nmsの閾値。デファルト値は0.4。
戻り値:

予測した結果得られたbbox、スコア、各画像に対応するクラスの配列。戻り値のフォーマットは下に記載してある通りです。ボックスの座標とサイズは元画像のサイズとの比で返されます。よって、boxの範囲は[0 ~ 1]です。

戻り値の型:

(list)

# An example of a return value.
[
    [ # Prediction for first image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    [ # Prediction for second image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    ...
]

>>>
>>> model.predict(['img01.jpg', 'img02.jpg']])
[[{'box': [0.21, 0.44, 0.11, 0.32], 'score':0.823, 'class':1, 'name':'dog'}],
 [{'box': [0.87, 0.38, 0.84, 0.22], 'score':0.423, 'class':0, 'name':'cat'}]]

注釈

ボックスの座標と大きさは元画像のサイズに対する比で返されます。よって、boxの範囲は[0 ~ 1]です。

preprocess ( x )

配列の前処理をします。

パラメータ: x ( ndarray , Node ) -- 前処理用の画像データ配列
regularize ( )

正則化項。この関数は損失関数に正則化項を加えるために利用できます。

>>> x = numpy.random.rand(1, 3, 224, 224)  # Input image
>>> y = ...  # Ground-truth label
>>>
>>> class_map = ['cat', 'dog']
>>> model = Yolov1(class_map)
>>>
>>> z = model(x)  # Forward propagation
>>> loss = model.loss(z, y)  # Loss calculation
>>> reg_loss = loss + model.regularize()  # Add weight decay term.
class Yolov2 ( class_map=None , anchor=None , imsize=(320 , 320) , load_pretrained_weight=False , train_whole_network=False )

Yolov2 物体検出アルゴリズム

パラメータ:
  • class_map ( list , dict ) -- クラス名のリスト
  • anchor ( AnchorYolov2 ) -- アンカー
  • imsize ( list ) -- 画像サイズ。画像サイズ ex):(320, 320)と画像サイズのリストex):[(288, 288), (320, 320)]が可能です。画像サイズのリストが与えられた場合、予測の際にはリストの最後のサイズが利用されます。
  • load_pretrained_weight ( bool , str ) -- Trueの場合事前学習済みの重みがカレントディレクトリにダウンロードされます。文字列が渡された場合には、そのファイルから重みが読み込みされます。
  • train_whole_network ( bool ) -- モデル全体を学習させる場合はTrue、そうでなければFalse

>>> from renom_img.api.detection.yolo_v2 import Yolov2, create_anchor
>>> from renom_img.api.utility.load import parse_xml_detection
>>>
>>> train_label_path_list = ...  # provide list of paths to training data
>>> annotation_list, class_map = parse_xml_detection(train_label_path_list)
>>> my_anchor = create_anchor(annotation_list)
>>>
>>> model = Yolov2(class_map, anchor=my_anchor, imsize=(320,320), load_pretrained_weight=True, train_whole_network=True)

引用

Joseph Redmon, Ali Farhadi
YOLO9000: Better, Faster, Stronger

注釈

saveメソッドを利用して保存する場合、アンカー情報(アンカーのリストとそれらの基本サイズ)が保存されます。従って、保存したモデルをいロードする場合にはancoorとanchor_sizeを指定する必要はありません。

build_data ( imsize_list=None )

この関数はYolov2で指定された入力データとターゲットデータを作成します。

戻り値: 入力データとターゲットデータを作成する関数を返却します。
戻り値の型: (function)

>>> builder = model.build_data()  # This will return function.
>>> x, y = builder(image_path_list, annotation_list)
>>> z = model(x)
>>> loss = model.loss(z, y)
fit ( train_img_path_list , train_annotation_list , valid_img_path_list=None , valid_annotation_list=None , epoch=160 , batch_size=16 , optimizer=None , imsize_list=None , augmentation=None , callback_end_epoch=None )

この関数は与えられたデータとハイパーパラメータを元に学習を実行します。Yolov2は様々なスケールの画像を利用して学習します。よって、この関数は画像サイズのリストを必要とします。これらが与えられない場合、モデルは固定の画像サイズで学習します。

パラメータ:
  • train_img_path_list ( list ) -- 画像のパスのリスト
  • train_annotation_list ( list ) -- アノテーションのリスト
  • valid_img_path_list ( list ) -- バリデーション用の画像のパスのリスト
  • valid_annotation_list ( list ) -- バリデーション用のアノテーションのリスト
  • epoch ( int ) -- 学習エポック数
  • batch_size ( int ) -- バッチサイズ
  • imsize_list ( list ) -- 画像サイズのリスト
  • augmentation ( Augmentation ) -- Augmentationオブジェクト
  • callback_end_epoch ( function ) -- 与えられた関数は各エポックの最後に呼び出されます。
戻り値:

学習損失のリストとバリデーション損失のリスト

戻り値の型:

(tuple)

>>> from renom_img.api.detection.yolo_v2 import Yolov2
>>> train_img_path_list, train_annot_list = ... # Define train data.
>>> valid_img_path_list, valid_annot_list = ...i # Define validation data.
>>> class_map = ... # List of class names.
>>> model = Yolov2(class_map)
>>> model.fit(
...     # Feeds image and annotation data.
...     train_img_path_list,
...     train_annot_list,
...     valid_img_path_list,
...     valid_annot_list,
...     epoch=8,
...     batch_size=8)
>>>

以下の引数はcallback_end_epoch関数に渡されます。

  • epoch (int) - 現在のエポック数
  • model (Model) - Yolov2オブジェクト
  • avg_train_loss_list (list) - 各エポック毎の平均学習損失のリスト
  • avg_valid_loss_list (list) - 各エポック毎の平均バリデーション損失のリスト
forward ( x )

順伝播を実行します。この関数は__call__メソッドにより呼ばれます。メソッドの利用例については以下を参照してください。

パラメータ: x ( ndarray , Node ) -- Yolov2への入力
get_bbox ( z , score_threshold=0.3 , nms_threshold=0.4 )

予測されたバウンディングボックスのリスト、クラスラベルのIDとそのスコア

>>> z = model(x)
>>> model.get_bbox(z)
[[{'box': [0.21, 0.44, 0.11, 0.32], 'score':0.823, 'class':1, 'name':'dog'}],
 [{'box': [0.87, 0.38, 0.84, 0.22], 'score':0.423, 'class':0, 'name':'cat'}]]
パラメータ: z ( ndarray ) -- ニューラルネットワークの出力データ
戻り値: 予測した結果得られたbbox、スコア、各画像に対応するクラスの配列。戻り値のフォーマットは下に記載してある通りです。ボックスの座標とサイズは元画像のサイズとの比で返されます。よって、boxの範囲は[0 ~ 1]です。
戻り値の型: (list)
# An example of a return value.
[
    [ # Prediction for first image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    [ # Prediction for second image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    ...
]

注釈

ボックスの座標と大きさは元画像のサイズに対する比で返されます。よって、boxの範囲は[0 ~ 1]です。

load ( filename )

事前学習済み重みをロードする

パラメータ: filename ( str ) -- 事前学習済み重みのファイル名

>>> model = rm.Dense(2)
>>> model.load("model.hd5")
loss ( x , buffer , y )

Yolov2で指定された損失関数

パラメータ:
  • x ( ndarray , Node ) -- モデルの出力
  • y ( ndarray , Node ) -- ターゲットデータ
戻り値:

xとy間の損失

戻り値の型:

(Node)

>>> builder = model.build_data()  # This will return a builder function.
>>> x, buffer, y = builder(image_path_list, annotation_list)
>>> z = model(x)
>>> loss = model.loss(z, buffer, y)
predict ( img_list , batch_size=1 , score_threshold=0.3 , nms_threshold=0.4 )

このメソッドはndarrayか画像のパスのリストを受け取ります。

パラメータ:
  • img_list ( string , list , ndarray ) -- 画像へのパス、パスのリストもしくはndarray
  • score_threshold ( float ) -- 信頼スコアの閾値。予測さればボックスのうち、信頼スコアが閾値に満たないものは破棄されます。デフォルト値は0.3
  • nms_threshold ( float ) -- nmsの閾値。デファルト値は0.4。
戻り値:

予測した結果得られたbbox、スコア、各画像に対応するクラスの配列。戻り値のフォーマットは下に記載してある通りです。ボックスの座標とサイズは元画像のサイズとの比で返されます。よって、boxの範囲は[0 ~ 1]です。

戻り値の型:

(list)

# An example of a return value.
[
    [ # Prediction for first image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    [ # Prediction for second image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    ...
]

>>>
>>> model.predict(['img01.jpg', 'img02.jpg']])
[[{'box': [0.21, 0.44, 0.11, 0.32], 'score':0.823, 'class':1, 'name':'dog'}],
 [{'box': [0.87, 0.38, 0.84, 0.22], 'score':0.423, 'class':0, 'name':'cat'}]]

注釈

ボックスの座標と大きさは元画像のサイズに対する比で返されます。よって、boxの範囲は[0 ~ 1]です。

preprocess ( x )

配列の前処理をします。

パラメータ: x ( ndarray , Node ) -- 前処理用の画像データ配列
regularize ( )

正則化項。この関数は損失関数に正則化項を加えるために利用できます。

>>> x = numpy.random.rand(1, 3, 224, 224)  # Input image
>>> y = ...  # Ground-truth label
>>>
>>> class_map = ['cat', 'dog']
>>> model = Yolov2(class_map)
>>>
>>> z = model(x)  # Forward propagation
>>> loss = model.loss(z, y)  # Loss calculation
>>> reg_loss = loss + model.regularize()  # Add weight decay term.
class SSD ( class_map=None , imsize=(300 , 300) , overlap_threshold=0.5 , load_pretrained_weight=False , train_whole_network=False )

SSD 物体検出アルゴリズム

パラメータ:
  • class_map ( list , dict ) -- クラス名のリスト
  • imsize ( int or tuple ) -- 画像サイズ。画像サイズ は300x300である必要があります。画像サイズの指定方法は(300, 300)もしくは300が可能です。
  • overlap_threshold ( float ) -- 最適なデフォルトボックスを選択するのに使う閾値。閾値が0と1の間にある数字です。デフォルト値は0.5です。
  • load_pretrained_weight ( bool , string ) -- Trueの場合事前学習済みの重みがカレントディレクトリにダウンロードされます。文字列が渡された場合には、そのファイルから重みが読み込みされます。
  • train_whole_network ( bool ) -- モデル全体を学習させる場合はTrue、そうでなければFalse

>>> from renom_img.api.detection.ssd import SSD
>>> from renom_img.api.utility.load import parse_xml_detection
>>>
>>> train_label_path_list = ...  # provide list of paths to training data
>>> annotation_list, class_map = parse_xml_detection(train_label_path_list)
>>>
>>> model = SSD(class_map, imsize=(300,300), load_pretrained_weight=True, train_whole_network=True)

引用

Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg
SSD: Single Shot MultiBox Detector

build_data ( )

この関数はSSDで指定された入力データとターゲットデータを作成します。

戻り値: 入力データとターゲットデータを作成する関数を返却します。
戻り値の型: (function)

>>> builder = model.build_data()  # This will return a builder function.
>>> x, y = builder(image_path_list, annotation_list)
>>> z = model(x)
>>> loss = model.loss(z, y)
fit ( train_img_path_list=None , train_annotation_list=None , valid_img_path_list=None , valid_annotation_list=None , epoch=136 , batch_size=64 , optimizer=None , augmentation=None , callback_end_epoch=None )

この関数は与えられたデータとハイパーパラメータを元に学習を実行します。

パラメータ:
  • train_img_path_list ( list ) -- 画像のパスのリスト
  • train_annotation_list ( list ) -- アノテーションのリスト
  • valid_img_path_list ( list ) -- バリデーション用の画像のパスのリスト
  • valid_annotation_list ( list ) -- バリデーション用のアノテーションのリスト
  • epoch ( int ) -- 学習エポック数
  • batch_size ( int ) -- バッチサイズ
  • augmentation ( Augmentation ) -- Augmentationオブジェクト
  • callback_end_epoch ( function ) -- 与えられた関数は各エポックの最後に呼び出されます。
戻り値:

学習損失のリストとバリデーション損失のリスト

戻り値の型:

(tuple)

>>> train_img_path_list, train_annot_list = ... # Define train data
>>> valid_img_path_list, valid_annot_list = ... # Define validation data
>>> class_map = ... # Define class map
>>> model = SSD(class_map) # Specify any algorithm provided by ReNomIMG API here
>>> model.fit(
...     # Feeds image and annotation data
...     train_img_path_list,
...     train_annot_list,
...     valid_img_path_list,
...     valid_annot_list,
...     epoch=8,
...     batch_size=8)
>>>

以下の引数はcallback_end_epoch関数に渡されます。

  • epoch (int) - 現在のエポック数
  • model (Model) - モデルオブジェクト
  • avg_train_loss_list (list) - 各エポック毎の平均学習損失のリスト
  • avg_valid_loss_list (list) - 各エポック毎の平均バリデーション損失のリスト
forward ( x )

順伝播を実行します。この関数は__call__メソッドにより呼ばれます。メソッドの利用例については以下を参照してください。

パラメータ: x ( ndarray , Node ) -- SSDへの入力
戻り値: SSDの生の出力を返却します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = SSD(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
get_bbox ( z , score_threshold=0.6 , nms_threshold=0.45 )

予測されたバウンディングボックスのリスト、クラスラベルのIDとそのスコア

>>> z = model(x)
>>> model.get_bbox(z)
[[{'box': [0.21, 0.44, 0.11, 0.32], 'score':0.823, 'class':1, 'name':'dog'}],
 [{'box': [0.87, 0.38, 0.84, 0.22], 'score':0.423, 'class':0, 'name':'cat'}]]
パラメータ: z ( ndarray ) -- ニューラルネットワークの出力データ
戻り値: 予測した結果得られたbbox、スコア、各画像に対応するクラスの配列。戻り値のフォーマットは下に記載してある通りです。ボックスの座標とサイズは元画像のサイズとの比で返されます。よって、boxの範囲は[0~1]です。
戻り値の型: (list)
# An example of a return value.
[
    [ # Prediction for first image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    [ # Prediction for second image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    ...
]

注釈

ボックスの座標と大きさは元画像のサイズに対する比で返されます。よって、boxの範囲は[0 ~ 1]です。

load ( filename )

事前学習済み重みをロードする

パラメータ: filename ( str ) -- 事前学習済み重みのファイル名

>>> model = rm.Dense(2)
>>> model.load("model.hd5")
loss ( x , y , neg_pos_ratio=3.0 )

SSDで指定された損失関数

パラメータ:
  • x ( Node , nd_array ) -- ニューラルネットワークの出力データ
  • y ( Node , nd_array ) -- ターゲットデータ
  • neg_pos_ratio ( float ) -- ハードネガティブマイニングのポジティブ及びネガティブの割合を設定します。損失関数に使用されます。デフォルト値は3.0。
戻り値:

xとy間の損失

戻り値の型
Node

>>> z = model(x)
>>> loss = model.loss(x,y)
predict ( img_list , batch_size=1 , score_threshold=0.6 , nms_threshold=0.45 )

このメソッドはndarrayか画像のパスのリストを受け取ります。

パラメータ:
  • img_list ( string , list , ndarray ) -- 画像へのパス、パスのリストもしくはndarray
  • score_threshold ( float ) -- 信頼スコアの閾値。予測さればボックスのうち、信頼スコアが閾値に満たないものは破棄されます。デフォルト値は0.3
  • nms_threshold ( float ) -- nmsの閾値。デファルト値は0.4。
戻り値:

予測した結果得られたbbox、スコア、各画像に対応するクラスの配列。戻り値のフォーマットは下に記載してある通りです。ボックスの座標とサイズは元画像のサイズとの比で返されます。よって、boxの範囲は[0~1]です。

戻り値の型:

(list)

# An example of a return value.
[
    [ # Prediction for first image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    [ # Prediction for second image.
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        {'box': [x, y, w, h], 'score':(float), 'class':(int), 'name':(str)},
        ...
    ],
    ...
]

>>>
>>> model.predict(['img01.jpg', 'img02.jpg']])
[[{'box': [0.21, 0.44, 0.11, 0.32], 'score':0.823, 'class':1, 'name':'dog'}],
 [{'box': [0.87, 0.38, 0.84, 0.22], 'score':0.423, 'class':0, 'name':'cat'}]]

注釈

ボックスの座標と大きさは元画像のサイズに対する比で返されます。よって、boxの範囲は[0 ~ 1]です。

preprocess ( x )

配列の前処理をします。

パラメータ: x ( ndarray , Node ) -- 前処理用の画像データ配列
regularize ( )

正則化項。この関数は損失関数に正則化項を加えるために利用できます。

>>> x = numpy.random.rand(1, 3, 224, 224)  # Input image
>>> y = ...  # Ground-truth label
>>>
>>> class_map = ['cat', 'dog']
>>> model = SSD(class_map)
>>>
>>> z = model(x)  # Forward propagation
>>> loss = model.loss(z, y)  # Loss calculation
>>> reg_loss = loss + model.regularize()  # Add weight decay term.