ルマンドの研究ブログ

先端と事業化の狭間で揺れる研究系エンジニアの日誌です。自動走行、自律走行、コンピュータビジョンなど。

オンラインで学べる自動運転技術

 もはやブームは過ぎた、との意見もある自動運転ですが、今なお注目を集める技術分野であることは間違いありません。むしろかつての熱狂や脅威論を通り過ぎた今、普及を見据えた段階にあり、産業としてのすそ野が本格的に拡大していく時期だと言えます。
 公道走行が可能なレベルの車両開発には、$7,000 もする Velodyne の LiDAR や車両の By-Wire 化などの多額の資金が必要となるため、先端技術の主な担い手は、自動車メーカー各社や著名な研究機関に限られています。しかし基礎的なソフトウェア技術に限ってみれば、その他の情報技術と同様、公開された教材から無料もしくは非常に安価に学ぶことができます。
 本記事ではそれらの教材を用いた、私が現時点でお勧めできる自動運転技術の学習コースを紹介します。私自身すべてをマスターしているとは言えませんが、今から考えてもし先に知っていれば…と思う情報を集めました。

なお、学習の参考書については、id:meison_amsl さんの推薦書がよい指標となります。
myenigma.hatenablog.com

Chris Urmson: How a driverless car sees the road

この分野で先端を走るのは、誰がどう見てもGoogleです。
まずはモチベーションを得るために、自動運転部門を牽引していた Chris Urmson の日本語字幕付きTED Talkを見て、2015年時点で彼らが何をできていて、何を目指しているのか理解しましょう。

Chris Urmson: How a driverless car sees the road

Udacity: Robotics for Artificial Intelligence Course

Stanford で DARPA Ground Challenge 優勝を果たし、Goole の VP として自動運転開発も主導した Sebastian Thrun 氏が設立したMOOCサイト Udacity。その開設時からの目玉講義として用意されたのが本コースです。
www.udacity.com

Thrun先生の優しい語り口と演習課題を通じてカルマンフィルタやA*, SLAM などの要素技術を学んだあとには、それまで魔法のように思えた自動運転が、少し身近なものに感じられるでしょう。こちらも日本語字幕が提供されています。

なお、本講義をさらに深堀するには、移動ロボット研究者のバイブルといえる『確率ロボティクス』がおすすめです。ありがたいことに最近日本語版がマイナビ出版より復刻しました。

確率ロボティクス (プレミアムブックス版)

確率ロボティクス (プレミアムブックス版)

ROS

今日の自動運転車の技術はすべて2000年代の移動ロボット研究に基づくものです。ROS を身に着けることで、今はなきシリコンバレー・スタートアップの Willow Garage の残した成果物を、そっくり引き継ぐことができます。
monoist.atmarkit.co.jp

ドキュメントはほぼ英語ですが、詳説 ROSロボットプログラミングという日本語の解説書も発行されています。
lumonde-lab.hatenablog.com

特に Navigation Stack は自律走行そのものですので、MoriKen さんのQiita記事を読みながら、じっくりとチュートリアルを進めましょう。Thrun先生の講義が実装されていることを実感できるはずです。
qiita.com

Autoware

移動ロボットに慣れ親しんだ後は、いよいよ本物の自動運転ソフトに触ってみましょう。名古屋大学がROS上に構築したAutowareは、なんと自動運転コンポーネントをフルスタックでオープンソース化しています。これまでビデオでしか見られなかった技術が、一気に手に入りますので、録画データと一緒にダウンロードして思う存分いじくりましょう。
www.pdsl.jp

一通り満足した後は、以下の記事を参考に、少しずつ背景技術を読み解いていきましょう。
qiita.com

Udacity: Self-Driving Car Engineer

十分な知識を身に付けた後は、演習課題で手を動かしましょう。"Robotics Artificial Intelligence" は移動ロボット全般に関する内容でしたが、こちらはより自動運転にフォーカスした内容となっています。…実は開講以来本業が忙しく、私自身は未受講です。
www.udacity.com

KITTI Benchmark

いよいよ自分だけのロジックを開発するときです。といっても本物の車を用意する必要はありません。カールスルーエ工科大学と豊田工業大学 シカゴ校が作成した本データセットに、完全なレーザーデータとGPS座標が記述されていますので、世界中の研究者と全くおなじ土俵で作業することができます。
http://www.cvlibs.net/datasets/kitti/www.cvlibs.net


…以上です。成果はぜひ github などで公開してくださいね。

画像認識とコンピュータビジョンの初心者にお勧めの書籍

アフィリエイトリンクは張っていませんので安心して(?)クリックしてくださいね。
(将来にわたり張らないことを保証するものではありません。)

ディジタル画像処理

ディジタル画像処理[改訂新版]

ディジタル画像処理[改訂新版]

画像処理エンジニア検定を主宰するCG-ARTS協会が発行するだけあり、画像処理に関するトピックを豊富なイラストで偏りなく紹介しています。画像を扱うのに文字と数式ばかりの書籍が多い中、カラーイラストでわかりやすく解説しようとしている貴重な存在です。内容は広く浅くですが、扱う話題は易しいものに限りませんので、気になったキーワードを検索すると理解が深まるでしょう。配属一年目に手元に置いておきたい教科書的一冊。

コンピュータビジョン最先端ガイドシリーズ

コンピュータビジョン最先端ガイド1[CVIMチュートリアルシリーズ]

コンピュータビジョン最先端ガイド1[CVIMチュートリアルシリーズ]

  • 作者: 倉爪亮,石川博,加藤丈和,佐藤淳,三田雄志,八木康史,斎藤英雄
  • 出版社/メーカー: アドコム・メディア
  • 発売日: 2008/12/03
  • メディア: 単行本
  • 購入: 9人 クリック: 71回
  • この商品を含むブログ (11件) を見る

教科書を読み終えて論文を読む始める前に、こういう研究分野があるんだなぁ、と理解するために使えます。各話題の読みやすさは著者により様々。自分の担当でない分野へ知識を広げるのにもいいでしょう。

イラストで学ぶ ディープラーニング

イラストで学ぶ ディープラーニング (KS情報科学専門書)

イラストで学ぶ ディープラーニング (KS情報科学専門書)

松尾先生の『人工知能は人間を超えるか』のような読み物を読んで感動したあと、実際の処理を何となく理解するために。数式を読み飛ばしてイラストと日本語を読んでいると、なんとなく分かったつもりになって、知ったかぶりができるようになる…かもしれません。

深層学習

深層学習 Deep Learning (監修:人工知能学会)

深層学習 Deep Learning (監修:人工知能学会)

  • 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知能学会,神嶌敏弘
  • 出版社/メーカー: 近代科学社
  • 発売日: 2015/11/05
  • メディア: 単行本
  • この商品を含むブログ (2件) を見る

雰囲気だけでなくちゃんと理屈を理解しておきたくなったときに。人工知能学会監修、といういかついタイトルのわりに読みやすいため、やる気にさせてくれます。

パターン認識と機械学習

パターン認識と機械学習 上

パターン認識と機械学習 上

  • 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
  • 出版社/メーカー: 丸善出版
  • 発売日: 2012/04/05
  • メディア: 単行本(ソフトカバー)
  • 購入: 6人 クリック: 33回
  • この商品を含むブログ (19件) を見る

統計的機械学習の話題になると必ず挙げられる一冊。いわゆるビジョップ本、黄本、PRML。…ごめんなさい、ちゃんと読み終わってないです。

はじめてのパターン認識

はじめてのパターン認識

はじめてのパターン認識

PRMLは長すぎて挫折しましたが、こちらは薄いので読み切れました。「わかりやすいパターン認識」も有名だそうですが、たまたま私が手にしたのはこっちでした。

詳解 OpenCV

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識

  • 作者: Gary Bradski,Adrian Kaehler,松田晃一
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/08/24
  • メディア: 単行本(ソフトカバー)
  • 購入: 17人 クリック: 272回
  • この商品を含むブログ (35件) を見る

最終的には手数の勝負になります。この種の専用ライブラリは、車輪の再発明を防ぎ開発効率を上げるツールボックスとしてだけでなく、未知の知識を体系立てて習得するためのリファレンスにも利用できます。APIのドキュメントをすべて読み、なんとなくでも各処理を理解できれば、最新の話題に対する理解力も大きく向上するでしょう。

その他


Tensorflow and deep learning - without a PhD by Martin Görner
TensorFlow 開発者が解説する、一時間でわかる"PhD不要"の深層学習。実際にCNNをトレーニングが収束する様子が見れるのが面白い!

以下未読だが興味のある書籍

ゼロから作るDeep Learning

もうCNNの解説は何度も読んだから(そしてMNISTで終わるものがほとんど…)いらない気もするが、分かった気になっているだけかも知れないので一応読みたい。そしてできれば手を動かしたい。

MIT Deep Learning

松尾研が翻訳したみたいですね!なんとか時間を作って読みたい。
http://www.deeplearningbook.me/

詳説 ROSロボットプログラミング

九州大学の表 允晳さんらが ROS の解説書をオープンソースで公開されました。

詳説 ROSロボットプログラミング

まだ序盤を読み始めたばかりですが、無料でここまでのクオリティのものが手に入るのは素晴らしい限りです。IPython Notebooksが流行りだしたときに思ったのですが、こういったソフトウェアの入門書は、紙面の制約がなくふんだんに図表が載せられるので、印刷物よりもむしろわかりやすくできるのかもしれません。

「ROSではじめるロボットプログラミング」著者の小倉さんもおっしゃる通り、これまでROSにはわかりやすい日本語が「ROSではじめる~」一冊しかなく、初学者にとっつきにくい印象がありました。

これを機に国内でのROSの普及が一気に進むといいですね。かく言う私も使いこなせていないので、この本で勉強しないと。

Honda SENSING の歩行者事故低減ステアリング

すっかりスルーしてしまっていましたが、ジェイド・レジェンド・オデッセイなどに搭載されている Honda SENSING では、歩行者検知時にステアリングが自動的に動いて、ドライバーに警告するそうです。

従来ホンダのレーザーレーダーベースの自動ブレーキは JNCAP 評価が低かったのですが、Honda SENSINGは色々な機能がワンパッケージに詰めてあり、本気で巻き返したいという意志を感じます。

解説動画 によると、システムがステアリングを切るわけではなく、遊びの範囲だけ動いてドライバーに対する警報することが目的のようですが、それでも回避行動として減速ではなく操舵を行うシステムとして、画期的ではないでしょうか。同時に反対車線を監視してはいないので、一概に操舵が正しい回避行動なのか、心配な面もあります。たとえば、後方のバイクはすでに歩行者に気づいていて、中央側に寄っていた場合、回避行動によって接触してしまわないのでしょうか。説明をよく聞くと、車線を逸脱していて、なおかつ歩行者を検知しているとき、LDWの設定によらず警報を出す、というもののようなので、そのような事態はほぼ起きないのでしょうが。

公式ページの解説 では「カメラとミリ波レーダーで検知」とあり、歩行者相手にレーダーが効くのだろうか、と思いましたが、日本電産エレシスが開発した特殊なレーダーを使っているようです。

monoist.atmarkit.co.jp
f:id:LUMONDE:20151111214753j:plain

現状歩行者には画像認識しか有効なセンサがないので、競合メーカーからも類似の技術が出て選択肢が広がることを歓迎します。

Python + openCV でラベリング&疑似カラー

openCV3 から画像中の連結成分を取得する connectedComponents が実装されたそうですが、実は openCV2 でも distanceTransformWithLabels を使用することで、ほぼ同じことができます。

# -*- coding: utf-8 -*-

import cv2
import numpy as np

def label_image(img):
    img_dist, img_label = cv2.distanceTransformWithLabels(255 - img, cv2.cv.CV_DIST_L2, 3)
    return (np.uint8(img_label) & img)

# load binary image
img = cv2.imread("label.png", 0)
img_label = label_image(img)

# access each label
label_num = np.max(img_label)
for i in range(1, label_num + 1):
    cv2.imshow("label" + str(i), np.uint8(img_label == i) * 255)

# pseudocolor
img_label_normal = cv2.normalize(img_label, alpha=0, beta=255, norm_type=cv2.cv.CV_MINMAX)
img_label_color = cv2.applyColorMap(img_label_normal, cv2.COLORMAP_JET)
cv2.imshow("label", img_label_color)
cv2.waitKey(0)

入力画像 label.png
f:id:LUMONDE:20151028231007p:plain

実行結果
f:id:LUMONDE:20151028231020p:plain


なお、openCV2.4 以降では、疑似カラー画像を applyColorMap で一発で作成できます。デプス画像の着色などに便利ですね。

トヨタの自動運転 共通アルゴリズム

トヨタの自動運転実験車 Highway Teammate が公開されました。car.watch.impress.co.jp

それに関連して「9割近くの走行場面を共通のアルゴリズムで対応」とのニュースもあります。何が「共通」かというと、単一のアルゴリズムでほとんどの場面に対応でき、特殊なシーンに対する特殊アルゴリズムが必要となるケースは少ない、ということのようです。techon.nikkeibp.co.jp


「トヨタ ソフトウェア 共通化」といえば、トヨタ、ホンダ、日産、東大、名大が自動運転車の技術を共通化というニュースも過去にありましたが、これは国際標準化の話でした。

また、数年前にはトヨタ、ホンダ、日産が車両制御の基本ソフトを共通化というニュースがありましたが、これは結局 JASPAR の話題だったようです。


ソフトウェアに限らず、「部品何割を共通化」というニュースを時々見かけますが、その会社の構造を知らない外部の人間にとっては、凄さが把握できません。記事が重役方の目に留まり、それに対する我が社の取り組みの報告を求められ、同僚たちが右往左往する姿を時折見ます。もう少し具体的な例があるといいのですが。

車載向け画像センサーのシェア

前回のニュースの別記事になりますが、EE Times が掲載したオン・セミコンダクターの発表資料の中に、車載向けイメージセンサーの市場ェアが載っていました。Omnivision と意外と差が開いているなと思う一方、思いのほか東芝のシェアが高く3位につけているのに驚きました。

http://eetimes.jp/ee/articles/1510/21/news027_2.htmleetimes.jp

東芝の車載市場の参入は2012年なので、後発のはずだったのですが。なかなか頑張っているのに、撤退のうわさが出てしまっているのは残念です。

電子デバイス産業新聞の記事では Omnivision が1位になっています。あれ?