Labelme 是一个图形图像注释工具,灵感来自http://labelme.csail.mit.edu。
它是用 Python 编写的,并使用 Qt 作为其图形界面。
特征
- 多边形、矩形、圆形、直线和点的图像注释。(教程)
- 用于分类和清洗的图像标记标注。(#166)
- 视频注释。(视频注释)
- GUI 自定义(预定义标签/标志、自动保存、标签验证等)。(#144)
- 导出用于语义/实例分割的 VOC 格式数据集。(语义分割,实例分割)
- 导出用于实例分割的 COCO 格式数据集。(实例分割)
要求
- Ubuntu / macOS / Windows
- Python3
- PyQt5 / PySide2
安装
有以下选项:
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
标志,程序将按字母顺序列出标签。当程序使用这个标志运行时,它将按照提供的顺序显示标签。 - 标志被分配给整个图像。例子
- 标签分配给单个多边形。例子
常问问题
- 如何将 JSON 文件转换为 numpy 数组? 请参阅示例/教程。
- 如何加载标签PNG文件? 请参阅示例/教程。
- 如何获取语义分割的标注? 请参阅示例/semantic_segmentation。
- 如何获取实例分割的标注? 请参阅示例/instance_segmentation。
发展
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/