README.md 4.1 KB
Newer Older
K
Kentaro Wada 已提交
1 2
<img src="https://github.com/wkentaro/labelme/blob/master/labelme/icons/icon.png?raw=true" align="right" />

K
Kentaro Wada 已提交
3 4
labelme: Image Polygonal Annotation with Python
===============================================
K
Kentaro Wada 已提交
5

K
Kentaro Wada 已提交
6
[![PyPI Version](https://img.shields.io/pypi/v/labelme.svg)](https://pypi.python.org/pypi/labelme)
K
Kentaro Wada 已提交
7
[![Travis Build Status](https://travis-ci.org/wkentaro/labelme.svg?branch=master)](https://travis-ci.org/wkentaro/labelme)
K
Kentaro Wada 已提交
8
[![Docker Build Status](https://img.shields.io/docker/build/wkentaro/labelme.svg)](https://hub.docker.com/r/wkentaro/labelme)
K
Kentaro Wada 已提交
9 10


K
Kentaro Wada 已提交
11
Labelme is a graphical image annotation tool inspired by <http://labelme.csail.mit.edu>.  
K
Kentaro Wada 已提交
12 13
It is written in Python and uses Qt for its graphical interface.

K
Kentaro Wada 已提交
14
<img src=".readme/apc2016_obj3_screenshot.jpg" width="80%" />
K
Kentaro Wada 已提交
15

K
Kentaro Wada 已提交
16

K
Kentaro Wada 已提交
17
Requirements
K
Kentaro Wada 已提交
18 19
------------

K
Kentaro Wada 已提交
20 21
- Ubuntu / macOS / Windows
- Python2 / Python3
K
Kentaro Wada 已提交
22
- [PyQt4 / PyQt5](http://www.riverbankcomputing.co.uk/software/pyqt/intro)
K
Kentaro Wada 已提交
23 24 25 26 27


Installation
------------

K
Kentaro Wada 已提交
28 29 30 31 32
There are options:

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

K
Kentaro Wada 已提交
33 34 35 36 37
**Anaconda**

You need install [Anaconda](https://www.continuum.io/downloads), then run below:

```bash
K
Kentaro Wada 已提交
38
# python2
K
Kentaro Wada 已提交
39 40 41 42
conda create --name=labelme python=2.7
source activate labelme
conda install pyqt
pip install labelme
K
Kentaro Wada 已提交
43 44 45 46 47

# python3
conda create --name=labelme python=3.6
source activate labelme
# conda install pyqt
K
Kentaro Wada 已提交
48
pip install pyqt5  # pyqt5 can be installed via pip on python3
K
Kentaro Wada 已提交
49
pip install labelme
K
Kentaro Wada 已提交
50 51
```

K
Kentaro Wada 已提交
52 53
**Docker**

K
Kentaro Wada 已提交
54
You need install [docker](https://www.docker.com), then run below:
K
Kentaro Wada 已提交
55 56 57 58 59 60

```bash
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
K
Kentaro Wada 已提交
61
./labelme_on_docker static/apc2016_obj3.jpg -O static/apc2016_obj3.json
K
Kentaro Wada 已提交
62
```
K
Kentaro Wada 已提交
63 64

**Ubuntu**
K
Kentaro Wada 已提交
65 66

```bash
K
Kentaro Wada 已提交
67
# Ubuntu 14.04
K
Kentaro Wada 已提交
68
sudo apt-get install python-qt4 pyqt4-dev-tools
K
Kentaro Wada 已提交
69
sudo pip install labelme  # python2 works
K
Kentaro Wada 已提交
70 71
```

K
Kentaro Wada 已提交
72
**macOS**
K
Kentaro Wada 已提交
73 74

```bash
K
Kentaro Wada 已提交
75
# macOS Sierra
K
Kentaro Wada 已提交
76 77
brew install pyqt  # maybe pyqt5
pip install labelme  # both python2/3 should work
K
Kentaro Wada 已提交
78 79
```

K
Kentaro Wada 已提交
80 81 82 83

Usage
-----

K
Kentaro Wada 已提交
84
### Annotation
K
Kentaro Wada 已提交
85

K
Kentaro Wada 已提交
86 87
Run `labelme --help` for detail.

K
Kentaro Wada 已提交
88
```bash
K
Kentaro Wada 已提交
89
labelme  # Open GUI
K
Kentaro Wada 已提交
90 91
labelme tutorial/apc2016_obj3.jpg  # Specify file
labelme tutorial/apc2016_obj3.jpg -O tutorial/apc2016_obj3.json  # Close window after the save
K
Kentaro Wada 已提交
92
labelme tutorial/apc2016_obj3.jpg --nodata  # Not include image data but relative image path in JSON file
K
Kentaro Wada 已提交
93
labelme tutorial/apc2016_obj3.jpg \
K
Kentaro Wada 已提交
94
  --labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball  # Specify label list
K
Kentaro Wada 已提交
95 96
```

K
Kentaro Wada 已提交
97 98 99
The annotations are saved as a [JSON](http://www.json.org/) file. The
file includes the image itself.

K
Kentaro Wada 已提交
100
### Visualization
K
Kentaro Wada 已提交
101

K
Kentaro Wada 已提交
102 103 104
To view the json file quickly, you can use utility script:

```bash
K
Kentaro Wada 已提交
105
labelme_draw_json tutorial/apc2016_obj3.json
K
Kentaro Wada 已提交
106 107
```

K
Kentaro Wada 已提交
108 109
<img src=".readme/apc2016_obj3_draw_json.jpg" width="70%" />

K
Kentaro Wada 已提交
110
### Convert to Dataset
K
Kentaro Wada 已提交
111 112 113 114 115

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


```bash
K
Kentaro Wada 已提交
116
labelme_json_to_dataset tutorial/apc2016_obj3.json -o tutorial/apc2016_obj3_json
K
Kentaro Wada 已提交
117 118
```

K
Kentaro Wada 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
It generates standard files from the JSON file.

- [img.png](tutorial/apc2016_obj3_json/img.png): Image file.
- [label.png](tutorial/apc2016_obj3_json/label.png): Int32 label file.
- [label_viz.png](tutorial/apc2016_obj3_json/label_viz.png): Visualization of `label.png`.
- [label_names.txt](tutorial/apc2016_obj3_json/label_names.txt): Label names for values in `label.png`.

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:

```python
# see tutorial/load_label_png.py also.
>>> import numpy as np
>>> import PIL.Image

>>> label_png = 'tutorial/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)
```
K
Kentaro Wada 已提交
144 145 146 147 148


Screencast
----------

K
Kentaro Wada 已提交
149
<img src=".readme/screencast.gif" width="70%"/>
K
Kentaro Wada 已提交
150 151 152 153 154


Acknowledgement
---------------

K
Kentaro Wada 已提交
155 156
This repo is the fork of [mpitid/pylabelme](https://github.com/mpitid/pylabelme),
whose development has already stopped.