ドローンジャーナル

ドローンの空撮画像から自動車を識別、ディープラーニングを利用して実現する過程を覗いてみよう

 ブレインパッドは2017年1月20日、同社が提供している「機械学習/ディープラーニング活用サービス」の事例の1つとして、エアロセンスを支援した例をブログで公開した。エアロセンスはブレインパッドの支援を受けて、ドローンの空撮画像に写っている自動車の台数を数えることに取り組んだ。

 ブログではこの処理を空撮画像から「自動車の領域を検出」してカウントすると表現しており、ディープラーニングを応用した「領域検出」のアルゴリズムとして「R-CNN(Region-based Convolutional Networks)」というアルゴリズムを紹介している。

 R-CNNではまず、何らかの手法で探したい物体が存在する「候補」となる領域を検出する必要がある。その後は、それぞれの領域に対して「特徴量」を算出し、学習モデルを作り、そのモデルでパターン認識させるという流れになる。

 今回は、候補となる領域を「Selective Search」と呼ぶアルゴリズムで検出した。このアルゴリズムは簡単に言うと、隣接するピクセル(画素)を比較して、類似しているものを結合するという処理を繰り返すものだ。Selective Searchで、候補となる領域を検出した結果が図1だ。

図1 Selective Searchで候補となる領域を検出した結果

 無数の矩形領域を候補領域として検出していることが分かるだろう。ブログではこの後特徴量を算出し、特徴量などのデータを使って学習モデルを構築し、モデルに学習させ、そのモデルで自動車を検出させるという流れで進む。

 その後、同一車両に対して複数の領域を「自動車がある」と認識する問題を解決し、実際に車両を矩形で囲んだ正解画像を作成して学習データとして加えるなどのチューニングを施した結果、なかなかの確率で検出できるようになったことを紹介している。検出結果が図2だ。

図2 構築した学習モデルで自動車を検出した結果

 ここまでデータを処理しても検出できない例が残るのを見ると少し残念な気持ちになるが、ブレインパッドの担当者は考えられる原因を挙げ、解決への見通しを示している。

 一読しても何をしているのか分からない方が多いと思うが、途中で登場する「畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)」や「サポートベクターマシン(Support Vector Machine:SVM)」「Inception-v3」などの言葉を検索して、色々調べながら読むことで、ディープラーニングというものが特別な魔法のようなものではなく、膨大な計算を重ねて結果を得るものだとイメージできると思う。そのときに、昨今のコンピュータハードウェアの進化によって、膨大な計算を現実的な時間で処理できるようになっていることを思い出してほしい。ドローンがもたらすデータから得られるものはまだまだありそうだ。