最近は、TVを見ていても毎日のように人工知能やディープラーニングの話題が出てきますが、実際に何かやろうとすると、IT系のエンジニアでもないとどうしてもとっつきづらいものがあります。
「私もそろそろディープラーニングやってみようかなー(画像省略)」と思っているあなた!プログラミングできなくたってディープラーニングできちゃいますよ!
今回挑戦してみるのはディープラーニングを使って「売れる単行本の表紙を判定」すること。
もちろん本の売り上げは表紙の良し悪しだけで決まるものではないのですが、大きな要因の一つではあります。表紙は作家さんも非常にこだわる部分なので、事前に表紙の良し悪しを人口知能が判定してくれたら、複数の表紙候補からどれにするか参考になるのでは?って思って今回はやってみました。
■まずはサンプルを試してみましょう。
リクルートさんのA3RT(https://a3rt.recruit-tech.co.jp/)に画像を点数化してくれるAPIが公開されているので、これを使います。畳み込みニューラルネットワークで作成したモデルを使って肉画像の点数評価をしてくれるのですが、にゅーら..る..とか、言葉の意味はわからなくても使えるので気にせずに!
用意したの画像はこの2枚。
・1枚目
・2枚目
2枚とも赤ワインにあわせたくて自分で作ったローストビーフです。同じものをスマホで角度とかを変えて撮影しました。どちらが美味しそうに見えます??
さっそくディープラーニング(で作ったモデル)に判定してもらいましょう。
■肉画像の判定方法
やりかたは簡単。A3RTのサイトでAPIキーを取得してきたら、ターミナルからcurlコマンドで下記の通り画像を放り投げるだけです。(curlについてはググってもらえば簡単にわかります)
curl -X POST \
-F apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \
-F imagefile=@sample.jpg \
-F predict=1 \
https://api.a3rt.recruit-tech.co.jp/image_influence/v1/meat_score
apikeyのところを自分のkeyに変えて、sample.jpgを自分で用意した画像にするだけです。
判定の結果としては
・1枚目のお肉
“score”: 2.367741346359253
・2枚目のお肉
“score”: 3.1595821380615234
となりました。
1枚目は2.37ポイント、2枚目は3.16ポイントって感じです。ってことで評価が高い(美味しそうに見える)のはこちらのロースビーフの写真となりました。
TwitterやInstagramに投稿するときとかもいくつか候補となる写真がある場合は、こういったAI的なものに事前に評価してより良いものを選ぶのもありかもしれませんよ!
なお、この評価点は最高が9点のようです。そう考えると今回の写真は2点台と3点台なので、かなり低めな評価ですね…。くっ。どんな写真なら高得点が取れるのでしょうか。
なお、今回のサンプルに使ったローストビーフはこちらのブログ(http://supportao.exblog.jp/12509656/)を参考にして作りました。メインの作業は、フリーザーバッグに入れたお肉をパスタ鍋に沸かしたお湯にドボンと放り込んで放置するだけなので、本当に簡単。そして美味かったですよ!!!赤ワインにぴったりです。
■いよいよ本番。単行本の表紙が画像の評価をやってみます。
A3RTにはこのサンプルのように画像を評価するモデルを自分で作ることができます。なんとこれもノンプログラミングできるんです。なのでプログラミングの知識は一切不要です。
■まずはデータセットの準備
モデルを作るにはまず学習データを用意する必要があります。画像と評価点をセットとしたデータセットですね。
A3RTの今回の仕組みでは、画像のファイル名に評価点を記述します。xxxx_y.jpgみたいなフォーマットのファイル名にすることが命名規則で決まっており、yの部分が評価点になります。なので、例えば0002_0.jpgならこの画像は0点。00010_8.jpgなら8点となります。
さて、狙いは漫画の単行本の表紙画像の評価なので、表紙の画像に事前に評価点数を付けなければなりません。画像の良し悪しを主観無しで数値化することは難しいので、ざっくり販売部数を10段階のレンジでわけて、それを評価点としました。
↓作成したデータセットの一部。諸般の都合でがっつりモザイクを入れてあります
部数を調査するにあたっては書籍ランキングデータベースさん(http://book-rank.net)で公開されている各単行本の推定累計販売数を参考にさせていただきました。感謝!
あくまで推定累計販売数なので実際の部数と乖離があるのも知っているのですが、評価点の参考値とするにはぴったりな感じです。
ちなみに今回は対象を青年誌の単行本に絞りました。少年誌や少女漫画と見比べるとわかるのですが、かなり表紙の雰囲気や傾向が異なるので、ジャンルを絞る必要性を感じ、青年誌のみにしてあります。
■モデルを作ります
次に準備した学習データを使いモデル作成を行います。
いくつかの手順を順にやっていくだけです。もちろんプログミラングの知識は不要。curlコマンドを公式サイトの手順に従って叩いていくだけです!
簡単に手順を書くとこんな感じ。
- ファイルをアップロードするURLの取得
- 学習データのアプロード
- モデル作成のリクエスト
- モデルができるまで数時間待つ。
これだけです。モデルの学習はリクルートが用意したサーバー上で行われるので、自分の環境でtensorflowを動かしてPCのファンがぶおおおおおおおんと唸らなくて済むのは素晴らしいです。
公式サイトを見ると5時間ほどでモデルの作成が終わるとあるので、もし待ち時間が手持ちぶさたなときは、変女(http://konogi.com/hen_1/)やSE(http://www.younganimal.com/se/)の試し読みでもどうぞ!(宣伝)
■モデル作成ではまったところ
データを圧縮する時に注意してください。
公式サイトを見るとアプロードするzipファイルは下記の構成になってます。
images.zip/
0001_0.jpg
0002_0.jpg
0003_0.jpg
………
ここで気をつけるのはjpgファイルが入ったディレクトリをフォルダごとまとめて圧縮するのではなく、フラットな場所の画像データのみを圧縮するということです。実はこの単行本評価にチャレンジしたのは2ヶ月ぐらい前のことなのですが、その時はここを勘違いしたためつまづきました。
■作ったモデルで実際に評価してみる
モデルが出来てしまえば、あとは最初に肉画像を使った時と同じで、評価したい画像をcurlコマンドで投げるだけです。
curl -X POST \
-F apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \
-F predict=1 \
-F imagefile=@sample.jpg \
https://api.a3rt.recruit-tech.co.jp/image_influence/v1/image_score
で、狙い通り単行本画像の評価が出来たかというと…えーと、ごめんなさい。データセットの量が少なすぎて、どの単行本の画像を評価しても1.8点前後を返すという結果でした。
実は今回データセットは600枚ちょっとしか準備できませんでした…。この数ではお話にならないのはわかっていましたが。
何か画像ごとに差異が出たら面白いだろうなぁと望みをかけて試してみたのですが、やはりダメでしたね。機械学習で一番のポイントとなるデータセットの準備が面倒というか大変で。。。今回やりたいことを真面目にやるなら用意した枚数の100倍は必要かもしれませんね。。。正確且つ大量のデータを用意できる出版社がやってみると実際に”使える”ものができるかなーとは思っています。
■まとめ
学習データに採用した単行本画像はデータとしては複雑すぎたのかもしれません。A3RTで提供しているAPIは最大枚数が元々1000枚までということなので、もうちょっとシンプルな傾向の画像であれば面白いことできるかも、と思いました。なにしろローストビーフではいい感じに判定してくれているので、ものによっては少ないデータセットで”使えるモデル”が作れるかも!?
そしてノンプログラミングで学習済みモデル+APIができるというのはやっぱり嬉しいものですし、一般への機械学習への今後の広がりというか可能性を感じます。画像に限らずテキストとかに関してもこういったサービスがこれから増えてくるかもしれませんね。
■『変女』7巻は7月28日発売です。
変女~変な女子高生 甘栗千子~ 7 (ヤングアニマルコミックス)
此ノ木よしる
白泉社 (2017-07-28)
↑これは通常版の7巻ですが、6巻に引き続き限定版のほうもありますので、そちらが欲しいかたは是非予約をお願いします!
(スタッフ)