renom_img.api.segmentation

class FCN16s ( class_map=None , train_final_upscore=False , imsize=(224 , 224) , load_pretrained_weight=False , train_whole_network=False )

ベースクラス: renom_img.api.segmentation.SemanticSegmentation

セマンティックセグメンテーション用の全畳み込みネットワーク(16s)

パラメータ:
  • class_map ( list , dict ) -- クラス名の配列
  • train_final_upscore ( bool ) -- 最後のアップサンプル層を学習する場合はTrue、さもなければFalse
  • imsize ( int , tuple ) -- 入力の画像サイズ
  • load_pretrained_weight ( bool , str ) -- 事前学習済みの重みを利用する場合はTrue、さもなければFalse
  • train_whole_network ( bool ) -- モデル全体の学習を行う場合はTrue、さもなければFalse

>>> from renom_img.api.segmentation.fcn import FCN16s
>>>
>>> class_map = ['cat', 'dog']
>>> model = FCN16s(class_map, train_final_upscore=False, imsize=(224,224), load_pretrained_weight=True, train_whole_network=True)

参照

Jonathan Long, Evan Shelhamer, Trevor Darrell
セマンティックセグメンテーション用の全畳み込みネットワーク

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 , class_weight=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 = FCN16s(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 ) -- FCN16sに対する入力
戻り値: FCN16sの生の出力を返します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = FCN16s(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
loss ( x , y , class_weight=None )

FCN16sで指定された損失関数

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

xとy間の損失

戻り値の型:

(Node)

predict ( img_list , batch_size=1 )
戻り値: 一枚の画像もしくは画像のパスが与えられた場合、 (幅、高さ) の形のarrayが返されます。複数の画像もしくは画像のパスが与えられた場合は、 (幅、高さ) の形のarrayが入ったリストが返されます。
戻り値の型: (Numpy.array or list)
preprocess ( x )

与えられたarrayに対して前処理を行います。

パラメータ: x ( ndarray , Node ) -- 前処理を行うための画像のarray
regularize ( )

損失関数に追加する正則化項

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

ベースクラス: renom_img.api.segmentation.SemanticSegmentation

セマンティックセグメンテーション用の全畳み込みネットワーク(32s)

パラメータ:
  • class_map ( list , dict ) -- クラス名の配列
  • train_final_upscore ( bool ) -- 最後のアップサンプル層を学習する場合はTrue、さもなければFalse
  • imsize ( int , tuple ) -- 入力の画像サイズ
  • load_pretrained_weight ( bool , str ) -- 事前学習済みの重みを利用する場合はTrue、さもなければFalse
  • train_whole_network ( bool ) -- モデル全体の学習を行う場合はTrue、さもなければFalse

>>> from renom_img.api.segmentation.fcn import FCN32s
>>>
>>> class_map = ['cat', 'dog']
>>> model = FCN32s(class_map, train_final_upscore=False, imsize=(224,224), load_pretrained_weight=True, train_whole_network=True)

参照

Jonathan Long, Evan Shelhamer, Trevor Darrell
セマンティックセグメンテーション用の全畳み込みネットワーク

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 , class_weight=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 = FCN32s(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 ) -- FCN32sに対する入力
戻り値: FCN32sの生の出力を返します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = FCN32s(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
loss ( x , y , class_weight=None )

FCN32sの損失関数

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

xとy間の損失

戻り値の型:

(Node)

predict ( img_list , batch_size=1 )
戻り値: 一枚の画像もしくは画像のパスが与えられた場合、 (幅、高さ) の形のarrayが返されます。複数の画像もしくは画像のパスが与えられた場合は、 (幅、高さ) の形のarrayが入ったリストが返されます。
戻り値の型: (Numpy.array or list)
preprocess ( x )

与えられたarrayに対して前処理を行います。

パラメータ: x ( ndarray , Node ) -- 前処理を行うための画像のarray
regularize ( )

損失関数に追加する正則化項

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

ベースクラス: renom_img.api.segmentation.SemanticSegmentation

セマンティックセグメンテーション用の全畳み込みネットワーク(8s)

パラメータ:
  • class_map ( list , dict ) -- クラス名の配列
  • train_final_upscore ( bool ) -- 最後のアップサンプル層を学習する場合はTrue、さもなければFalse
  • imsize ( int , tuple ) -- 入力の画像サイズ
  • load_pretrained_weight ( bool , str ) -- 事前学習済みの重みを利用する場合はTrue、さもなければFalse
  • train_whole_network ( bool ) -- モデル全体の学習を行う場合はTrue、さもなければFalse

>>> from renom_img.api.segmentation.fcn import FCN8s
>>>
>>> class_map = ['cat', 'dog']
>>> model = FCN8s(class_map, train_final_upscore=False, imsize=(224,224), load_pretrained_weight=True, train_whole_network=True)

参照

Jonathan Long, Evan Shelhamer, Trevor Darrell
セマンティックセグメンテーション用の全畳み込みネットワーク

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 , class_weight=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 = FCN8s(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 ) -- FCN8sに対する入力
戻り値: FCN8sの生の出力を返します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = FCN8s(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
loss ( x , y , class_weight=None )

FCN8sの損失関数

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

xとy間の損失

戻り値の型:

(Node)

predict ( img_list , batch_size=1 )
戻り値: 一枚の画像もしくは画像のパスが与えられた場合、 (幅、高さ) の形のarrayが返されます。複数の画像もしくは画像のパスが与えられた場合は、 (幅、高さ) の形のarrayが入ったリストが返されます。
戻り値の型: (Numpy.array or list)
preprocess ( x )

与えられたarrayに対して前処理を行います。

パラメータ: x ( ndarray , Node ) -- 前処理を行うための画像のarray
regularize ( )

損失関数に追加する正則化項

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

ベースクラス: renom_img.api.segmentation.SemanticSegmentation

U-Net: 画像セグメンテーションに用いられる畳込みニューラルネットワーク.

パラメータ:
  • class_map ( list , dict ) -- クラス名の配列
  • imsize ( int , tuple ) -- 入力の画像サイズ
  • load_pretrained_weight ( bool , str ) -- 事前学習済みの重みを使用するかどうかを指定します。U-Netには事前学習済みの重みが用意されていないため、Falseに設定するか、ユーザが自分で学習した重みのファイル名へのパスを指定します。
  • train_whole_network ( bool ) -- モデル全体の学習を行う場合はTrue、さもなければFalse

>>> from renom_img.api.segmentation.unet import UNet
>>>
>>> class_map = ['background', 'object']
>>> model = UNet(class_map, imsize=(224,224), load_pretrained_weight=False, train_whole_network=True)

参照

Olaf Ronneberger, Philipp Fischer, Thomas Brox
セマンティックセグメンテーション用の全畳み込みネットワーク

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 , class_weight=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 = UNet(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 ) -- U-Netに対する入力
戻り値: UNetの生の出力を返します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = UNet(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
loss ( x , y , class_weight=None )

U-Netの損失関数

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

xとy間の損失

戻り値の型:

(Node)

predict ( img_list , batch_size=1 )
戻り値: 一枚の画像もしくは画像のパスが与えられた場合、 (幅、高さ) の形のarrayが返されます。複数の画像もしくは画像のパスが与えられた場合は、 (幅、高さ) の形のarrayが入ったリストが返されます。
戻り値の型: (Numpy.array or list)
preprocess ( x )

与えられたarrayに対して前処理を行います。

パラメータ: x ( ndarray , Node ) -- 前処理を行うための画像のarray
regularize ( )

損失関数に追加する正則化項

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

ベースクラス: renom_img.api.segmentation.SemanticSegmentation

TernausNet: ImageNetデータセットで事前学習されたVGG11 エンコーダを搭載したU-Net.

パラメータ:
  • class_map ( list , dict ) -- クラス名の配列
  • imsize ( int , tuple ) -- 入力の画像サイズ
  • load_pretrained_weight ( bool , str ) -- 事前学習済みの重みを利用する場合はTrue、さもなければFalse
  • train_whole_network ( bool ) -- モデル全体の学習を行う場合はTrue、さもなければFalse

>>> from renom_img.api.segmentation.ternausnet import TernausNet
>>>
>>> class_map = ['background', 'object']
>>> model = TernausNet(class_map, imsize=(224,224), load_pretrained_weight=True, train_whole_network=True)

参照

Vladimir Iglovikov, Alexey Shvets
TernausNet: ImageNetデータセットで事前学習されたVGG11 エンコーダを搭載したU-Net.

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 , class_weight=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 = TernausNet(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 ) -- TernausNetに対する入力
戻り値: TernausNetの生の出力を返します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = TernausNet(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
loss ( x , y , class_weight=None )

TernausNetのための損失関数

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

xとy間の損失

戻り値の型:

(Node)

predict ( img_list , batch_size=1 )
戻り値: 一枚の画像もしくは画像のパスが与えられた場合、 (幅、高さ) の形のarrayが返されます。複数の画像もしくは画像のパスが与えられた場合は、 (幅、高さ) の形のarrayが入ったリストが返されます。
戻り値の型: (Numpy.array or list)
preprocess ( x )

与えられたarrayに対して前処理を行います。

パラメータ: x ( ndarray , Node ) -- 前処理を行うための画像のarray
regularize ( )

損失関数に追加する正則化項

>>> x = numpy.random.rand(1, 3, 224, 224)  # Input image
>>> y = ...  # Ground-truth label
>>>
>>> class_map = ['cat', 'dog']
>>> model = TernausNet(class_map)
>>>
>>> z = model(x)  # Forward propagation
>>> loss = model.loss(z, y)  # Loss calculation
>>> reg_loss = loss + model.regularize()  # Add weight decay term.
class Deeplabv3plus ( class_map=None, imsize=(321, 321), scale_factor=16, atrous_rates=[6, 12, 18], lr_initial=0.007, lr_power=0.9, load_pretrained_weight=False, train_whole_network=False )

ベースクラス: renom_img.api.segmentation.SemanticSegmentation

Deeplabv3+モデル。バックボーンにXception65 CNNを利用しています。

パラメータ:
  • class_map ( list , dict ) -- クラス名の配列
  • imsize ( int , tuple ) -- リサイズ後の画像サイズ。現バージョンでは(321,321)の画像サイズのみサポートします。
  • scale_factor ( int ) -- 特徴マップの入力画像サイズに対する縮小割合。現バージョンでは16のみサポートします。
  • atrous_rates ( list ) -- ASPPモジュールのdilation変数。現バージョンでは[6,12,18]のみをサポートします。
  • lr_initial ( float ) -- 学習率の初期値。
  • lr_power ( float ) -- 学習率スケジュールの計算に使う変数。
  • load_pretrained_weight ( bool , str ) -- 事前学習済みの重みを利用する場合はTrue、さもなければFalse
  • train_whole_network ( bool ) -- モデル全体の学習を行う場合はTrue、さもなければFalse

>>> from renom_img.api.segmentation.deeplab import Deeplabv3plus
>>>
>>> class_map = ['background', 'object']
>>> model = Deeplabv3plus(class_map, imsize=(224,224), lr_initial=1e-3, lr_power=0.9, load_pretrained_weight=True, train_whole_network=True)

参照

Liang-Chieh Chen, George Papandreou, Florian Schroff, Hartwig Adam
Rethinking Atrous Convolution for Semantic Image Segmentation

Liang-Chieh Chen, Yukun Zhu, George Papandreou, Florian Schroff, Hartwig Adam
Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

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 , class_weight=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 = Deeplabv3plus(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 ) -- Deeplabv3plusに対する入力
戻り値: Deeplabv3plusの生の出力を返します。
戻り値の型: (Node)

>>> import numpy as np
>>> x = np.random.rand(1, 3, 224, 224)
>>>
>>> class_map = ["dog", "cat"]
>>> model = Deeplabv3plus(class_map)
>>>
>>> y = model.forward(x) # Forward propagation.
>>> y = model(x)  # Same as above result.
loss ( x , y , class_weight=None )

Deeplabv3plusのための損失関数

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

xとy間の損失

戻り値の型:

(Node)

predict ( img_list , batch_size=1 )
戻り値: 一枚の画像もしくは画像のパスが与えられた場合、 (幅、高さ) の形のarrayが返されます。複数の画像もしくは画像のパスが与えられた場合は、 (幅、高さ) の形のarrayが入ったリストが返されます。
戻り値の型: (Numpy.array or list)
preprocess ( x )

与えられたarrayに対して前処理を行います。

パラメータ: x ( ndarray , Node ) -- 前処理を行うための画像のarray
regularize ( )

損失関数に追加する正則化項

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