こんにちはー。管理人のピヨ猫でーす。
SONY Neural Network Consoleでディープラーニングの画像認識にチャレンジしているんだけど、精度が全然でないんだよねーー。
何とかならないかなー。
画像認識には正解率95%以上を誇るResNetというモデルがあるよ。SONY Neural Network Consoleでもテンプレートが用意されているよ。SONY Neural Network ConsoleのResNetのテンプレートを使って画像認識を行う方法を解説するね。
1.ResNet(Residual Network)とは
ResNet(Residual Network)とは
ResNetは、Microsoft Research(現Facebook AI Research)のKaiming He氏が2015年に考案したニューラルネットワークのモデルである。
画像認識の分野でトップを争うImageNetコンペティションにおいて、2014年に驚異の正解率96.43%(エラー率3.57%)で1位を獲得しています。
https://arxiv.org/abs/1409.1556
画像認識のモデルは沢山ありますが、現在、精度の面ではResNetが最強です。
https://syuuai.hatenablog.com/entry/2019/04/20/010415?_ga=2.190165160.2072421623.1555594467-372201809.1555422389
ResNet(Residual Network)と従来の画像認識モデルの違い
ResNet(Residual Network)は従来のディープラーニングの画像認識の手法であるCNNの問題点を解消し、画像認識の精度を飛躍的に上げたモデルです。
具体的には、残差関数を用いることで勾配消失問題を改善し、隠れ層を増やせる様にすることで画像認識の精度を上げています。
CNN(Convolutional Neural Network)とは何か?
CNN(Convolutional Neural Network)は画像認識に用いられるディープラーニングのモデルで、畳み込み層を用いることで高い画像精度の画像認識を行います。
CNNモデルのイメージ
CNNモデルを分かり易く喩えると『間違い探し』
CNNの仕組みを難しい専門用語を使わずに解説すると『全体を隅々まで見渡しつつ、細かいポイントを観察して画像を見分ける仕組み』です。
例えば間違い探しを考えてみます。
どうでしたか?間違いは見つかりましたか?間違いを見つける際に、全体の隅々までを細かく見て、更に細かく見ませんでしたか?
これがCNNです。CNNは全体を隅々までズームしてズームして特長を見つけます。
CNNの仕組みの詳細
CNNの詳しい仕組みについてはこちらの記事を参照ください。
https://postd.cc/how-do-convolutional-neural-networks-work/
CNN(Convolutional Neural Network)の問題点
CNNの問題点は簡単に言うと層を増やせないことです。
層を増やせないということは、前述の間違い探しの喩えで言うと、数段階しかズームが出来ない(特徴抽出が出来ない)ので間違えを見つけることが出来ません。
層を増やせない原因は、ディープラーニングの学習の仕組みから生じる勾配消失問題にあります。
勾配消失問題について詳しくは以下の記事を参照ください。
http://nnadl-ja.github.io/nnadl_site_ja/chap5.html
ResNet(Residual Network)の仕組み
ResNet(Residual Network)は簡単に言うと、CNNより層を深く出来ます。
そのため、画像の特長を細かく見ることが出来るので、画像認識の精度が向上します。
何故、層を深く出来るかというと、Shortcut Connectionという残差ブロックをCNNに加えることで勾配消失問題を防いでいるからです。
残差ブロックの詳しい仕組みは以下の記事を参照ください。
https://deepage.net/deep_learning/2016/11/30/resnet.html#residual-networkresnet%E3%81%A8%E3%81%AF
2.SONY Neural Network Consoleとは
SONY Neural Network Consoleは、SONY製の機械学習オープンソースNNabla(Neural Network Libraries)の統合開発環境です。機械学習の開発環境としてはGoogleのTensorFlowが有名どころですが、NNabla/NNCはTnesorFlowと比べ開発環境が視覚的で初心者には分かり易いところに一日の長があります。2017年11月にβ版が公開され、2018年5月に正式サービス化されました。
詳しくはこちらの記事を参照ください。
https://syuuai.hatenablog.com/entry/2018/12/16/104743
3.SONY Neural Network ConsoleでResNetを行う方法
SONY Neural Network Consoleには多数のディープラーニングモデルのテンプレートが用意されており、用意されているモデルの中にResNetもあります。
SONY Neural Network Consoleに用意されているテンプレートのResNetを使うことで、用意にResNetによる画像認識が可能です。これからやり方を解説します。
ResNetのテンプレートモデルを検索する
① PROJECTの検索フィルタに「resnet」と入力します
② 「ResNet」のテンプレートプロジェクトが検索されます
ResNetのテンプレートモデルを選択しテンプレートのプロジェクトを開く
ResNetのテンプレートプロジェクトが開きます。
御覧の通り、ものすごく深い階層のニューラルネットワークです。通常のCNNにShortcut Connectionが加えられています。
名前を変えて保存する
テンプレートは変えない様に、別名でプロジェクトを保存します。
データセットを設定する
学習するデータセットを設定します。学習用の画像データの作成とデータセットの登録方法は以下の記事を参照ください。
https://syuuai.hatenablog.com/entry/2019/03/23/084458
入力層のサイズを画像サイズに合わせて変更する
入力層のサイズを画像サイズに合わせて変更します。
注意点としてResNetのテンプレートはネットワークが1つでは無くオプティマイザ用などのため4つネットワークが用意されていますので、それぞれのネットワークのINPUT層のサイズを変更する必要があります。
(補足)ImageAugmentationを削除しても良い
テンプレートでは入力層の最初でImageAugmentationを実施しています。これは画像が少ない場合のためのデータの水増し処理です。画像データが十分であれば実施する必要は無いので、不要であれば削除します。
出来上がり
出来上がりはこんな感じです。後は学習を実行するだけです。
4.SONY Neural Network ConsoleのResNetを使った感想
学習の精度
評価中です(-_-;)
何故なら学習が終わらないから・・・。結果が出たらご報告します。
ResNetは画像認識精度が高いことで非常に有名なので良い結果を期待しています。
ResNetの注意点
ResNetは精度が高い反面、非常に遅いです。
GPUが無いととても時間がかかります。
私はGPUを入れていないので現在進行形で全然終わりません・・・(;^_^A
他にも試したいこと沢山あるのに困ったな・・・。1エポックで1時間以上ってなんだ( ;∀;)
そろそろGPUを買うことを考えるか・・・。
お世話になったサイト
この記事を書くのに以下のサイトの記事を参考にしました。
勉強になりました。ありがとうございましたー。
https://deepage.net/deep_learning/2016/11/30/resnet.html#residual-networkresnet%E3%81%A8%E3%81%AF
http://cedro3.com/ai/mini-resnet/
![]() |
【送料無料】 ソニー開発のNeural Network Console入門 増補改訂・クラウド対応版--数式なし、コーディングなしのディープラーニング / 足立悠 【本】 価格:2,592円 |
それでは結果が出るのをお楽しいにー。