「妻よ、俺はハゲじゃない!」~AIを使って薄毛診断してみた。VR編~

Pocket

はじめに

年齢を重ねるごとに、私たちの身体も変化していきますね。

最近、妻が私の頭を見るなり、「頭頂部が薄くなってきて心配」と言って来るようになりました。「鏡で見たけど、全然問題ない!」と、妻に言っているのですが、あまり響いていない様子…。

どうしたら妻を納得させられるのか、考えてみました。

「第三者にも「全然問題ない!」と言ってもらえるなら、心配されないのだが…。
おっ、AIに診断してもらって、「全然問題ない!」と言ってもらえるなら、妻も納得してくれるのでは!!!???」

そう答えを見出し、さっそくWatson Visual Recognition(以下、VR)で、薄毛診断のAIを作成してみました。さあ、果たして、AIは私の頭頂部をどのように診断するのか!!

Watson Visual Recognitionについて

VRとは

画像認識を得意とするWatsonサービスの1つです。IBMホームページでは以下のようにサービスを定義しています。

Visual RecognitionはWatsonの画像認識機能です。すぐにお使いいただけるようにWatsonが既に学習をしており、画像・映像フレームに写った複数のものや、情景を分析・認識することができます。また、機械学習によりWatsonに独自の学習をさせることもできます。すでに、自社製品の認識・分類や、製造ラインにおける欠陥検出といった多種多様なお客様の業務で、高い精度の画像認識を少ない画像枚数による短時間の機械学習で実現しています。さらに、日本語・英語を含む多数の言語で認識結果を返すことができます。

(IBMホームページ:Visual Recognition概要より)

VRは、一般的な画像や顔の認識・分類以外にも、機械学習により独自の分類器を作成することができます。今回は、この独自の分類器を作成して、薄毛診断をしようと思います。

サービスの使用方法

VRのサービス作成とプロセスは以下のようになっています。

(IBMホームページ:Visual Recognition概要より)

文章で改めて説明すると以下の5つのプロセスを踏みます。

  1. トレーニング・データの準備
  2. トレーニングデータを用いて、カスタムモデル分類器を作成
  3. 分類するイメージの準備
  4. イメージの分析
  5. 結果の表示

今回は、この5つのプロセスを踏み、薄毛診断をしていきます。

トレーニングデータの準備

スクレイピング

分類器を作成するトレーニングデータを収集するために、pythonを使い、画像データをスクレイピングしました。(※スクレイピングツールは、python2.0系を使用)

データクレンジング

データノイズになりそうな不要な箇所をカットするために、トリミングを行います。トリミング後の収集データは以下の様になります。(※肖像権の関係上、モザイクを入れています)

・ふさふさ系

・薄毛系

・スキンヘッド系

カスタムモデル分類器を作成

トレーニングデータの準備ができたら、VRサービスを立ち上げて、トレーニングデータを投入してきます。

サービス作成

IBM CloudのカタログからVRを選択し、サービスを作成します。

ツール起動

IBM提供のトレーニング用のツールを起動します。

Custom Create Modelをクリックします。

必要な項目を入力して、Createをクリックします。

トレーニングデータの投入

Custom Modelを作成したら、トレーニングデータをzipファイルにして投入し、Modelに追加します。

Positive Class(正解)とNegative Class(不正解)に分けたほうが、精度が上がるため、ふさふさ系をNegative Classに、薄毛系・スキンヘッド系をPositive Classにして、トレーニングの準備を行います。(※トレーニングについては、トレーニングガイドラインを参照)

トレーニング

Train Modelをクリックし、トレーニングを開始します。(トレーニングが完了するまで、しばらく時間はかかります。完了すると以下のメッセージが表示されます。)

さあ、トレーニングが完了しました。

分類するイメージの準備

次に、分類器で分析するイメージ画像を準備します。

イメージの分類

さあ、いよいよ診断です。

イメージ画像を分類器に投入すると、0.0~1.0の確信度が診断結果として返ってきます。今回、ふさふさ系をNegative Classにし、薄毛系・スキンヘッド系をPositive Classにしました。

診断結果で表示されるタグは、Positive Classで使用している薄毛系・スキンヘッド系となります。(Negative Classはタグには表示されません)そのため、診断結果の確信度が低ければ、薄毛・スキンヘッドの「心配は無く」、逆に高ければ、「心配はある」ということになります。

それでは、さっそく診断したいと思います。

 

分類するイメージ画像をドラック&ドロップします。しばらくすると結果が表示されます。

 

これは…。確信度が低い結果ばかりが得られました。

つまり、「大丈夫!」ということが証明されました。(パチパチッ)

ただ、本当に正しく表示されているのか、気になる方もいるため、別のイメージ画像を投入してみました。

「0_78.jpg」「0_39.jpg」が、スッキリする感じの結果ではないので、もう少し精度を上げる必要があるかもしれません。

精度を上げた分類器で診断しないと、「大丈夫!」と証明できない気がしてきました…。

さいごに

今回、薄毛診断AIを作成してみたのですが、分類器の精度としては、まだまだなので、分類器の再作成する必要があります。

次回は、以下のことも踏まえて実施してみようと思います。

[トレーニングデータ増強]

今回は、スクレイピングで収集したデータから、45枚をトレーニングデータにしました。トレーニングガイドによると、150~200枚のデータを推奨するため、さらにデータを追加する必要があります。

[分類器の精度確認]

作成した分類器が本当に精度が高いものか確認する必要があります。確認方法の1つとして、Cross Validation Test(交差検証)があります。精度が高いほど、分類器の信頼性が高くなります。

今度こそ、「大丈夫!」と証明させたいです!

次回に続く

お問い合わせ先

執筆者プロフィール

Akahori Yuu
Akahori Yuutdi AI&データマネジメント推進部
配属当初はインフラエンジニア。ちょっと前に、ブロックチェーン(HyperledgerFabric)の案件にも参画。今はIBM Watsonを軸に、コンサルタント・開発を行っています。
Pocket

関連記事