{"id":16443161,"url":"https://github.com/andreihar/plane-segmenter","last_synced_at":"2026-06-11T18:31:20.604Z","repository":{"id":254671492,"uuid":"843688103","full_name":"andreihar/plane-segmenter","owner":"andreihar","description":"Detection and Segmentation of Planes","archived":false,"fork":false,"pushed_at":"2024-08-29T02:36:45.000Z","size":7477,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T05:15:52.779Z","etag":null,"topics":["aerial-imagery","detectron2","instance-segmentation","object-detection","resnet","semantic-segmentation"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/andreihar.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":"2024-08-17T05:41:23.000Z","updated_at":"2024-08-29T02:36:48.000Z","dependencies_parsed_at":"2024-11-11T03:11:53.096Z","dependency_job_id":null,"html_url":"https://github.com/andreihar/plane-segmenter","commit_stats":null,"previous_names":["andreihar/plane-segmenter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andreihar/plane-segmenter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreihar%2Fplane-segmenter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreihar%2Fplane-segmenter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreihar%2Fplane-segmenter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreihar%2Fplane-segmenter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreihar","download_url":"https://codeload.github.com/andreihar/plane-segmenter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreihar%2Fplane-segmenter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34213180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"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":["aerial-imagery","detectron2","instance-segmentation","object-detection","resnet","semantic-segmentation"],"created_at":"2024-10-11T09:19:37.864Z","updated_at":"2026-06-11T18:31:20.583Z","avatar_url":"https://github.com/andreihar.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- PROJECT LOGO --\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/andreihar/plane-segmenter\"\u003e\n    \u003cimg src=\"readme/logo.svg\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n  \n# Plane Segmenter\n\n\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Contributors][contributors-badge]][contributors]\n[![Licence][licence-badge]][licence]\n[![LinkedIn][linkedin-badge]][linkedin]\n\n**Detection and Segmentation of Planes**\n\nModels for detecting and segmenting planes in aerial images, using techniques like Faster R-CNN and Mask R-CNN for enhanced performance and accuracy.\n\n\n\n\u003c/div\u003e\n\n\n\n---\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails open\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#run\"\u003eRun\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#functional-areas\"\u003eFunctional Areas\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#object-detection\"\u003eObject Detection\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#semantic-segmentation\"\u003eSemantic Segmentation\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#instance-segmentation\"\u003eInstance Segmentation\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#mask-r-cnn\"\u003eMask R-CNN\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#data\"\u003eData\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributors\"\u003eContributors\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#licence\"\u003eLicence\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nPlane Segmenter is the assignment project created for the course in Computer Vision in the Spring semester of 2023. The project focuses on applying deep learning techniques to solve key tasks in computer vision: object detection, semantic segmentation, and instance segmentation.\n\nThe objective of this assignment was to design and train advanced deep convolutional neural networks with PyTorch and Detectron2 to accurately detect and segment planes in high-resolution aerial images. The model started with a baseline configuration and iteratively improved through hyperparameter tuning and architectural adjustments.\n\nBy addressing these challenges, Plane Segmenter demonstrates practical applications of state-of-the-art computer vision techniques and provides insights into the effectiveness of different deep learning methods and configurations.\n\n### Built With\n\n* [![Detectron2][detectron-badge]][detectron]\n\n\n\n\u003c!-- RUN --\u003e\n## Run\n\nOpen the notebook using your choice software in a terminal or command window by navigating to the top-level project directory, `plane-segmenter`. For example, if the software is Jupyter Notebook:\n\n```bash\njupyter notebook segmenter.ipynb\n```\n\n\n\n\u003c!-- FUNCTIONAL AREAS --\u003e\n## Functional Areas\n\n### Object Detection\n\nAn object detection model is built to identify planes in high-resolution aerial images using the modified iSAID dataset. The Detectron2 framework is employed to implement and train a Faster R-CNN model with a ResNet-101 backbone. Key hyperparameters are adjusted to enhance performance, and the model's effectiveness is assessed using the Average Precision (AP) metric. This approach sets the stage for improving detection capabilities in the following stages of the project.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"readme/object_detection.jpg\" alt=\"Object Detection\" width=\"450\"\u003e\n\u003c/p\u003e\n\n### Semantic Segmentation\n\nA deep neural network is developed for semantic segmentation to identify planes in images. Segmentation masks are extracted and processed, with images and masks resized to a consistent size. The model uses an encoder-decoder architecture, where the encoder captures image features and the decoder generates the segmentation masks. Enhancements include adding layers to both the encoder and decoder, and incorporating skip connections to retain spatial information. The training employs Binary Cross-Entropy with logits as the loss function and Stochastic Gradient Descent (SGD) for optimisation. Performance is evaluated using the Intersection-over-Union (IoU) metric.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"readme/semantic_segmentation_1.jpg\" alt=\"Semantic Segmentation Image\" width=\"200\"\u003e\n\u003cimg src=\"readme/semantic_segmentation_2.jpg\" alt=\"Semantic Segmentation Mask\" width=\"200\"\u003e\n\u003c/p\u003e\n\n### Instance Segmentation\n\nInstance segmentation is implemented by integrating a trained object detection model with a segmentation module to generate detailed masks for each detected instance. The approach involves using the model's predictions in place of ground-truth bounding boxes from the previous stage and processing each instance to create accurate segmentation masks. The model relies on an encoder-decoder architecture for effective feature extraction and mask reconstruction. Performance is evaluated using the Intersection-over-Union (IoU) metric, focusing on optimising model performance through careful architectural design and hyperparameter tuning.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"readme/instance_segmentation_1.jpg\" alt=\"Instance Segmentation Image\" width=\"350\"\u003e\n\u003cimg src=\"readme/instance_segmentation_2.jpg\" alt=\"Instance Segmentation Mask\" width=\"350\"\u003e\n\u003c/p\u003e\n\n### Mask R-CNN\n\nIn this part, we employ Mask R-CNN mode using a ResNet-50 backbone with a Feature Pyramid Network (FPN) to perform instance segmentation and compare its results with those obtained in the Instance Segmentation part. The model is fine-tuned with similar techniques to optimise performance. We visualise and evaluate the results, focusing on the advantages and drawbacks of the Mask R-CNN approach compared to the method used previously. Additionally, we compare the detection results with those from the Object Detection part to assess improvements and differences, providing insights into which method performs better and why.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"readme/mask_r-cnn.jpg\" alt=\"Mask R-CNN\" width=\"450\"\u003e\n\u003c/p\u003e\n\n\n\n\u003c!-- DATA --\u003e\n## Data\n\nThis dataset is a modified version of the [iSAID: A Large-scale Dataset for Instance Segmentation in Aerial Images](isaid), consisting of 198 training images and 72 test images, all from the Plane category.\n\n\n\n\u003c!-- CONTRIBUTION --\u003e\n## Contributors\n\n- Andrei Harbachov ([Github][andrei-github] · [LinkedIn][andrei-linkedin])\n\n\n\n\u003c!-- LICENCE --\u003e\n## Licence\n\nBecause Plane Segmenter is MIT-licensed, any developer can essentially do whatever they want with it as long as they include the original copyright and licence notice in any copies of the source code.\n\n\n\n\u003c!-- MARKDOWN LINKS --\u003e\n\u003c!-- Badges and their links --\u003e\n[contributors-badge]: https://img.shields.io/badge/Contributors-1-44cc11?style=for-the-badge\n[contributors]: #contributors\n[licence-badge]: https://img.shields.io/github/license/andreihar/plane-segmenter.svg?color=000000\u0026style=for-the-badge\n[licence]: LICENSE\n[linkedin-badge]: https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\n[linkedin]: https://www.linkedin.com/in/andreihar/\n[detectron-badge]: https://img.shields.io/badge/Detectron2-5173F1?style=for-the-badge\u0026logo=probot\u0026logoColor=ffffff\n[detectron]: https://ai.meta.com/tools/detectron2/\n\n\u003c!-- Technical links --\u003e\n[isaid]: https://captain-whu.github.io/iSAID/\n\n\u003c!-- Socials --\u003e\n[andrei-linkedin]: https://www.linkedin.com/in/andreihar/\n[andrei-github]: https://github.com/andreihar","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreihar%2Fplane-segmenter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreihar%2Fplane-segmenter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreihar%2Fplane-segmenter/lists"}