alert-lib

Alert-lib は、カメラレイヤーの上に構築されたユーティリティを含むライブラリ で、距離の推定、速度の計算、警告、 AR オーバーレイに関連する機能を提供します。

距離の推定

距離フィルターは、カメラからの物体の距離を推定します。

StaticDistanceEstimator 、想定された幅 / 高さおよびカメラのプロパティを使用して、オブジェクトからのカメラの距離を決定します。 概算見積書は、デフォルトでは車や歩行者に使用されますが、ユースケースに他の物体が必要な場合は延長されることがあります。 デフォルト値の距離はメートル単位です。 カスタム値の場合、距離の単位は指定したサイズと同じになります。

次のリストでは、メソッドのパラメータについて説明します。

  • recognitions - 処理する認識のリスト。
  • frameSize - 0 回の回転で認識された画像のサイズ。
  • sensorRotation - 各フレームの自然な向きに 90 度の倍数で時計回りに回転します。
  • focalLength - キャプチャカメラの焦点距離 ( ミリメートル単位 ) 。
  • sensorSize - 物理カメラセンサーのサイズ ( ミリメートル単位 ) 。

カメラのピクセルバッファの焦点距離は、次のコードを使用して取得できます。

extension CMSampleBuffer {
    /// Extracts the metadata dictionary from a `CMSampleBuffer` extension.
    ///  (for example, EXIF: `Aperture`, `Brightness`, `Exposure`, `FocalLength`, etc)
    ///
    /// - Parameter sampleBuffer: represents the sample buffer to be processed.
    /// - Returns: Returns the metadata dictionary from the provided sample buffer.
    public func metadata() -> [String : Any]? {
        if let cfmetadata = CMCopyDictionaryOfAttachments(allocator: kCFAllocatorDefault, target: self, attachmentMode: kCMAttachmentMode_ShouldPropagate) {
            if let metadata = cfmetadata as? [String : Any] {
                return metadata
            }
        }
        return nil
    }
}
let staticDistance = LSDStaticDistanceEstimator()

var recognitions :   [LSDRecognizedObject] =  [LSDRecognizedObject]()

let objectRecognition = LSDRecognizedObject()
objectRecognition.uuid = UUID()
objectRecognition.label = "type"
objectRecognition.bbox = CGRect(x: 100, y: 100, width: 250, height: 250)
recognitions.append(objectRecognition)

let sensorSize = CGSize(width: 5.6, height: 4.2) //DISCLAIMER : iPhone XR/ 11

staticDistance.estimateDistance(recognitions: recognitions, frameSize: CGRect(x: 0, y: 0, width: 640, height: 480), sensorRotation: 0, focalLength: 3.99, sensorSize: sensorSize)

の距離の値 Recognition は、すでに ML モデルから使用できる場合があります。

ROI - 関心領域

関心領域 (ROI) は、ソースイメージの領域を定義して、イメージ内の場所に基づいて検出をフィルタリングできるようにします。 たとえば、車両前方の検知のみが関連する場合、反対側の検知を削除できます。

SDK では、次のタイプのリージョンが定義されています。

  • プライマリ : このリージョンタイプは通常、エゴレーンを表します
  • セカンダリ : このリージョンタイプは通常、エゴレーンの両側に隣接するレーンを含むリージョンを表します

SDK では、次の方法で ROI を生成できます。

  • makeStaticRoi: 静的 ROI は、アプリケーションによって定義された頂点に基づいて生成されます

    静的 ROI の検証は、次の制約を満たす必要があります。

    • 頂点は凸多角形を形成する必要があります
    • 各頂点の x および y には、イメージの幅と高さの割合を表す 0.0 ~ 1.0 の値を指定する必要があります
  • makeLaneRoi: レーン ROI は道路車線モデルの出力に基づいて生成されます
    • プライマリリージョンは、 2 つのエゴレーンのマークで定義されます
    • セカンダリ領域は、隣接する車線標示がある場合はそれによって定義されている

アラート

Live Sense SDK は LSDAlertManager 、このクラスを介して複数の種類のアラートをサポートしています。

入力します

エントリアラートは、検出が最初にプライマリ ROI リージョンに入ったときにアプリケーションに信号を送ります。

これらの警告は歩行者を支援し、歩行者が道路に入ったときにドライバーに警告し、車両は別の車両が自我レーンに合流したことを警告する。

レーンデパーチャー

この機能はベータ版です。

車線逸脱警告は、対象車両が自我レーンを出発し、隣接する地域に侵入していることを示します。

レーンデパーチャーアラートには、次の 2 つの重大度があります。

  • WARNING: 対象車両は意図的に車線を変更するのではなく、車線から逸脱している可能性があります。
  • INFO: 対象車両が車線を逸脱しました

レーンデパーチャーワーニングの場合、 SDK は以下を想定しています。

  • カメラは車両の中央にあり、まっすぐ前方に向いています。
    • カメラを車両の一方の側に近づけると、 SDK が誤検知警告を発することがあります。
  • カメラの視野は、スマートフォンの広角カメラに似ています
    • 超広角レンズは誤検知を引き起こします。

TTC - 衝突までの時間

Live Sense SDK は、ユーザー / ドライバーに 衝突までの時間を警告する機能を提供します。 この機能は、事故を防ぎ、ドライバーの安全を確保するのに役立ちます。 この機能は、車両の想定された経路での車両、カーブレーキライトオン、および歩行者の検知に適用されます。 衝突までの時間( TTC )は、次のように計算されます。

Time to Collision (T) = -1 * d / ( Δd / Δt ) when Δd < 0

  • d = オブジェクトまでの距離
  • Δ D = 処理されたフレーム間のオブジェクトまでの距離の変更
  • Δ T = 処理されたフレーム間の時間の変化
  • Speed of the vehicle - デバイスの位置情報サービスによって提供されます。 Apple meters per secondCoreLocation Framework で測定された、デバイスの瞬間的な速度。

    速度が負または無限の場合、最新の GPS 座標読み取り値と前の GPS 座標読み取り値の間の距離を使用して、速度 = 距離 / 時間の式で速度が計算されます ( 単位 : メートル ) 。

  • Distance to the object - を使用して提供されます StaticDistanceEstimator

各検出と視点の間の距離が計算さ alertDistanceれ、指定した距離を超えるとアラートが送信されます。

この計算は、オブジェクトまでの距離が減少している場合にのみ適用されます。 それ以外の場合、 TTC は無限であり、アラートは生成されません。

LSDAlertManager 経路に潜在的な危険性があることをユーザーに警告するための追加のヒューリスティックが含まれています。 これには、主要車両との衝突までの時間と、車両の直行ルートに入る人々が含まれます。

次の一覧に、 TTC 値に基づいたアラートのさまざまな重大度を示します。

  • INFO - T >2.5 秒
  • WARNING -1.8 秒未満の場合 <T<=2.5 秒
  • ALERT - T<=1.8 秒の場合

これらはデフォルトで設定されている値です。 警告および警告の値は、の次のプロパティによって変更でき LSDAlertSettingsます。

  • timeToCollisionAlert (デフォルトは 1.8s)
  • timeToCollisionWarning (デフォルトは 2.5s)

LSDAlertManager 完全に機能するには、次の入力が必要です。

  • LSDAlertSettings - この方法の詳細については 、 API リファレンス を参照してください
  • 通常はデバイスの位置情報サービスによって提供 currentSpeedされる車両の現在の速度が、経由で継続的に供給されます。
  • LSDRecognizedObject 連続的にフィードされたの最新コレクション。 determineAlerts()
// Setup alertManager
let alertManager : LSDAlertManager = LSDAlertManager()
let entryTypes : [String] = ["car-brake-light-on", "pedestrian", "car"]
var recognitions :   [LSDRecognizedObject] =  [LSDRecognizedObject]()

// Enable entry alerts for test
let  alertSettings : LSDAlertSettings = LSDAlertSettings()
alertSettings.useOnEntry = true
alertManager.alertSettings = alertSettings

//Set Roi
var roiFilter : ROI = ROI()

let defaultRoiPoints = [
       Point2f(x: 0.10, y: 0.95),
       Point2f(x: 0.46, y: 0.15),
       Point2f(x: 0.54, y: 0.15),
       Point2f(x: 0.90, y: 0.95)
   ]

let currentPixelHeight = pixelBufferWidth
let currentPixelWidth = pixelBufferHeight

if let roi = roiFilter.makeStaticRoi(withWidth: Int32(currentPixelWidth), frameHeight: Int32(currentPixelHeight), primaryPoints: defaultRoiPoints, secondaryPoints: defaultRoiPoints){
  //Pass RoI to alertManager
               alertManager.setRoi(roi: roi)
  }


let objectRecognition = LSDRecognizedObject()
objectRecognition.uuid = UUID()
objectRecognition.label = "type"
objectRecognition.bbox = CGRect(x: 100, y: 100, width: 250, height: 250)
objectRecognition.frameTimeStamp = Date()
recognitions.append(objectRecognition)

// Add camera properties
let sensorSize = CGSize(width: 5.6, height: 4.2) //DISCLAIMER : iPhone XR/ 11
let cameraProperties = LSDCameraProperties(lensFacing: 0, sensorOrientation: UIDevice.current.orientation.isLandscape ? 90 : 0, sensorSize:sensorSize ,focalLength: Float(3.99), horizontalFov: 0.0, verticalFov: 0.0)
alertManager.cameraProperties = cameraProperties
// Entry type alerts
let alerts : [LSDAlert] = alertManager.determineAlerts(recognitions: recognitions, frameWidth: 640, frameHeight: 480, datetime: 1)

」に一致する結果は 件です

    」に一致する結果はありません