0、背景
最近需要实践deeplabv3+,因此觉得最好从数据准备——数据格式转换——模型训练——测试评估这条路径进行学习。网上大家都推荐使用labelme进行数据标注。看了官网,教程详细不费脑,确实觉得很赞。
1、开始安装
1.1 安装教程
由于我是Windows系统,所以选用了基于python3.6的anaconda 安装教程。具体流程为:安装anaconda、新建环境、进入新环境、用pip安装labelme这四步。详细代码如下:
# 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
1.2 遇到的问题
1.2.1 重复下载、无效安装
在用pip安装labelme的时候,由于没提前安装依赖项,pip给我一直从labelme4.6.0下载到了3.0.1都还没找到合眼缘的对象。要不是我主动终止,还不知道它会不会给我找到负数去。
1.2.2 缺少依赖项
我以为是没有指定版本导致了上面的问题。正好看到谋篇教程里提到3.19.0版本的labelme可以成功标注和导出指定格式的数据,因此我键入了pip install labelme==3.19.0
。马上得到了以下的报错:
ERROR: Could not find a version that satisfies the requirement PyYAML (from labelme) (from versions: none)
ERROR: No matching distribution found for PyYAML
其实你安装好这个库之后运行上面那个命令,还是会报错。因为labelme的还有依赖项,这些依赖项一般在新环境中需要自己安装。于是我依次安装了PyYAML、numpy、Pillow、qtpy、matplotlib、lxml、pyqt5
这些包。
安装成功后可以得到反馈:Successfully installed imgviz-1.4.1 labelme-3.19.0 termcolor-1.1.0
1.2.3 使用报错(找不到配置文件)
报错信息为FileNotFoundError: [Errno 2] No such file or directory: 'C:\\xxx\\xxx\\.labelmerc'
这个文件确实不存在,但是也没什么头绪。键入了labelme —help,想听听它的帮助与指导。
usage: labelme [-h] [--version] [--reset-config]
[--logger-level {debug,info,warning,fatal,error}]
[--output OUTPUT] [--config CONFIG] [--nodata] [--autosave]
[--nosortlabels] [--flags FLAGS] [--labelflags LABEL_FLAGS]
[--labels LABELS] [--validatelabel {exact,instance}]
[--keep-prev] [--epsilon EPSILON]
[filename]
positional arguments:
filename image or label filename
optional arguments:
-h, --help show this help message and exit
--version, -V show version
--reset-config reset qt config
--logger-level {debug,info,warning,fatal,error}
logger level
--output OUTPUT, -O OUTPUT, -o OUTPUT
output file or directory (if it ends with .json it is
recognized as file, else as directory)
--config CONFIG config file or yaml-format string (default:
C:\xxx\xxx\.labelmerc)
--nodata stop storing image data to JSON file
--autosave auto save
--nosortlabels stop sorting labels
--flags FLAGS comma separated list of flags OR file containing flags
--labelflags LABEL_FLAGS
yaml string of label specific flags OR file containing
json string of label specific flags (ex. {person-\d+:
[male, tall], dog-\d+: [black, brown, white], .*:
[occluded]})
--labels LABELS comma separated list of labels OR file containing
labels
--validatelabel {exact,instance}
label validation types
--keep-prev keep annotation of previous frame
--epsilon EPSILON epsilon to find nearest vertex on canvas
从反馈信息来看,我安装的labelme缺少配置文件。那怎么办呢?再重新装一下试试!
马上重装了一个高一点的版本,于是labelme就可以正常使用啦。现在还有美中不足的是,每次使用的提示信息都是乱码。
(labelme) D:\open-source-code\labelme\examples\tutorial>labelme apc2016_obj3.jpg
[[1m[37mINFO [0m] [36m__init__[0m:[36mget_config[0m:[36m73[0m - [1m[37mLoading config file from: C:\xxx\xxx\.labelmerc[0m
1.3 使用教程(摘抄自官网)
建议去官网学习。
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