みなさま、こんばんわ🌜

まだまだ残暑が続いていますね🫠

 
1 Python 3年生 ディープラーニング 3日目

本日は『Python 3年生 ディープラーニング』という本の3日目の学習でした。

 

これまではモノクロ画像ばかり使ってきましたが、今日からはカラー画像のデータを使って学習を進めていきます😉

 

目への影響を考えて、今日から Google Colaboratory の画面をダークモードにしてみました。

2 CIFAR-10 の学習

Keras に入っている CIFAR-10(スィーファー・テン)というカラー画像データを使って、学習を進めました。

 

カラーは「RGB(赤緑青)」の情報が必要なので、データ量がモノクロの3倍になり、より複雑なデータになります。

 

モデルを作って学習させ、テストデータを渡して予測させてみると、「船」を「トラック」と表示したり、「自動車」を「ネコ」表示したりして、正解率は低くなりました。

 

学習モデルの学習の進捗状況をグラフ化してみると、正解率は44.34%。

「訓練データ」の学習は進んでいるものの、「テストデータ」は過学習が起こっています。

 

Keras の画像認識は、画像を細かく切り刻んで並べて1本の線にし、1次元のデータとして画像を読み取っています。

 

画像は本来2次元(平面)なので、1次元のデータとして読み取る方法では画像認識の精度が上がらないんだと思います。

3 CNNとネオコグニトロン

画像はやはり、本来の2次元の姿で読み取った方がいいですよね。

 

データを2次元画像として認識する方法としては「CNN(Convolutional Neural Network)」があります。

 

CNNの歴史は古く、1979年に 福島邦彦博士 が、目の細胞をヒントに考案した「ネオコグニトロン」を改良したものがCNNです。

 

福島博士は、ニューラルネットワークと深層学習で有名な我が国の計算機科学の研究者で、バウアー賞やC&C賞、IEEEニューラルネットワークスパイオニア賞などのコンピュータサイエンスの権威ある賞を数多く受賞されています。

 

87歳の現在は、ファジィシステム研究所で特別研究員をされています。

 

目の細胞は、画像の特徴を抽出し、画像位置を修正しながら画像データを吸収できます。

 

CNNは目の細胞を「層」で再現した深層学習モデルで、画像の特徴を抽出する層を「畳み込み層(Convolution)」、圧縮して画像の位置が多少ズレていても吸収する層を「プーリング層(Pooling)」といいます。

 

CNNでは、入力された画像を、何層にも重ねた畳み込み層とプーリング層を通して特徴を抽出します。

 

特徴を抽出するとき、畳み込み層のフィルタをランダムにたくさん作り、色々なフィルタで色々な特徴を抽出します。

 

その後、全結合層を使って「どのフィルタを使うと分類に効果的なのか」を学習します。

 

4 CNNの実験

テスト用の画像として0~9の値で作った3つの2次元配列の画像データに、「縦線強調」「横線協調」の2種類のフィルタで画像処理を行い、全部で12種類の結果を出してみました👆👆👆

 

「0」「1」「3」とハッキリわかるのがテスト用の画像で、ぼやけているのが「畳み込み画像」、モザイクがかかっているのが「プーリング画像」です。

 

機械には画像がこんな風に見えているんですね。

5 CNNでカラー画像(CIFAR-10)の学習

本日既に学習した CIFAR-10 の画像を、今度はCNNモデルを使ってもう1度学習してみます。

 

今回は、過学習を防ぐために「layers.Dropout(ドロップアウト率)」で作れる「ドロップアウト層」も追加してみました。

 

ドロップアウト層はニューロンをランダムに削除することで、訓練データに過剰適合してしまうことを防ぎ、ネットワーク全体の複雑さを減らす効果があります。

 

CNNモデルを作って学習させ、テストデータを使ってテストしてみると、正解率は 69.98% まで上昇しました👏

 

CIFAR-10モデルでの正解率は 44.34% だったので、25%以上も上昇していることになります❗

 

画像認識も面白いですね😃

 

今日はここまで❗

 

最後までお読みいただき、ありがとうございました😄

また来てね~😄👋