はじめに
当記事の説明の画面はVersion1.00のものです。
Version1.10で一部アイコンのデザインが変更になっていますが、特に画像の貼り替えはしてません。
内容は2017年10月時点のものです。
LeNet
画像認識では定番となった「CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)」を、発明したのは、Yann LeCun先生です。
Object Recognition with Gradient-Based Learning(勾配ベース学習による物体認識)という論文に、その原型が書かれていて、ここに超有名なこの図が書かれてます。
これが、LeNet-5(5層構造なので)です。
Neural Network Consoleには、これに基づくサンプルプロジェクトが「LeNet.sdcproj」 として用意されています。
ニューラルネットワークコンソールを立ち上げて動かしてみます。
LeNet.sdcprojを開く
プロジェクトの一覧から、LeNet.sdcprojを選んで開きます。
よく見ると興味深いところがたくさんあります。
学習の実行(Epoch=10)
とりあえず、デフォルトのままの設定で学習をします。
学習結果はこんな感じ。
10Epochだと、途中で学習が終わった感が半端ないです。
評価の実行
評価をします。
結果はこんな感じです。
いい結果です。
ですが、Epoch数を増やすと、もっと改善できそうなのでやってみます。
Epoch=30で再度学習
Epoch数を30にしてみます。
上書き保存して学習した結果がこちらです。
なんとなく、20Epochくらいで収束したようなグラフにはなってます。
Epoch=30で評価の実行
評価の結果はこちらです。
99.04%
向上しました。
黎明期のCNN・・みたいないかにも古い的な修飾子をつけて言われることの多いLeNetですけど、MINIST程度のデータなら十分な性能をもっているのがよくわかります。
CPUオンリーだとLeNetくらいが手頃
ニューラルネットワークコンソールには、本格的なCNNのサンプルプロジェクトがついてます。
resnetとか(resnet-18、resnet-34、resnet-50、resnet-152・・とか深さのバリエーションが沢山あります)とか。
このへんを使えば、画像分類などでかなりの性能が期待できるのは間違いないのですが、やってみたらわかりますが、ものすごく重い!!です。
GPUマシンとかに高いお金を出せる方なら、resnetとかの方が絶対に精度はでますし、本格的なディープラーニングを試せるからいいと思いますが、CPUオンリーだと、いつ果てるともなく学習が続くので、とても耐えられません。
そういう意味で、LeNetはちょうど手頃です。
CNNのお勉強はLeNet中心で試していくのがいいかなと思ってます。
ではでは。