datamllab / autovideo

AutoVideo: An Automated Video Action Recognition System
https://autoedge.ai/
MIT License
318 stars 36 forks source link

Problem with generating fitted timelines #4

Closed viniciusarasantos closed 2 years ago

viniciusarasantos commented 3 years ago

Hi all!

I'm running into some problems with generating fitted pipelines for the different algorithms available. So I was trying to run the following command:

python3 examples/fit.py --alg tsn --pretrained --gpu 0,1 --data_dir datasets/hmdb6/ --log_path logs/tsn.txt --save_path fittted_timelines/TSN/

And I got the following output.

--> Running on the GPU

Initializing TSN with base model: resnet50. TSN Configurations: input_modality: RGB num_segments: 3 new_length: 1 consensus_module: avg dropout_ratio: 0.8

Downloading: "https://download.pytorch.org/models/resnet50-0676ba61.pth" to /home/myuser/.cache/torch/hub/checkpoints/resnet50-0676ba61.pth 100%|##########| 97.8M/97.8M [00:02<00:00, 40.4MB/s] Downloading: "https://open-mmlab.s3.ap-northeast-2.amazonaws.com/mmaction/models/kinetics400/tsn2d_kinetics400_rgb_r50_seg3_f1s1-b702e12f.pth" to /home/myuser/.cache/torch/hub/checkpoints/tsn2d_kinetics400_rgb_r50_seg3_f1s1-b702e12f.pth Traceback (most recent call last): File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1008, in _do_run_step self._run_step(step) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 998, in _run_step self._run_primitive(step) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 873, in _run_primitive multi_call_result = self._call_primitive_method(primitive.fit_multi_produce, fit_multi_produce_arguments) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 974, in _call_primitive_method raise error File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 970, in _call_primitive_method result = method(*arguments) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/primitive_interfaces/base.py", line 532, in fit_multi_produce return self._fit_multi_produce(produce_methods=produce_methods, timeout=timeout, iterations=iterations, inputs=inputs, outputs=outputs) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/primitive_interfaces/base.py", line 559, in _fit_multi_produce fit_result = self.fit(timeout=timeout, iterations=iterations) File "/home/myuser/autovideo/autovideo/base/supervised_base.py", line 54, in fit self._init_model(pretrained = self.hyperparams['load_pretrained']) File "/home/myuser/autovideo/autovideo/recognition/tsn_primitive.py", line 206, in _init_model model_data = load_state_dict_from_url(pretrained_url) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/torch/hub.py", line 553, in load_state_dict_from_url download_url_to_file(url, cached_file, hash_prefix, progress=progress) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/torch/hub.py", line 419, in download_url_to_file u = urlopen(req) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/urllib/request.py", line 223, in urlopen return opener.open(url, data, timeout) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/urllib/request.py", line 532, in open response = meth(req, response) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/urllib/request.py", line 642, in http_response 'http', request, response, code, msg, hdrs) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/urllib/request.py", line 570, in error return self._call_chain(args) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/urllib/request.py", line 504, in _call_chain result = func(*args) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/urllib/request.py", line 650, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: Forbidden

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "examples/fit.py", line 61, in run(args) File "examples/fit.py", line 49, in run pipeline=pipeline) File "/home/myuser/autovideo/autovideo/utils/axolotl_utils.py", line 55, in fit raise pipeline_result.error File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1039, in _run self._do_run() File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1025, in _do_run self._do_run_step(step) File "/home/myuser/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1017, in _do_run_step ) from error d3m.exceptions.StepFailedError: Step 5 for pipeline e61792eb-f54b-44ae-931c-f0f965c5e9de failed.

As you can see, I'm having problems with an Access Denied to the .pth files hosted at Amazon Cloud. Do you have any ideas on how to fix this?

zaidbhat1234 commented 3 years ago

@viniciusarasantos Thank you for pointing out the issue. Seems like the previous link that we were using to download the weights is broken. I have modified the primitives to support loading pre-trained models from the 'weights/' directory. You can download the pre-trained weights from GoogleDrive and place it in the weights directory. Let me know if this resolves your issue.

viniciusarasantos commented 2 years ago

@viniciusarasantos Thank you for pointing out the issue. Seems like the previous link that we were using to download the weights is broken. I have modified the primitives to support loading pre-trained models from the 'weights/' directory. You can download the pre-trained weights from GoogleDrive and place it in the weights directory. Let me know if this resolves your issue.

Thanks. That works like a charm.

I could not run ECO-Lite and ECO-Full. Is there a fix for it?

zaidbhat1234 commented 2 years ago

Could you share the error you are facing while running ECO-Lite and ECO-Full?

viniciusarasantos commented 2 years ago

Yes, I can.

I runned this command: python3 examples/fit.py --alg eco --pretrained --gpu 0,1 --data_dir datasets/hmdb6/ --log_path logs/ECO.txt --save_path fitted_timelines/ECO.fitted

And got the following error.

--> Running on the GPU

Initializing ECO with base model: ECO. ECO Configurations: input_modality: RGB num_segments: 8 new_length: 1 consensus_module: identity dropout_ratio: 0.8

Traceback (most recent call last): File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1008, in _do_run_step self._run_step(step) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 998, in _run_step self._run_primitive(step) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 873, in _run_primitive multi_call_result = self._call_primitive_method(primitive.fit_multi_produce, fit_multi_produce_arguments) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 974, in _call_primitive_method raise error File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 970, in _call_primitive_method result = method(**arguments) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/primitive_interfaces/base.py", line 532, in fit_multi_produce return self._fit_multi_produce(produce_methods=produce_methods, timeout=timeout, iterations=iterations, inputs=inputs, outputs=outputs) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/primitive_interfaces/base.py", line 559, in _fit_multi_produce fit_result = self.fit(timeout=timeout, iterations=iterations) File "/home/araujo/autovideo/autovideo/base/supervised_base.py", line 54, in fit self._init_model(pretrained = self.hyperparams['load_pretrained']) File "/home/araujo/autovideo/autovideo/recognition/eco_primitive.py", line 243, in _init_model new_state_dict = init_ECO(model_dict, self.model.pretrained_parts) File "/home/araujo/autovideo/autovideo/recognition/eco_primitive.py", line 321, in init_ECO pretrained_dict_2d = torch.load(pretrained_path_2d) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/torch/serialization.py", line 596, in load with _open_file_like(f, 'rb') as opened_file: File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/torch/serialization.py", line 232, in _open_file_like return _open_file(name_or_buffer, mode) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/torch/serialization.py", line 213, in init super(_open_file, self).init(open(name, mode)) FileNotFoundError: [Errno 2] No such file or directory: 'weights/bninception_rgb_kinetics_init-d4ee618d3399.pth'

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "examples/fit.py", line 61, in run(args) File "examples/fit.py", line 49, in run pipeline=pipeline) File "/home/araujo/autovideo/autovideo/utils/axolotl_utils.py", line 55, in fit raise pipeline_result.error File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1039, in _run self._do_run() File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1025, in _do_run self._do_run_step(step) File "/home/araujo/anaconda3/envs/autovideo/lib/python3.6/site-packages/d3m/runtime.py", line 1017, in _do_run_step ) from error d3m.exceptions.StepFailedError: Step 5 for pipeline dc954012-52d3-45d1-973f-b1ed3d00032e failed.

Was it supposed to always look for the weights in the weights directory or sometimes download it as it happens for TSN and TSM?

daochenzha commented 2 years ago

@viniciusarasantos You have used the flag --pretrained which indicates that it will need to load the pretrianed weights. You can either remove the flag or download the weights from Google Drive and put them in the corresponding folder.

viniciusarasantos commented 2 years ago

@viniciusarasantos You have used the flag --pretrained which indicates that it will need to load the pretrianed weights. You can either remove the flag or download the weights from Google Drive and put them in the corresponding folder.

Oh, that makes sense. Thanks.