alert-lib
Alert-lib
距離の推定およびアラートに関連する機能を提供するクラスが含まれています。
距離の推定
距離フィルターは、カメラからの物体の距離を推定します。
は StaticDistanceEstimator
、想定された幅 / 高さおよびカメラのプロパティを使用して、オブジェクトからのカメラの距離を決定します。 概算見積書は、デフォルトでは車や歩行者に使用されますが、ユースケースに他の物体が必要な場合は延長されることがあります。 デフォルト値の距離はメートル単位です。 カスタム値の場合、距離の単位は指定したサイズと同じになります。
const ls::SizeF sensorSize{6.2743998f, 4.7181997f};
const float focalLength(4.67f);
const ls::Size frameSize{640, 480};
std::vector<std::shared_ptr<ls::TrackedRecognition>> masterObjectRecognitions;
std::shared_ptr<ls::TrackedRecognition> trackedRecognitionPtr = std::make_shared<ls::TrackedRecognition>();
trackedRecognitionPtr->id = "example_id";
trackedRecognitionPtr->detectionLabel = "car";
trackedRecognitionPtr->trackedLocation = ls::BoundingBox(15, 15, 100, 100);
masterObjectRecognitions.push_back(trackedRecognitionPtr);
ls::StaticDistanceEstimator distanceEstimator;
distanceEstimator.estimateDistance(masterObjectRecognitions, frameSize, 0, focalLength, sensorSize);
次のリストでは、メソッドのパラメータについて説明します。
-
recognitions
- 処理する認識のリスト。 -
frameSize
- 0 回の回転で認識された画像のサイズ。 -
sensorRotation
- 各フレームの自然な向きに 90 度の倍数で時計回りに回転します。 -
focalLength
- キャプチャカメラの焦点距離 ( ミリメートル単位 ) 。 -
sensorSize
- 物理カメラセンサーのサイズ ( ミリメートル単位 ) 。
注
の距離の値 Recognition
は、すでに ML モデルから使用できる場合があります。
ROI - 関心領域
関心領域 (ROI) は、ソースイメージの領域を定義して、イメージ内の場所に基づいて検出をフィルタリングできるようにします。 たとえば、車両前方の検知のみが関連する場合、反対側の検知を削除できます。
SDK では、次のタイプのリージョンが定義されています。
- プライマリ : このリージョンタイプは通常、エゴレーンを表します
- セカンダリ : このリージョンタイプは通常、エゴレーンの両側に隣接するレーンを含むリージョンを表します
SDK では、次の方法で ROI を生成できます。
-
makeStaticRoi
: 静的 ROI は、アプリケーションによって定義された頂点に基づいて生成されます 注
静的 ROI の検証は、次の制約を満たす必要があります。
- 頂点は、左下のポイントから時計回りに並べられたポイントを持つ台形にする必要があります
- 各頂点の x および y には、イメージの幅と高さの割合を表す 0.0 ~ 1.0 の値を指定する必要があります
-
makeLaneRoi
: レーン ROI は道路車線モデルの出力に基づいて生成されます - プライマリリージョンは、 2 つのエゴレーンのマークで定義されます
- セカンダリ領域は、隣接する車線標示がある場合はそれによって定義されている
アラート
Live Sense SDK for Linux は LSDAlertManager
、このクラスを介して複数の種類のアラートをサポートしています。
入力します
エントリアラートは、検出が最初にプライマリ ROI リージョンに入ったときにアプリケーションに信号を送ります。
これらの警告は歩行者および車を助ける。 歩行者が道路に入ったとき、および別の車両が自我レーンに合流したときに、ドライバーに警告します。
レーンデパーチャー
車線逸脱警告は、対象車両が自我レーンを出発し、隣接する地域に近づいていることを示します。
レーンデパーチャーアラートには、次の 2 つの重大度があります。
-
WARNING
: 対象車両は意図的に車線を変更するのではなく、車線から逸脱している可能性があります。 -
INFO
: 対象車両が車線を逸脱しました
注
レーンデパーチャーワーニングの場合、 SDK は以下を想定しています。
- カメラは車両の中央にあり、まっすぐ前方に向いています。
- カメラを車両の一方の側に近づけると、 SDK が誤検知警告を発することがあります。
- カメラの視野は、スマートフォンの広角カメラに似ています
TTC - 衝突までの時間
Live Sense SDK for Linux は、ユーザー / ドライバーに 衝突までの時間を警告する機能を提供します。 この機能は、事故を防ぎ、ドライバーの安全を確保するのに役立ちます。 この機能は car
、car-brake-light-on
、pedestrian
、およびbicycle
に適用 されます。 衝突までの時間または TTC は、次のように計算されます。
Time to Collision (T) = -1 * d / ( Δd / Δt ) when Δd < 0
- d = オブジェクトまでの距離
- Δ D = 処理されたフレーム間のオブジェクトまでの距離の変更
- Δ T = 処理されたフレーム間の時間の変化
ls::LSDAlertManager
経路に潜在的な危険性があることをユーザーに警告するための追加のヒューリスティックが含まれています。 これには、主要車両との衝突までの時間と、車両の直行ルートに入る人々が含まれます。
次の一覧に、 TTC 値に基づいたアラートのさまざまな重大度を示します。
-
INFO
- T >2.5 秒 -
WARNING
-1.8 秒未満の場合 <T<=2.5 秒 -
ALERT
- T<=1.8 秒の場合
ls::LSDAlertManager
が完全に機能するには、次の入力が必要です。
- 使用しているカメラの特定のプロパティ。 詳細については、を参照
ls::LSDCameraProperties
してください。 - カメラの設定ごとに 1 回だけ設定する必要があります。 これには、デバイスの回転は含まれません。
- 車両の現在の速度が経由で継続的に供給
setCurrentSpeed()
されます。 ls::TrackedRecognition
連続的にフィードされたの最新コレクション。 determineAlerts()
std::vector<std::shared_ptr<ls::TrackedRecognition>> masterObjectRecognitions;
std::shared_ptr<ls::TrackedRecognition> trackedRecognitionPtr = std::make_shared<ls::TrackedRecognition>();
trackedRecognitionPtr->id = "example_id";
trackedRecognitionPtr->detectionLabel = "car";
trackedRecognitionPtr->trackedLocation = ls::BoundingBox(280, 240, 360, 300);
masterObjectRecognitions.push_back(trackedRecognitionPtr);
int frameWidth = 640;
int frameHeight = 480;
auto frameTimestamp = ls::getCurrentTimestamp();
auto managerPtr = ls::LSDAlertManager::make();
addAlertSettings(managerPtr);
auto callbackHandle = managerPtr->addCallback([](const std::vector<ls::LSDAlert>& alerts) {
});
managerPtr->determineAlerts(masterObjectRecognitions, frameWidth,frameHeight,frameTimestamp);
void addAlertSettings(const std::shared_ptr<ls::LSDAlertManager> &managerPtr) {
ls::LSDAlertSettings alertSettings;
alertSettings.useProximity = true;
alertSettings.useOnEntry = true;
alertSettings.enableInfoAlerts = true;
managerPtr->setCurrentSpeed(0);
managerPtr->setAlertSettings(alertSettings);
ls::LSDCameraProperties cameraProperties;
const ls::SizeF sensorSize{6.2743998f, 4.7181997f};
cameraProperties.setFocalLength(4.67f);
cameraProperties.setSensorSize(sensorSize);
managerPtr->setCameraProperties(cameraProperties);
}