{"id":15356390,"url":"https://github.com/saravanabalagi/pspnet_tf2","last_synced_at":"2025-04-15T06:40:07.954Z","repository":{"id":84130113,"uuid":"251428001","full_name":"saravanabalagi/pspnet_tf2","owner":"saravanabalagi","description":"PSPNet in Tensorflow 2 with pretrained weights for ADE20k, CityScapes and VOC2012","archived":false,"fork":false,"pushed_at":"2020-04-14T23:57:23.000Z","size":9535,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-23T07:06:53.211Z","etag":null,"topics":["ade20k","cityscapes","pretrained-models","pspnet","tensorflow-2","tf2","voc2012"],"latest_commit_sha":null,"homepage":null,"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/saravanabalagi.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-03-30T21:04:43.000Z","updated_at":"2025-02-21T14:29:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"8730c55e-4e3a-4855-8ab8-e6236a142e2f","html_url":"https://github.com/saravanabalagi/pspnet_tf2","commit_stats":{"total_commits":89,"total_committers":11,"mean_commits":8.090909090909092,"dds":0.5280898876404494,"last_synced_commit":"a9548981e9532a817e09bfe8f40a9d17d9b33cf9"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saravanabalagi%2Fpspnet_tf2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saravanabalagi%2Fpspnet_tf2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saravanabalagi%2Fpspnet_tf2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saravanabalagi%2Fpspnet_tf2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saravanabalagi","download_url":"https://codeload.github.com/saravanabalagi/pspnet_tf2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240972637,"owners_count":19886999,"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":["ade20k","cityscapes","pretrained-models","pspnet","tensorflow-2","tf2","voc2012"],"created_at":"2024-10-01T12:28:35.001Z","updated_at":"2025-02-27T03:30:40.365Z","avatar_url":"https://github.com/saravanabalagi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PSPNet Tensorflow 2\n\nKeras Pyramid Scene Parsing Network ported to tensorflow 2 from keras/tf_1.13.\n\n- Caffe implementation: [PSPNet](https://github.com/hszhao/PSPNet)\n- Py35 Keras Tensorflow1.13 implementation: [PSPNet-Keras-tensorflow](https://github.com/Vladkryvoruchko/PSPNet-Keras-tensorflow)\n\n## Dependencies\n\n- Tensorflow 2 (tensorflow / tensorflow-gpu / tensorflow-cpu)\n- OpenCV (opencv-python / opencv-contrib-python)\n\n## Pretrained weights\n\nPretrained weights can be downloaded here:\n\n| H5 Weights | Architecture | Numpy Weights |\n|------------|--------------|---------------|\n| [pspnet50_ade20k.h5](https://www.dropbox.com/s/7eyuzmag8df41j4/pspnet50_ade20k.h5?dl=0) | [pspnet50_ade20k.json](https://www.dropbox.com/s/xy7gs4g2def5z89/pspnet50_ade20k.json?dl=0) | [pspnet50_ade20k.npy](https://www.dropbox.com/s/z8la9ugpdss8k8q/pspnet50_ade20k.npy?dl=0) |\n| [pspnet101_cityscapes.h5](https://www.dropbox.com/s/oymx9ktu6zrv7vz/pspnet101_cityscapes.h5?dl=0) | [pspnet101_cityscapes.json](https://www.dropbox.com/s/pofkdnf59nbs5w0/pspnet101_cityscapes.json?dl=0) | [pspnet101_cityscapes.npy](https://www.dropbox.com/s/2tdl01ihse7p9sr/pspnet101_cityscapes.npy?dl=0) |\n| [pspnet101_voc2012.h5](https://www.dropbox.com/s/lqkmukeuo78cbcs/pspnet101_voc2012.h5?dl=0) | [pspnet101_voc2012.json](https://www.dropbox.com/s/i9f2p3q1d4wohd3/pspnet101_voc2012.json?dl=0) | [pspnet101_voc2012.npy](https://www.dropbox.com/s/yp4im80m72r6h98/pspnet101_voc2012.npy?dl=0) |\n\nDownload weights in \n- `.h5` and `.json` format and place them at `weights/keras` or\n- `.npy` and place them at `weights/npy`\n\nFind example [notebook](save_and_load.ipynb) which demonstrates save and load.\n\n## Usage:\n\n```sh\n# python pspnet.py -m \u003cmodel\u003e -i \u003cinput_image\u003e  -o \u003coutput_path\u003e [-other_arguments]\npython pspnet.py -m pspnet101_cityscapes -i example_images/cityscapes.jpg -o example_results/cityscapes.jpg -s -ms -f\npython pspnet.py -m pspnet101_voc2012 -i example_images/pascal_voc.jpg -o example_results/pascal_voc.jpg -s -ms -f\npython pspnet.py -m pspnet50_ade20k -i example_images/ade20k.jpg -o example_results/ade20k.jpg -s -ms -f\n```\nList of arguments:\n```sh\n -m --model        - which model to use: 'pspnet50_ade20k', 'pspnet101_cityscapes', 'pspnet101_voc2012'\n    --id           - (int) GPU Device id. Default 0\n -s --sliding      - Use sliding window\n -f --flip         - Additional prediction of flipped image\n -ms --multi_scale - Predict on multiscale images\n```\n\n![new](https://img.shields.io/badge/-new-blue) Batch Predict on GPU, check source [here](https://github.com/saravanabalagi/pspnet_tf2/blob/master/pspnet.py#L49)\n\n## Keras results:\n\n| Input | Segmented | Blended | Probe |\n|-------|-----------|---------|-------|\n| ![Original](example_images/ade20k.jpg) | ![New](example_results/ade20k_seg.jpg) | ![New](example_results/ade20k_seg_blended.jpg) | ![New](example_results/ade20k_probs.jpg) |\n| ![Original](example_images/cityscapes.jpg) | ![New](example_results/cityscapes_seg.jpg) | ![New](example_results/cityscapes_seg_blended.jpg) | ![New](example_results/cityscapes_probs.jpg) |\n| ![Original](example_images/pascal_voc.jpg) | ![New](example_results/pascal_voc_seg.jpg) | ![New](example_results/pascal_voc_seg_blended.jpg) | ![New](example_results/pascal_voc_probs.jpg) |\n\n## Implementation \n\n* The interpolation layer is implemented as custom layer \"Interp\"\n* Forward step takes about ~1 sec on single image\n* Memory usage can be optimized with:\n```python\n# before calling any of the tf functions\nfor gpu in tf.config.experimental.list_physical_devices('GPU'):\n    tf.config.experimental.set_memory_growth(gpu, True)\n    # if you want to restrict total memory you can try\n    # tf.config.experimental.set_memory_growth(gpu, True)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaravanabalagi%2Fpspnet_tf2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaravanabalagi%2Fpspnet_tf2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaravanabalagi%2Fpspnet_tf2/lists"}