{"id":13738242,"url":"https://github.com/gtolias/how","last_synced_at":"2025-04-14T00:11:25.650Z","repository":{"id":41429756,"uuid":"279616011","full_name":"gtolias/how","owner":"gtolias","description":"HOW local descriptors","archived":false,"fork":false,"pushed_at":"2024-07-25T10:57:51.000Z","size":58,"stargazers_count":93,"open_issues_count":2,"forks_count":11,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-12-31T10:13:12.656Z","etag":null,"topics":["deep-descriptors","image-retrieval","instance-level-recognition","instance-level-search","local-descriptors","local-features","visual-representation","visual-representation-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gtolias.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-14T14:58:58.000Z","updated_at":"2024-12-26T17:25:25.000Z","dependencies_parsed_at":"2024-01-07T17:11:01.603Z","dependency_job_id":"2a198955-0800-4086-845b-b9055292ccc7","html_url":"https://github.com/gtolias/how","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtolias%2Fhow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtolias%2Fhow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtolias%2Fhow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtolias%2Fhow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gtolias","download_url":"https://codeload.github.com/gtolias/how/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232867368,"owners_count":18588785,"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","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":["deep-descriptors","image-retrieval","instance-level-recognition","instance-level-search","local-descriptors","local-features","visual-representation","visual-representation-learning"],"created_at":"2024-08-03T03:02:15.547Z","updated_at":"2025-01-07T11:09:59.994Z","avatar_url":"https://github.com/gtolias.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# HOW local descriptors\n\nThis is the official Python/PyTorch implementation of the HOW local descriptors from our [ECCV 2020 paper](https://arxiv.org/abs/2007.13172):\n\n```\n@InProceedings{TJ20,\n  author      = \"Giorgos Tolias and Tomas Jenicek and Ond\\v{r}ej Chum}\",\n  title       = \"Learning and aggregating deep local descriptors for instance-level recognition\",\n  booktitle   = \"European Conference on Computer Vision\",\n  year        = \"2020\"\n}\n```\n\n\n## Running the Code\n\n1. Install the cirtorch package (see [cirtorch github](https://github.com/filipradenovic/cnnimageretrieval-pytorch/) for details)\n\n```\n# cirtorch\nwget \"https://github.com/filipradenovic/cnnimageretrieval-pytorch/archive/v1.2.zip\"\nunzip v1.2.zip\nrm v1.2.zip\nexport PYTHONPATH=${PYTHONPATH}:$(realpath cnnimageretrieval-pytorch-1.2)\n```\n\n2. Install the asmk package with dependencies (see [asmk github](https://github.com/jenicek/asmk#running-the-code) for details)\n\n```\n# asmk\ngit clone https://github.com/jenicek/asmk.git\npip3 install pyaml numpy faiss-gpu\ncd asmk\npython3 setup.py build_ext --inplace\nrm -r build\ncd ..\nexport PYTHONPATH=${PYTHONPATH}:$(realpath asmk)\n```\n\n3. Install pip3 requirements\n\n```\npip3 install -r requirements.txt\n```\n\n4. Run `examples/demo_how.py` with two arguments \u0026ndash; mode (`train` or `eval`) and any `.yaml` parameter file from `examples/params/*/*.yml`\n\n\n### Evaluating ECCV 2020 HOW models\n\nReproducing results from **Table 2.** with the publicly available models\n\n- R18\u003csub\u003ehow\u003c/sub\u003e (n = 1000): \u0026nbsp; `examples/demo_how.py eval examples/params/eccv20/eval_how_r18_1000.yml -e official_how_r18_1000` \u0026ensp; _ROxf (M): 75.1, RPar (M): 79.4_\n- -R50\u003csub\u003ehow\u003c/sub\u003e (n = 1000): \u0026nbsp; `examples/demo_how.py eval examples/params/eccv20/eval_how_r50-_1000.yml -e official_how_r50-_1000` \u0026ensp; _ROxf (M): 78.3, RPar (M): 80.1_\n- -R50\u003csub\u003ehow\u003c/sub\u003e (n = 2000): \u0026nbsp; `examples/demo_how.py eval examples/params/eccv20/eval_how_r50-_2000.yml -e official_how_r50-_2000` \u0026ensp; _ROxf (M): 79.4, RPar (M): 81.6_\n\n\n### Training HOW models\n\n- R18\u003csub\u003ehow\u003c/sub\u003e:\n    - train: `examples/demo_how.py train examples/params/eccv20/train_how_r18.yml -e train_how_r18`\n    - eval (n = 1000): `examples/demo_how.py eval examples/params/eccv20/eval_how_r18_1000.yml -ml train_how_r18`\n- -R50\u003csub\u003ehow\u003c/sub\u003e:\n    - train: `examples/demo_how.py train examples/params/eccv20/eval_how_r50-.yml -e train_how_r50-`\n    - eval (n = 1000): `examples/demo_how.py eval examples/params/eccv20/eval_how_r50-_1000.yml -ml train_how_r50-`\n    - eval (n = 2000): `examples/demo_how.py eval examples/params/eccv20/eval_how_r50-_2000.yml -ml train_how_r50-`\n\nDataset shuffling during the training is done according to the cirtorch package; randomness in the results is caused by cudnn and by kmeans for codebook creation during evaluation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtolias%2Fhow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgtolias%2Fhow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtolias%2Fhow/lists"}