{"id":20131297,"url":"https://github.com/qzed/raft-meets-dicl","last_synced_at":"2025-09-10T17:46:10.158Z","repository":{"id":233816153,"uuid":"384817944","full_name":"qzed/raft-meets-dicl","owner":"qzed","description":"Master Thesis","archived":false,"fork":false,"pushed_at":"2024-04-17T09:03:36.000Z","size":2215,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-02T10:40:55.739Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qzed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATIONS.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-10T23:26:28.000Z","updated_at":"2024-04-17T09:05:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"29ec0d09-3576-432e-852e-c9e99ff6e5dc","html_url":"https://github.com/qzed/raft-meets-dicl","commit_stats":null,"previous_names":["qzed/raft-meets-dicl"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/qzed/raft-meets-dicl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qzed%2Fraft-meets-dicl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qzed%2Fraft-meets-dicl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qzed%2Fraft-meets-dicl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qzed%2Fraft-meets-dicl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qzed","download_url":"https://codeload.github.com/qzed/raft-meets-dicl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qzed%2Fraft-meets-dicl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273774047,"owners_count":25165734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T20:47:28.521Z","updated_at":"2025-09-10T17:46:10.053Z","avatar_url":"https://github.com/qzed.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RAFT meets DICL\n\nThis repository contains the code for\n\n\u003e **[RAFT meets DICL: A Recurrent All-Pair Transform for Optical Flow Estimation based on Displacement Invariant Cost Volume Learning](http://dx.doi.org/10.18419/opus-13298)**\u003cbr/\u003e\n\u003e _Master Thesis, University of Stuttgart, 2022_ \u003cbr/\u003e\n\u003e Maximilian Luz\n\nIf you find this work useful please [cite via BibTeX](CITATIONS.bib).\n\n\n## Setup\n\nThis project uses `pipenv`, i.e. in terms of code, setup is as easy installing `pipenv` (e.g. via `python -m pip install --user pipenv`) and running `pipenv install` (or `pipenv install -d` if you want to also install development dependencies).\nCommands and scripts of this project can then be run either in a shell opened with `pipenv shell` or directly via `pipenv run \u003ccommand\u003e`.\nThe `pipenv` command can also be used to generate a `requirements.txt` file for integration into other python environments.\n\n\n### Datasets\n\nDatasets are expected to be placed in `../datasets`, i.e. a `datasets` folder next to the folder containing this code.\nThe dataset folder should follow the specification below:\n```\n../datasets\n├── \u003csome-dataset-id\u003e\n│  └── data                         # the dataset root directory\n```\nFor all supported datasets see `cfg/data/dataset/`.\nThe `path` attribute of these config files specifies the path local to the config file and may be adapted if needed.\n\nA subset of supported datasets would look like this:\n```\n../datasets\n├── hci-hd1k                        # HCI HD1K\n│  └── data\n│     ├── hd1k_challenge\n│     ├── hd1k_flow_gt\n│     ├── hd1k_flow_uncertainty\n│     └── hd1k_input\n├── kitti-flow-2012                 # KITTI 2012\n│  └── data\n│     ├── testing\n│     └── training\n├── mpi-sintel-flow                 # MPI Sintel\n│  └── data\n│     ├── bundler\n│     ├── flow_code\n│     ├── test\n│     ├── training\n│     └── README.txt\n├── ufreiburg-flyingchairs          # Uni Freiburg FlyingChairs\n│  ├── data\n│  │  ├── data\n│  │  └── README.txt\n│  └── train_val.txt\n└── ufreiburg-flyingthings3d        # Uni Freiburg FlyingThings3D\n   └── data\n      ├── frames_cleanpass\n      ├── frames_finalpass\n      └── optical_flow\n```\n\n\n## Training\n\nTraining is done via\n```\n./main.py train -d \u003cstrategy\u003e -m \u003cmodel\u003e\n```\nwhere `\u003cstrategy\u003e` is a strategy config specifying training stages, i.e. data and optimizer parameters, and `\u003cmodel\u003e` is a model specification file, describing the model parameters.\nFor strategy config files see `cfg/strategy/`, for model config files see `cfg/model/`.\nConfig files are documented in `cfg/_doc/`.\n\nBy default, training will store tensorboard and other log files in the `runs/\u003ctimestamp\u003e/` directory.\nIf specified in the training strategy and stages, checkpoints will be stored in `runs/\u003ctimestamp\u003e/checkpoints/`.\nMetrics etc. can be customized via an inspection config\n\nSee `./main.py train -h` for more information.\n\n\n## Evaluation\n\nSaved checkpoints can be evaluated via\n```\n./main.py evaluate -d \u003cdata\u003e -m \u003cmodel\u003e -c \u003ccheckpoint\u003e\n```\nwhere `\u003cdata\u003e` is a data source specification (`cfg/data/`), `\u003cmodel\u003e` is a model specification (`cfg/model/`), and `\u003ccheckpoint\u003e` is the checkpoint to evaluate.\nNote that the model specification should match the one used for training the model (i.e. generating the checkpoint).\n\nBy default, this prints a set of metrics per sample and a summary collecting means.\nThis can e.g. be adapted via a custom evaluation config file.\nThe `eval` sub-command can also be used to visualize flow, visualize error metrics, and generate flow files for submission.\n\nSee `./main.py eval -h` for more information.\n\n\n### Using original RAFT/DICL checkpoints\n\nOriginal RAFT and DICL checkpoints can be used for evaluation with this framework.\nTo do this, the checkpoints have to be converted via\n```\n./scripts/chkpt_convert.py -i \u003coriginal\u003e -o \u003coutput\u003e -f \u003cformat\u003e\n```\nwhere `\u003coriginal\u003e` is the original checkpoint file, `\u003coutput\u003e` is the output file (to be generated) and `\u003cformat\u003e` is the format of the original checkpoint, i.e. one of `dicl` or `raft`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqzed%2Fraft-meets-dicl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqzed%2Fraft-meets-dicl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqzed%2Fraft-meets-dicl/lists"}