この度PyDataの本家であるアメリカのコミュニティーで半年に一度開催されているPyDataカンファレンスに出席するため、NYCに行って来ました。11/22-11/23の二日間の日程で行われ、延べ250人ほどが参加したイベントです。Tokyo第二回ミートアップでもご説明させていただき、また後日記事化されると思いますので、そちらをぜひご覧いただければと思います。NYCカンファレンスで私が発表してきたミニプロジェクトについてお話します。最近各所で話題に上がるディープラーニングですが、これを使った応用を「カメリオ」のサービス向上のために使えないか、というのがそもそものプロジェクトの着想でした。Tokyoオーガナイザーとして、またディープラーニングで色々と面白い実験をしている田中さん(@atelierhide)にもご協力いただきました。カメリオでは、記事の見出し表示の際に、非常に横長のサムネイルを使っています。記事は、http://netgeek.biz/archives/25449http://seiyuusokuhou.blog106.fc2.com/blog-entry-10356.htmlから転載しています。その際に問題なのが、画像切り抜きの位置です。原稿では非常に簡略なルールを使っており、イメージの中央部分の切り出しを使っているのですが、上の例のように重要な部分(左ではネコ、右では人の顔)が隠れてしまうという問題が有りました。そこで今回、ディープラーニングの物体認識を使い、特に人間にとって重要と思われる部分を切り取らないようなサムネイルの生成ができないかということに挑戦しました。画像から認識領域の切り出しが必要まず、ディープラーニングによる物体認識の前に、物体認識をかける画像領域の切り出しが必要です。Force的に抽出して、使うというものが有りましたが、領域の下図が非常に多くなる欠点がありました。Searchという手法が注目されています。セグメンテーションとはイメージの中の似たような領域を一つの物体として認識し、またその認識におけるアルゴリズムやパラメーターを変化することで、様々な物体の候補を提案するという手法です。ここに、以前の手法との比較など、より詳細な検証が書かれています。Sande氏等によって開発されたもので、Matlabのコードが公開されています:http://koen.me/research/selectivesearch/今回は、このコードを走らせ、ScipyのIOモジュールでアウトプットを拾い上げました。実際には、Pythonのサブプロセスとして走らせた状態で、ラッパーなどは存在していません。all_boxes]こうやって取り出された”box”を見てみると、このように大量に生成されていることがわかります。大体一つのイメージに対して200位の候補領域が出力されます。ディープラーニングによる物体認識このそれぞれの領域に対して、ディープラーニングを使った物体認識を行います。Tokyo第一回ミートアップでもPFNの大野さんが紹介していたCaffeというライブラリー及びImageNet2013の教師データを使ってトレーニング済みのネットワーク定義です。Zooで共有されており、非常に高度なトレーニング結果を、そのまま使うことができます。ImageNet2013の物体認識は、200種類の物体カテゴリーが用意されており、その中には、「人間」、「ネコ」などから「マイク」「消しゴム」まで幅広く用意されています。インストールには若干手間取りますが、それが終われば使い方わ極めてシンプルです。channel_swap=[2,1,0])前述の候補領域から特に面白い物体があると判別された上位の領域だけを取り出したものがこれです:スコアが高く特に上位にある領域は、「ネコ」や「人」などに正しく分類されているのがわかります。女の子のネクタイや、顔の「フェイスパウダー」などまで特定されているのは驚異的としか言いようがありません。今回はこのスコアを確率値として解釈するために、ざっくりとexp(score)と置き、すべての領域に対してスコアを合算しました。見ても物体の入っていないものや間違って認識されているものも入りますが、スコアは非常に小さい傾向にあったためそのまま使いました。そのようにしてできたのが下図です:ネコや人などが特に赤くなっているのがわかります。これは人間が見た時の「面白さのヒートマップ」と解釈することができ、とても斬新です。様々な応用が考えられます。一方で、右図に関しては文字周辺も赤くなっており、このような部分に関しては今後にも課題が残ります。今回は画像の切り取りが目的だったため、もっとも面白さの高い部分を中心に含む切り取り領域を探索しました。Numpyを使うとこんなかんじです。img_pil.crop(crop_area)このようにして、人の目から見てもベストと思われる領域の抽出に成功しました。今回の手法は非常に新しいテクノロジーを取り入れ、満足度の高い結果に持って行くことができた点で大きな成功でした。一方で、処理の速度には大きな課題が残ります。いうのも、標準的なCPUを使うと、一枚の写真を処理するのに、数分かかってしまうのです。処理時間の大半を占めるCaffeはGPUでの動作をさせたり、スピードアップをすることが可能なため、そのような形で今後実用化を検討していきたいと思っています。NYCで発表したスライドをこちらにアップロードしましたので、御覧ください。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。Incチーフデータサイエンティスト物理学博士Twitter:@madyagi2015年12月より現職2015年10月まで(株)白ヤギコーポレーション代表取締役CEOとして人工知能を使った情報サービス「カメリオ」「カメリオAPI」の開発・提供と自然言語処理や統計解析を使ったビッグデータコンサルティング事業を手がけた。高校中退、ピザ屋でフリーター、パンクロックに憧れて渡英、ロンドン大学でプログラミングに目覚め物理学博士号、CERNで素粒子ビッグデータを統計解析、ニューヨーク大学で研究員、世界中を旅した、BCGでは大企業の戦略コンサルティング、戦略インスティチュート、天使との出会い、脱サラして起業、そして自分の作った会社から追い出される。ほんとに世界を変えると信じられるテクノロジーに出会った。化を実現DataRobotでは事業拡大につき採用中!データサイエンティストはじめ、様々な職種で募集中です。Laing検索:上部にキーワードを入力し、リターンキーを押して検索を開始してください。キーをお使いください。メールアドレスキャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。