![]() |
|
|||||
![]() |
今回は、実際にディープラーニングによる画像認識を試してみましたので、その紹介をさせていただこうと思います。
筆者にとってディープラーニングは初めて触れるため、NVIDIA社のDIGITS[2]というディープラーニング用のフレームワークを利用して、数字認識[3]と車両認識[4]をチュートリアルに沿って試してみました。
今回利用したPCのスペックを表2に示します。 ディープラーニングの学習には多くの時間を要するため、学習の計算にはGPU(グラフィックボード)を利用しました。 OSはWindowsではなく、無料のUbuntuと呼ばれるOSを利用しました。
| CPU | Intel Core i7-6700K CPU(4.00GHz) |
|---|---|
| メモリ | 8GB |
| GPU(グラフィックボード) | GeForce GTX 780 Ti |
| OS | Ubuntu Server 14.04 |
まずは、数字認識です。 ディープラーニングの学習用にMNIST[5]と呼ばれるデータセットを利用しました。 MNISTは図1のような手書きの数字画像が60,000枚含まれています。 この60,000枚の画像をGPUで学習させたところ、画像のサイズが小さいこともあり、約1分で完了しました。
図1.MNIST[5]に含まれている画像の一例
それでは、Windowsのペイントで書いた数字と、カメラで撮った数字を認識できるかを確認してみましょう!
図2はそれらの認識結果です。 Predictions(予想)のパーセント値は画像・写真に書かれているであろう数字の確率です。
図2.手書き数字の認識結果
5の画像に関しては、逆さにした画像(中央)以外は5である確率が約97%となっており、上手く認識されています。 6の写真では画像全体に対して6の文字サイズが小さく、数字以外のものが写り込んでいるため、6と認識できませんでした。 正位置の写真(左側)でさえも6が49%、2が41%となりました。
次に、車両認識にチャレンジです。 学習用のデータとしてKITTI Vision Benchmark Suite[6]を利用しました。 これには図3のような写真が約6,300枚含まれています。 車両が写っている位置を示すテキストファイルが別途に用意されており、写真と共に学習に利用されます。 この学習にはGPUを使っても2日半掛かりました。
図3.KITTI Vision Benchmark Suite[6]に含まれている写真の一例
それでは、弊社の駐車場の写真で車両を認識できるのかを試してみましょう。
図4は、その結果を示しています。 Source imageは入力した写真(ナンバーは白塗りにしています)であり、Inference visualizationはディープラーニングによる車両認識の結果を示しています。 車両と思われるものは赤枠で囲まれています。
図4.車両認識の結果
塀の向う側にある車両は、小さく写っているためか車両と認識していませんが、塀より手前の車両は認識されています。 影や光の加減の影響に左右されていないことは注目すべき点です。
数字認識より認識率は高いです。 手書きの数字は色や形状に大きな特徴がありませんが、車両は色、タイヤ、窓や形状など多くの特徴をもつためではないかと考えられます。
今回は人工知能の種類やディープラーニングの実践と盛りだくさんな内容となりました。 次回は、人工知能の機械学習についてお伝えしようと思います。
[1] Microsoft Azure,https://azure.microsoft.com/ja-jp/services/cognitive-services/
[2] NVIDIA,https://developer.nvidia.com/digits(英語)
[3] NVIDIA GitHub,https://github.com/NVIDIA/DIGITS/blob/master/docs/GettingStarted.md(英語)
[4] NVIDIA GitHub,https://github.com/NVIDIA/DIGITS/tree/master/examples/object-detection(英語)
[5] Max Planck Research Group for Autonomous Vision,http://yann.lecun.com/exdb/mnist(英語)
[6] THE MNIST DATABASE of handwritten digits,http://www.cvlibs.net/datasets/kitti(英語)

