导读
深度学习第一步就是制作数据集,手动去标注一些数据。本文将介绍一个用于图像数据标注的软件:labelme
,并介绍它的安装方法,使用方法等。
1. labelme
labelme是麻省理工(MIT)的计算机科学和人工智能实验室(CSAIL)研发的图像注释工具,它是用Python
和PyQT
编写的,用于图像标注。
- 对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注(可用于目标检测,图像分割,等任务)。
- 对图像进行进行 flag 形式的标注(可用于图像分类 和 清理 任务)。
- 视频标注
- 生成 VOC 格式的数据集
- 生成 COCO 格式的数据集
2. 安装
- 利用
conda
安装
# 新建环境
conda create -n labelme python=3
# 激活环境
conda activate labelme
# 安装labelme
conda install labelme -c conda-forge
Docker
安装
# on macOS
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:"$DISPLAY" &
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=docker.for.mac.host.internal:0 -v $(pwd):/root/workdir wkentaro/labelme
# on Linux
xhost
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 -v $(pwd):/root/workdir wkentaro/labelme
Ubuntu
sudo apt-get install labelme
# or
sudo pip3 install labelme
# or install standalone executable from:
# https://github.com/wkentaro/labelme/releases
3. 使用
3.1. 命令行运行
代码语言:shell复制# 确保已经激活虚拟环境
labelme
3.2. 程序主界面
运行上面命令后,正常情况下,会出现下面窗口。
程序界面主要分为六个区域,最上面为菜单栏,最左边为工具栏,中间为中心窗口(展示图片以及进行标注),右侧上方为展示标注标签的窗口,右侧下方为展示文件列表的窗口,最下面为状态栏。菜单栏、工具栏以及在中心窗口右键均可以选择命令进行执行,右侧的标签列表可以进行交互来进行与标注相关的动作,如切换、删除、编辑、隐藏标注等,右侧文件列表亦可进行交互来切换文件等。
3.3. 程序功能说明:
- 菜单栏功能部分:
- Open : 打开图片文件,通过点击命令或者快捷键即可运行。打开文件后,右侧文件列表会显示在同一目录下的所有文件,点击文件列表中的文件即可进行切换。图片格式支持jpg、png、gif、bmp、jpeg等
- Next Image:切换至下一张图片,若无下一张图片,会弹出窗口提醒用户,通过点击命令或者快捷键即可运行。3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。
- Prev Image : 切换至上一张图片,若无上一张图片,会弹出窗口提醒用户,通过点击命令或者快捷键即可运行。3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。
- Open Dir:打开文件夹,通过点击或者快捷键即可运行。打开文件夹默认会显示文件夹中的第一张图片,同时右侧文件列表也会显示文件夹里的所有图片,点击文件列表中的文件可以进行文件切换。
- Import:导入标注文件,通过点击即可运行。标注文件的样例文件请参考此处。
- Save : 保存文件,通过点击或者快捷键即可运行。会将对标注的更改进行保存,写入默认标注文件中。
- Close : 关闭当前文件,通过点击或者快捷键即可运行。
- Quit : 退出程序,通过点击或者快捷键即可运行
- Create Brush :
- 2d状态下:创建画刷形状,通过点击或者快捷键即可运行。创建画刷形状用于进行分割标注,在想要进行标注的区域,点击鼠标即可进行绘制,绘制完毕后按下回车键即可键入标注文字,添加标注。
- 3d状态下:创建画刷形状,在任意视角任意图片直接点击鼠标进行绘制即可,绘制完毕后按下回车键,键入标注文字即可添加标注。
- Edit Brush :编辑画刷大小,通过点击或者快捷键即可运行。默认为圆形画刷,可以改变画刷大小(注,画刷大小是以当前图片的宽度为比例)
- Create Rectangle :
- 2d状态下:创建矩形,通过点击或者快捷键即可运行。在想要进行标注的区域,点击鼠标开始绘制,在移动鼠标的过程中,会同步显示矩形边框,绘制完毕时,再点击鼠标即可。
- 3d状态下:创建长方体,通过在任意视角的图片点击即可开始该视角下的矩形框的绘制,再次点击鼠标该视角下矩形框即绘制完毕,这时在其他视角,可以通过右键聚焦视角,并进行图片的切换,当其他视角下有最开始创建的矩形框时,移动鼠标即可进行其他视角下的矩形框的绘制,绘制完毕时再次点击鼠标即可,长方体绘制完毕后,按下回车键,键入标注文字,即可添加标注。
- Create Circle:创建圆形,操作与创建矩形类似,请参考创建矩形。
- Create Polygons:创建多边形,通过点击或者快捷键即可运行。在想要标注的区域,点击鼠标开始绘制,在想要绘制的多边形顶点处再次点击鼠标,继续绘制,绘制完毕后,按下回车键。(即文档中要求的绘制闭合折线)
- Create Curve:创建平滑曲线,通过点击或者快捷键即可运行。在想要标注的区域,点击鼠标开始绘制,接着自由移动鼠标即可,绘制完毕后按下回车键。
- Edit Color:编辑标注颜色,通过点击或者快捷键即可运行。会弹出颜色对话框,任意选颜色即可。
- Edit Polygons:进入编辑状态,通过点击或者快捷键即可运行。点击后会进入编辑状态,在该状态下,可以对标注进行拖动,选中,撤销,重做,放大缩小等一系列操作。
- Delete Polygons:删除标注,通过点击或者快捷键即可运行。该动作只有在编辑状态下且有标注被选中才能进行操作。
- Edit Label:编辑标注文字,通过点击或者快捷键即可运行。该动作只有在编辑状态且有标注被选中才能进行操作。
- Undo:撤销动作,通过点击或者快捷键即可运行。可以撤销任意步数的动作。
- Redo:重做动作,通过点击或者快捷键即可运行。可以重做任意步数的动作。
- Undo last point:撤销当前正在创建的标注形状,通过点击或者快捷键即可运行。会移除当前正在创建的标注形状。
- Polygon Labels:是否显示标签列表组件,点击即可进行切换。
- File List:是否显示文件列表,点击即可进行切换。
- 3D:是否进入3D模式,点击即可进行2d及3d状态的转换。
- Hide Polygons:隐藏所有标注,点击即可运行。
- Show Polygons:显示所有标注,点击即可运行。
- Magnifier:是否显示放大镜,点击即可运行。默认会捕捉鼠标附近20$times$20的区域,放大至100$times$100,显示在图片右下角(需注意图片的大小,因为会在图片右下角显示100$times$100)
- Zoom In:放大图片,点击或者快捷键即可运行。默认会放大图片至1.2倍。
- Zoom Out:缩小图片,点击或者快捷键即可运行。默认会缩小图片至0.8倍。
- Original Size:图片恢复至原始图片大小,点击或者快捷键即可运行。会使图片按照原始大小显示。
- Fit Window:图片宽度适应中心窗口,点击或者快捷键即可运行。会使图片按照中心窗口宽度显示。
- 工具栏功能部分:
- 工具栏命令即为菜单栏命令的部分,请参考菜单栏命令
- 状态栏功能部分:
- 部分命令执行时会在状态栏处显示。
- 鼠标在图片上移动时,会同步在状态栏处显示当前鼠标的坐标。2d显示二维坐标,3d显示三维坐标。
- 中心窗口功能部分:
- 为方便用户交互,图片上的标注形状默认显示为不填充,即只显示边框,当鼠标进入标注形状内部时,标注形状为悬浮(hovered)状态,内部会填充颜色,当鼠标点击标注形状时,标注形状为选中(selected)状态,内部也会填充颜色,同时在标签列表窗口处也会显示标签选中状态。当标注脱离悬浮状态(unhovered)或者未选中状态(unselected)时,内部会显示不填充。对选中的标注形状即可进行一系列操作,如拖动标注形状,删除,更改等动作。
- 2d状态下,在中心窗口点击右键亦可选择执行部分命令,方便交互。
- 3d状态下,中心窗口分为3个视角,三个视角顺序未从左至右,从上至下,分别为0,1,2。第一个视角为从上往下看的俯视视角,图片顺序为从上至下,第二个视角为正视视角,图片顺序为从后往前,第三个视角为右视视角,图片顺序为从左至右。鼠标点击视角可进行视角图片的聚焦,即切换视角。
- 标签列表组件功能部分:
- 在标签列表窗口中右键可以选择并执行部分命令
- 在标签列表窗口中可以通过点击标签进行标注的选中,选中状态会同步至中心窗口中并显示标注形状填充
- 改变标签列表窗口中标签的checkstate可以进行是否显示该标注状态的切换,checked为显示,unchecked为隐藏
- 在中心窗口对标注的交互会在标签列表中同步更新,例如添加标注、删除标注等
- 文件列表组件功能部分:
- 2d状态下,在文件列表窗口中点击文件即可进行文件的切换
- 3d状态下,由于文件的切换由中心窗口控制,因此点击不会有反应
- 其他说明:
- 标注文件默认名说明:在读取图片时,会读取默认标注文件,默认标注文件名与图片名相同,后缀名为json。3d状态下默认标注文件名为该文件夹下第一张图片名 “_3D”,后缀名为json。
- 标注文件格式说明:type表明标注形状的类型,分为Brush(画刷形状),Rectangle(矩形形状),Polygons(多边形形状),Circle(圆形形状),Curve(平滑曲线形状),Brush3D(3d画刷形状),Rectangle3D(3d长方体形状);color代表标注形状颜色;label代表标注标签文字,points代表像素点位(2d存储为横纵坐标比例,3d存储为横纵坐标比例,及z方向上的顺序)radius代表画刷形状的大小或者圆形形状的大小;width代表矩形的宽;height代表矩形的高;zspan代表3d长方体在z方向上的跨度
- 程序中使用标签列表窗口显示标签,且在点击标签时,中心窗口会同步标注形状被选中,内部会显示为填充,其中颜色也为由用户自定义。
- examples文件夹里面有样例图片以及样例标注文件可做测试用。