2018.09.27

【期間限定】「AI」トライフォート顔採用キャンペーン開始!

「AI事業開発部」設立!

安川です。トライフォートも先月8月2日で6周年を迎え、7年目に突入しました!
これまでゲームアプリ開発とサービス系(非ゲーム系)アプリの受託開発を主軸に事業展開してきましたが、今年度は3つ目の主軸事業として自社の新規サービス事業を進めて行きます。
そして、新規事業を進めるにあたって新しくAI事業開発部を設立しました。

なぜAIなのか?

今までトライフォートではVRやIoT領域も含め、様々なアプリ開発に携わってきましたが、AIはその全てのサービスの中に入り込む余地があると思っており、「レコメンド」「通知」「パーソナライズ」「判定」「自動設定」など極論何かしらユーザごとに違うインプットから条件分岐を経てアウトプットが出るようなものは程度の差はあれど全てAIが入り込む余地はあると思っています。
なので去年あたりから個人的にTensorFlowやCoreML、fastTextなどを触っているのですが、最近はAIもSaaS化してAPIでサクッとサービスに組み込むことができるようになりました。そうなると我々も「どうAIを作るか」より「どうAIを使っていくか」が重要だとの結論になり、AI事業開発部を新設しました。

オリジナルの判定モデルを作りたい!

汎用的な物体検出(犬とか人とかパソコン)やテキスト解析などであればGoogle Cloud Vision APIなどでサクッとできるのですが、やはり自前の教師データを使って個々のサービスに特化したモデルを作りたいとなるとある程度TensorFlowやKerasなどを使って自前で学習環境を作る必要が出てきます。(まぁこの構築も最近はかなり楽にはなりましたけど)

そこで、そんな自前の推論モデルを1行もプログラムを書かなくとも超絶楽に作ってくれるツール「MAGELLAN BLOCKS」というサービスを今回は使ってみました!このツールは需要予測や画像分類、物体検出など目的に応じたモデルを自前の教師データを使って学習し、作ったモデルをサービスに使うことができます。
BLOCKSLOGOBlue002

MAGELLAN BLOCKSはGCP(GoogleCloudPlatform)のCloud ML EngineやCloud Storageなどをベースに使って動かしているのですが、予測をどのような流れで実行するかをコントロールするフローチャートはGUI上で目的に応じたブロックをポチポチ繋げていくだけで簡単にインプットやアウトプットを制御することができてしまいます!
MAGELLAN_flow_img(例えば予測結果をCloud Storageに保存とか、Bigqueryに保存とかも自由に設計できます)

MAGELLAN BLOCKSを触ってみた

というわけで触ってみました。
30日間は無料で使えるのでまずはアカウントを作り、GCPで認証キーを発行してMAGELLANに登録すれば準備完了。
まずは、画像分類のサンプルを動かしてみようということで、
サンプルの犬と猫の画像データをDLして、Cloud Storageに保存
予測を行うためのフローもサンプルをインポートすれば完成
モデルジェネレータから画像分類を選んで、教師データがあるCloud Storageのフォルダを指定して、準備は完了!

トレーニングの試行回数やスピード優先にするかなど設定で時間は変わりますが、とりあえず今回はデフォルトの設定のまま回すと1時間半ぐらいで学習完了。
作ったモデルをフローデザイナーの中に組み込んでいざ分類!

適当な犬の画像を入れてみると、犬か猫の予測がそれぞれどのぐらいなのかを出してくれます。
試しに、Web上から犬っぽい猫の画像を引っ張ってきて予測してみると、ちゃんと99.998%猫って予測してくれました(すごい!)
catordog-1
(この猫、Atchoumという名前のペルシャ猫らしいです)
ちなみに自分の顔写真を予測してみると犬である確率が99.992%とか笑(まぁ猫顔って言われてる芸能人の写真入れても99.3%犬ってなったから人間はみんな犬顔判定なのかもしれませんが)

自前の学習データでやってみる

さて、ここまではサンプル通りの手順ですが、せっかくこんなサービスがあるのでただサンプル試すだけではつまらない!どんなに小さくでもいいからサービス化したい!ということでネタを探しに人事を捕まえて何か悩みはないかヒアリング

そこで出てきたのが「トライフォートっぽい人」をAIで判定してくれと、、、いきなり難易度高くないですか。。。汗
確かにやってみたいけど教師データを集めるのが大変、、、過去の履歴書とか面接コメントを引っ張ってきて、合否判定から学習させて、、、って全然軽くないので無理!
だけど、写真からトライフォートっぽい「顔」かどうか判定だったら先ほどのサンプルを少し変えればできるのでは!?
実用性どこまであるかわからないけど、なんとなくどんな顔がトライフォート顔っぽいとAIが判定するのか気になったので作ってみました!

トライフォート顔判定器!

トライフォートでは社内コミュニケーションにslackを使っていて、アイコンに社員の顔を覚えやすいように大体の人が顔写真を使っています。なので、そこからみんなの顔写真を引っ張ってきて、さらに全社会など過去に撮影した写真などを持ってきて合計200枚くらいをまずは用意。

次にトライフォートではない人の顔写真のサンプルを適当に採取(一応男女比や日本人比率や年齢など、そこまでサンプルに差が出ないように用意)

今回は学習の設定を精度重視で回してみる!

、、
、、、
遅い!ムッチャ時間かかる
放置して翌日見てみると、半分も終わってない。。。
でも正解率80%ぐらいになってるので、途中で止めてモデルに組み込んでみました笑

いざ!トライフォート顔判定

予測のレスポンスは初回は30秒くらいですが、2回目以降は3秒くらい(しばらく使わないとCloud MLの起動に時間がかかるのでしばらくアクセスがない状態からの最初の1回目は遅いです)
せっかくなので、絶対に面接には来てくれないであろう人を試してみようということで、世界の北野武さんを入れてみると、、、
がーん、、、トライフォート顔率0.5%
まぁ実際にオフィスにいたらビビりますが、、、

この人がいなければ我が社はなかった、スティーブジョブスさんはどうだ!
。。。きたーーーーー87%トライフォート顔!

じ、、、自分の顔は?
きたこれ!99.997%トライフォート顔
ってまぁ教師データの中に当然自分の別の顔写真もあるので、当たり前かもですが。

GCPお金事情

ちなみに前述の通り、MAGGELANはGCPのサービスをベースに使っているのでMAGGELANのライセンス代とは別にGCP側で有料のところはお金がかかってきます。
私も調子に乗って色々学習させたら
Cloud Machine Learning Engine Training Unit-Hours: 26.061 時間 1,409円
実際に学習させていたのは数時間ぐらいでしたが、裏では複数のユニットが同時に動くので気をつけないとかもです。
Trainingではなく、Prediction(予測の方)は数十回叩きましたが71円とそこまでかからなかったので、一度モデルさえ作れば予測はお試しレベルならガンガン使っても大丈夫そうです。

Webサービス化

このMAGGELANのフローチャートは外部からAPIでも叩けるので、Webサービス化してブラウザから写真のアップロードからトライフォート顔の判定までできるようにしてみました。
ちなみに今回Cloud Storageへのアップや、判定API周りの制御はCloudFunctionを使ってGCP上で完結するように作りました。(CloudFunctionを使ってみたかっただけな理由ですが笑)

途中CloudFunction経由でCloud Storageに画像をアップする部分がクロスドメインのエラーでだいぶ苦戦しましたが、package.jsonにfirebase-functionsを入れて、リクエスト部分を

とすることで無事解決しました!流れとしてはこんな感じで作っています
tf_face_prediction_flow

やっちゃいます!顔採用

というわけで、せっかく作ったので人事に交渉してやっちゃいます!「堂々顔採用宣言!期間限定でトライフォート顔採用始めるってよ」AIが一体どこを見てトライフォート顔って言っているのか私もわかりませんが、このAIがトライフォート顔90%以上と判定した方は書類面接は無条件で免除します!

期間は約1ヶ月、募集中の職種であれば全てキャンペーン適応です
特設サイトは詳しくはこちら!
追記)本キャンペーンは10/30で終了いたしました!大変多くの方チャレンジありがとうございました

ちなみに現在、トライフォートは新規事業に向けてAIエンジニアも絶賛募集中です!
もし今回AIがトライフォート顔って判定しなかったとしても、入社したら一緒に判定器を作りかえちゃいましょう笑

トライフォートで働きませんか?

トライフォートで働きませんか?
弊社ではエンジニア、デザイナー、ディレクター、プランナーを随時募集しています。
ゲームやサービスが好きで、新しいことにチャレンジしたい、世界に強いインパクトを残したい、という人を探しています!
我こそは、という人は是非ご応募ください!