Skip to content

takedarts/resnetfamily

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

画像認識用 Deep Convolution Neural Network

実行環境

python3の環境で実行できます。
実行に必要なモジュール(動作確認バージョン)は以下の通り。

  • chainer (v2.0)
  • cupy (1.0.0.1)
  • matplotlib (2.0.2)

Training

src/train.pyはCNNのパラメータの学習処理を実行します。
実行結果はresult/に保存されます。

実行方法は以下の通り。

% python src/train.py DATASET NETWORK PARAMETERS [OPTIONS]
  • DATASET : 使用する画像のデータセットを指定します。
    (mnist, cifar10 or cifar100)
  • NETWORK : 実行するCNNの名前を指定します。
    (resnet, pyramid, densenet, resnext)
  • PARAMETERS : CNNに渡すパラメータを指定します(後述)。

また、次のオプションを指定できます。

  • -l NAME : 学習係数の変更方法を指定します(default: step)。
    step : 学習回数1/2と3/4のときに、学習係数を0.1倍します。
    cosine : Cosine Annealing without Restart [1]
    restart : Cosine Annealing with Restart [1]
  • -r RATE : 学習係数の初期値を指定します(default: 0.1)。
  • -m MOMENTUM : モーメンタムの値を指定します(default: 0.9)。
  • -d DECAY : Weight Decayの値を指定します(default: 0.0001)。
  • -e EPOCH : 学習回数を指定します(default: 300)。
  • -b BATCH : バッチサイズを指定します(default: 128)。
  • -p SIZE : 1回の計算に使う画像の数を指定します(default: 128)。
  • -g GPU : 使用するGPUのIDを指定します(default: -1)。
  • --no-check : 入力される行列の大きさのチェックを省略します。

次のCNNとパラメータを指定できます。
ただし、論文中のオリジナルとは少し異なります(詳細はQiitaの記事)。

  • ResNet [2,3] (ResBlochはSingle RELUです [4])
    python src/train.py DATASET resnet DEPTH WIDTH
    • DEPTH : CNNの層数
    • WIDTH : 畳み込み層のチャンネル数(論文中のkの値)
  • Pyramidal ResNet [4]
    python src/train.py DATASET pyramid DEPTH ALPHA
    • DEPTH : CNNの層数
    • ALPHA : 論文中のαの値
  • DenseNet [5]
    python src/train.py DATASET densenet DEPTH WIDTH
    • DEPTH : CNNの層数
    • WIDTH : 畳み込み層のチャンネル数(論文中のkの値)
  • ResNeXt [6]
    python src/train.py DATASET resnext DEPTH WIDTH UNIT
    • DEPTH : CNNの層数
    • WIDTH : 畳み込み層のチャンネル数(論文中のdの値)
    • UNIT : 畳み込み層のユニット数(論文中のCの値)
  • ShakeNet [7]
    python src/train.py DATASET shakenet DEPTH WIDTH
    • DEPTH : CNNの層数
    • WIDTH : 畳み込み層のチャンネル数(論文中のdの値)

Report

src/report.pyresult/に保存された実行結果からグラフを生成します。

実行方法は以下の通り。

% python src/result.py

src/report.pyは設定ファイルresult/meta.txtを生成します。
このファイルを編集することにより、グラフに含めるデータや名前を変更できます。 設定ファイルのフォーマットは以下の通りです。

DIRECTORY_1: FLAG_1/NAME_1
DIRECTORY_2: FLAG_2/NAME_2
DIRECTORY_3: FLAG_3/NAME_3
...
  • DIRECTORY : データが保存されているディレクトリ名です
  • FLAG : グラフに含めるならTrueを指定します
  • NAME : グラフの凡例に表示する名前です

References

  1. Loshchilov, Ilya, and Frank Hutter. "Sgdr: Stochastic gradient descent with warm restarts." (2016).
  2. He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. (2016).
  3. Zagoruyko, Sergey, and Nikos Komodakis. "Wide residual networks." arXiv preprint arXiv:1605.07146 (2016).
  4. Han, Dongyoon, Jiwhan Kim, and Junmo Kim. "Deep pyramidal residual networks." arXiv preprint arXiv:1610.02915 (2016).
  5. Huang, Gao, et al. "Densely connected convolutional networks." arXiv preprint arXiv:1608.06993 (2016).
  6. Xie, Saining, et al. "Aggregated residual transformations for deep neural networks." arXiv preprint arXiv:1611.05431 (2016).
  7. Gastaldi, Xavier. "Shake-Shake regularization." arXiv preprint arXiv:1705.07485 (2017).

About

Evaluation of Deep CNNs for Image Classification

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages