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等で告知しますので、お待ち下さい!

深層学習でバラ積みロボットの0から学習

mattya

2015-12-07 18:48:07

乱雑に積まれた物体を取り出す産業用ロボットの動作を、ディープラーニングで学習しました。

こんにちは、松元です。今回は、国際ロボット展2015にてFANUCブースで出展した「バラ積みロボットの0から学習」について解説したいと思います。

まずは次の動画をご覧ください。

背景

「物を取る」というのはロボットの最も基本的なタスクの一つで、あらゆる場面で必要となります(たとえば産業用では、カゴから部品を取り出してベルトコンベアに乗せるといった用途で頻繁に使われます)。このときに、取るべき部品が決まった位置に整然と並んでいたり、平らな面に一つだけ置かれているなら簡単なのですが、箱にぐちゃっと積まれたところから一つ取り出したいというケースもあります。このようなタスクをバラ積み取出しといいます。

様々なバラ積み取出しの活用例(google画像検索)

いま、3Dカメラによってバラ積みされた領域の深度付き画像が得られているとして、取り出したい対象(ワークという)の座標を返すことを目標とします。通常は次のような手法が用いられます。

    • 取りたいワークの写真やCADデータとパターンマッチして、目標位置を探す

ワークの形状が予め完全に分かっている場合に有効です。

    • ある程度以上の面積の平らな場所を探して、そこを目標とする(吸着やマグネット式のハンドの場合)

こちらはワーク形状が未知の場合にも使えます。

既存手法(FANUCの製品)によるワーク位置の検出 しっかりチューニングを行えば高い精度が出る

既存手法(FANUCの製品)によるワーク位置の検出
しっかりチューニングを行えば高い精度が出る

しかし、いずれの手法でも、判別の閾値などのパラメタチューニングには熟練を要します。また、特定のハマりパターンがあったときに、それを回避するのが難しいという問題もあります(今回取り組んだ円柱ワークの場合、ワークが複雑に重なっている時や、円柱が2つピッタリくっついて並んでいるときなどに、誤検出することがありました)。

今回私たちはディープラーニングを用いることで、このような問題を解決し、既存手法の熟練者によるチューニングに匹敵する精度を自動で達成することができました。

手法

セットアップ

・ワーク
鉄製の円柱(高さ5.0cm, 直径2.5cm)が200個程度箱にバラ積みされています。

ワークとハンド

ワークを吸着して持ち上げている様子

・ロボット
取り出しには、FANUC製の「LR Mate 200iD」というロボットアームを用いました。ロボット展の会場を見渡すと、あちらこちらで使われているのを目撃できるくらい、産業用では広く使われている優秀な機体です。
このアームは同じくFANUCの「R-30iB」というコントローラーから制御します。
PCからコントローラーに目標座標(x, y, z, yaw, pitch, roll)を指示すれば、そこに移動するまでの経路を自動で計算して正確に動いてくれます。
動作も高速で、3秒に1つくらいのペースでワークを取っていくことができます。

今回用いたロボット「LR Mate 200iD」(FANUC公式サイトより引用)

・ハンド
ロボットの先端に取り付け、ワークとコンタクトする部分をハンドといいますが、
今回は空気による吸着式のハンドを用いました。
先端はジャバラ状になっていて、多少ワークが傾いていても取ることができます。
吸着動作後に気圧を測ることで、ワークの取得に成功したか失敗したかを自動で判別します。

・ビジョンセンサ
箱の上方に3Dカメラがついていて、箱内部の深度付き画像を取得します。
3Dカメラとロボットの座標系の対応をキャリブレーションして、
深度付き画像から、ロボットの移動目標座標を求められるようにしてあります。

学習

学習は次のような流れで行います。
(1) 深度付き画像を撮影する
(2) 現在の予測モデルのもとで最善の(x, y)を選ぶ(学習初期では領域内の点をランダムに選ぶ)。深度付き画像からzが求まるので、この(x, y, z)を目標座標とする
(3) (x, y, z)にロボットを動かし、ワークの吸着を試み、成否を取得する
(4) (x, y)周辺の深度付き画像を切り出して、成否のラベルと組にして保存する
(5) 現在得られているデータから、画像から取得成否を予測するモデルを学習してアップデートする(この処理は数百回おきに行う)
(6) 以上を繰り返す

集めたデータの一例

集めたデータの一例。こういったラベル付きデータから、CNNを教師あり学習する

予測モデルにはChainerで実装したCNN(convolutional neural network)を用いました。目標座標周辺を切り出した深度付き画像を入力とし、取得成功確率が出力となります。
(5)での学習処理は教師あり学習ですが、学習に用いるデータセットの構築に現在のモデル自身を用いるため、能動学習の一つと捉えることができます。

ロボットを動かすのはPCから自動で指示が送れるので、ときどき空になった箱をリフィルする以外は自動でサイクルを回すことができます。ディープラーニングではデータの数を揃える必要があるので、ほっとけばどんどんデータが集まってくるという設定にすることはとても大事です。

結果

学習当初のランダムモデルでは50%ほどの取得成功率だったものが、
学習データが集まるにつれて、2000データ(約4時間)で70%、5000データ(約10時間)で90%の取得率を達成できました。

学習に伴う取得成功率の向上

学習に伴う取得成功率の向上

学習の進捗は、実際の撮影された画像に対して、CNNがどのような評価値を出力しているかを可視化することでも評価できます。
下の図は、1000データ学習後と5000データ学習後のCNNで、同じ盤面に対して評価値を出力させた図になります。明るい色で塗られている部分が、「取れる」と判断した座標になります。

学習による予測精度の向上

学習による予測精度の向上

基本的には他のワークが上に重なっていないワークの、側面あるいは端面の中心付近を狙えば取得に成功しますが、
1000データ学習の時点でも大まかにはその性質が学習できていることが分かります。
しかし、青い丸が付けてあるところのように、ワークとワークの境界部分や、上に他のワークが重なっているワークにも高い評価値が割り振られているところがあります。このようなエラーが、5000データ学習後にはぐっと減っていることが分かります。

このような精度の改善は、取りやすいワークを全て取ってしまった後のような難しい局面にて威力を発揮します。
学習前は何回も連続で失敗してしまうようなところで、数少ない取れるワークを正確に狙うことが出来るようになり、90%の取得率を達成できるのです。

本手法の意義

    • 熟練を要するチューニングのプロセスを、自動で行うことができるようになりました

ある程度までは手動チューニングで精度を高め、それでどうしても誤検出するケースを学習で改善するという使い方もできます

    • 取得するワークの形状が不定の場合にも適用できます

食材を扱うロボットや、ゴミを分別するロボットといった応用が考えられます

    • 転移学習が可能

Deep Learningの優れている点として、汎用的なモデルをひとつ作ってしまえば、様々なタスクに転移できることが挙げられます(imagenetの画像分類タスクで学習したモデルが、画像からのキャプション生成に使えるなど)。
バラ積み取出しにおいても、複数種類のワークで学習を行ったり、シミュレータ上で大量に学習したものを、転移学習することも可能でしょう

    • 分散学習が可能

複数台で同時にデータを集めれば、それだけ高速に学習できます

関連する研究

Supersizing Self-supervision: Learning to Grasp from 50K Tries and 700 Robot Hours
一般物体をハンドで掴むロボット。本研究と同じように、ランダムに掴むところからデータを貯めて学習を行う。取得したい物体が任意の一般物体であり、ハンドも挟むタイプのものであるため難しい問題設定。700時間という時間をかけても取得成功率は70%くらいでちょっと悲しい。

Dex-Net 1.0: A Cloud-Based Network of 3D Objects for Robust Grasp Planning Using a Multi-Armed Bandit Model with Correlated Rewards. Ken Goldberg, et al. ICRA 2016
UC BerkeleyとGoogleの共同研究で、Bay area robotics symposium 2015で発表があった。
10000種類の物体の3Dモデルを用意して、シミュレータ上でどこが掴みやすいかを1000台のマシンで並列に学習するという。
産業用ロボットは指示されたとおりに非常に正確に動き、また、学習初期の頃から実機でいきなり実験すると物を壊してしまう可能性もあるため、シミュレータを使うことは理にかなっている。
一方で、バラ積み取り出しのよくある失敗例として、取得動作の際にワークが崩れて動いてしまったり、ワーク間の光の反射によって位置推定がずれたりといった、シミュレーションしにくい要素が絡んでいることも事実である。
シミュレータで得た学習結果を、いかに実機に適用するのかというのは今後の大きな課題であろう。

12345...