Smorodov / Multitarget-tracker

Multiple Object Tracker, Based on Hungarian algorithm + Kalman filter.
Apache License 2.0
2.2k stars 651 forks source link

Mismatch pymtracking lib and Discuss about App Example 1 and Example 6 #432

Open tgbaoo opened 1 year ago

tgbaoo commented 1 year ago

Hi, Very interested on your work!, Now I have some issue with the import lib step, the pymtracking lib seems like not appear, could you checking the syntax again?

import sys
import glob
import getopt
import numpy as np
import cv2 as cv
import pymtracking as mt

print("OpenCV Version: {}".format(cv.__version__))

def draw_regions(img, regions, color):
    for reg in regions:
        brect = reg.brect
        cv.rectangle(img, (brect.x, brect.y, brect.width, brect.height), color, 2)
python3 -B demo.py
  File "/mnt/d/Code/hole-in-one-classification/Multitarget-tracker/demo.py", line 6, in <module>
    import pymtracking as mt
ModuleNotFoundError: No module named 'pymtracking'
Nuzhny007 commented 1 year ago

Hi! Do you make a project with cmake options? It need: -DMTRACKER_PYTHON=ON -DNUMPY_INCLUDE_DIR=

A last value on my computer is /usr/lib/python3/dist-packages/numpy/core/include/

tgbaoo commented 1 year ago

Hello @Nuzhny007 and big thanks for your response, so I have already run this success, love your passion on computer vision. But I have some concern now, that I have engaged in some (fast moving - small) golf ball tracking on 2 camera frame one for swing at the tee box, one at the putting area, now I have trained the golf ball dataset on yolov5, but I got the error when I run the option 6 train with tensorrt weights and cfg file, then I generate the weight that trained from my golf ball dataset then when I hit the inference, I got the error something like their are a mismatch show in the terminal logger like this:

OpenCL not used
ParseTrackerSettings:  ...
ParseTrackerSettings: 0
Video ../../../golf_ball_and_hole_tracking/duyputt01.mp4 was started from 0 frame with 30 fps, frame size [720 x 1280] and length 309
Config Done!
File does not exist : ../data/yolov5s/yolov5s-kFLOAT-batch1.engine
Loading pre-trained weights...
Loading complete!
WARNING: The implicit batch dimension mode has been deprecated. Please create the network with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag whenever possible.
      layer               inp_size            out_size
(1)   Conv              3 x 320 x 640      32 x 160 x 320
(2)   Conv             32 x 160 x 320      64 x  80 x 160
(3)   C3               64 x  80 x 160      64 x  80 x 160
(4)   Conv             64 x  80 x 160     128 x  40 x  80
(5)   C3              128 x  40 x  80     128 x  40 x  80
(6)   Conv            128 x  40 x  80     256 x  20 x  40
(7)   C3              256 x  20 x  40     256 x  20 x  40
(8)   Conv            256 x  20 x  40     512 x  10 x  20
(9)   C3              512 x  10 x  20     512 x  10 x  20
(10)  SPP             512 x  10 x  20     512 x  10 x  20
(11)  Conv            512 x  10 x  20     256 x  10 x  20
(12)  Upsample        256 x  10 x  20     256 x  20 x  40
(13)  Concat          256 x  20 x  40     512 x  20 x  40
(14)  C3              512 x  20 x  40     256 x  20 x  40
(15)  Conv            256 x  20 x  40     128 x  20 x  40
(16)  Upsample        128 x  20 x  40     128 x  40 x  80
(17)  Concat          128 x  40 x  80     256 x  40 x  80
(18)  C3              256 x  40 x  80     128 x  40 x  80
(19)  Conv            128 x  40 x  80     128 x  20 x  40
(20)  Concat          128 x  20 x  40     256 x  20 x  40
(21)  C3              256 x  20 x  40     256 x  20 x  40
(22)  Conv            256 x  20 x  40     256 x  10 x  20
(23)  Concat          256 x  10 x  20     512 x  10 x  20
(24)  C3              512 x  10 x  20     512 x  10 x  20
MultitargetTracker: /mnt/d/Code/hole-in-one-classification/nuzhny/Multitarget-tracker/src/Detector/tensorrt_yolo/trt_utils.cpp:911: nvinfer1::ILayer* layer_conv(std::vector<nvinfer1::Weights>&, std::string, std::map<std::__cxx11::basic_string<char>, std::vector<float> >&, nvinfer1::ITensor*, nvinfer1::INetworkDefinition*, int, int, int, bool, int, bool): Assertion `size == (map_wts_[s_layer_name_ + ".weight"].size())' failed.
[1]    5385 IOT instruction  ./MultitargetTracker ../../../golf_ball_and_hole_tracking/duyputt01.mp4 -e=6

Hope you let the example 6 can predict on custom dataset trained weight!

tgbaoo commented 1 year ago

I am also tend to use the option 1 because I really like your example on youtube: https://www.youtube.com/watch?v=PalIIAfgX88

But when i download your video and run the default setup of the example 1 option, their are a lot of noise and false positive so, hope you share more about example 1 also, big thanks to you @Nuzhny007

tgbaoo commented 1 year ago

https://github.com/Smorodov/Multitarget-tracker/assets/86455738/69b26320-1a24-494d-ae27-7cf178892e65

https://github.com/Smorodov/Multitarget-tracker/assets/86455738/483ef6da-e19f-4c16-9e28-59871461e716

https://github.com/Smorodov/Multitarget-tracker/assets/86455738/190ed02c-8264-42aa-912f-eb91dc279011

https://github.com/Smorodov/Multitarget-tracker/assets/86455738/4d6eb1ce-6fe6-4e63-b688-6b1e430aaef9

https://github.com/Smorodov/Multitarget-tracker/assets/86455738/b8530aa4-6dc4-42ba-93b9-a699d1fdbbfb

I tend to use these video for testing but It is seems like the example 1 code not work well with moving camera right?

Nuzhny007 commented 1 year ago

An example for fast objects used background subtraction algorithm. It works only for static cameras (like security cameras for surveilance systems). For your case it need to train a neural network for ball detection.

tgbaoo commented 1 year ago

@Nuzhny007 Thanks, but when I use the example 6, it seems like the code do not accept my custom training weight right? Could you double check the example 6 for me?