Skip to content

satellite-image-deep-learning/annotation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Annotation of datasets for deep learning applied to satellite and aerial imagery.

How to use this repository: if you know exactly what you are looking for (e.g. you have the paper name) you can Control+F to search for it in this page

Contents

Introduction to annotation

For supervised machine learning, you will require annotated images. For example if you are performing object detection you will need to annotate images with bounding boxes. Check that your annotation tool of choice supports large image (likely geotiff) files, as not all will. Note that GeoJSON is widely used by remote sensing researchers but this annotation format is not commonly supported in general computer vision frameworks, and in practice you may have to convert the annotation format to use the data with your chosen framework. There are both closed and open source tools for creating and converting annotation formats. Some of these tools are simply for performing annotation, whilst others add features such as dataset management and versioning. Note that self-supervised and active learning approaches might circumvent the need to perform a large scale annotation exercise. Note that tiffs/geotiffs cannot be displayed by most browsers (Chrome), but CAN render in Safari.

Annotation tools with GEO features

  • GroundWork is designed for annotating and labeling geospatial data like satellite imagery, from Azavea
  • labelbox.com -> free tier is quite generous, supports annotating Geotiffs & returning annotations with geospatial coordinates. Watch this webcast
  • diffgram describes itself as a complete training data platform for machine learning delivered as a single application, supports streaming data to pytorch & tensorflow. COGS can be annotated
  • iris -> Tool for manual image segmentation and classification of satellite imagery
  • If you are considering building an in house annotation platform read this article. Used PostGis database, GeoJson format and GIS standard in a stateless architecture
  • satellite-imagery-labeling-tool -> from Microsoft, this is a lightweight web-interface for creating and sharing vector annotations over satellite/aerial imagery scenes
  • RSLabel -> remote sensing (RS) image annotation tool for deep learning
  • encord -> supports annotatin SAR
  • Flood-Annotation-Tool -> Annotation tool to annotate flooded and non-flooded regions on satellite image, uses jupyter notebook
  • ds-annotate -> Magic wand and Segment Anything Model (SAM) annotation tool for machine learning training data, from Development seed.

Open source annotation tools

  • awesome-data-labeling -> long list of annotation tools
  • awesome-open-data-annotation -> another long list of annotation tools
  • labelImg is the classic desktop tool, limited to bounding boxes for object detection. Also checkout roLabelImg which supports ROTATED rectangle regions, as often occurs in aerial imagery. labelImg_OBB is another fork supporting orinted bounding boxes (OBB)
  • Labelme is a very popular & simple dektop app for polygonal annotation suitable for object detection and semantic segmentation. Note it outputs annotations in a custom LabelMe JSON format which you will need to convert, e.g. using labelme2coco. Read Labelme Image Annotation for Geotiffs
  • Label Studio is a multi-type data labeling and annotation tool with standardized output format, syncing to buckets, and supports importing pre-annotations (create with a model). Checkout label-studio-converter for converting Label Studio annotations into common dataset formats
  • CVAT suports object detection, segmentation and classification via a local web app. This article on Roboflow gives a good intro to CVAT. Checkout CVAT images validator
  • VoTT -> an electron app for building end to end Object Detection Models from Images and Videos, by Microsoft
  • Create your own annotation tool using Bokeh Holoviews, tkinter, or see these dash examples for object detection and segmentation
  • Deeplabel is a cross-platform tool for annotating images with labelled bounding boxes. Deeplabel also supports running inference using state-of-the-art object detection models like Faster-RCNN and YOLOv4. With support out-of-the-box for CUDA, you can quickly label an entire dataset using an existing model.
  • Alturos.ImageAnnotation is a collaborative tool for labeling image data on S3 for yolo
  • pigeonXT -> create custom image classification annotators within Jupyter notebooks
  • ipyannotations -> Image annotations in python using Jupyter notebooks
  • Label-Detect -> is a graphical image annotation tool and using this tool a user can also train and test large satellite images, fork of the popular labelImg tool
  • Swipe-Labeler -> Swipe Labeler is a Graphical User Interface based tool that allows rapid labeling of image data
  • dash_doodler -> A web application built with plotly/dash for image segmentation with minimal supervision
  • TensorFlow Object Detection API provides a handy utility for object annotation within Google Colab notebooks. See usage here
  • coco-annotator -> Web-based image segmentation tool for object detection, localization, and keypoints
  • pylabel -> Python library for computer vision labeling tasks. The core functionality is to translate bounding box annotations between different formats-for example, from coco to yolo. PyLabel also includes an image labeling tool that runs in a Jupyter notebook that can annotate images manually or perform automatic labeling using a pre-trained model
  • BMW-Labeltool-Lite -> bounding box annotator
  • django-labeller -> An image labelling tool for creating segmentation data sets, for Django and Flask
  • scalabel -> supports 2D images and 3D point clouds
  • Detection-Label-Tool -> Change detection and object annotation, uses PyQt
  • image_sorter -> A quick interface for sorting a folder of images into two other folders
  • bulk -> A Simple Bulk Labelling Tool using embeddings
  • LabCD -> remote sensing change detection annotation tool

Cloud hosted & paid annotation tools & services

Several open source tools are also available on the cloud, including CVAT, label-studio & Diffgram. In general cloud solutions will provide a lot of infrastructure and storage for you, as well as integration with outsourced annotators.

  • GroundWork is designed for annotating and labeling geospatial data like satellite imagery, from Azavea
  • labelbox.com -> free tier is quite generous, supports annotating Geotiffs & returning annotations with geospatial coordinates. Watch this webcast
  • Roboflow -> in addition to annotation this platform makes it easy to convert between annotation formats & manage datasets, as well as train and deploy custom models to private API endpoints. Read How to Train Computer Vision Models on Aerial Imagery
  • supervise.ly is one of the more fully featured platforms, decent free tier
  • AWS supports image annotation via the Rekognition Custom Labels console
  • rectlabel is a desktop app for MacOS to annotate images for bounding box object detection and segmentation, paid and free (rectlabel-lite) versions
  • hasty.ai -> supports model assisted annotation & inferencing

Annotation formats

Note there are many annotation formats, although PASCAL VOC and coco-json are the most commonly used. I recommend using geojson for storing polygons, then converting these to the required format when needed.

  • PASCAL VOC format: XML files in the format used by ImageNet
  • coco-json format: JSON in the format used by the 2015 COCO dataset
  • YOLO Darknet TXT format: contains one text file per image, used by YOLO
  • Tensorflow TFRecord: a proprietary binary file format used by the Tensorflow Object Detection API
  • Many more formats listed here
  • OBB: orinted bounding boxes are polygons representing rotated rectangles

Annotation visualisation & conversion tools

Tools to visualise annotations & convert between formats. Note that most annotation software will allow you to visualise existing annotations

  • Dataset-Converters -> a conversion toolset between different object detection and instance segmentation annotation formats
  • FiftyOne -> open-source tool for building high quality datasets and computer vision models. Visualise labels, evaluate model predictions, explore scenarios of interest, identify failure modes, find annotation mistakes, and much more! Read Nearest Neighbor Embeddings Search with Qdrant and FiftyOne
  • rebox -> Easily convert between bounding box annotation formats
  • Pascal VOC BBox Viewer
  • COCO-Assistant -> Helper for dealing with MS-COCO annotations; Merge datasets, Remove specfic category from dataset, Generate annotations statistics - distribution of object areas and category distribution
  • pybboxes -> Light weight toolkit for bounding boxes providing conversion between bounding box types and simple computations
  • voc2coco -> Convert VOC format XMLs to COCO format json
  • ObjectDetectionEval -> Parse all kinds of object detection databases (ImageNet, COCO, YOLO, PascalVOC, OpenImage, CVAT, LabelMe, etc.) & save to other formats
  • LabelMeYoloConverter -> Convert LabelMe Annotation Tool JSON format to YOLO text file format
  • mask-to-polygons -> Routines for extracting and working with polygons from semantic segmentation masks
  • labelme2coco -> Converts LabelMe JSON format into COCO object detection and instance segmentation format.

Releases

No releases published

Packages

No packages published