MCPcopy Create free account
hub / github.com/Smorodov/Multitarget-tracker / InitTracker

Method InitTracker

example/examples.h:483–543  ·  view source on GitHub ↗

\brief InitTracker \param frame \return

Source from the content-addressed store, hash-verified

481 /// \return
482 ///
483 bool InitTracker(cv::UMat frame) override
484 {
485 if (!m_trackerSettingsLoaded)
486 {
487 bool useDeepSORT = true;
488 if (useDeepSORT)
489 {
490#ifdef _WIN32
491 std::string pathToModel = "../../data/";
492#else
493 std::string pathToModel = "../data/";
494#endif
495
496 m_trackerSettings.m_embeddings.emplace_back(pathToModel + "reid/osnet_x0_25_msmt17.onnx",
497 pathToModel + "reid/osnet_x0_25_msmt17.onnx",
498 cv::Size(128, 256),
499 std::vector<objtype_t>{ TypeConverter::Str2Type("person"), TypeConverter::Str2Type("car"), TypeConverter::Str2Type("bus"), TypeConverter::Str2Type("truck"), TypeConverter::Str2Type("vehicle") });
500
501 std::array<track_t, tracking::DistsCount> distType{
502 0.f, // DistCenters
503 0.f, // DistRects
504 0.5f, // DistJaccard
505 0.f, // DistHist
506 0.5f, // DistFeatureCos
507 0.f // DistMahalanobis
508 };
509 if (!m_trackerSettings.SetDistances(distType))
510 m_logger->error("SetDistances failed! Absolutly summ must be equal 1");
511 }
512 else
513 {
514 m_trackerSettings.SetDistance(tracking::DistCenters);
515 }
516
517 m_trackerSettings.m_kalmanType = tracking::KalmanLinear;
518 m_trackerSettings.m_filterGoal = tracking::FilterRect;
519 m_trackerSettings.m_lostTrackType = useDeepSORT ? tracking::TrackNone : tracking::TrackCSRT; // Use visual objects tracker for collisions resolving. Used if m_filterGoal == tracking::FilterRect
520 m_trackerSettings.m_matchType = tracking::MatchHungrian;
521 m_trackerSettings.m_useAcceleration = false; // Use constant acceleration motion model
522 m_trackerSettings.m_dt = m_trackerSettings.m_useAcceleration ? 0.05f : 0.4f; // Delta time for Kalman filter
523 m_trackerSettings.m_accelNoiseMag = 0.2f; // Accel noise magnitude for Kalman filter
524 m_trackerSettings.m_distThres = useDeepSORT ? 0.7f : 0.8f; // Distance threshold between region and object on two frames
525#if 0
526 m_trackerSettings.m_minAreaRadiusPix = frame.rows / 20.f;
527#else
528 m_trackerSettings.m_minAreaRadiusPix = -1.f;
529#endif
530 m_trackerSettings.m_minAreaRadiusK = 0.8f;
531 m_trackerSettings.m_maximumAllowedLostTime = 2.; // Maximum allowed skipped frames
532 m_trackerSettings.m_maxTraceLength = 2.; // Maximum trace length
533 }
534 m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("car"), TypeConverter::Str2Type("bus"), true);
535 m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("car"), TypeConverter::Str2Type("truck"), true);
536 m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("bus"), TypeConverter::Str2Type("truck"), true);
537 m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("person"), TypeConverter::Str2Type("bicycle"), true);
538 m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("person"), TypeConverter::Str2Type("motorbike"), true);
539
540 m_tracker = BaseTracker::CreateTracker(m_trackerSettings);

Callers

nothing calls this directly

Calls 3

SetDistancesMethod · 0.80
SetDistanceMethod · 0.80
AddNearTypesMethod · 0.80

Tested by

no test coverage detected