宙畑 Sorabatake

Tellus

駐車場検知ツール「Tellus VPL」のα版がTellusにて無料公開!検知結果をもとにエリア訪問を実施してみた

駐車場として利用できそうな場所を衛星データから検知するツール「TellusVPL」のα版が8月19日に公開されました。akippa株式会社、株式会社Ridge-i、さくらインターネット株式会社が共同して開発をしていたこのツールについて、検知したエリアに実際に訪問し、駐車場として使える場所を検出できていたのか検証も行ってみました。

1.駐車場検知ツール「Tellus VPL」α版を無料提供開始

さくらインターネット株式会社は、衛星データとAI画像認識技術を活用して新規駐車場用スペースを自動検出する駐車場検知ツール「Tellus VPL」のα版を、Tellusの公式ツールとして2021年8月19日より無料で提供を開始しました。

「Tellus VPL」は、AI・ディープラーニング技術のコンサルティングと開発を行う株式会社Ridge-i (リッジアイ)駐車場予約アプリ「akippa」を運営するakippa株式会社(あきっぱ)、さくらインターネットの3社で研究開発したものです。

プレスリリースはこちら

今回は、「Tellus VPL」が生まれた背景や、Tellusでの利用方法、実際に駐車場として使えそうな場所が検知できていたかエリア訪問した結果までご紹介します。

2.akippaの取り組みと今までの課題

そもそも「Tellus VPL」の開発背景には、akippaが抱える課題がありました。

akippaは、全国の空いている月極や個人の駐車場、空き地など全国累計46,000拠点(2021年8月時点)を駐車場として一時利用できるシェアリングサービスを提供しています。

akippaのサービス概要 Credit : akippa

新規駐車場用スペース開拓は、地図で候補地を探して、担当が現地に出向いて営業活動を行う場合が多く、かなりのコストを要します。

衛星データから新規駐車場用スペースとして活用できる候補地を見当がつけられるようになることで、新規駐車場開拓における営業活動の効率化が期待できるため、昨年度より、akippa、Ridge-i、さくらインターネットの3社で開発を進めていました。

昨年度のプレスリリース

「Tellus SPACE xData Fes. -Online Weeks 2020-」でのトークセッションの様子

3.「Tellus VPL」α版の使い方

駐車場として使える場所を検知する「Tellus VPL」のα版は、実際にどのように利用することが可能か紹介していきましょう。

TellusではTellusOSのアドインとAPIの2つの方法で利用することができます。

★早速、Telllusマーケットから無料で購入する※Tellusのアカウントが必要です。
・Tellus VPL(アドイン)
・Tellus VPL(API)

・Tellus OSのアドインを利用した使い方

まず、TellusにログインをしてTellusマーケットから「Tellus VPL(アドイン)」を購入します。

アドインを購入すると「Tellus OS」で右上の「マイツール」の一覧に「Tellus VPL」が追加されていることが確認できます。

調べたいエリアをOS上に表示させ、「Tellus VPL」を選択したら、「新たに検知」を選択しましょう。

次に利用する衛星を選択します。
「Tellus VPL」では、2021年8月現在、「ASNARO-1」と「ALOS-3相当データ」のどちらかを利用することができます。

検知に利用する衛星データをリストから選択し、地図上に表示された赤い枠の中から任意の場所をクリックすると黄色い枠が表示されます。

「検知開始」をクリックすると駐車場として使えそうな場所の検知を開始します。

数分後、検知が終了すると、選択した範囲内に駐車場として利用できる候補地が青い枠として画像上に表示されます。

・APIでの利用方法

解析環境をお持ちの方は、解析環境でAPIを使って利用することも可能です。
以下にサンプルコードを紹介しますが、詳細はツールの詳細のAPIリファレンスをご確認ください。

#事前準備として、APIを取得する関数を作ります。

import requests, json
TOKEN = '(APIアクセストークン)'
BASE_URL = 'https://tellusvpl.tellusxdp.com/api'
# アクセストークン取得
def get_market_token(payload={}):
   url = 'https://www.tellusxdp.com/api/manager/v2/auth/token/'
   headers = {
       'Authorization': 'Bearer ' + TOKEN,
       'Content-type': 'application/json'
   }
   r = requests.post(url, headers=headers, data=json.dumps(payload))
   if r.status_code is not requests.codes.ok:
       print(r.content)
   return json.loads(r.content)
ret = get_market_token({
   'product_id': '07607790-566c-40fd-8a69-953050a8d71d'
})
market_token = ret['token']
print(market_token)

#解析する際に利用するシーンを検索します。

# 検索
def search(market_token, satellite, left_bottom_lon, left_bottom_lat, right_top_lon, right_top_lat):
   url = BASE_URL + '/v1/{}/scenes?left_bottom_lon={}&left_bottom_lat={}&right_top_lon={}&right_top_lat={}'.format(satellite, left_bottom_lon, left_bottom_lat, right_top_lon, right_top_lat)
   headers = {
       'Authorization': 'Bearer ' + market_token
   }
   r = requests.get(url, headers=headers)
   if r.status_code is not requests.codes.ok:
       print(r.status_code)
   return json.loads(r.content)
ret = search(market_token, 'asnaro1', 139.537, 35.576, 140.042, 35.773)
print(ret)

#検索したシーンから対象シーンの詳細を取得します。

# シーン詳細取得
def get_scene(market_token, satellite, scene_id):
   url = BASE_URL + '/v1/{}/scenes/{}'.format(satellite, scene_id)
   headers = {
       'Authorization': 'Bearer ' + market_token
   }
   r = requests.get(url, headers=headers)
   if r.status_code is not requests.codes.ok:
       print(r.status_code)
   return json.loads(r.content)
ret = get_scene(market_token, 'asnaro1', '20150219020604000_20181225122231927_AS1_D01_PSH')
print(ret)

#対象シーンの検知したい位置(検知範囲の中央座標)を指定し、駐車場の検知を開始します。

# 検知開始
def start_work(market_token, payload={}):
   url = BASE_URL + '/v1/works'
   headers = {
       'Authorization': 'Bearer ' + market_token
   }
   r = requests.post(url, headers=headers, data=json.dumps(payload))
   if r.status_code is not requests.codes.ok:
       print(r.status_code)
   return json.loads(r.content)
ret = start_work(market_token, {
   'satellite': 'asnaro1',
   'scene_id': '20150219020604000_20181225122231927_AS1_D01_PSH',
   'lon': 139.666,
   'lat': 35.705,
})
print(ret)
work_id = ret['data']['work_id']

検知結果一覧を取得します。
(前項でwork_idが返却されるため、必須ではない)

# 検知結果一覧取得
def get_work_list(market_token):
   url = BASE_URL + '/v1/works'
   headers = {
       'Authorization': 'Bearer ' + market_token
   }
   r = requests.get(url, headers=headers)
   if r.status_code is not requests.codes.ok:
       print(r.status_code)
   return json.loads(r.content)
ret = get_work_list(market_token)
print(ret)

取得した検知結果一覧より、work_idを指定し、解析結果(GeoJSON形式)をダウンロードします。解析環境上では可視化できないので、DLしてTellusOSにimportして可視化ください。

# GeoJSONダウンロード
def download_geojson(market_token, name):
   url = BASE_URL + '/v1/works/{}/geojson'.format(work_id)
   headers = {
       'Authorization': 'Bearer ' + market_token
   }
   r = requests.get(url, headers=headers)
   if not r.status_code == requests.codes.ok:
       r.raise_for_status()
   with open(name, "wb") as f:
       f.write(r.content)
download_geojson(market_token, 'result.geojson')

4.駐車場として利用できそうな場所を本当に検知できているのか

では、この「Tellus VPL」のα版で検知された場所は本当に駐車場として使えそうな場所を検知できているのでしょうか。

今回、「Tellus VPL」のα版をリリースするにあたり、akippaの本プロジェクト責任者の田中氏と、駐車場開拓パートナーの営業担当である菊池氏が、実際に解析結果で表示された場所に訪問するのに宙畑編集部も同行させていただき、実際に検知した場所が駐車場候補として適しているのか検証しに行きました。

今回エリア訪問した場所は、三軒茶屋と池尻周辺のエリアです。

三軒茶屋・池尻エリアの検知結果

7月某日、三軒茶屋に集合し、打合せからスタートしました。

宙畑:まずこの検知結果を見てみて、新規駐車場用スペースを検知できていそうかどうなのか、最初の印象はいかがでしょうか。

田中:実際に行ってみないともちろんわからないですが、過去の経験則からもっと多くの駐車場があるのではという印象があります。
営業先の候補地が全て網羅されている訳では無さそうですね。

菊池:そうですね。都内だと2~3台くらいしか止められないような規模の小さな駐車場から10台以上止められる大型の駐車場もたくさんあるので、検知されてない場所にも何かしら候補地はあるはずです。

田中:衛星データで小さい駐車場まで網羅して検知するのは難しいと思いますが、この検知結果がどのくらいの大きさの駐車場をピックアップしているのか気になるところです。

印刷した検知結果を見て回る順番を検討する田中氏(右)と菊池氏(左)

宙畑:なるほど。どのくらいの大きさの駐車場を検知できているのかが今回のポイントになりそうですね。
通常も訪問する際には地図を見ながら、訪問先の候補を絞ってからまわるんですか?

菊池:Googleマップをみて、どの辺りを回るかはある程度決めてから訪問しに行きます。
航空写真も見ることができて、行く前にどんな場所なのかある程度分かるので使っています。

田中:営業によって事前の調べ方も異なりますが、スマホやタブレットで調べてから訪問する営業は多いですね。
その場合、マップを見ながらどこに駐車場があるか目視で探さないといけないので、今回の「Tellus VPL」のα版で、候補となる場所が営業が地図を眺めながら目視で探す前に表示されることで、パッと候補がどこにあるのか分かるのは、アタック先選定をする上で参考になります。

宙畑:初めて訪問するところでも回る順番を決めやすくなりますね。今回どのように回ってみますか?

田中:この少し大きな枠になっているところを回ってみましょうか。
地図で見ると、公園や学校が多そうなエリアなので、駐車場ではなくて広場や校庭が検知されていないかも気になります。

菊池:途中検知されてない駐車場がどのくらいあるかも見ながら回ってみましょう。

三軒茶屋駅をスタートし、赤い線で引いた順番で回っていくことに

・検知箇所1か所目

宙畑:ここが検知した場所の1つで間違いなさそうです。空地になっていてまさに駐車場に使える場所と言えるのではないでしょうか?

田中:ここは完全に営業候補となる場所ですね!
こんな広い場所となるとakippa以外のマンションデベロッパーなど、空地を探していらっしゃる事業者様がもうすでにアプローチしている可能性も非常に高いですが、検知できてる場所としては間違いなく合格です。

菊池:ここをもし取れたら大きな受注に繋がりますね!

宙畑:まさに空き地を検知できてましたね。よかった!

・検知箇所2か所目

宙畑:2箇所目もけっこう大きな駐車場でした!

菊池:空いていそうな場所もあるし完全に営業先候補ですね!

田中:都内で脇道入った先にこの大きさの駐車場があるとはなかなか思えないので、こういうところが検知できるのであれば、営業に行く前にこの大きな駐車場を目指すことにして、道中に検知できていない場所があったとしても、この場所に行くついでに道中の別の営業先の候補も探してみるという使い方ができそうです。

宙畑:大きめに検知できている場所は今のところしっかり営業先候補として検知できているようですね。

・検知箇所3か所目

宙畑:次のは大きい検知場所と小さい検知場所が近くにありますね。小さいほうはどうやらここですね。

田中:なにかの敷地内のようですが、あまり使われてないようですし、こういう場所も営業先候補に充分なります。
木があるのが駐車場として使うのにハードルにはなりますが、こういう場所が検知されても全く問題ないです。

宙畑:3か所目の大きく検知されていた場所は前の2つに比べても断然広いですね。

菊池:ここも受注するのは相当難しい場所だとは思いますが、場所としてはすごくいい場所ですね。

田中:検知できてるところは営業先候補になるところがしっかり検知できているみたいですね。
公園や学校をしっかり外して駐車場に使える場所を検知しているのは嬉しいです。

・検知箇所4か所目

宙畑:ここの小さい検知エリアは、この空地が検知されているみたいですね。

田中:建設予定があるようですが、現在空地なのは間違いないので、これも検知されている場所としては合格ですね。

・VPLで検知できなかった営業先の候補地

これまで紹介したように、検知できていた場所は、しっかりと営業先候補になる場所でした。
しかし、これらの場所を訪問する途中にも、営業先候補になる場所が見つかりました。

検知できていた場所に比べてどのような場所が検知できていなかったのかもいくつか紹介します。

大通り沿いに三軒茶屋駅から池尻方面に歩いていく途中、脇道に入るといくつかの駐車場を見つけることができました。

宙畑:いくつも駐車場が見つかりましたが、これらは残念ながら「Tellus VPL」で検知できていませんでしたね。

田中:そうですね。本当は「Tellus VPL」でこのくらいの広さの駐車場が検知できていると大変ありがたいです。

宙畑:時間貸しと月極といったように駐車場にもタイプがありますが、営業しやすいタイプというのはありますか?

菊池:どちらかというと月極ですね。
時間貸しのタイプはすでに短時間での駐車場のシェアリングサービスをakippaと同じようにおこなっているので、月極駐車場の方が空いていそうなスペースがあった場合にその場所がakippaがアプローチできる可能性が高く、管理者の連絡先を確認して「営業してみよう」となります。
個人宅で経営している駐車場の場合は、家に隣接している場合も多いので、飛び込み営業することもありますよ。

宙畑:こうやってみると1本脇道に入るだけで、駐車場ってたくさんあるものなんですね。駐車場の運用方法が場所によって全然違うというのもわかりました。

検索結果と照らし合わしながら駐車場を回る様子

5.今後、本ツールおよび衛星データに対してakippaが期待すること

宙畑:今回、三軒茶屋から池尻エリアの解析結果から実際に見て回って、実証結果としてはいかがでしたか?

田中:検知されていた場所は、しっかりakippaの営業先候補になる場所でしたので大変良かったと思います。
今回のような場所が検知されていれば、知らない場所を営業しに行くときにどのあたりを回るか参考にできると思います。

菊池:ただ、途中の空き地や駐車場で検知できていてほしい場所もありましたね。

田中:そうですね。1~2台くらいしか置けない狭いスペースを検知することは難しいかもしれませんが、10台弱くらいの駐車場などは検知できているといいなというのが正直なところですかね。

菊池:とは言え、今回の検知結果でも検知されてないエリアには、検知されるような広めの駐車場候補地はないということだと思うので、別のところを当たるなど営業先を検討する際の参考になるとは思いました。
今日みたいに猛暑の夏の時期だと、いかに効率的に回るかも重要なので、営業先を絞り込むのに地図を目視で見ながら判断するより効率よくできそうです。

田中:まだ衛星データも充分にエリアを網羅できているわけでもないので、すぐにすべての営業に使ってもらうのは難しいとは思っています。
これから衛星データが充足していけば、データが増えることで機械学習の精度を高めることにもつながり、営業する際にもっと参考にできるツールにしていけると思いました。
あとは、機能面でいうと位置情報機能や、検知場所をタップするとその場所の画像が表示できるようになるなど、こういうのがあるといいなという機能もいろいろ見えてきたのも今回の検証での成果と言えると思います。

宙畑:今回は、同行させていただきありがとうございました。

6.まとめ

akippa、Ridge-i、さくらインターネットが共同研究の上、開発を進めていた「Tellus VPL」の検知結果を実証してみたところ、駐車場として利用できそうな場所を検出できていると確認することができました。

一方で、検知した場所以外にも駐車場に使えそうな場所は数多く存在していました。
今回利用した衛星データが観測したタイミングでは空き地ではなかったのか、衛星が撮像した時の太陽光の角度や天気などの条件で検知できてないところがあったのか、ツールとして改善の余地があります。

今後衛星データが増えていき、アルゴリズムの精度を向上するなど、ツールの性能をより高めていくことで、さらに使いやすいツールになっていく可能性も感じることができました。

衛星データを利用し今回のような実際の土地利用を検証していくには、現地が実際にどのようになっているか確認することも大変重要です。解析と検証を続けていき、akippaの事業に貢献していくことができるか、今後も引き続きTellus VPLを利用して営業に活用していただければと思います。

★「Tellus VPL」の利用はこちらから
・Tellus VPL(アドイン)
・Tellus VPL(API)