ディープラーニングで「ながら運転」を検知する(その3)

前回の記事では、データセットの中身を確認しました。

ディープラーニングで「ながら運転」を検知する(その1)

ディープラーニングで「ながら運転」を検知する(その2)

この記事では、ディープラーニングを使って「ながら運転」の分類分けをしていきたいと思います。

ラベルはC0からC9までありそれらを分類する問題です。

データセットはkaggleにあったものを使用します。

コードの流れは以下の通り。

  1. ファイル名の取得
  2. 画像の読み込み
  3. 前処理
  4. モデルの構築
  5. 機械学習、テスト

順番に見ていきたいと思いまーす。

スポンサーリンク

ファイル名の取得

画像の枚数は2万2千枚ほどありましたが、全部使うとかなりメモリを使用するので、1カテゴリあたり400枚(全部で4000枚)を使うことにします。(なにせ私のPCはメモリ16GB)

Pythonのパッケージglobの便利なところは、枚数を指定して読み込めるところですね。

こんな感じでglobの後に[:400]と指定することで、各カテゴリ400枚だけピックしてリストに追記しています。

画像の読み込み

OpenCVで画像を読み込みますが、その際にBGRからRGBに変換し、画像サイズを縦・横それぞれ1/4にしています。

(最初1/2サイズでやっていたのですが、途中でメモリエラーが出たのでやめました。)

最後にnumpyの配列に変換してます。

カテゴリー名はラベルとしてyに追加していきます。

訓練画像とテスト画像に分割します。

4000枚のうち、訓練画像は80%、テスト画像は20%にすることにしました。

前処理

画像をintからfloatに変換します。

ちなみに、intからfloatに変換する際にメモリが十分足りておらずOOM(Out Of Memory)エラーが何度か発生しました。

その場合には、画像サイズを小さくするなり、枚数を減らすなりの工夫を行う必要があります。

ラベルはワンホットベクターに変換します。

モデルの構築

畳み込みニューラルネットを組みます。

畳み込み4層からなるシンプルなネットワークです。

機械学習、テスト

学習を行ってその後に評価を行います。

98.37%!

そこそこ良い正解率が出ました。

事故を防止するために、車の中にカメラを積んでAIが監視するなんて未来が来るかもしれませんね。

人間がAIに監視されるなんて考えただけで嫌ですが。

おわり。

ABOUTこの記事をかいた人

のっくん

理系院卒で大企業の研究所に就職。 趣味はプログラミング、レアジョブ英会話、筋トレ、旅行。 Twitter:@yamagablog