\brief InitTracker \param frame \return
| 834 | /// \return |
| 835 | /// |
| 836 | bool InitTracker(cv::UMat frame) override |
| 837 | { |
| 838 | if (!m_trackerSettingsLoaded) |
| 839 | { |
| 840 | bool useDeepSORT = true; |
| 841 | if (useDeepSORT) |
| 842 | { |
| 843 | #ifdef _WIN32 |
| 844 | std::string pathToModel = "../../data/"; |
| 845 | #else |
| 846 | std::string pathToModel = "../data/"; |
| 847 | #endif |
| 848 | |
| 849 | m_trackerSettings.m_embeddings.emplace_back(pathToModel + "reid/osnet_x0_25_msmt17.onnx", pathToModel + "reid/osnet_x0_25_msmt17.onnx", |
| 850 | cv::Size(128, 256), |
| 851 | std::vector<objtype_t>{ TypeConverter::Str2Type("person"), TypeConverter::Str2Type("car"), TypeConverter::Str2Type("bus"), TypeConverter::Str2Type("truck"), TypeConverter::Str2Type("vehicle") }); |
| 852 | |
| 853 | std::array<track_t, tracking::DistsCount> distType{ |
| 854 | 0.f, // DistCenters |
| 855 | 0.f, // DistRects |
| 856 | 0.5f, // DistJaccard |
| 857 | 0.f, // DistHist |
| 858 | 0.5f, // DistFeatureCos |
| 859 | 0.f // DistMahalanobis |
| 860 | }; |
| 861 | if (!m_trackerSettings.SetDistances(distType)) |
| 862 | m_logger->error("SetDistances failed! Absolutly summ must be equal 1"); |
| 863 | } |
| 864 | else |
| 865 | { |
| 866 | m_trackerSettings.SetDistance(tracking::DistCenters); |
| 867 | } |
| 868 | |
| 869 | //m_trackerSettings.SetDistance(tracking::DistCenters); |
| 870 | m_trackerSettings.m_kalmanType = tracking::KalmanLinear; |
| 871 | m_trackerSettings.m_filterGoal = tracking::FilterCenter; |
| 872 | m_trackerSettings.m_lostTrackType = tracking::TrackKCF; // Use visual objects tracker for collisions resolving. Used if m_filterGoal == tracking::FilterRect |
| 873 | m_trackerSettings.m_matchType = tracking::MatchHungrian; |
| 874 | m_trackerSettings.m_dt = 0.3f; // Delta time for Kalman filter |
| 875 | m_trackerSettings.m_accelNoiseMag = 0.2f; // Accel noise magnitude for Kalman filter |
| 876 | m_trackerSettings.m_distThres = 0.8f; // Distance threshold between region and object on two frames |
| 877 | m_trackerSettings.m_minAreaRadiusPix = frame.rows / 20.f; |
| 878 | m_trackerSettings.m_maximumAllowedLostTime = 2.; // Maximum allowed skipped frames |
| 879 | m_trackerSettings.m_maxTraceLength = 5.; // Maximum trace length |
| 880 | } |
| 881 | //m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("car"), TypeConverter::Str2Type("bus"), false); |
| 882 | //m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("car"), TypeConverter::Str2Type("truck"), false); |
| 883 | //m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("person"), TypeConverter::Str2Type("bicycle"), true); |
| 884 | //m_trackerSettings.AddNearTypes(TypeConverter::Str2Type("person"), TypeConverter::Str2Type("motorbike"), true); |
| 885 | |
| 886 | m_tracker = BaseTracker::CreateTracker(m_trackerSettings); |
| 887 | |
| 888 | return true; |
| 889 | } |
| 890 | |
| 891 | /// |
| 892 | /// \brief DrawData |
nothing calls this directly
no test coverage detected