{"id":20391830,"url":"https://github.com/zpdesu/lsaa-dataset","last_synced_at":"2025-04-12T11:41:59.224Z","repository":{"id":40980423,"uuid":"199661914","full_name":"ZPdesu/lsaa-dataset","owner":"ZPdesu","description":"Large Scale Architectural Asset Dataset -- LSAA (IEEE TVCG 2020)","archived":false,"fork":false,"pushed_at":"2022-12-08T06:02:21.000Z","size":62351,"stargazers_count":38,"open_issues_count":9,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-26T06:23:53.024Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/ZPdesu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-30T13:55:45.000Z","updated_at":"2025-02-01T07:14:48.000Z","dependencies_parsed_at":"2023-01-24T15:00:12.117Z","dependency_job_id":null,"html_url":"https://github.com/ZPdesu/lsaa-dataset","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/ZPdesu%2Flsaa-dataset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZPdesu%2Flsaa-dataset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZPdesu%2Flsaa-dataset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZPdesu%2Flsaa-dataset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZPdesu","download_url":"https://codeload.github.com/ZPdesu/lsaa-dataset/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248563546,"owners_count":21125302,"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":[],"created_at":"2024-11-15T03:37:01.595Z","updated_at":"2025-04-12T11:41:59.203Z","avatar_url":"https://github.com/ZPdesu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Large Scale Architectural Asset Dataset -- LSAA (TVCG)\n![Python 3.7](https://img.shields.io/badge/python-3.7-green.svg?style=plastic)\n![License CC](https://img.shields.io/badge/license-CC-green.svg?style=plastic)\n![Photospheres 78K](https://img.shields.io/badge/photospheres-78K-green.svg?style=plastic)\n![Facades 200K](https://img.shields.io/badge/facades-200K-green.svg?style=plastic)\n\n![Dataset image](./docs/images/facades_windows.png)\n\nLarge Scale Architectural Asset Dataset (LSAA) is  a dataset of architectural assets from a large-scale panoramic image collection:\n\n\u003e **Large Scale Architectural Asset Extraction from Panoramic Imagery**\u003cbr\u003e\n\u003e Peihao Zhu (KAUST), Wamiq Reyaz Para (KAUST), Anna Fruehstueck (KAUST), John Femiani (Miami University in Oxford Ohio), Peter Wonka (KAUST)\u003cbr\u003e\n\u003e https://youtu.be/XmQvwaIbbKE\n\u003e https://ieeexplore.ieee.org/document/9145640\n\nThe dataset consists of 78,377 photospheres and 199,723 extracted facade images including the contained windows, doors, and balconies together with descriptive attributes.\n\nFor inquiries, please contact peihao.zhu@kaust.edu.sa\n\n## Licenses\nThe dataset (including JSON, CSV metadata, download script, and documents) is made available under [Creative Commons BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). You can **use, redistribute, and adapt it for non-commercial purposes**, as long as you (a) give appropriate credit by **citing our paper**, (b) **indicate any changes** that you've made, and (c) distribute any derivative works **under the same license**.\n\n* [https://creativecommons.org/licenses/by-nc-sa/4.0/](https://creativecommons.org/licenses/by-nc-sa/4.0/)\n\n\n## \u003cspan style=\"color:red\"\u003e New Update\u003c/span\u003e\n\nThe architectural asset dataset can be directly downloaded [Here](https://drive.google.com/drive/folders/1iRZ9lw9vsiQbDGYMGK-II5g7yK_9Gw8d?usp=sharing), and the panorama rectification code has been added to the `Panorama_Rectification/` folder.\n\nTo rectify the panorama images input by the user, put them in the `Panorama_Rectification/Pano_new/New/images` folder and run\n\n```\ncd Panorama_Rectification\npython Batch_Simon_Panoramas_final.py\n```\n\n\n\n## Overview\n![Teaser](./docs/images/teaser.png)\n\nThis dataset contains 199,723 facade images and corresponding window, door, and balcony asset images together with descriptive attributes. You can also get the original panoramic images (b) and projected images (c) after running the download scripts.\n\nGeographic locations of the collected facades:\n![locations](./docs/images/locations.png)\n\nTo get all of the data, you first need to download the annotations folder from [Google Drive](https://drive.google.com/open?id=1hnMSMuA4fY28rqkI64asGmhUWKg_OMc5) and place it under the main lsaa-dataset folder.\n\nThe following is a list of the contents of the annotations folder:\n\n| Path | Size | Files | Format | Description\n| :--- | :--: | ----: | :----: | :----------\n| [annotations](https://drive.google.com/open?id=1hnMSMuA4fY28rqkI64asGmhUWKg_OMc5) | 860.2 MB | 13 | | Annotations folder\n| \u0026boxvr;\u0026nbsp; [Properties200K.csv](https://drive.google.com/open?id=1XR5CNsQGg9803yJ_YYtcchgZlXizv_gx) | 77.1 MB | 1 | CSV | Properties file of 200K facades\n| \u0026boxvr;\u0026nbsp; [Properties23K.csv](https://drive.google.com/open?id=1ghPJjIHrao77-T8tvTlVn9cp9cKhZeLf) | 9.2 MB | 1 | CSV | Filtered version of Properties200K.csv (a subset of 23K facades)\n| \u0026boxvr;\u0026nbsp; [panorama_rectification.json](https://drive.google.com/open?id=12cOD19PeknR8uD7ePpJ74fOkVszQnj0G) | 138.6 MB | 1 | JSON | Rectification parameters of the panoramic images\n| \u0026boxvr;\u0026nbsp; [facade_detection_result.json](https://drive.google.com/open?id=195uDy_l3dWbX8kVepHkcnpfKbq4ChiGF) | 85.2 MB | 1 | JSON | Facade bounding boxes on projected images\n| \u0026boxvr;\u0026nbsp; [window](https://drive.google.com/open?id=1AAp8TrHhAHvjHC6_XXQtiMNtmE9rVyoa) | 419.1MB | 3 | | Annotations folder of windows\n| \u0026boxv;\u0026nbsp; \u0026boxvr;\u0026nbsp; [window_all.csv](https://drive.google.com/open?id=1ZzU1K6J-V4fA1lFJQZvHxs1pAgeGvDzJ) | 147.0MB | 1 | CSV | Properties file of windows\n| \u0026boxv;\u0026nbsp; \u0026boxvr;\u0026nbsp; [window_filtered.csv](https://drive.google.com/open?id=1B9VRjIjmjwinWSCtdasHkN5cIg5dr4Dd) | 44.4 MB | 1 | CSV | Filtered version of window_all.csv\n| \u0026boxv;\u0026nbsp; \u0026boxur;\u0026nbsp; [window_detection.json](https://drive.google.com/open?id=17BVv-83BZrKj6rMe8FJyzTBiI58sE35e) | 227.7 MB | 1 | JSON | Window bounding boxes on the 23K facades\n| \u0026boxvr;\u0026nbsp; [door](https://drive.google.com/open?id=1Rojo5dhgLejOhznrHijUcnMcFqKofEeK) | 23.1MB | 3 | | Annotations folder of doors\n| \u0026boxv;\u0026nbsp; \u0026boxvr;\u0026nbsp; [door_all.csv](https://drive.google.com/open?id=1pVBiEmKPDelo_ThiSMTeWgqOwUzcIyRL) | 8.0MB | 1 | CSV | Properties file of doors\n| \u0026boxv;\u0026nbsp; \u0026boxvr;\u0026nbsp; [door_filtered.csv](https://drive.google.com/open?id=102pCJ9VczUHMfOGPXOhbMnql6KJ19paL) | 5.0 MB | 1 | CSV | Filtered version of door_all.csv\n| \u0026boxv;\u0026nbsp; \u0026boxur;\u0026nbsp; [door_detection.json](https://drive.google.com/open?id=1S48sCwfWYHX6-XkhMAvtkdRrNXJMA_xc) | 10.2 MB | 1 | JSON | Door bounding boxes on the 23K facades\n| \u0026boxur;\u0026nbsp; [balcony](https://drive.google.com/open?id=13qt-1BPgDp7WBJFs9YCDWHTcZGtX2mXL) | 107.8MB | 3 | | Annotations folder of balconies\n| \u0026ensp;\u0026ensp; \u0026boxvr;\u0026nbsp; [balcony_all.csv](https://drive.google.com/open?id=1TqoKAbbriRoKrdm2I6ODk5MUfcmMtFw9)| 40.7MB | 1 | CSV | Properties file of balconies\n| \u0026ensp;\u0026ensp; \u0026boxvr;\u0026nbsp; [balcony_filtered.csv](https://drive.google.com/open?id=1aTpfpy7Nii3x8il4ieiBzZrI2fjgYkav)| 15.2MB | 1 | CSV | Filtered version of balcony_all.csv\n| \u0026ensp;\u0026ensp; \u0026boxur;\u0026nbsp; [balcony_detection.json](https://drive.google.com/open?id=1ymygF05ZbiJ4faMJQqDODZDefFVX-HjI) | 51.9 MB | 1 | JSON | Balcony bounding boxes on the 23K facades\n\n\n\n\n## Installation\nClone this repo.\n\n```\ngit clone git@github.com:ZPdesu/lsaa-dataset.git\ncd lsaa-dataset\n```\nPlease install dependencies by\n\n```\npip install -r requirements.txt\n```\nThis code also requires the [google-panorama-by-id](https://www.npmjs.com/package/google-panorama-by-id) to check whether the panorama has been removed by Google. You can easily install it by\n\n```\nnpm install google-panorama-by-id\n```\nThen put the previously downloaded [annotations](https://drive.google.com/open?id=1hnMSMuA4fY28rqkI64asGmhUWKg_OMc5) folder in the current directory.\n\n## Download script\n\nTo download the data, you can easily use the provided download scripts. Please use these 4 scripts according to the order from step1 to step4, and make sure that the optional arguments for step1 to step3 are the same.\n\n**Step1**: Download the panoramic images.\n\n```\n\u003e python step1_download_panoramas.py -h\nusage: step1_download_panoramas.py [-h] [--properties_file FILE] [--cores NUM]\n                                   [--pano_folder FOLDER]\n                                   [--projection_folder FOLDER]\n                                   [--facade_folder FOLDER]\n                                   [--facade_detection_result FILE]\n                                   [--panorama_rectification FILE]\n                                   [--country COUNTRY] [--city CITY]\n                                   [--min_height PX] [--min_width PX]\n                                   [--max_height PX] [--max_width PX]\n                                   [--max_occlusion NUM] [--first NUM]\n                                   [--last NUM] [--use_tqdm BOOL]\n​\n```\n**Step2**: Rectify and project the panoramic images.\n\n```\n\u003e python step2_rectify_and_project_panoramas.py -h\nusage: step1_download_panoramas.py [-h] [--properties_file FILE] [--cores NUM]\n                                   [--pano_folder FOLDER]\n                                   [--projection_folder FOLDER]\n                                   [--facade_folder FOLDER]\n                                   [--facade_detection_result FILE]\n                                   [--panorama_rectification FILE]\n                                   [--country COUNTRY] [--city CITY]\n                                   [--min_height PX] [--min_width PX]\n                                   [--max_height PX] [--max_width PX]\n                                   [--max_occlusion NUM] [--first NUM]\n                                   [--last NUM] [--use_tqdm BOOL]\n​\n```\n**Step3**: Detect facades from projected images.\n\n```\n\u003e python step3_detect_facades_from_rendering.py -h\nusage: step1_download_panoramas.py [-h] [--properties_file FILE] [--cores NUM]\n                                   [--pano_folder FOLDER]\n                                   [--projection_folder FOLDER]\n                                   [--facade_folder FOLDER]\n                                   [--facade_detection_result FILE]\n                                   [--panorama_rectification FILE]\n                                   [--country COUNTRY] [--city CITY]\n                                   [--min_height PX] [--min_width PX]\n                                   [--max_height PX] [--max_width PX]\n                                   [--max_occlusion NUM] [--first NUM]\n                                   [--last NUM] [--use_tqdm BOOL]\n​\n```\n\nOptional arguments for step1,2,3:\n\n```\n  -h, --help            show this help message and exit\n  --properties_file FILE\n                        facade_properties file (default:\n                        annotations/Properties23K.csv)\n  --cores NUM           use multiple cores to download panoramas (default: 48)\n  --pano_folder FOLDER  panorama folder (default: data/Panoramas)\n  --projection_folder FOLDER\n                        projection folder (default: data/Projection)\n  --facade_folder FOLDER\n                        facade folder (default: data/Facades)\n  --facade_detection_result FILE\n                        facade bounding boxes on projected images (default:\n                        annotations/facade_detection_result.json)\n  --panorama_rectification FILE\n                        rectification parameters of the panoramic images\n                        (default: annotations/panorama_rectification.json)\n  --country COUNTRY     country constrain (default: None)\n  --city CITY           city constrain (default: Vienna)\n  --min_height PX       facade minimal height (default: None)\n  --min_width PX        facade minimal width (default: None)\n  --max_height PX       facade maximal height (default: None)\n  --max_width PX        facade maximal width (default: None)\n  --max_occlusion NUM   facade max occlusion (default: 0.6)\n  --first NUM           first facade number (default: 0)\n  --last NUM            last facade number (default: 50)\n  --use_tqdm BOOL       use tqdm (default: True)\n```\n\nHere is an example to download 300 facade images of Vienna with a minimum pixel size greater than 200\u0026times;200.\n\n```\n\u003e python step1_download_panoramas.py --city Vienna --min_height 200 --min_width 200 --first 0 --last 300\n\u003e python step2_rectify_and_project_panoramas.py --city Vienna --min_height 200 --min_width 200 --first 0 --last 300\n\u003e python step3_detect_facades_from_rendering.py --city Vienna --min_height 200 --min_width 200 --first 0 --last 300\n```\n\nIt is worth noting that three files need the same optional arguments. If you want to change the default values, please modify the `options/facade_base_options.py`.\n\nBy default, we use the `annotations/Properties23K.csv` as facade_properties file, which means we only download the filtered 23K facade images other than the original 200K. Due to image quality issues, we removed facade images of Berlin, Brussels and HK in the `annotations/Properties23K.csv`, so please do not choose these values as the city option when you are using the `annotations/Properties23K.csv`.\n\n**Step4**: Detect architectural assets (windows, doors and balconies) from downloaded facade images.\n\n```\n\u003e python step4_detect_assets_from_facades.py -h\nusage: step4_detect_assets_from_facades.py [-h] [--asset_type TYPE]\n                                           [--filtered BOOL] [--cores CORES]\n                                           [--pano_folder FOLDER]\n                                           [--projection_folder FOLDER]\n                                           [--facade_folder FOLDER]\n                                           [--country COUNTRY] [--city CITY]\n                                           [--min_height PX] [--min_width PX]\n                                           [--max_height PX] [--max_width PX]\n                                           [--max_occlusion NUM]\n                                           [--use_tqdm BOOL]\n​\noptional arguments:\n  -h, --help            show this help message and exit\n  --asset_type TYPE     asset type (default: window)\n  --filtered BOOL       if filtered use asset_filtered.csv, otherwise use\n                        asset_all.csv (default: True)\n  --cores CORES         use multiple cores to download panoramas (default: 48)\n  --pano_folder FOLDER  pano folder (default: data/Panoramas)\n  --projection_folder FOLDER\n                        projection folder (default: data/Projection)\n  --facade_folder FOLDER\n                        facade folder (default: data/Facades)\n  --country COUNTRY     country constrain (default: None)\n  --city CITY           city constrain (default: None)\n  --min_height PX       asset minimal height (default: None)\n  --min_width PX        asset minimal width (default: None)\n  --max_height PX       asset maximal height (default: None)\n  --max_width PX        asset maximal width (default: None)\n  --max_occlusion NUM   max occlusion (default: None)\n  --use_tqdm BOOL       use tqdm (default: True)\n​\n```\n\nDepending on the asset types selected, you can get different kind of architectural assets from previously downloaded facade images, e.g. windows or doors. Here is a simple example to get the window images:\n\n```\n\u003e python step4_detect_assets_from_facades.py --asset_type window\n```\nThere are also two versions of the assets properties file: `xx_all.csv` and `xx_filtered.csv`. By default we use `xx_filtered.csv`, so if you want to use `xx_all.csv`, please add `--filtered False` option. Both of assets in `xx_all.csv` and `xx_filtered.csv` are obtained from the facades in `Properties23K.csv`.\n\nExample to get all of the door images:\n\n```\n\u003e python step4_detect_assets_from_facades.py --asset_type door --filtered False\n```\n**Note**:\nSince Google deleted some of the panoramas recorded in our files, the final downloaded facades and other architectural aseets may be less than expected. Please check the download results in the `data` folder and logs in the `logs` folder.\n\nWhen the program starts working, the terminal will print `start`, and print `finished` when it is done.\n\n\n\n## Metadata\n### Facades\n\nThe `Properties23K.csv` and `Properties200K.csv` contains the following properties information for each facade image: \n\n|name   |panoID   |country   |city   |building   |Lon   |Lat   |height   |width   |resolution   |aspect_ratio   |noblur   |view_angle   |Homography_error   |floors   |num_windows|background   |deco   |window|balcony   |shop   |sign   |tree   |obs   |total_occlusion|\n|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n|USA_NewYork_way264624874_Fid5411_-C0oUsgY_kUIty96ZOtrWg.jpg   | -C0oUsgY_kUIty96ZOtrWg   |USA   |NewYork   |way264624874   |-74.00   |40.74   |843   |787   |663441   |1.07   |2989.11   |49.97   |0.01   |7|50|0.14   |0   |0.10   |0   |0   |0   |0.26   |0.01   |0.27   |\n|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|...|\n\n\nThe `facade_detection_result.json` contains the following bounding box information for each facade image: \n```\n{\n\t'USA_NewYork_way264624874_Fid5411_-C0oUsgY_kUIty96ZOtrWg.jpg':{\n        'complete_name': 'USA_NewYork_way264624874_wall_1_1_-C0oUsgY_kUIty96ZOtrWg_VP_0_1.jpg', \n        'simplified_name': '-C0oUsgY_kUIty96ZOtrWg_VP_0_1.jpg', \n        'panoID': '-C0oUsgY_kUIty96ZOtrWg', \n        'box': [2351.682861328125, 1545.7784423828125, 787.02587890625, 842.2864990234375]\n        },\n\t...\n}\n```\n\nThe `panorama_rectification.json` contains the following rectification information for each projected image: \n```\n{\n\t'USA_NewYork_way264624874_wall_1_1_-C0oUsgY_kUIty96ZOtrWg_VP_0_1.jpg':{\n    \t'pano_img': 'way264624874_wall_1_1_-C0oUsgY_kUIty96ZOtrWg.jpg', \n        'panoID': '-C0oUsgY_kUIty96ZOtrWg', \n        'simplified_name': '-C0oUsgY_kUIty96ZOtrWg_VP_0_1.jpg', \n        'country': 'USA', \n        'city': 'NewYork', \n        'pitch': 0.01951806432130453, \n        'roll': -0.0023856889244242277, \n        'heading': -4.70347914765424, \n        'height': 6656, \n        'width': 13312}\n\t...\n}\n```\n\n### Assets\n\nThe `xx/xx_filtered.csv` and `xx/xx_all.csv` (xx refers to a specific asset type e.g. window) contains the following properties information for each asset image: \n\n|name   |panoID   |country   |city   |building   |height   |width   |resolution   |aspect_ratio   |noblur   |view_angle  |facade_name   |normalized_x   |normalized_y   |\n|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n|France_Paris_way49339544_Fid485_Wid294383_ZgdOAZkrWUQAYh7Lk5rmvA.jpg   |ZgdOAZkrWUQAYh7Lk5rmvA   |France   |Paris   |way49339544   |123   |54   |6642   |2.28   |891.91   |41.12   |France_Paris_way49339544_Fid485_ZgdOAZkrWUQAYh7Lk5rmvA.jpg   |0.23   |0.53   |\n|...|...|...|...|...|...|...|...|...|...|...|...|...|...|\n\n\nThe `xx/xx_detection.json` contains the following bounding box information for each asset image: \n```\n{\n\t'France_Paris_way49339544_Fid485_Wid294383_ZgdOAZkrWUQAYh7Lk5rmvA.jpg':{\n    \t'facade_name': 'France_Paris_way49339544_Fid485_ZgdOAZkrWUQAYh7Lk5rmvA.jpg', \n        'panoID': 'ZgdOAZkrWUQAYh7Lk5rmvA', \n        'box': [159.14720153808594, 436.5448303222656, 44.50091552734375, 102.63150024414062]\n        },\n\t...\n}\n```\n\n## Citation\n\nIf you use this code or data for your research, please cite our papers.\n\n```\n@ARTICLE{9145640,\n  author={P. {Zhu} and W. R. {Para} and A. {Fruehstueck} and J. {Femiani} and P. {Wonka}},\n  journal={IEEE Transactions on Visualization and Computer Graphics}, \n  title={Large Scale Architectural Asset Extraction from Panoramic Imagery}, \n  year={2020},\n  volume={},\n  number={},\n  pages={1-1},}\n```\n\n## Acknowledgements\nThe self-contained streetview codes are modified from https://github.com/robolyst/streetview\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpdesu%2Flsaa-dataset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzpdesu%2Flsaa-dataset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpdesu%2Flsaa-dataset/lists"}