greenhouse/README.rst

279 lines
9.5 KiB
ReStructuredText
Raw Normal View History

2019-04-21 12:50:21 -04:00
LabelImg
2019-04-21 12:49:01 -04:00
========
2019-04-16 13:50:22 -04: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
2019-04-21 12:53:57 -07:00
.. image:: /resources/icons/app.png
:width: 200px
:align: center
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
2019-05-25 20:58:20 -07:00
by `ImageNet <http://www.image-net.org/>`__. Besides, it also supports YOLO format
2017-05-04 09:53:54 +08:00
.. 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-04-26 11:19:23 +08:00
2017-05-04 09:53:54 +08:00
Build from source
~~~~~~~~~~~~~~~~~
2017-05-04 09:53:54 +08:00
Linux/Ubuntu/Mac requires at least `Python
2.6 <https://www.python.org/getit/>`__ and has been tested with `PyQt
2019-05-25 20:58:20 -07:00
4.8 <https://www.riverbankcomputing.com/software/pyqt/intro>`__. However, `Python
3 or above <https://www.python.org/getit/>`__ and `PyQt5 <https://pypi.org/project/PyQt5/>`__ are strongly recommended.
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
^^^^^^^^^^^^
2015-09-17 10:37:20 +08:00
2020-11-14 22:51:44 -08:00
Python 3 + Qt5
2017-07-07 23:14:41 +08:00
2019-05-25 14:38:32 -07:00
.. code:: shell
2017-07-07 23:14:41 +08:00
sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
2017-07-07 23:14:41 +08:00
make qt5py3
python3 labelImg.py
python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
2015-11-22 16:57:50 +08:00
macOS
2019-05-25 14:38:32 -07:00
^^^^^
2017-07-07 23:14:41 +08:00
2020-11-14 22:51:44 -08:00
Python 3 + Qt5
2019-05-25 14:38:32 -07:00
.. code:: shell
2019-04-21 12:53:57 -07:00
brew install qt # Install qt-5.x.x by Homebrew
brew install libxml2
2019-04-21 12:53:57 -07:00
2019-05-25 20:58:20 -07:00
or using pip
2019-04-21 12:53:57 -07:00
pip3 install pyqt5 lxml # Install qt and lxml by pip
make qt5py3
python3 labelImg.py
python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
2019-05-25 20:58:20 -07:00
Python 3 Virtualenv (Recommended)
2019-04-21 12:53:57 -07:00
2019-05-25 20:58:20 -07:00
Virtualenv can avoid a lot of the QT / Python version issues
2019-05-25 14:38:32 -07:00
.. code:: shell
brew install python3
2019-05-25 20:58:20 -07:00
pip3 install pipenv
2020-11-14 22:51:44 -08:00
pipenv run pip install pyqt5==5.12.1 lxml
2019-05-25 20:58:20 -07:00
pipenv run make qt5py3
python3 labelImg.py
[Optional] rm -rf build dist; python setup.py py2app -A;mv "dist/labelImg.app" /Applications
Note: The Last command gives you a nice .app file with a new SVG Icon in your /Applications folder. You can consider using the script: build-tools/build-for-macos.sh
2017-05-04 09:53:54 +08:00
Windows
^^^^^^^
2019-04-21 12:53:57 -07:00
Install `Python <https://www.python.org/downloads/windows/>`__,
`PyQt5 <https://www.riverbankcomputing.com/software/pyqt/download5>`__
2017-05-04 09:53:54 +08:00
and `install lxml <http://lxml.de/installation.html>`__.
2015-11-23 14:21:55 +08:00
Open cmd and go to the `labelImg <#labelimg>`__ directory
2015-12-04 22:51:44 +08:00
2019-05-25 14:38:32 -07:00
.. code:: shell
2015-11-22 16:57:50 +08:00
2021-01-01 11:24:08 -08:00
pyrcc4 -o libs/resources.py resources.qrc
For pyqt5, pyrcc5 -o libs/resources.py resources.qrc
2020-07-12 19:37:43 -07:00
python labelImg.py
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
Windows + Anaconda
2019-05-25 14:38:32 -07:00
^^^^^^^^^^^^^^^^^^
Download and install `Anaconda <https://www.anaconda.com/download/#download>`__ (Python 3+)
Open the Anaconda Prompt and go to the `labelImg <#labelimg>`__ directory
2019-05-25 14:38:32 -07:00
.. code:: shell
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
2019-05-25 20:58:20 -07:00
Get from PyPI but only python3.0 or above
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is the simplest (one-command) install method on modern Linux distributions such as Ubuntu and Fedora.
2019-05-25 14:38:32 -07:00
.. code:: shell
2017-05-04 10:01:05 +08:00
2019-05-25 20:58:20 -07:00
pip3 install labelImg
labelImg
labelImg [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
2017-05-04 10:01:05 +08:00
2017-06-06 18:25:12 +08:00
Use Docker
~~~~~~~~~~~~~~~~~
2019-05-25 14:38:32 -07:00
.. code:: shell
2017-06-06 18:25:12 +08:00
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
2018-03-02 14:48:06 -06:00
Steps (PascalVOC)
2019-05-25 14:38:32 -07:00
~~~~~~~~~~~~~~~~~
2015-11-21 17:39:40 +08: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
6. You can use right mouse to drag the rect box to copy or move it
2015-11-21 17:39:40 +08:00
The annotation will be saved to the folder you specify.
2016-05-10 22:42:13 +08:00
You can refer to the below hotkeys to speed up your workflow.
2018-03-02 14:48:06 -06:00
Steps (YOLO)
2019-05-25 14:38:32 -07:00
~~~~~~~~~~~~
2018-03-02 14:48:06 -06:00
1. In ``data/predefined_classes.txt`` define the list of classes that will be used for your training.
2. Build and launch using the instructions above.
2019-05-25 20:58:20 -07:00
3. Right below "Save" button in the toolbar, click "PascalVOC" button to switch to YOLO format.
2018-03-02 14:48:06 -06:00
2019-05-25 20:58:20 -07:00
4. You may use Open/OpenDIR to process single or multiple images. When finished with a single image, click save.
2018-03-02 14:48:06 -06:00
2019-05-25 20:58:20 -07:00
A txt file of YOLO format will be saved in the same folder as your image with same name. A file named "classes.txt" is saved to that folder too. "classes.txt" defines the list of class names that your YOLO label refers to.
2018-03-02 14:59:54 -06:00
Note:
2019-05-25 20:58:20 -07:00
- Your label list shall not change in the middle of processing a list of images. When you save an image, classes.txt will also get updated, while previous annotations will not be updated.
2018-03-02 14:59:54 -06:00
- You shouldn't use "default class" function when saving to YOLO format, it will not be referred.
- When saving as YOLO format, "difficult" flag is discarded.
2018-03-02 14:48:06 -06:00
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
~~~~~~~
2020-09-26 11:22:20 -07:00
+--------------------+--------------------------------------------+
| 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 |
+--------------------+--------------------------------------------+
| Ctrl + Shift + d | Delete the current image |
+--------------------+--------------------------------------------+
| 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 |
+--------------------+--------------------------------------------+
| ↑→↓← | Keyboard arrows to move selected rect box |
+--------------------+--------------------------------------------+
2017-05-04 09:53:54 +08:00
**Verify Image:**
When pressing space, the user can flag the image as verified, a green background will appear.
This is used when creating a dataset automatically, the user can then through all the pictures and flag them instead of annotate them.
**Difficult:**
2019-05-25 20:58:20 -07:00
The difficult field is set to 1 indicates that the object has been annotated as "difficult", for example, an object which is clearly visible but difficult to recognize without substantial use of context.
2019-04-21 12:53:57 -07:00
According to your deep neural network implementation, you can include or exclude difficult objects during training.
How to reset the settings
~~~~~~~~~~~~~~~~~~~~~~~~~
In case there are issues with loading the classes, you can either:
1. From the top menu of the labelimg click on Menu/File/Reset All
2. Remove the `.labelImgSettings.pkl` from your home directory. In Linux and Mac you can do:
`rm ~/.labelImgSettings.pkl`
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>`__
2019-05-25 20:58:20 -07:00
4. `App Icon based on Icon by Nick Roach (GPL) <https://www.elegantthemes.com/>`__
5. `Setup python development in vscode <https://tzutalin.blogspot.com/2019/04/set-up-visual-studio-code-for-python-in.html>`__
2019-07-30 19:50:55 -07:00
6. `The link of this project on iHub platform <https://code.ihub.org.cn/projects/260/repository/labelImg>`__
2019-05-25 14:38:32 -07:00
2020-07-12 19:37:43 -07:00
Stargazers over time
~~~~~~~~~~~~~~~~~~~~
.. image:: https://starchart.cc/tzutalin/labelImg.svg