Mapbox Vision SDK
Mapbox Vision SDKは、より良い運転体験をビルドするのに使用するツールである。 SDKは携帯電話やダッシュカメラや埋め込みナビゲーションシステムなどに付くメラでキャプチャされた画像を処理する。 SDKはこのデータを使用してドライバーあたりの環境を理解して、ドライバーにアシスタンスとARナビゲーションの機能を提供する。
• ドライバー向けのAIおよびAR機能は現在のモバイルおよび埋め込みアプリケーションで稼働する。
• ターンバイターン方式の方向とカスタムオブジェクトを使用して、拡張現実ナビゲーションをビルドする。
• 速度超過、車線逸脱、距離不保持などのカスタムアラートを作成する。
• オンデバイス上に実行するニューラルネットワークはデータプランに負担をかけずにリアルタイムでパフォーマンスを発揮する。
Mapbox Vision SDKは、デバイスのビルトインカメラを使用して、Androidデバイスにおいて道路シーンをリアルタイムで直接解釈するためのライブラリである。下記の機能がある。
• 規制および警告サインを分類と表示する
• 車両、歩行者、道路標識、信号を検出するオブジェクト
• 14つの異なるクラスへの道路のセマンティックセグメンテーション
• グローバルカバレッジを備えた拡張現実ナビゲーション
外部カメラのサポート:WiFiまたは有線接続
直接に対話できるVision関連のSDKは3つがあって、Vision Coreモジュールに依存する。
利用可能なSDK
• Vision SDK (vision) は、主要なSDKで、全てのMapbox Visionのアプリケーションに必要である。 Vision SDKのコンポーネントはカメラの構成、分類の表示、検出、セグメンテーションレイヤー、車線特徴抽出、その他のインターフェイスなどを有効にする。VisionはVisionCoreで実行されているリアルタイムの推論にアクセスする。
• Vision AR SDK (vision-ar) は、Visionのアドオンモジュールで、カスタマイズ可能な拡張現実体験を作成するのに使用される。道路舗装材(シェーダー、テクスチャ)、道路ジオメトリ、オクルージョン、カスタムオブジェクトなどのユーザーのルート視覚化を構成できる。
• Vision Safety SDK (vision-safety) は、Visionのアドオンモジュールで、速度超過、近くの車両、サイクリスト、歩行者、車線逸脱などのカスタマイズ可能なアラートを作成するのに使用される。
コアロジック
Vision Coreは、システムのコアロジックで、すべての機械学習モデルを含む。 上記に列記されている何れかのVision関連のSDKをプロジェクトに取り込むと共に、VisionCoreが自動的に導入されるようになる。
要求
iOS:
iOS 向けVision SDKはSwift 4.2で書かれ、iPhone 6s以降のiOS 11.2以上で使用できる。
SDKの構成
iOS
SDKをプロジェクトにダウンロード・インポートした後、Xcodeプロジェクトにて下記のように設定する。
Mapboxアクセストークンを設定する
Mapbox APIsにはMapboxアカウントおよびアクセストークンが必要である。
1. Mapboxアカウントページからアクセストークンを取得する。
2. プロジェクトエディターにて、アプリケーション対象を選択して、Infoタブに遷移する。
3. Custom iOS Target Propertiesセクションの下に、 アクセストークンにMGLMapboxAccessTokenを設定する。
設定の権限
1. SDKがユーザーの位置を追跡するために、
NSLocationWhenInUseUsageDescriptionとNSLocationAlwaysAndWhenInUseUsageDescriptionを位置使用方法の説明に設定する。
2. NSCameraUsageDescriptionをカメラ使用方法の説明に設定する。
ViewControllerの設定
必須: 関連のあるモジュールをインポートし、MapboxVisionが必要になる。
1. import MapboxVision
2. // OPTIONAL: include Vision AR functionality
3. import MapboxVisionAR
4. // OPTIONAL: include Vision Safety functionality
5. import MapboxVisionSafety
必須: ビデオソースを初期化し、それを使用してVisionManagerのインスタンスを作成する。
1. let videoSource = CameraVideoSource()
2. let visionManager = VisionManager.create(videoSource: videoSource)
任意: ARイベントにサブスクライブする場合は、VisionARManagerを作成する。
1. // Create AR module
2. // `self` should implement `VisionARManagerDelegate` protocol
3. let visionARMAnager = VisionARManager.create(visionManager: visionManager, delegate: self)
任意: セーフティイベントにサブスクライブする場合は、VisionSafetyManagerを作成する。
1. // Create Safety module
2. // `self` should implement `VisionSafetyManagerDelegate` protocol
3. let visionSafetyManager = VisionSafetyManager.create(visionManager: visionManager, delegate: self)
必須: VisionManagerのインスタンスで送信するイベントを制御する。
1. videoSource.start()
2. // `self` should implement `VisionManagerDelegate` protocol
3. visionManager.start(delegate: self)
4. visionManager.stop()
必須: 不要になるリソースを片づける。
1. videoSource.stop()
2. visionManager.stop()
3.
4. // AR and/or Safety should be destroyed first
5. visionARManager.destroy()
6. visionSafetyManager.destroy()
7.
8. // Finally destroy instance of `VisionManager`
9. visionManager.destroy()
デバイスの設定
フレームワークのインストールに加えて、車両にデバイスをセットアップする必要がある。マウントを選択して設定する際に、考慮すべき事項は以下通りである。
• 一般的に、マウントが短ければ、振動は少なくなる。フロントガラスをママウンティングするかダッシュボードをマウンティングするか、はどちらも良い。
• バックミラーの近くまたは背後に電話を置く。マウントの設置場所によって制限が違う。
• 携帯電話のカメラビューが遮られていないかを確認する。