2017-05-04 09:53:54 +08:00
|
|
|
LabelImg
|
|
|
|
|
========
|
2015-09-17 10:37:20 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
.. image:: https://img.shields.io/pypi/v/labelimg.svg
|
|
|
|
|
:target: https://pypi.python.org/pypi/labelimg
|
|
|
|
|
|
|
|
|
|
.. image:: https://img.shields.io/travis/tzutalin/labelImg.svg
|
|
|
|
|
:target: https://travis-ci.org/tzutalin/labelImg
|
2016-04-19 14:51:28 +08:00
|
|
|
|
2016-04-11 17:18:33 +08:00
|
|
|
LabelImg is a graphical image annotation tool.
|
2015-09-17 10:37:20 +08:00
|
|
|
|
|
|
|
|
It is written in Python and uses Qt for its graphical interface.
|
|
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Annotations are saved as XML files in PASCAL VOC format, the format used
|
|
|
|
|
by `ImageNet <http://www.image-net.org/>`__.
|
|
|
|
|
|
|
|
|
|
.. image:: https://raw.githubusercontent.com/tzutalin/labelImg/master/demo/demo3.jpg
|
|
|
|
|
:alt: Demo Image
|
2015-09-17 10:37:20 +08:00
|
|
|
|
2017-10-06 17:17:53 +08:00
|
|
|
.. image:: https://raw.githubusercontent.com/tzutalin/labelImg/master/demo/demo.jpg
|
|
|
|
|
:alt: Demo Image
|
|
|
|
|
|
2017-06-06 20:37:04 +08:00
|
|
|
`Watch a demo video <https://youtu.be/p0nR2YsCY_U>`__
|
2016-09-06 20:42:13 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Installation
|
|
|
|
|
------------------
|
2015-09-18 19:29:51 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Download prebuilt binaries
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
2016-04-05 12:28:37 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
- `Windows & Linux <http://tzutalin.github.io/labelImg/>`__
|
2017-01-07 16:36:19 -05:00
|
|
|
|
2017-10-12 13:46:48 -07:00
|
|
|
- macOS. Binaries for macOS are not yet available. Help would be appreciated. At present, it must be `built from source <#macos>`__.
|
2017-04-26 11:19:23 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Build from source
|
|
|
|
|
~~~~~~~~~~~~~~~~~
|
2017-01-07 16:36:19 -05:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Linux/Ubuntu/Mac requires at least `Python
|
|
|
|
|
2.6 <http://www.python.org/getit/>`__ and has been tested with `PyQt
|
|
|
|
|
4.8 <http://www.riverbankcomputing.co.uk/software/pyqt/intro>`__.
|
2015-11-23 14:21:55 +08:00
|
|
|
|
2017-05-04 10:01:05 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Ubuntu Linux
|
|
|
|
|
^^^^^^^^^^^^
|
2017-07-07 23:14:41 +08:00
|
|
|
Python 2 + Qt4
|
2015-09-17 10:37:20 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
.. code::
|
2015-09-18 22:49:00 +08:00
|
|
|
|
2016-12-28 18:46:56 -05:00
|
|
|
sudo apt-get install pyqt4-dev-tools
|
|
|
|
|
sudo pip install lxml
|
2017-07-07 23:14:41 +08:00
|
|
|
make qt4py2
|
|
|
|
|
python labelImg.py
|
|
|
|
|
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
|
|
|
|
|
|
|
|
|
|
Python 3 + Qt5
|
|
|
|
|
|
|
|
|
|
.. code::
|
|
|
|
|
|
|
|
|
|
sudo apt-get install pyqt5-dev-tools
|
|
|
|
|
sudo pip3 install lxml
|
|
|
|
|
make qt5py3
|
|
|
|
|
python3 labelImg.py
|
|
|
|
|
python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
|
2015-11-22 16:57:50 +08:00
|
|
|
|
2017-10-12 13:46:48 -07:00
|
|
|
macOS
|
2017-05-04 09:53:54 +08:00
|
|
|
^^^^
|
2017-07-07 23:14:41 +08:00
|
|
|
Python 2 + Qt4
|
2017-05-04 09:53:54 +08:00
|
|
|
|
|
|
|
|
.. code::
|
2016-12-28 18:46:56 -05:00
|
|
|
|
|
|
|
|
brew install qt qt4
|
|
|
|
|
brew install libxml2
|
2017-07-07 23:14:41 +08:00
|
|
|
make qt4py2
|
|
|
|
|
python labelImg.py
|
|
|
|
|
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
|
|
|
|
|
|
2016-12-28 18:46:56 -05:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Windows
|
|
|
|
|
^^^^^^^
|
|
|
|
|
|
|
|
|
|
Download and setup `Python 2.6 or
|
|
|
|
|
later <https://www.python.org/downloads/windows/>`__,
|
|
|
|
|
`PyQt4 <https://www.riverbankcomputing.com/software/pyqt/download>`__
|
|
|
|
|
and `install lxml <http://lxml.de/installation.html>`__.
|
2015-11-23 14:21:55 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Open cmd and go to `labelImg <#labelimg>`__ directory
|
2015-12-04 22:51:44 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
.. code::
|
2015-11-22 16:57:50 +08:00
|
|
|
|
2016-12-28 18:46:56 -05:00
|
|
|
pyrcc4 -o resources.py resources.qrc
|
|
|
|
|
python labelImg.py
|
2017-05-10 21:58:39 +08:00
|
|
|
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
|
2016-12-28 18:46:56 -05:00
|
|
|
|
2017-05-04 10:01:05 +08:00
|
|
|
Get from PyPI
|
|
|
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
|
.. code::
|
|
|
|
|
|
2017-05-10 21:58:39 +08:00
|
|
|
pip install labelImg
|
|
|
|
|
labelImg
|
|
|
|
|
labelImg [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
|
2017-05-04 10:01:05 +08:00
|
|
|
|
2017-06-06 20:37:04 +08:00
|
|
|
I tested pip on Ubuntu14.04 and 16.04. However, I didn't test pip on MacOS and Windows
|
2017-05-04 10:01:05 +08:00
|
|
|
|
2017-06-06 18:25:12 +08:00
|
|
|
Use Docker
|
|
|
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
|
.. code::
|
|
|
|
|
|
|
|
|
|
docker run -it \
|
|
|
|
|
--user $(id -u) \
|
|
|
|
|
-e DISPLAY=unix$DISPLAY \
|
|
|
|
|
--workdir=$(pwd) \
|
|
|
|
|
--volume="/home/$USER:/home/$USER" \
|
|
|
|
|
--volume="/etc/group:/etc/group:ro" \
|
|
|
|
|
--volume="/etc/passwd:/etc/passwd:ro" \
|
|
|
|
|
--volume="/etc/shadow:/etc/shadow:ro" \
|
|
|
|
|
--volume="/etc/sudoers.d:/etc/sudoers.d:ro" \
|
|
|
|
|
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
|
|
|
|
tzutalin/py2qt4
|
|
|
|
|
|
2017-07-07 23:14:41 +08:00
|
|
|
make qt4py2;./labelImg.py
|
2017-07-07 13:19:18 +08:00
|
|
|
|
|
|
|
|
You can pull the image which has all of the installed and required dependencies. `Watch a demo video <https://youtu.be/nw1GexJzbCI>`__
|
2017-06-06 20:37:04 +08:00
|
|
|
|
2017-06-06 18:25:12 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Usage
|
|
|
|
|
-----
|
2015-11-22 16:57:50 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Steps
|
|
|
|
|
~~~~~
|
2015-11-21 17:39:40 +08:00
|
|
|
|
2017-01-07 16:36:19 -05:00
|
|
|
1. Build and launch using the instructions above.
|
|
|
|
|
2. Click 'Change default saved annotation folder' in Menu/File
|
|
|
|
|
3. Click 'Open Dir'
|
|
|
|
|
4. Click 'Create RectBox'
|
2017-05-04 09:53:54 +08:00
|
|
|
5. Click and release left mouse to select a region to annotate the rect
|
|
|
|
|
box
|
2017-03-01 20:33:14 +08:00
|
|
|
6. You can use right mouse to drag the rect box to copy or move it
|
2015-11-21 17:39:40 +08:00
|
|
|
|
2017-01-07 16:36:19 -05:00
|
|
|
The annotation will be saved to the folder you specify.
|
2016-05-10 22:42:13 +08:00
|
|
|
|
2017-03-01 20:33:14 +08:00
|
|
|
You can refer to the below hotkeys to speed up your workflow.
|
|
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Create pre-defined classes
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
You can edit the
|
|
|
|
|
`data/predefined\_classes.txt <https://github.com/tzutalin/labelImg/blob/master/data/predefined_classes.txt>`__
|
|
|
|
|
to load pre-defined classes
|
|
|
|
|
|
|
|
|
|
Hotkeys
|
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| Ctrl + u | Load all of the images from a directory |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| Ctrl + r | Change the default annotation target dir |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| Ctrl + s | Save |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| Ctrl + d | Copy the current label and rect box |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| Space | Flag the current image as verified |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| w | Create a rect box |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| d | Next image |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| a | Previous image |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| del | Delete the selected rect box |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| Ctrl++ | Zoom in |
|
|
|
|
|
+------------+--------------------------------------------+
|
|
|
|
|
| Ctrl-- | Zoom out |
|
|
|
|
|
+------------+--------------------------------------------+
|
2017-05-25 09:51:47 +08:00
|
|
|
| ↑→↓← | Keyboard arrows to move selected rect box |
|
|
|
|
|
+------------+--------------------------------------------+
|
2017-05-04 09:53:54 +08:00
|
|
|
|
|
|
|
|
How to contribute
|
|
|
|
|
~~~~~~~~~~~~~~~~~
|
2015-11-21 17:39:40 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Send a pull request
|
2015-11-16 13:40:19 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
License
|
|
|
|
|
~~~~~~~
|
|
|
|
|
`Free software: MIT license <https://github.com/tzutalin/labelImg/blob/master/LICENSE>`_
|
2015-11-23 14:21:55 +08:00
|
|
|
|
2017-08-17 20:02:20 +08:00
|
|
|
Citation: Tzutalin. LabelImg. Git code (2015). https://github.com/tzutalin/labelImg
|
2016-04-11 17:18:33 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
Related
|
|
|
|
|
~~~~~~~
|
2016-05-10 22:42:13 +08:00
|
|
|
|
2017-05-04 09:53:54 +08:00
|
|
|
1. `ImageNet Utils <https://github.com/tzutalin/ImageNet_Utils>`__ to
|
|
|
|
|
download image, create a label text for machine learning, etc
|
2017-10-06 17:17:53 +08:00
|
|
|
2. `Use Docker to run labelImg <https://hub.docker.com/r/tzutalin/py2qt4>`__
|
|
|
|
|
3. `Generating the PASCAL VOC TFRecord files <https://github.com/tensorflow/models/blob/4f32535fe7040bb1e429ad0e3c948a492a89482d/research/object_detection/g3doc/preparing_inputs.md#generating-the-pascal-voc-tfrecord-files>`__
|