機械学習を用いた画像分類技術

古賀です。
この記事では、機械学習と画像分類の基本から、じゃんけんの手を判定するプログラムの実演までを解説します。

機械学習・画像分類とは?

機械学習とは、人間が自然に行う学習のように、コンピュータにも経験から学び取らせる技術のことです。
たとえば、子供がりんごとバナナを見分けるように、コンピュータにもその見分け方を教えることができます。
人が自転車の乗り方を覚えるように、コンピュータも、教え込んだ内容からルールを導き出し、学習することで次回から自動で見分けられるようになります。

画像分類は、この機械学習の一種で、写真や絵などの画像を特定のカテゴリーに分ける作業のことです。
画像分類は、写真に映る物が何かを自動で判断します。例えば、スマートフォンのカメラで写真を撮ると、風景なのか、人物なのか、食べ物なのかを自動で認識する機能などです。
この技術は、人間が目で見て判断することをコンピュータが代わりに行うもので、良品/不良品の判断をプログラムで代用する等で活用されています。

最近であれば、ライブ配信・動画配信などが多くの人々に利用されていますが、中には不適切な動画(犯罪/喫煙等)が配信されていたりするでしょう。
そのような、不適切なライブ配信を防止するために、コンピュータで検知・自動停止等でも使用されているようですね。

このようにして、コンピュータは画像に写るものが何かを学び取り、自動で分類することができるようになります。日常生活での応用例も多く、非常に興味深い分野となっています。

機械学習 実演

ここまで文章では分かっても、中々ピンときづらい点もあると思います。今回、簡単に理解できる程度に簡潔に本記事にまとめます。

実際に機械学習/画像分類を行うまでには、下記作業が必要です。

1.学習画像データの収集
2.学習データ 前処理
3.学習処理(機械学習)
4.画像分類実演

実際に、じゃんけんの手を判定するプログラムを例にやってみましょう。

学習データの収集

機械学習を行ううえで、重要な作業の一つです。
コンピュータに指定した手が何なのかを学習させる必要があります。今回はじゃんけんの手を学習させます。
下図のようにさまざまな手の画像を準備します。ちなみに今回はそれぞれの手で、2000枚ずつサンプルを準備しました。

この工程でのポイントは下記の通りです。
画像収集: 多様な角度、人物、背景でのじゃんけんの手の画像を収集する必要があります。
データセット作成: 収集した画像を、学習データとテストデータに分割し、カテゴリーにラベル付けします。

今回の実演では、1つ1つじゃんけんの手の画像を準備するのは大変だったので、簡易的なツールを作り WEBカメラから連続してデータを作成できるプログラムを構築しました。
しかし、実務であれば、多くの種類の画像データがあったほうが良いです。例えば、いろんな人の手・他の場所での撮影とかですね。

学習データ 前処理

この作業も非常に重要な工程の一つです。
収集した画像はそのままでは学習に適していない場合が多いため、前処理が必要です。
例えば、今回の準備した画像でいうと、手の色・明るさ・位置だけで学習されてしまうおそれがあります。
近くのペンなどが画像内に入ってきた時、誤って認識してしまったりする可能性もあるでしょう。

ですので、準備したデータを少し加工して、コンピュータが正しくじゃんけんの手を理解できるように、学習させる必要があります。

具体的には、下記を実施します。本当はもっといくつもの処理があるのですが、今回は一部だけ紹介です。
・様々な明るさの画像データ
・様々な色合いの画像データ
・反転画像データ
 など、バリエーションを増やすことが大事です。

今回は簡易的な実演につき、3パターン準備しています。

学習処理(機械学習)

では準備した画像データをコンピュータに学習させます。本来、画像識別させたい内容に応じて、学習の方法(モデル)を調整するのですが
今回は「DNN(Deep Neural Network)」とよばれる物を使用しました。主に画像分類などで高い性能を発揮する方法です。


ここも今回準備したアプリケーションで学習させます。

学習した結果は「モデル」と呼ばれるファイルに出力され、そのモデルを使用して画像の分類を行います。

画像分類実演

ここまでで、やっとコンピュータにじゃんけんの手を学習させることができました!
実際に動画にて見てみましょう。

真ん中あたりのテキストボックスの内容が、判定した結果ですね。
その下の内部処理は、動画を見ながら内部で、瞬間的に判定した内容 及び それぞれの手の確率を示しています。

今回、学習データの質があまり良くないことも有り、精度がいまいち感は否めませんが、簡易的に準備した学習データと考えると中々の精度ではないでしょうか。
また、見て分かる通り、高速で処理できるのも特徴ですので、生産ラインやリアルタイム処理への適用も、比較的容易にできそうです。

まとめ

いかがだったでしょうか。
機械学習と画像分類技術を用いてじゃんけんの手を判定するプロセスを解説しました。この技術は、さまざまな場面での応用が期待されるため、今後の展開にも注目です。

機械学習自体は10年以上前から、一部の企業では使用しておりました。
しかし、機械学習を活用できるエンジニアは非常に限られており、なかなか普段の業務での活用している事例は少なかったのではないでしょうか。
現在は、ハードウェア性能の向上・各AI技術の向上・汎用ライブラリの登場等で、従来より敷居が低いものとなっています。

弊社の得意とする工場コンピュータ制御技術と掛け合わせることで、様々な応用ができると考えております。
なにかやってみたい!等、ございましたら、遠慮なくご相談ください。

弊社の技術記事は、良識のある範囲で断りなくリンクや引用を行っていただいて構いません。