Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor code according to proposed structure #986

Merged
merged 19 commits into from
Jul 10, 2023

Conversation

henriksod
Copy link
Contributor

@henriksod henriksod commented Jul 9, 2023

I have refactored the structure according to the proposal in the wiki and according to the discussion here.

I have removed TestRequirements, see this discussion why. If we want to keep it, I can reintroduce it.

I have not done the following:

Another thought is that we could easily create an abstract TrackingMethod class that all the trackers inherit from, that has the required interfaces defined. This won't change the functionality, but allows code to be re-used if needed. (see ocsort and strongsort)

@henriksod
Copy link
Contributor Author

Ready to merge after review @mikel-brostrom

@mikel-brostrom
Copy link
Owner

mikel-brostrom commented Jul 10, 2023

Wow. This is huge. Give me a few days to go through it. But won't have time the coming 2-3 days.

@mikel-brostrom
Copy link
Owner

It is 🔥

@henriksod
Copy link
Contributor Author

Fixed comments, ready to merge when you are ready :-)

@mikel-brostrom
Copy link
Owner

mikel-brostrom commented Jul 10, 2023

Maybe better to activate the default KF for each tracker. People compare the different methods in their papers. See this one for example: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10173520. Switching option should be added though to README 😄

@henriksod
Copy link
Contributor Author

The KF implementation are almost identical when it comes to the actual calculations done. The only difference is the tuning, i.e. the noise and process covariance matrices. I have removed the KF implementation of strongsort, botsort, and bytetrack, and instead using the implementation of the kalman filter used by ocsort and deepocsort. This kalman filter is almost identical to the one implemented in filterpy. I propose to run an eval for each method and see if the metrics have changed compared to master, because in theory they shouldn't. :-)

@mikel-brostrom mikel-brostrom mentioned this pull request Jul 10, 2023
@mikel-brostrom
Copy link
Owner

mikel-brostrom commented Jul 10, 2023

The only difference is the tuning, i.e. the noise and process covariance matrices.

Yup, mostly

I have removed the KF implementation of strongsort, botsort, and bytetrack, and instead using the implementation of the kalman filter used by ocsort and deepocsort

But are the old KFs activate'able somehow? We should push the good stuff, agreed, but if somebody wants to use the paper setup for academic purposes, specially now that we have a PR for ByteTrack's YOLOX people models it should be triggable IMO.

@henriksod
Copy link
Contributor Author

henriksod commented Jul 10, 2023 via email

@henriksod
Copy link
Contributor Author

Having both in requires an adapter for each Kalman filter, for each method...

@henriksod
Copy link
Contributor Author

These changes should not change the performance of the trackers in any way. They should still perform the same as they did before.

@mikel-brostrom
Copy link
Owner

These changes should not change the performance of the trackers in any way. They should still perform the same as they did before.

Then let's get this merged 😄

@mikel-brostrom mikel-brostrom merged commit d9d5d37 into mikel-brostrom:master Jul 10, 2023
3 checks passed
supermomo668 pushed a commit to supermomo668/yolo_tracking that referenced this pull request Oct 23, 2023
Refactor code according to proposed structure
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants