Amazon Picking Challenge 2016 ~ドイツ・ライプチヒにて~

神谷保徳

2016-09-02 16:25:17

神谷です。

7月上旬、ドイツ・ライプチヒで開催されたAmazon Picking Challenge(以降APC)に、PFNとして参加しました。これは、Amazonが主催しているロボット競技会で、Amazonの倉庫内に在庫された商品から、購入された商品を棚から集めるタスクの自動化を想定した競技です。今回で2回目で、前回からのタスクである、指定された商品を棚からロボットで取得しカゴに入れるPickタスクと、新しく加わった、カゴに入っている商品を棚に入れるStowタスクの、二つのタスクがあります。Pickタスクは、前回から商品の種類や難易度も上昇しています。

実際に我々が作り上げたシステムの技術内容に関しては、PFI&PFNセミナーで概要ではありますが既に発表しており[1][2]、また日経Roboticsに弊社システムの解説記事や弊社岡野原のコラム、APC全体の技術解説も載る予定ですので、今回はドイツ・ライプチヒにおいて、実際に我々がどんなことを行っていたか、旅行記風に紹介しようと思います。


6/28、お昼頃、会場入りしました。スーツケースをたくさん持っているのは、手持ちのロボット部材や、工具があるためです。ぎりぎりまで開発を行っていたため、手持ちとなった物が多くあります。
DSC01675

輸送されたロボットアーム達。実は、輸送に時間がかかるため、本番用ロボットアームは先に送り、直前までの開発には別のロボットを使用していました。それにまつわる様々なトラブル回避もありました。そうまでしたのは、それだけ短期間での開発だったためでもあります。
DSC01691

箱開け。きれいに、きっちりと梱包されています。ぎりぎりまでの輸送タイミング交渉、また税関など、この輸送自体に関してもかなりの問題解決/回避が行われました。
DSC01701
DSC01699

設置の様子。設置に関しても準備を凝らしていましたが、それでも電圧の違いによるトラブルが少しありました。ロジスティクスの方と協力し、短時間で完了しました。
DSC01707

本番前々日
設置後、調整と改良が続きました。
本番前の調整では、奇跡的に隣にあった、ホームセンターが大活躍しました。例えば、照明条件の違いから、ライトを購入したり。ロボット競技では、現地でのイレギュラーがつきものです。
DSC01840

本番前日
調整と改良を続けます。
DSC01847

また、Amazon.deの見学にも行きました。
DSC01775

試走のスケジュール表。試走では本気を出していない(動作の確認に徹している)チームもあり、まだまだ分かりません。
DSC01789

本番直前。ぎりぎりまで改良を行いました。
DSC01999

そして本番。オレンジのTシャツの人が、Amazonの委員の人です。ターゲットのアイテムと、棚内のアイテムの配置は数パターンあり、くじで選択する形です。委員の人がアイテムを慎重に配置していました。また、棚のずらしも、配置前に行われます。
DSC02006

本番中。ハラハラドキドキ。本番のロボットの動作の様子はYouTubeに上がっています[3]。
DSC02007

終わりました。幾つかミスはありましたが、満足のいく動作でした。
DSC02009

そして表彰式
DSC02015

表彰式後の一コマ
DSC02018

その夜のパーティ。みんな笑顔。
他のチームの方やAmazonの方ともいろいろなお話をしました。
DSC02026

次の日はデモです。試合までは調整であまり見られなかった他チームのシステムについて、拝見、質問をしました。我々が開発中に気付かなかったアイディアも幾つかありました。また、我々のシステムについてもいくつも質問を受けました。
DSC02036

お片付け。ロボット達はまたPFNに戻ってきます。おつかれさまです。
DSC02038



この数か月間、非常に大変でしたが、結果も伴い、とても良い形となりました。
DSC02011

—————————————————————————
[1]http://www.slideshare.net/pfi/amazon-picking-challenge
[2]https://www.youtube.com/watch?v=gqcO8ZX0jB8
[3]https://www.youtube.com/watch?v=w7NgejZMSsA

Chainer MeetUP #03 を開催しました

Hideto Masuoka

2016-07-15 20:36:54

最近得居さんに雑なあだ名を付けられて、凹んでる舛岡です。

7/2(土)にChainer Meetup #03をドワンゴ様セミナールームで行いました!

今回も、アカデミックや企業で活躍されている方々にお話しして頂きました。
ドワンゴ様には前回に引き続き今回も会場をお借りしました。またニコ生の放送もお手伝い頂きました。この場を借りてお礼を申し上げます。

Chainer Meetupでの資料

Chainer, CuPy入門 @unnonounoさん


Chainer Update v1.8.0 -> v1.10.0+ @beam2dさん


シンパーセプション研究におけるChainer活用事例 @n_hidekeyさん


Chainerを使って細胞を数えてみた @samacobaさん


ヤフー音声認識サービスでのディープラーニングとGPU利用事例 Yahoo! Japan 磯部さん


NVIDIA更新情報: Tesla P100 PCIe/cuDNN 5.1 NVIDIA 井﨑さん


俺のtensorが全然flowしないのでみんなchainer使おう @hidesukeさん


深層学習ライブラリの環境問題 @yutakashinoさん


Peephole connectionsを実装してChainerのcontributorになった話 @Kotaro_Setoyamaさん


Chainerを使って白黒アニメの彩色実験をしてみた @Eiji_Kbさん

Real-Time Style Transferについて @_mayfaさん


On the benchmark of Chainer @delta2323_


ドーナツスポンサー

今回も エヌビディア合同株式会社様に、ドーナツスポンサーになって頂きました!
毎回準備していただく エヌビディア合同株式会社様、@yukofujiさんには感謝しております!

IMG_0056 - コピー IMG_0057 - コピー

当日の様子

IMG_0048 - コピーIMG_0062 - コピーIMG_0053 - コピーIMG_0058 - コピーIMG_0065 - コピー IMG_0079 - コピー

IMG_0059 - コピー IMG_0071 - コピー 受付 IMG_0084 - コピー IMG_0086 - コピー

 

SIGMOD Programming Contest 2016 優勝

秋葉 拓哉
リサーチャー

2016-07-06 20:05:09

はじめまして。7/1 に入社しました新入社員の秋葉です。参加していた SIGMOD Programming Contest 2016 の結果が先週末にアナウンスされ、アドバイザーとして参加していたチームが優勝となりました。コンテストと我々のアプローチを簡単にご紹介したいと思います。

スクリーンショット 2016-07-02 0.43.16.jpg_small2

 

 

SIGMOD Programming Contest とは?

SIGMOD Programming Contest は学会 SIGMOD の併設プログラミングコンテストです。SIGMOD は VLDB と並ぶデータベース分野の最も有名な ACM 系の国際学会です。コンテストの題材も学会のテーマに沿っており、大規模データの処理の高速化を競うものが殆どです。特に、近年に論文が複数出ているようなホットなトピックが選ばれるようです。

ちなみに、参加者は学生に限定されています。チームの人数に制限はありません。チームは教員を一人アドバイザーにすることができます。前職では国立情報学研究所の特任助教でしたので、学生時代の出身研究室の後輩同輩である生田くん、林くん、矢野くん、岩田さんのチームにアドバイザーとして参加しました。特に、実装は生田くんと林くんが全て頑張ってくれました。

100 チーム以上が参加し、5 チームがファイナリストとして選出され、サンフランシスコで開催されていた SIGMOD 2016 にて結果がアナウンスされました。

スクリーンショット 2016-07-02 0.42.09.jpg_small2

 

 

今年のコンテストの問題は?

今年のコンテストの問題は、動的グラフ上のいわゆる最短経路クエリ(より正確には距離クエリ)です。入力として、まず最初に大規模なグラフが与えられます。少し前処理の時間ももらえます。次に、以下の 2 種類のクエリが与えられます。

* 距離の質問:2 頂点が指定されるので、その間の距離を答える
* グラフの変更:辺の追加や削除が指定される

細かいルールは省きましたが概ねこれだけです。とてもシンプルな問題です。グラフは小さいものから大きい物まであり、大きいものは数百万頂点・数千万辺の規模でした。

スクリーンショット 2016-07-02 0.41.29.jpg_small2

 

 

問題の難しさ

一部の方はご存知の通り、実は最短経路クエリに対する索引付け手法は僕のこれまでの専門のど真ん中でした。「ズルい!」という声すら聞こえてきそうです。それでは、果たして本当に簡単に優勝できたのでしょうか?

残念ながら、枝刈りラベリング法などの僕らが作ってきたこれまでの手法は、実は今回はほぼ全く使う事ができませんでした。その理由は、過酷な問題設定にあります。今回の問題設定では、グラフが動的であり、しかも更新の頻度が高すぎるため、ガッツリとした索引データ構造を作ってしまうと、構築・更新のコストのせいで逆に損をしてしまう状況でした。しかも、実はグラフがソーシャルグラフだったり交通グラフだったりと性質もバラバラでした。

 

他チームのアプローチ

先に他のチームのアプローチから紹介します。予想通り、過酷すぎる問題設定故に、索引データ構造を保持するようなアルゴリズム的に興味深い手法を採用しているチームは無かったようです。枝刈りやキャッシュヒット率向上のためのちょっとした処理をグラフに加えるぐらいで、基本的には両側幅優先探索をひたすら高速化していたようです。

 

我々のチームのアプローチ

我々も両側幅優先探索の効率化に尽力しました。しかし、我々のチームは他のチームと異なり、今回の問題設定に適した軽量の索引データ構造を組み込み利用しました。ここが一番面白いかと思うので、この点について重点的に紹介します。

利用した手法は k-All-Path Cover (k-APC) です。k-APC は VLDB’14 で発表されベストペーパー賞を受賞しています。これを使うと、オーバーレイグラフと呼ばれる、元のグラフを「荒くした」グラフのようなものを作ることができます。遠い頂点対の処理をする際、始点終点の近くは元のグラフを探索し、それ以外の大部分はオーバーレイグラフの上だけを探索する、というようにすることができ、処理する頂点数・枝数を減らすことができます。

実際には VLDB’14 で発表された k-APC をそのまま今回の問題設定に使うことはできませんでした。しかし、我々は実はちょうど k-APC の後続研究をしており、その技術をそのまま利用することができました。(ちなみにこの研究は論文投稿中です。)

ただし、k-APC は交通グラフのような平均距離の長いグラフでは効果があるものの、ソーシャルグラフのようなグラフでは効果がありませんでした。そこで、最初にグラフの性質を判定し、k-APC を利用するか否かの判断をするようにしました。

 

感想など

実は、SIGMOD Programming Contest では、2 年前にもグラフ解析の高速化がテーマとなっています。その時にも今回に近いメンバーで参戦したのですが、残念ながら勝つことができませんでした。今回はアルゴリズム的にも面白いアプローチで奇策が功を奏し勝つことができて本当に良かったです。頑張ってくれたメンバー達に心からお礼を言いたいです。

記事の写真は全て筑波大学の塩川先生よりご提供頂きました。ありがとうございます。

夏季インターンのコーディング課題を公開します

大野 健太
エンジニア

2016-07-01 09:14:57

PFNの大野です。暑くなってきましたね。

PFI/PFNでは毎年8, 9月にインターンシップを実施しています。2ヶ月間と日本で行われるインターンシップの中では比較的長期間のプログラムですが、毎年多くの方にご参加いただいています。我々自身、インターンで来ていただく方から多くの事を勉強することができ、最も力を入れているイベントの1つです。今回は本社を大手町に移転してから初めてのインターンシップです。今年は例年以上の応募をいただき、過去最大規模でのインターンシップとなりそうです。

さて、インターンシップの選考では、応募者の方々にコーディング課題を解いていただいています。このコーディング課題は情報科学の基礎知識・プログラミング能力・問題解決能力を測ることを目的としており、毎年担当者が趣向を凝らした問題を作成しています。例年、どのような問題がコーディング課題として出題されるのか問い合わせをいただいておりましたが、公平性の観点からお答えできることが限られておりました。

そこで今回、過去のインターンの選考で出題したコーディング課題を公開することにいたしました。PFI/PFNのインターンに興味のある方はぜひ参考にしていただければと思います。改めて見ますと、我々の会社が得意としているアルゴリズムとデータ構造・文字列処理・画像処理・機械学習などのテーマでの出題が多かったようです。これらの分野を勉強・研究する方にとっても良い練習問題になるのではないかと思います。

  • 2011年(テーマ:文字列処理・回文)問題文
  • 2012年(テーマ:文字列処理・一般化しりとり)問題文
  • 2013年(テーマ:グラフ・探索アルゴリズム)問題文
  • 2014年(テーマ:画像処理・テンプレートマッチング)問題文
  • 2015年(テーマ:機械学習・前処理・教師あり学習)問題文
  • 2016年(テーマ:深層学習・AutoEncoder・ハイパーパラメータの決定)問題文

PFI/PFNのパーティーでプログラミングビンゴ大会を開催しました

海野 裕也
リサーチャー

2016-06-17 13:37:03

海野です。先週の金曜日に、PFIの設立10周年およびPFI/PFNのオフィス移転を記念してパーティーを行いました。主に、株主様や取引先様、また社員のご家族を呼んだパーティーで、ホテルのパーティー会場を借りて行いました。 この中でプログラミングコンテストビンゴ大会という、おそらく日本で(世界で?)類を見ない余興を実施しました。 今日は当日の様子と、開催の経緯をお伝えしようと思います。


IMG_8252

続きを読む »

カーシミュレータでゼロから学ぶ,自動運転

YoshidaNaoto

2016-05-27 15:55:12

こんにちは!吉田です.東北大学で博士学生をしています.

このたび,Preferred Networks(PFN)で4月・5月と春インターンに参加させていただきました.

インターンでは,Deep Deterministic Policy Gradientと呼ばれる強化学習の手法を用いて,TORCSというレースゲーム内で自動車に自動運転を自分で1から学習させるという内容に取り組みました.

これは私が以前 Chainer を使って Deep Q-Network (DQN) と呼ばれる深層強化学習を再現した経験があり,またインターンでも強化学習に関連したタスクをしたいという希望をマッチングした結果で,個人的にも大変興味をもって取り組めたと思います.

TORCS(The Open Racing Car Simulator)はオープンソースのドライビングシミュレータとして公開されていて,近年の強化学習ではこのシミュレータ内での自動運転をタスクとした研究がいくつかされています.今回の強化学習では車のハンドル操作を出力とする,DQNとは異なり連続値の出力を扱う強化学習問題となっています.この問題を扱うため,先に紹介したDDPGと呼ばれる手法を用いることにしました.DDPGやその他,技術的な内容に関する説明は,Slideshareで公開しているPFIセミナーでの最終発表スライドでご確認ください↓


 

 

実は実験にはさまざまな困難があり,残念ながら今回のインターン期間中では画像入力だけから自動運転を学習させるというところまでは到達できなかったのが悔いの残るところです.しかしながら,今回のインターンシップを通してメンターの方々の他,様々な人とお話する機会があり,私にとってこれまでとは異なる,たくさんのフレッシュな経験を積むことができたと思います.

なお,今回のインターンプロジェクトで作成・使用したTORCS環境で強化学習を行うためのpythonコード 「gym_torcs」をgithubにて公開しています.我こそはという方は是非,自動運転 from-scratch を強化学習でトライしてみてください!

GPUの祭典・GTC2016に参加しました

hido
Chief Research Officer

2016-04-27 08:13:33

比戸です。4月4日から開かれていた世界最大のGPUイベント、NVIDIAのGPU Technology Conference (GTC) 2016に参加しました。

続きを読む »

新入社員の丸山(宏)です

Hiroshi Maruyama

2016-04-12 14:16:47

新入社員の丸山(宏)です。4/1に入社してから、一週間が経ちました。PFNにはもう一人先輩社員の丸山さんがいて、なのでもう先生ではないですが、「まるやませんせい」と社内で呼ばれたりもしています。

今回の転職は私にとっては3回めの転職になります。外資系のIBM、国内大手のキヤノン、それに政府の研究機関である統計数理研究所、それぞれに大きく環境や文化が違って、転職の度に「おおっ」と思うことがありました。PFNは4つ目の職場ですが、やはり大きく違います。なんと言っても、最大の違いは意思決定のスピードでしょう。私は入社時には「エグゼクティブ・フェロー」という肩書をいただいていましたが、翌週には「Chief Strategy Officerをやってください」、と言われてその場で肩書が変わりました。さらに、この一週間のうちに、どんどん会社の方針も変わっていくのを目の当たりにしました。大学共同利用機関法人(だいたい、国立大学と同じと思ってよいと思います)で新しいポジションを作ろうとすると、何ヶ月もかかったはずです。

PFNが現在注力している分野の一つは、製造業におけるイノベーションです。この分野は、ドイツでのIndustrie 4.0とか、米国を中心としたIndustrial Internetとか、かまびすしいです。その一方、すでに品質や生産性を極めている日本の製造業の中には、やや距離を置いて見ている方々もいるようです。製造業におけるIoTは一過性のブームなのでしょうか。それとも産業を変えていく大きな流れなのでしょうか。私がこの分野(とPFN)の可能性を感じるのは、2つの理由からです。

「製品」の価値から「製品による体験」の価値へ

1つは、「製品を作って顧客に販売する」という製造業のビジネスモデルが変化する兆しがあるからです。伝統的な製造業のビジネスモデルでは、顧客が製品から最大の価値を得るのは、たいていその製品を購入した直後です。その時には、とても欲しいと思った製品ですし、新品ですので、その製品はライフスパンの中で最大の性能を発揮しているはずです。使っているうちに、顧客の興味も変化していきますし、製品も劣化していきますので、だんだん顧客にとっての製品の価値は落ちて行くでしょう。しかし、価値の多くをソフトウェアに依存する製品ではこの限りではありません。電気自動車のテスラは、ソフトウェアのアップデートによって新しい機能が追加されたり、安全性が向上したりしています。もっと身近では、スマートフォンも、購入してからもソフトウェアの追加によって継続的に価値が向上していくタイプの製品と言えましょう。

そもそも、私たちが製品を購入するのはなぜでしょうか? その製品を通して何らかの価値ある経験をしたいからに違いありません。自動車でいうならば、その価値は移動すること、あるいは運転を楽しむことなどで表されることでしょう。だとすれば、「製品を購入する」というトランザクションももしかしたら必要ないかもしれません。最近では若者は自動車をあまり購入しないと聞きます。Uberや、TIMES24のカーシェアのように、共有経済の世界になれば、汎用のデバイスと、それをオンデマンドでカスタマイズして顧客に提供するサービスの組み合わせで、製品の価値が顧客にもたらされる世界が来るかもしれません。経済学者のジェレミー・リフキンは、その著書「限界費用ゼロ社会」の中で、IoTが真の共有化社会をもたらすのだ、ということを述べています。このような大きな変革を可能にする鍵が、IoT、すなわち情報技術なのです。

機械学習による組込み開発の半自動化

では、このようなIoTの世界をどのような技術で構築・運用していくのでしょうか。私がPFNの将来を信じるもう1つの理由は、機械学習の技術が今までのものづくりのやり方を根底から変える可能性を感じるからです。経済産業調査会「ものづくり白書」2013年版によれば、自動車のコスト構造に占めるエレクトロニクス・ソフトウェアの割合が2015年には40%にものぼるとされています。これら組込みシステムの開発の多くは現在、V字型開発モデルという、基本的にはウォーターフォール型の方式で行われます。この方式の主眼は、「作り始めてから要件の間違いが見つかるとコストが高いから、できるだけ上流できちんと考えて、後で手戻りが無いようにしよう」という考え方です。要求定義通りに正しい物を作る、という意味では、とても正しいやり方だといえます。この考え方の裏には「要求定義を厳密に定義さえすれば、それを詳細化してプログラミングすることが可能である」という本質的な仮説があります。製品が複雑化すると、ここが自明でないことがあります。

前回の自動運転のデモの記事をご覧になったでしょうか。このデモでは、要件は極めて明確です。「交差点でぶつからない車を作る」というものです。ただし、この要件を実装するうえで、V字型開発はまったくやっていないのです。要件は与えるが、その実装のやり方は、深層強化学習の仕組みが試行錯誤によって学んでいく、という方法論です。誤解を恐れずに言えば、組込み開発が自動化されているのです。これは素晴らしいことです。これからのものづくりの大きな部分を占めるソフトウェア開発が自動化されるのであれば、製造業にとってそれは大きな福音になるはずです。すべての組込み開発が機械学習に置き換わるわけではないでしょうが、これから、どんどん機械学習に基づくシステム開発が加速していくことは間違いないでしょう。

以上、2つの理由によって、今後製造業の産業構造そのものが大きく変わっていくのだと、私は信じています。その変化を、変化を起こす側から経験してみたい、それが私がPFNに来た主要な理由です。大きな夢を実現してみたいですね!

 

CES2016でロボットカーのデモを展示してきました

自動運転チーム

2016-01-21 10:14:40

こんにちは。Preferred Networksの自動運転チームです。

PFNは、2016年1月6日〜1月9日にアメリカのラスベガスで開催されたCES 2016でロボットの学習による自動走行のデモを行いました。これはPreferred Networksとトヨタ自動車様、NTT様との共同展示です。展示はトヨタ自動車様のブースの一部で行われました。

このブログではその中でどのような技術が使われているのかについて簡単に解説します。

続きを読む »

Chainer Meetup #01 を開催しました

Hideto Masuoka

2016-01-04 15:03:39

あけましておめでとうございます!PFI舛岡です。12/19にChainer Meetup #01@スマートニュースを行いました。

参加の倍率が1.8倍と参加するだけでも大変なイベントのようでした。
(ちなみに弊社社員P氏は抽選で落選しました)
また参加率も90%以上でとても大盛り上がりのイベントでした。
会場をご提供くださったスマートニュース株式会社、会場を準備してくださった@tkngさんありがとうございます!

イベントの様子はtogetterにまとめております。

イベント概要

今回のイベントのテーマを以下の様に設定しました。

  • Chainerとはなにか?
  • Cupyとはなにか?
  • Chainerはどのように使われているか?
  • Chainerの開発はどうなっていくのか?
  • Chainerの開発を手伝うにはどうすればいいのか?

Chainer開発者全員と、Chainerをサービスに使っている担当者の方に話をして頂きました。
またLTも募集をして8名の方に話をして頂きました。

発表資料

発表に使用した資料は以下の通りです。

Chainer入門と最近の機能(@unnonouno)

CuPy解説(奥田)

超自然言語リアルタイム解析をサービスに組み込んだ話(@ixixi)

http://qiita.com/ixixi/items/a3d56b2db6e09249a519

Capitalicoでのchainer 1.1→1.5バージョンアップ事例(@arrow_elpis)

ディープラーニングにおける学習の高速化の重要性とその手法(@yukofuji)

学習済み Caffe モデルを移植してみた(@ohtysk)

ボケるRNNを学習したい(@aonotas)

深層学習ライブラリのプログラミングモデル(yutakashino)

Chainer向けGUI環境DEEPstationについて(shi3z)

Webアプリ診断AIの開発(bbr_bbq)

デモ画面

Chainer ハンズオン勉強会について(@SnowGushiGit)

アカデミアでの Chainer 利用の実例 深層ニューラルネットワークを用いた日本語形態素解析(@Ace12358)

Chainer: Development Plan(@beam2d)

Chainer Contribution Guide(@@delta2323)

イベントの雰囲気

IMG_20151219_175632IMG_20151219_171928

 

IMG_20151219_164703IMG_20151219_163707

IMG_20151219_165531IMG_20151219_163104

Chainerドーナツスポンサー

今回、Chainerロゴにそっくりのドーナツをエヌディビア合同株式会社の@yukofuji様に準備頂きました!ありがとうございます!その他にチョコや本もご提供頂きありがとうございます!
(セブ○イレブ○のドーナツが一番そっくりだったんですが、1週間前に関東で販売を停止してしまいました。。。)

CWkPmRlVAAAfegICWkPmReU8AAd-03

今後のイベント開催予定

懇親会等でも継続的にイベントを開催して欲しいとの声をたくさん頂きました。(実は)次回イベントも準備中です。詳細が決まり次第またconnpass等で告知しますので、お待ち下さい!

12345...