pax_global_header 0000666 0000000 0000000 00000000064 13531566667 0014534 g ustar 00root root 0000000 0000000 52 comment=290ef952e69df4efe8292134f6458cf864f2543f
labelme-3.16.7/ 0000775 0000000 0000000 00000000000 13531566667 0013233 5 ustar 00root root 0000000 0000000 labelme-3.16.7/.github/ 0000775 0000000 0000000 00000000000 13531566667 0014573 5 ustar 00root root 0000000 0000000 labelme-3.16.7/.github/workflows/ 0000775 0000000 0000000 00000000000 13531566667 0016630 5 ustar 00root root 0000000 0000000 labelme-3.16.7/.github/workflows/main.yml 0000664 0000000 0000000 00000011564 13531566667 0020306 0 ustar 00root root 0000000 0000000 name: CI
on: [push]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macOS-latest, ubuntu-latest]
PYTEST_QT_API: [pyqt5, pyqt4v2, pyside2]
PYTHON_VERSION: ['2.7', '3.6']
exclude:
- os: macOS-latest
PYTEST_QT_API: pyqt4v2
- os: macOS-latest
PYTEST_QT_API: pyside2
- PYTHON_VERSION: '3.6'
PYTEST_QT_API: pyqt4v2
steps:
- uses: actions/checkout@v1
- name: Update submodules
run: |
git submodule update --init --recursive
- name: Install system dependencies
run: |
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
sudo apt-get install -y coreutils
sudo apt-get install -y xvfb herbstluftwm
else
brew install coreutils
brew cask install xquartz
fi
- name: Set up Miniconda
run: |
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
curl -L -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
else
curl -L -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
fi
bash miniconda.sh -b -p $HOME/miniconda
rm -f miniconda.sh
export PATH="$HOME/miniconda/bin:$PATH"
conda config --set always_yes yes --set changeps1 no
conda update -q conda
conda info -a
- name: Set up Python
env:
PYTHON_VERSION: ${{ matrix.PYTHON_VERSION }}
run: |
export PATH="$HOME/miniconda/bin:$PATH"
conda install -y python=$PYTHON_VERSION
which python
python --version
pip --version
- name: Install dependencies
run: |
export PATH="$HOME/miniconda/bin:$PATH"
if [ "${{ matrix.PYTEST_QT_API }}" = "pyside2" ]; then
if [ "${{ matrix.PYTHON_VERSION }}" = "2.7" ]; then
conda install -y 'pyside2!=5.12.4' -c conda-forge
else
conda install -y pyside2 -c conda-forge
fi
elif [ "${{ matrix.PYTEST_QT_API }}" = "pyqt4v2" ]; then
conda install -y pyqt=4 -c conda-forge
else # pyqt5
conda install -y pyqt=5
fi
conda install -y help2man
pip install flake8 pytest pytest-qt
- name: Install main
run: |
export PATH="$HOME/miniconda/bin:$PATH"
pip install .
- name: Lint with flake8
run: |
export PATH="$HOME/miniconda/bin:$PATH"
flake8 .
- name: Test with pytest
env:
PYTEST_QT_API: ${{ matrix.PYTEST_QT_API }}
run: |
# open virtual display
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
export DISPLAY=:99.0
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX +render -noreset
(herbstluftwm )&
else
(sudo Xvfb :99 -ac -screen 0 1024x768x8 )&
fi
# run test
export PATH="$HOME/miniconda/bin:$PATH"
MPLBACKEND='agg' pytest tests -m 'not gpu'
- name: Run examples
env:
MPLBACKEND: agg
run: |
export PATH="$HOME/miniconda/bin:$PATH"
labelme --help
labelme --version
(cd examples/primitives && labelme_json_to_dataset primitives.json && rm -rf primitives_json)
(cd examples/tutorial && rm -rf apc2016_obj3_json && labelme_json_to_dataset apc2016_obj3.json && python load_label_png.py && git checkout -- .)
(cd examples/semantic_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
(cd examples/instance_segmentation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
(cd examples/video_annotation && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
pip install lxml # for bbox_detection/labelme2voc.py
(cd examples/bbox_detection && rm -rf data_dataset_voc && ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt && git checkout -- .)
pip install cython && pip install pycocotools # for instance_segmentation/labelme2coco.py
(cd examples/instance_segmentation && rm -rf data_dataset_coco && ./labelme2coco.py data_annotated data_dataset_coco --labels labels.txt && git checkout -- .)
- name: Run pyinstaller
run: |
if [ "${{ matrix.PYTEST_QT_API }}" = "pyqt5" -a "${{ matrix.PYTHON_VERSION }}" = "3.6" ]; then
export PATH="$HOME/miniconda/bin:$PATH"
# Build the standalone executable
pip install 'pyinstaller!=3.4' # 3.4 raises error
pyinstaller labelme.spec
dist/labelme --version
fi
labelme-3.16.7/.gitignore 0000664 0000000 0000000 00000000114 13531566667 0015217 0 ustar 00root root 0000000 0000000 /.cache/
/.pytest_cache/
/build/
/dist/
/*.egg-info/
*.py[cdo]
.DS_Store
labelme-3.16.7/.gitmodules 0000664 0000000 0000000 00000000141 13531566667 0015404 0 ustar 00root root 0000000 0000000 [submodule "github2pypi"]
path = github2pypi
url = https://github.com/wkentaro/github2pypi.git
labelme-3.16.7/LICENSE 0000664 0000000 0000000 00000001264 13531566667 0014243 0 ustar 00root root 0000000 0000000 Copyright (C) 2016-2018 Kentaro Wada.
Copyright (C) 2011 Michael Pitidis, Hussein Abdulwahid.
Labelme is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Labelme is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Labelme. If not, see
VOC dataset example of instance segmentation.
Other examples (semantic segmentation, bbox detection, and classification).
Various primitives (polygon, rectangle, circle, line, and point).
## Features
- [x] Image annotation for polygon, rectangle, circle, line and point. ([tutorial](examples/tutorial))
- [x] Image flag annotation for classification and cleaning. ([#166](https://github.com/wkentaro/labelme/pull/166))
- [x] Video annotation. ([video annotation](examples/video_annotation))
- [x] GUI customization (predefined labels / flags, auto-saving, label validation, etc). ([#144](https://github.com/wkentaro/labelme/pull/144))
- [x] Exporting VOC-format dataset for semantic/instance segmentation. ([semantic segmentation](examples/semantic_segmentation), [instance segmentation](examples/instance_segmentation))
- [x] Exporting COCO-format dataset for instance segmentation. ([instance segmentation](examples/instance_segmentation))
## Requirements
- Ubuntu / macOS / Windows
- Python2 / Python3
- [PyQt4 / PyQt5](http://www.riverbankcomputing.co.uk/software/pyqt/intro) / [PySide2](https://wiki.qt.io/PySide2_GettingStarted)
## Installation
There are options:
- Platform agonistic installation: [Anaconda](#anaconda), [Docker](#docker)
- Platform specific installation: [Ubuntu](#ubuntu), [macOS](#macos), [Windows](#windows)
### Anaconda
You need install [Anaconda](https://www.continuum.io/downloads), then run below:
```bash
# python2
conda create --name=labelme python=2.7
source activate labelme
# conda install -c conda-forge pyside2
conda install pyqt
pip install labelme
# if you'd like to use the latest version. run below:
# pip install git+https://github.com/wkentaro/labelme.git
# python3
conda create --name=labelme python=3.6
source activate labelme
# conda install -c conda-forge pyside2
# conda install pyqt
# pip install pyqt5 # pyqt5 can be installed via pip on python3
pip install labelme
# or you can install everything by conda command
# conda install labelme -c conda-forge
```
### Docker
You need install [docker](https://www.docker.com), then run below:
```bash
wget https://raw.githubusercontent.com/wkentaro/labelme/master/labelme/cli/on_docker.py -O 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/tutorial/apc2016_obj3.jpg -O examples/tutorial/apc2016_obj3.json
./labelme_on_docker examples/semantic_segmentation/data_annotated
```
### Ubuntu
```bash
# Ubuntu 14.04 / Ubuntu 16.04
# Python2
# sudo apt-get install python-qt4 # PyQt4
sudo apt-get install python-pyqt5 # PyQt5
sudo pip install labelme
# Python3
sudo apt-get install python3-pyqt5 # PyQt5
sudo pip3 install labelme
```
### Ubuntu 19.10+ / Debian (sid)
```bash
sudo apt-get install labelme
```
### macOS
```bash
# macOS Sierra
brew install pyqt # maybe pyqt5
pip install labelme # both python2/3 should work
# or install standalone executable / app
# NOTE: this only installs the `labelme` command
brew install wkentaro/labelme/labelme
brew cask install wkentaro/labelme/labelme
```
### Windows
Firstly, follow instruction in [Anaconda](#anaconda).
```bash
# Pillow 5 causes dll load error on Windows.
# https://github.com/wkentaro/labelme/pull/174
conda install pillow=4.0.0
```
## Usage
Run `labelme --help` for detail.
The annotations are saved as a [JSON](http://www.json.org/) file.
```bash
labelme # just open gui
# tutorial (single image example)
cd examples/tutorial
labelme apc2016_obj3.jpg # specify image file
labelme apc2016_obj3.jpg -O apc2016_obj3.json # close window after the save
labelme apc2016_obj3.jpg --nodata # not include image data but relative image path in JSON file
labelme apc2016_obj3.jpg \
--labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball # specify label list
# semantic segmentation example
cd examples/semantic_segmentation
labelme data_annotated/ # Open directory to annotate all images in it
labelme data_annotated/ --labels labels.txt # specify label list with a file
```
For more advanced usage, please refer to the examples:
* [Tutorial (Single Image Example)](examples/tutorial)
* [Semantic Segmentation Example](examples/semantic_segmentation)
* [Instance Segmentation Example](examples/instance_segmentation)
* [Video Annotation Example](examples/video_annotation)
### Command Line Arguemnts
- `--output` specifies the location that annotations will be written to. If the location ends with .json, a single annotation will be written to this file. Only one image can be annotated if a location is specified with .json. If the location does not end with .json, the program will assume it is a directory. Annotations will be stored in this directory with a name that corresponds to the image that the annotation was made on.
- The first time you run labelme, it will create a config file in `~/.labelmerc`. You can edit this file and the changes will be applied the next time that you launch labelme. If you would prefer to use a config file from another location, you can specify this file with the `--config` flag.
- Without the `--nosortlabels` flag, the program will list labels in alphabetical order. When the program is run with this flag, it will display labels in the order that they are provided.
- Flags are assigned to an entire image. [Example](examples/classification)
- Labels are assigned to a single polygon. [Example](examples/bbox_detection)
## FAQ
- **How to convert JSON file to numpy array?** See [examples/tutorial](examples/tutorial#convert-to-dataset).
- **How to load label PNG file?** See [examples/tutorial](examples/tutorial#how-to-load-label-png-file).
- **How to get annotations for semantic segmentation?** See [examples/semantic_segmentation](examples/semantic_segmentation).
- **How to get annotations for instance segmentation?** See [examples/instance_segmentation](examples/instance_segmentation).
## Testing
```bash
pip install hacking pytest pytest-qt
flake8 .
pytest -v tests
```
## Developing
```bash
git clone https://github.com/wkentaro/labelme.git
cd labelme
# Install anaconda3 and labelme
curl -L https://github.com/wkentaro/dotfiles/raw/master/local/bin/install_anaconda3.sh | bash -s .
source .anaconda3/bin/activate
pip install -e .
```
## How to build standalone executable
Below shows how to build the standalone executable on macOS, Linux and Windows.
Also, there are pre-built executables in
[the release section](https://github.com/wkentaro/labelme/releases).
```bash
# Setup conda
conda create --name labelme python==3.6.0
conda activate labelme
# Build the standalone executable
pip install .
pip install pyinstaller
pyinstaller labelme.spec
dist/labelme --version
```
## Acknowledgement
This repo is the fork of [mpitid/pylabelme](https://github.com/mpitid/pylabelme),
whose development has already stopped.
## Cite This Project
If you use this project in your research or wish to refer to the baseline results published in the README, please use the following BibTeX entry.
```bash
@misc{labelme2016,
author = {Ketaro Wada},
title = {{labelme: Image Polygonal Annotation with Python}},
howpublished = {\url{https://github.com/wkentaro/labelme}},
year = {2016}
}
```
labelme-3.16.7/docker/ 0000775 0000000 0000000 00000000000 13531566667 0014502 5 ustar 00root root 0000000 0000000 labelme-3.16.7/docker/Dockerfile 0000664 0000000 0000000 00000001474 13531566667 0016502 0 ustar 00root root 0000000 0000000 FROM ubuntu:xenial
# http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
mkdir -p /etc/sudoers.d && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer
RUN \
apt-get update -qq && \
apt-get upgrade -qq -y && \
apt-get install -qq -y \
# requirements
git \
python3 \
python3-pip \
python3-matplotlib \
python3-pyqt5 \
# utilities
sudo
RUN pip3 install -v git+https://github.com/wkentaro/labelme.git
USER developer
ENV HOME /home/developer
labelme-3.16.7/docs/ 0000775 0000000 0000000 00000000000 13531566667 0014163 5 ustar 00root root 0000000 0000000 labelme-3.16.7/docs/man/ 0000775 0000000 0000000 00000000000 13531566667 0014736 5 ustar 00root root 0000000 0000000 labelme-3.16.7/docs/man/labelme.1 0000664 0000000 0000000 00000004032 13531566667 0016420 0 ustar 00root root 0000000 0000000 .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.8.
.TH LABELME "1" "August 2019" "labelme 3.16.7" "User Commands"
.SH NAME
labelme \- manual page for labelme 3.16.7
.SH DESCRIPTION
usage: labelme [\-h] [\-\-version] [\-\-reset\-config]
.IP
[\-\-logger\-level {debug,info,warning,fatal,error}]
[\-\-output OUTPUT] [\-\-config CONFIG_FILE] [\-\-nodata]
[\-\-autosave] [\-\-nosortlabels] [\-\-flags FLAGS]
[\-\-labelflags LABEL_FLAGS] [\-\-labels LABELS]
[\-\-validatelabel {exact,instance}] [\-\-keep\-prev]
[\-\-epsilon EPSILON]
[filename]
.SS "positional arguments:"
.TP
filename
image or label filename
.SS "optional arguments:"
.TP
\fB\-h\fR, \fB\-\-help\fR
show this help message and exit
.TP
\fB\-\-version\fR, \fB\-V\fR
show version
.TP
\fB\-\-reset\-config\fR
reset qt config
.TP
\fB\-\-logger\-level\fR {debug,info,warning,fatal,error}
logger level
.TP
\fB\-\-output\fR OUTPUT, \fB\-O\fR OUTPUT, \fB\-o\fR OUTPUT
output file or directory (if it ends with .json it is
recognized as file, else as directory)
.TP
\fB\-\-config\fR CONFIG_FILE
config file (default: /home/wkentaro/.labelmerc)
.TP
\fB\-\-nodata\fR
stop storing image data to JSON file
.TP
\fB\-\-autosave\fR
auto save
.TP
\fB\-\-nosortlabels\fR
stop sorting labels
.TP
\fB\-\-flags\fR FLAGS
comma separated list of flags OR file containing flags
.TP
\fB\-\-labelflags\fR LABEL_FLAGS
yaml string of label specific flags OR file containing
json string of label specific flags (ex. {person\-\ed+:
[male, tall], dog\-\ed+: [black, brown, white], .*:
[occluded]})
.TP
\fB\-\-labels\fR LABELS
comma separated list of labels OR file containing
labels
.TP
\fB\-\-validatelabel\fR {exact,instance}
label validation types
.TP
\fB\-\-keep\-prev\fR
keep annotation of previous frame
.TP
\fB\-\-epsilon\fR EPSILON
epsilon to find nearest vertex on canvas
.SH "SEE ALSO"
The full documentation for
.B labelme
is maintained as a Texinfo manual. If the
.B info
and
.B labelme
programs are properly installed at your site, the command
.IP
.B info labelme
.PP
should give you access to the complete manual.
labelme-3.16.7/examples/ 0000775 0000000 0000000 00000000000 13531566667 0015051 5 ustar 00root root 0000000 0000000 labelme-3.16.7/examples/bbox_detection/ 0000775 0000000 0000000 00000000000 13531566667 0020041 5 ustar 00root root 0000000 0000000 labelme-3.16.7/examples/bbox_detection/.readme/ 0000775 0000000 0000000 00000000000 13531566667 0021354 5 ustar 00root root 0000000 0000000 labelme-3.16.7/examples/bbox_detection/.readme/annotation.jpg 0000664 0000000 0000000 00004154265 13531566667 0024251 0 ustar 00root root 0000000 0000000 JFIF Exif MM * J R( i Z e o e o
8Photoshop 3.0 8BIM 8BIM% ُ B~
ICC_PROFILE
appl mntrRGB XYZ
9 +acspAPPL APPL -appl desc P bdscm cprt #wtpt rXYZ gXYZ bXYZ rTRC aarg vcgt @ 0ndin p >chad ,mmod (bTRC gTRC aabg aagg desc Display mluc &