Labelme 是一个图形图像注释工具介绍

Labelme 是一个图形图像注释工具,灵感来自http://labelme.csail.mit.edu
它是用 Python 编写的,并使用 Qt 作为其图形界面。


实例分割的 VOC 数据集示例。


其他示例(语义分割、bbox 检测和分类)。


各种图元(多边形、矩形、圆形、直线和点)。

特征

  • 多边形、矩形、圆形、直线和点的图像注释。(教程
  • 用于分类和清洗的图像标记标注。(#166
  • 视频注释。(视频注释
  • GUI 自定义(预定义标签/标志、自动保存、标签验证等)。(#144
  • 导出用于语义/实例分割的 VOC 格式数据集。(语义分割实例分割
  • 导出用于实例分割的 COCO 格式数据集。(实例分割

要求

安装

有以下选项:

Anaconda

您需要安装Anaconda,然后在下面运行:


# python3
conda create --name=labelme python=3
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

Ubuntu


sudo apt-get install labelme

# or
sudo pip3 install labelme

# or install standalone executable from:
# https://github.com/wkentaro/labelme/releases

macOS

brew install pyqt  # maybe pyqt5
pip install labelme

# or
brew install wkentaro/labelme/labelme  # command line interface
# brew install --cask wkentaro/labelme/labelme  # app

# or install standalone executable/app from:
# https://github.com/wkentaro/labelme/releases

Windows

安装Anaconda,然后在 Anaconda Prompt 中运行:


conda create --name=labelme python=3
conda activate labelme
pip install labelme

# or install standalone executable/app from:
# https://github.com/wkentaro/labelme/releases

用法

运行labelme --help 以获取详细信息。
注释保存为JSON文件。

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

更高级的用法,请参考示例:

命令行参数

  • --output 指定注释将写入的位置。如果该位置以 .json 结尾,则会将单个注释写入此文件。如果使用 .json 指定位置,则只能注释一张图像。如果位置不以 .json 结尾,程序将假定它是一个目录。注释将存储在此目录中,其名称与进行注释的图像相对应。
  • 第一次运行 labelme 时,它​​会在~/.labelmerc . 您可以编辑此文件,更改将在您下次启动 labelme 时应用。如果您更愿意使用来自其他位置的配置文件,您可以使用标志指定此文件--config
  • 如果没有--nosortlabels 标志,程序将按字母顺序列出标签。当程序使用这个标志运行时,它将按照提供的顺序显示标签。
  • 标志被分配给整个图像。例子
  • 标签分配给单个多边形。例子

常问问题

发展

git clone https://github.com/wkentaro/labelme.git
cd labelme

# Install anaconda3 and labelme
curl -L https://github.com/wkentaro/dotfiles/raw/main/local/bin/install_anaconda3.sh | bash -s .
source .anaconda3/bin/activate
pip install -e .

如何构建独立的可执行文件

下面展示了如何在 macOS、Linux 和 Windows 上构建独立的可执行文件。

# Setup conda
conda create --name labelme python=3.9
conda activate labelme

# Build the standalone executable
pip install .
pip install 'matplotlib<3.3'
pip install pyinstaller
pyinstaller labelme.spec
dist/labelme --version

如何贡献

确保以下测试在您的环境中通过。有关详细信息,
请参阅。.github/workflows/ci.yml

pip install -r requirements-dev.txt

flake8 .
black --line-length 79 --check labelme/
MPLBACKEND='agg' pytest -vsx tests/

致谢

这个 repo 是mpitid/pylabelme的分支。