Skip to content
Snippets Groups Projects
Select Git revision
  • d3ef1538ce80f0cec93d11d3cb0f8f3fce385df2
  • master default protected
2 results

02456-deep-learning-project

  • Clone with SSH
  • Clone with HTTPS
  • labelme: Image Polygonal Annotation with Python

    PyPI Version Travis Build Status Docker Build Status

    Labelme is a graphical image annotation tool inspired by http://labelme.csail.mit.edu.
    It is written in Python and uses Qt for its graphical interface.

    Requirements

    Installation

    There are options:

    • Platform agonistic installation: Anaconda, Docker
    • Platform specific installation: Ubuntu, macOS

    Anaconda

    You need install Anaconda, then run below:

    # python2
    conda create --name=labelme python=2.7
    source activate labelme
    conda install pyqt
    pip install labelme
    
    # python3
    conda create --name=labelme python=3.6
    source activate labelme
    # conda install pyqt
    pip install pyqt5  # pyqt5 can be installed via pip on python3
    pip install labelme

    Docker

    You need install docker, then run below:

    wget https://raw.githubusercontent.com/wkentaro/labelme/master/scripts/labelme_on_docker
    chmod u+x labelme_on_docker
    
    # Maybe you need http://sourabhbajaj.com/blog/2017/02/07/gui-applications-docker-mac/ on macOS
    labelme_on_docker examples/single_image/apc2016_obj3.jpg -O examples/single_image/apc2016_obj3.json
    labelme_on_docker examples/semantic_segmentation/data_annotated

    Ubuntu

    # Ubuntu 14.04
    sudo apt-get install python-qt4 pyqt4-dev-tools
    sudo pip install labelme  # python2 works

    macOS

    # macOS Sierra
    brew install pyqt  # maybe pyqt5
    pip install labelme  # both python2/3 should work

    Usage

    Annotation

    Run labelme --help for detail.

    labelme  # Open GUI
    labelme examples/single_image/apc2016_obj3.jpg  # Specify file
    labelme examples/single_image/apc2016_obj3.jpg -O examples/single_image/apc2016_obj3.json  # Close window after the save
    labelme examples/single_image/apc2016_obj3.jpg --nodata  # Not include image data but relative image path in JSON file
    labelme examples/single_image/apc2016_obj3.jpg \
      --labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball  # Specify label list
    labelme examples/single_image/  # Open directory to annotate all images in it

    The annotations are saved as a JSON file. The file includes the image itself.

    For more advanced usage, please refer to the examples.

    Visualization

    To view the json file quickly, you can use utility script:

    labelme_draw_json examples/single_image/apc2016_obj3.json

    Convert to Dataset

    To convert the json to set of image and label, you can run following:

    labelme_json_to_dataset examples/single_image/apc2016_obj3.json -o examples/single_image/apc2016_obj3_json

    It generates standard files from the JSON file.

    Note that loading label.png is a bit difficult (scipy.misc.imread, skimage.io.imread may not work correctly), and please use PIL.Image.open to avoid unexpected behavior:

    # see examples/single_image/load_label_png.py also.
    >>> import numpy as np
    >>> import PIL.Image
    
    >>> label_png = 'examples/single_image/apc2016_obj3_json/label.png'
    >>> lbl = np.asarray(PIL.Image.open(label_png))
    >>> print(lbl.dtype)
    dtype('int32')
    >>> np.unique(lbl)
    array([0, 1, 2, 3], dtype=int32)
    >>> lbl.shape
    (907, 1210)

    Screencast

    Acknowledgement

    This repo is the fork of mpitid/pylabelme, whose development has already stopped.