This is the official github repository of the following publication, modified for CVPR23 EGO4D STA challenge :
S. Thakur, C. Beyan, P. Morerio, V. Murino, A. Del Bue. Enhancing Next Active Object-based Egocentric Action Anticipation with Guided Attention. (Under Review)
CVPR23 technical report, Guided Attention for Next Active Object @ EGO4D STA Challenge
★ Winner of CVPR23 EGO4D STA challenge Leaderboard
project web page | paper | technical report
If you find our work useful in your research, please use the following BibTeX entry for citation.
@misc{thakur2023enhancing,
title={Enhancing Next Active Object-based Egocentric Action Anticipation with Guided Attention},
author={Sanket Thakur and Cigdem Beyan and Pietro Morerio and Vittorio Murino and Alessio Del Bue},
year={2023},
eprint={2305.12953},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{thakur2023guided,
title={Guided Attention for Next Active Object @ EGO4D STA Challenge},
author={Sanket Thakur and Cigdem Beyan and Pietro Morerio and Vittorio Murino and Alessio Del Bue},
year={2023},
eprint={2305.16066},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
An Anaconda environment with the requirements is provided in environment.yml. If you are using Anaconda, you can create a suitable environment with:
conda env create -f environment.yml
Then, activate the environment:
conda activate gano
We provide a list of libraries in requirements.txt. You can easy install these libraries using pip:
pip install -r requirements.txt
Wandb is enabled by default. To use it set the credentials in wandb/settings:
entity = yournickname
project = yourprojectname
base_url = https://api.wandb.ai
Then, login with wandb login.
You can download the model trained on 'v2' of ego4d : Challenge Model
To train/test the model on the EGO4D dataset, follow the instructions provided here to download the dataset and its annotations for the Short-Term Object Interaction Anticipation task:
https://github.com/EGO4D/forecasting/blob/main/SHORT_TERM_ANTICIPATION.md
To train StillFast on the EGO4D dataset, execute the following command:
python main.py --cfg configs/sta/gano.yaml --train --exp <expt_name>
Outputs will be logged to wandb and stored under the folder output/sta/<expt_name>/version_0/
If you repeat the command, experiments will be saved under the version_1 subdirectory and so on.
Trained models can be validated using the following command:
python main.py --val --test_dir output/sta/<expt_name>/version_x/
where x is the version number of your experiment.
After the validation phase, predictions will be saved in a json file under:
output/sta/<expt_name>/version_x/results/val.json
You can evaluate the results with the following command:
python tools/short_term_anticipation/evaluate_short_term_anticipation_results.py output/sta/<expt_name>/version_x/results/val.json /path/to/ego4d/annotations/fho_sta_val.json
The main.py program also allows to run the model on the EGO4D test set and produce a json file to be sent to the leaderboard. To test models, you can use the following commands:
python main.py --test --test_dir output/sta/<expt_name>/version_x/
After the test phase, predictions will be saved in a json file under:
output/sta/<expt_name>/version_x/results/test.json
To obtain results, submit the test.json file to the EGO4D Short Term Object Interaction Anticipation Challenge page.
The codebase was built on top of stillfast. Many thanks to authors for clearing doubts on the same.