Convolutional Neural Networkを用いて商品に新しいタグを付与しました
白井 祐典
データ活用推進担当の白井です。最近、リクルートマーケティングパートナーズとリクルートテクノロジーズで協働し、カーセンサーnetの「内装色検索機能」をリリースしました。
今回は、この裏で動いているConvolutional Neural Network(以下CNN)の概要と、活用方法について以下の流れで紹介したいと思います。
- 内装色検索機能の概要
- なぜCNNを適応したか
- 物体認識とCNN
- 内装判別モデルの作成について
- 終わりに
1 内装色検索機能の概要
カーセンサーnetでは、中古車販売店のクライアント(広告主)が、商品である車の情報を登録して入稿します。この時登録される情報が、カスタマー(サイト利用者)の検索用のタグとなります。例えば、走行距離が3万キロなら、カスタマーが検索条件に「走行距離5万キロ未満」と入れればヒットして、「走行距離5万キロ以上」ならヒットせず、といった具合です。
本案件は、この検索用のタグとして新規に、内装色(=シートの色)を付与し、内装色での検索を可能にしました。
2 なぜCNNを適応したか
新たにタグを付与する場合、最初に思いつくのは、クライアントに対して、入稿時にタグを選択してもらうオペレーションを取ることです。しかしこの方法の場合、クライアントに対して追加でタグ付与をしてもらうという作業負荷をかけてしまうこととなります。そこで、クライアントへ作業負荷をかけずに、機械的にタグを付与する方法を取ることを決めました。
内装色を機械的に判別する場合、以下2つの課題を乗り越える必要があります。
① 内装画像がどれか分からない
② 内装色が分からない
①:入稿物件には複数の画像(外装・内装・トランク・ダッシュボードなど)が付帯しています。しかし、これらの画像がそれぞれ何の画像かを示す情報はどこにもありません。 よって、内装画像を特定する処理が必要になります
②:内装画像が特定できても、内装の色が判別できなければいけません。よって、色を抽出する処理が必要になります
①に対してCNNを、②に対してカラーヒストグラムとk-meansを使っています。今回は①のCNNにフォーカスを当てます。
3 物体認識とCNN
CNNは、画像の物体認識に優れた手法です。画像の物体認識とは、以下の図のように、正解データ付きの学習画像を集め、判別モデルを作り、未知の画像を判別モデルに投入して写っているものを推定する処理を指します。
この判別モデルの作成とモデルを利用した予測に、CNNを使っています。CNNは、主に二つの処理を繰り返して、画像から特徴量を抽出します。
一つ目は、convolutionと呼ぶ処理です。これは、解析対象の画像に対し固定長の正方形で得られる局所画像(パッチ画像)を左上から順にスライドさせ、そこで得られるRGB値と、パッチ画像と同じ大きさの重みベクトルとの内積を取る処理です。
二つ目は、poolingと呼ぶ処理です。これは、convolutionで得られた特徴に対し、固定長の正方形を左上から順にスライドさせ、その中で平均や最大値を取る処理です。これにより、周辺の特徴をまとめ上げて次元圧縮をすることで、計算量を削減します。
この二つを何度も繰り返し、最終的に得られた全特徴量を用いてSoftmax関数を使って確率を出力することで、写っているものの予測が可能になります。
4 内装判別モデルの作成について
今回はCNNに与える教師画像として、合計約10,000枚の画像を用意しました。 用意したラベルと学習枚数は以下のとおりです。
- 外装(約3,500枚)
- 内装(約2,000枚)
- トランク(約1,000枚)
- ダッシュボード(約1,000枚)
- その他(約2,500枚)
これらの画像を元に判別モデルを作成し、学習に利用していないデータを使って内装画像を予測した際の精度は、最終的に90.2%となりました。
あとは内装画像から色を抽出すれば、本機能の完成です。環境はAWSのGPUインスタンスを、DeepLearningのモジュールはCaffeを利用しました。
5 終わりに
今回は、CNNを用いた内装画像判別について紹介しました。このような、これまで存在しない新たなタグを商品に付与するという試みは新しく、他領域にも適応できるのではと思っています。
私たちは、今後もCNNを含むDeep Learningを活用し、世の中に少しでも便利なサービスを提供できるよう、全力で取り組む所存です。