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

Error how can i resolve it #902

Open
Tech3467 opened this issue Apr 6, 2024 · 30 comments
Open

Error how can i resolve it #902

Tech3467 opened this issue Apr 6, 2024 · 30 comments

Comments

@Tech3467
Copy link

Tech3467 commented Apr 6, 2024

No description provided.

@brmarkus
Copy link

brmarkus commented Apr 6, 2024

Can you provide more details, please?
Which sample, which file(s) are you working with and see the compilation problem? Are you following a blog from "Learn-OpenCV", if yes, which?
Do you have more console output?

It looks like you need to install "http://torch.ch/".

@brmarkus
Copy link

brmarkus commented Apr 6, 2024

So you are running this JupyterNotebook, "https://github.com/spmallick/learnopencv/blob/master/Object-Tracking-and-Reidentification-with-FairMOT/Tracking_using_FairMOT.ipynb", right?

Are you sure you have executed the second cell, and it finished successfully?

# Clone the FairMOT repository, and instell the required libraries.
!git clone https://github.com/ifzhang/FairMOT.git
!pip install torch==1.7.0 torchvision==0.8.0
!pip install cython
!pip install -r FairMOT/requirements.txt

It installs "torch" (in version v1.7.0), which contains the header "TH/TH.h".

@brmarkus
Copy link

brmarkus commented Apr 6, 2024

Can you provide more details, please?
Is there a chance that you can share what results you get from each cell?

If you open "https://github.com/spmallick/learnopencv/blob/master/Object-Tracking-and-Reidentification-with-FairMOT/Tracking_using_FairMOT.ipynb" in a separate browser window in parallel to what you are running in your Colab environment?

Which of the cells look different?
The original version of this JupyterNotebook is more than 2 years old... your environment might have newer versions of some of the components; not all dependencies in this JupyterNotebook has an explicit version number...

@brmarkus
Copy link

brmarkus commented Apr 8, 2024

Yes i am running this code no this line doesnt exectued .updated version is downloaded not this one

Can you provide more details, please?

Which line do you mean, can you split the multiple lines into separate lines and execute each line separately - and then show the results you are getting?

@brmarkus
Copy link

brmarkus commented Apr 8, 2024

From e.g. "https://pypi.org/pypi/torch/json", a recent version seems to be "2.2.2".

$>pip index versions torch
torch (2.2.2)
Available versions: 2.2.2, 2.2.1, 2.2.0, 2.1.2, 2.1.1, 2.1.0, 2.0.1, 2.0.0, 1.13.1, 1.13.0, 1.12.1, 1.12.0, 1.11.0, 1.10.2, 1.10.1, 1.10.0, 1.9.1, 1.9.0, 1.8.1, 1.8.0, 1.7.1

As the code of this sample is old, don't try the latest version.

Try with e.g.

!pip install torch==1.7.1

@ajax619
Copy link

ajax619 commented May 30, 2024

Any solution as i am encountering same problem

@brmarkus
Copy link

Can you provide more details, please? The same missing header-file?
Where you able to install an older version (the notebook is quite old, there were a lot of updates to the dependencies in the meantime).

@brmarkus
Copy link

I needed to modify a few cells:

remove version numbers:

# Clone the FairMOT repository, and instell the required libraries.
!git clone https://github.com/ifzhang/FairMOT.git
!pip install torch torchvision
!pip install cython
!pip install -r FairMOT/requirements.txt

and

using a different repo and different branch name:

# Clone and install DCNv2.
%cd /content/FairMOT
%rm -rf /content/FairMOT/DCNv2
!git clone -b pytorch_2.0.1 https://github.com/lbin/DCNv2
%cd /content/FairMOT/DCNv2
!chmod +x ./make.sh
!./make.sh

import sys
sys.path.append('/content/FairMOT/DCNv2')

and

comment-out a download (doesn't exist anylonger):

# Download all the trained FairMOT models.
!mkdir -p /content/FairMOT/models
%cd /content/FairMOT/models/
!gdown --fuzzy https://drive.google.com/file/d/1MEvsRPyoAqYSCdKaS5Ofrl7ZfKbBZ1Jb/view
!gdown --fuzzy https://drive.google.com/file/d/1HVzDTrYSSZiVqExqG9rou3zZXX1-GGQn/view
!gdown --fuzzy https://drive.google.com/file/d/1dJDGSa6-FMq33XY-cOd_nYxuilv30YDM/view
!gdown --fuzzy https://drive.google.com/file/d/1SFOhg_vos_xSYHLMTDGFVZBYjo8cr2fG/view
!gdown --fuzzy https://drive.google.com/file/d/1iqRQjsG9BawIl8SlFomMg5iwkb6nqSpi/view
#!gdown --fuzzy https://drive.google.com/file/d/1pl_-ael8wERdUREEnaIfqOV_VF2bEVRT/view
!gdown --fuzzy https://drive.google.com/file/d/1Ur3_pa9r3KRY-5qM2cdFhFJ5exghRJvh/view

How far do you get with those changes?

@brmarkus
Copy link

brmarkus commented May 30, 2024

(I needed to apply some smaller modifications inside two Python files in FairMOT/src/lib/tracker/ due to numpy deprecated the type np.float; so wherever np.float was used in the sources I changed it to np.double)
(the used video file consists of 1500 frames; processing all frames in Google colab can take quite a long time... processing at around 9fps...)

(when changing files used in the Jupyter notebook, then I needed to restart the Google colab runtime manually so that the modified Python files would be used)

Inside the Google Colab notebook I modified these files:
from FairMOT: "src/lib/tracker/matching.py" and "src/lib/tracker/multitracker.py" (cloned https://github.com/ifzhang/FairMOT/blob/master/src/lib/tracker/matching.py and
https://github.com/ifzhang/FairMOT/blob/master/src/lib/tracker/multitracker.py)
=> every np.float I changed to np.double

The files can be opened and modified inside the colab.

@brmarkus
Copy link

I'm getting this, finally:

INFO:root:Starting tracking...
2024-05-30 15:34:06 [INFO]: Starting tracking...
Fix size testing.
training chunk_sizes: [6, 6]
The output will be saved to  /content/FairMOT/src/lib/../../exp/mot/default
heads {'hm': 1, 'wh': 4, 'id': 128, 'reg': 2}
Lenth of the video: 1500 frames
Creating model...
loaded /content/FairMOT/models/fairmot_dla34.pth, epoch 30
INFO:root:Processing frame 0 (100000.00 fps)
2024-05-30 15:34:07 [INFO]: Processing frame 0 (100000.00 fps)
INFO:root:Processing frame 20 (7.88 fps)
... ...
INFO:root:Processing frame 1460 (9.00 fps)
2024-05-30 15:39:43 [INFO]: Processing frame 1460 (9.00 fps)
INFO:root:Processing frame 1480 (9.00 fps)
2024-05-30 15:39:48 [INFO]: Processing frame 1480 (9.00 fps)
INFO:root:save results to /content/FairMOT/tests/MOT16-03.txt
2024-05-30 15:39:53 [INFO]: save results to /content/FairMOT/tests/MOT16-03.txt

Every frame gets the bounding boxes drawn into it.
First processed frame looks like this:
image

The file "/content/FairMOT/tests/MOT16-03.txt" starts like this:

1,1,493.5321350097656,68.95755004882812,60.27572631835937,165.18722534179688,1,-1,-1,-1
1,2,727.6353759765625,639.0201416015625,101.7655029296875,239.0374755859375,1,-1,-1,-1
1,3,1843.5057373046875,541.5244750976562,76.12744140625,202.57000732421875,1,-1,-1,-1
1,4,1576.8380126953125,237.37307739257812,65.1553955078125,189.41873168945312,1,-1,-1,-1
1,5,1798.78857421875,203.35467529296875,60.578369140625,173.3404541015625,1,-1,-1,-1
1,6,1314.087158203125,480.53668212890625,81.9610595703125,221.36370849609375,1,-1,-1,-1
1,7,54.18689727783203,603.6111450195312,82.54642486572266,231.30126953125,1,-1,-1,-1
1,8,1007.3807373046875,58.848365783691406,69.66015625,189.54800415039062,1,-1,-1,-1
1,9,983.64697265625,317.5620422363281,74.702880859375,200.46499633789062,1,-1,-1,-1
1,10,521.401611328125,163.27479553222656,60.09906005859375,166.3485870361328,1,-1,-1,-1
1,11,876.5536499023438,110.1990966796875,61.20794677734376,157.6925048828125,1,-1,-1,-1
... ...

@brmarkus
Copy link

This Jupyter notebook (its used dependencies) need some updates to get it working again, now in the year 2024... it was created long time ago and with the dependencies outdated in the meantime...

@Tech3467
Copy link
Author

Screenshot 2024-05-31 102230 2 i am encountring this error at the last line

@brmarkus
Copy link

Looks like something went wrong cloning the repo "https://github.com/ifzhang/FairMOT/" in cell number 2:

# Clone the FairMOT repository, and instell the required libraries.
!git clone https://github.com/ifzhang/FairMOT.git

The method LoadVideo can be found in the repo here: "https://github.com/ifzhang/FairMOT/blob/master/src/lib/datasets/dataset/jde.py#L86"

Have you applied changes to files (or deleted, moved, renamed files&folders) and repos in your notebook environment (locally? Google-Colab?)?
You might need to start with a fresh environment.
If you run cells multiple times, then e.g. Git doesn't clone the repo again (error message like "there is already a non-empty-folder").

You might need to add a "delete folder" instruction to the cells which clone repos, e.g.

# Clone the FairMOT repository, and instell the required libraries.
!rm -rf FairMOT
!git clone https://github.com/ifzhang/FairMOT.git
... ...

@brmarkus
Copy link

You might try a more recent implementation... this notebook's dependencies need some updates...

You might try something like this:

@Hemilibeatriz
Copy link

Hemilibeatriz commented Jun 4, 2024

(Eu preciso aplicar algumas modificações dentro de dois arquivos Python em FairMOT/src/lib/tracker/ devido ao numpy ter obsoleto o tipo np.float; então, onde quer que np.floatfosse usado nas fontes, eu o alterei para np.double) (o arquivo de vídeo usado consiste em 1500 quadros; processar todos os frames no Google colab pode levar muito tempo... processar em torno de 9fps...)

(ao alterar os arquivos usados ​​no notebook Jupyter, preciso reiniciar o tempo de execução do Google Colab manualmente para que os arquivos Python modificados fossem usados)

Dentro do notebook Google Colab modifiquei estes arquivos: do FairMOT: "src/lib/tracker/matching.py" e "src/lib/tracker/multitracker.py" (clonado https://github.com/ifzhang/FairMOT/ blob /master/src/lib/tracker/matching.py e https://github.com/ifzhang/FairMOT/blob/master/src/lib/tracker/multitracker.py ) => todo np.floateu mudei paranp.double

Os arquivos podem ser abertos e modificados dentro do colab.

These steps with the changes mentioned previously (remove the version of torch and torchvision, comment the line #!gdown --fuzzy https://drive.google.com/file/d/1pl_-ael8wERdUREEnaIfqOV_VF2bEVRT/view and use a different repository and a different branch name) made it work perfectly ... is it possible to make its output be a video file instead of several frames?

@brmarkus
Copy link

brmarkus commented Jun 4, 2024

These steps with the changes mentioned previously (remove the version of torch and torchvision, comment the line #!gdown --fuzzy https://drive.google.com/file/d/1pl_-ael8wERdUREEnaIfqOV_VF2bEVRT/view and use a different repository and a different branch name) made it work perfectly ... is it possible to make its output be a video file instead of several frames?

Yes, sure, the output could be a video as well.

Have a look at the method def demo(opt): (cell 7?) - add opt.output_format = 'video' to the next cell (cell 8?) with the array of argument-options.

The last section (last sentence at the bottom of the notebook) mentions:

Checkout the opts.py file for more arguments.

=> there are many mopre options possible, see "https://github.com/ifzhang/FairMOT/blob/master/src/lib/opts.py".

@Hemilibeatriz
Copy link

Estas etapas com as alterações mencionadas anteriormente (remova a versão do torch e torchvision, comente a linha #!gdown --fuzzy https://drive.google.com/file/d/1pl_-ael8wERdUREEnaIfqOV_VF2bEVRT/view e use um repositório diferente e um nome de branch diferente) fez com que funcionasse perfeitamente ... é possível fazer com que sua saída seja um arquivo de vídeo em vez de vários quadros?

Sim, claro, a saída também pode ser um vídeo.

Dê uma olhada no método def demo(opt):(célula 7?) - adicione opt.output_format = 'video'à próxima célula (célula 8?) Com a matriz de opções de argumento.

A última seção (última frase no final do caderno) menciona:

Confira o arquivo opts.py para mais argumentos.

=> existem muitas opções de mopre possíveis, consulte " https://github.com/ifzhang/FairMOT/blob/master/src/lib/opts.py ".

Thank you very much for the clarifications! In the end it actually generated a video... thank you. I needed to load two videos for it, and concatenate the two videos to simulate a single video. Do you know if it supports two inputs? I looked at the options and it doesn't mention anything... without wanting to take advantage of your good will too, do you know if this way is the most appropriate for doing multi-camera tracking? I'm trying to get a good tracker for this function, if you also know of a model that addresses this function... it would be of great help

@brmarkus
Copy link

brmarkus commented Jun 4, 2024

Haven't looked more closer into the underlying repos other than to get this notebook working again...

You might want to have a look into multi-camera-tracker projects, like

Use-cases can be different, very specific on e.g. re-identification, classification, a simple cosine-distance?

@Tech3467
Copy link
Author

Tech3467 commented Jun 4, 2024 via email

@brmarkus
Copy link

brmarkus commented Jun 4, 2024

From the output shown earlier:

INFO:root:Starting tracking...
2024-05-30 15:34:06 [INFO]: Starting tracking...
Fix size testing.
training chunk_sizes: [6, 6]
The output will be saved to /content/FairMOT/src/lib/../../exp/mot/default
heads {'hm': 1, 'wh': 4, 'id': 128, 'reg': 2}
Lenth of the video: 1500 frames
Creating model...
loaded /content/FairMOT/models/fairmot_dla34.pth, epoch 30
INFO:root:Processing frame 0 (100000.00 fps)
2024-05-30 15:34:07 [INFO]: Processing frame 0 (100000.00 fps)
INFO:root:Processing frame 20 (7.88 fps)
... ...
INFO:root:Processing frame 1460 (9.00 fps)
2024-05-30 15:39:43 [INFO]: Processing frame 1460 (9.00 fps)
INFO:root:Processing frame 1480 (9.00 fps)
2024-05-30 15:39:48 [INFO]: Processing frame 1480 (9.00 fps)
INFO:root:save results to /content/FairMOT/tests/MOT16-03.txt
2024-05-30 15:39:53 [INFO]: save results to /content/FairMOT/tests/MOT16-03.txt

Between the first timestamp "2024-05-30 15:34:07" and the last "2024-05-30 15:39:48" of the processed frames (or video sequence) you can watch many persons and cyclists being tracked "all the time".

I haven't looked closer into the frames whether there are different use-cases like people disappear and re-appear, persons getting covered and re-appear, whether people suddenly get a new ID...

@Hemilibeatriz
Copy link

This Colab was working perfectly until last Friday... when I ran the code on Monday, I started getting an error while downloading the file... I thought it was a site instability (I tried accessing the link through the browser, but also without success), but I keep getting the same error. Any idea how to "fix" this?

image
image

@brmarkus
Copy link

brmarkus commented Jul 9, 2024

Seems like "http://dl.yf.io/dla/models/imagenet/dla34-ba72cf86.pth" (even "http://dl.yf.io/") is not available (anymore?) (at the moment?).
You don't have a "local" copy of the environment (e.g. in a local cache), everything online in Colab only?

It might be required to have a more closer look into the used repos.

Maybe use the mentioned pre-trained models from the mentioned URLs (pointing to Google-Drive and Baidu) from the section "https://github.com/ifzhang/FairMOT?tab=readme-ov-file#pretrained-models-and-baseline-model"... but I haven't looked closer into the repos...

@Hemilibeatriz
Copy link

I even have the file, the problem is changing the code so it doesn't download and loads directly from the directory.

@brmarkus
Copy link

brmarkus commented Jul 9, 2024

Do I see it right that it boils down to:

starting with eval_seq() in def demo(opt)

JDETracker: https://github.com/ifzhang/FairMOT/blob/master/src/lib/tracker/multitracker.py#L180C22-L180C32

calling load_model(): https://github.com/ifzhang/FairMOT/blob/master/src/lib/models/model.py#L35C5-L35C15

?

@Hemilibeatriz
Copy link

I will test it and get back to you if it works :) , thank you very much.

@Hemilibeatriz
Copy link

How can i use yolov5 instead dla-34? I changed the 'load_model' and deleted 'arch' but doesn´t work.

@brmarkus
Copy link

How can i use yolov5 instead dla-34? I changed the 'load_model' and deleted 'arch' but doesn´t work.

Have you identified the interfaces of the previously used model, and whether they match with what Yolo5 needs and provides? Which part do you want to replace, only the object-detection, and keeping the rest?

@Hemilibeatriz
Copy link

Yes, i´ve tried others ways but i want to change the fairmot´s model :)

Yes, i want use the yolov5 model instead dla-34, your repo says be possible, but when made the changes, it doesn't work.

@brmarkus
Copy link

Are you referring to the blog "https://learnopencv.com/object-tracking-and-reidentification-with-fairmot/"?

The detection model used with DeepSort is YOLOv5s, whereas FairMOT uses both, YOLOv5s, as well as DLA-34"

(Yolo5 is used for object-detection, but DLA-34 for classification and used as feature-extraction?)

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

No branches or pull requests

4 participants